void dmsg_update(void) { gfx_point2d_t pos; gfx_rect_t rect; // if (do_scroll == 0) { pos.x = dmsg_pos_x; pos.y = dmsg_pos_y; rect.x = 0; rect.y = 0; rect.width = dmsg_buff_width; rect.height = dmsg_buff_height; gfx_bitblt(dmsg_buff_id, &rect, &pos); // } /* else { // if (dmsg_cursor_y > 0) { pos.x = dmsg_pos_x; pos.y = dmsg_pos_y; rect.x = 0; rect.y = dmsg_cursor_y + 8; rect.width = dmsg_buff_width; rect.height = dmsg_buff_height - dmsg_cursor_y; gfx_bitblt(dmsg_buff_id, &rect, &pos); // } if (dmsg_cursor_y > 0) { pos.y = dmsg_pos_y + dmsg_cursor_y; rect.y = 0; rect.height = dmsg_cursor_y; gfx_bitblt(dmsg_buff_id, &rect, &pos); } } */ gfx_flush(); gfx_paint(); }
int main() { int i; gfx_rect_t rect; uint32_t color; uint16_t fbuff[320*240]; key_data_t keys, no_keys; // setup function pointers dprintf = FUNC(0x04); gfx_init = FUNC(0x38); gfx_set_framebuffer = FUNC(0x90); gfx_set_display_screen= FUNC(0x54); gfx_set_cammmode = FUNC(0x8c); gfx_set_colorrop = FUNC(0x3c); gfx_set_fgcolor = FUNC(0x44); gfx_get_fgcolor = FUNC(0x48); gfx_fillrect = FUNC(0xc4); gfx_enable_feature = FUNC(0x7c); gfx_flush = FUNC(0xc); gfx_paint = FUNC(0x10); get_time = FUNC(0x124); get_keys = FUNC(0x100); // dprintf("Hello World!\n"); gfx_init(fbuff, sizeof(fbuff)); rect.x = 0; rect.y = 0; rect.width = 320; rect.height = 240; gfx_set_framebuffer(320, 240); gfx_set_display_screen(&rect);//320, 240); color = MAKE_RGB(255,0,0); gfx_enable_feature(3); gfx_set_fgcolor(&color); gfx_set_colorrop(COLOR_ROP_NOP); gfx_fillrect(&rect); rect.x = 30; rect.y = 30; rect.width = 260; rect.height = 180; color = MAKE_RGB(0,255,0); gfx_set_fgcolor(&color); gfx_set_colorrop(COLOR_ROP_NOP); gfx_fillrect(&rect); rect.x = 60; rect.y = 60; rect.width = 200; rect.height = 120; color = MAKE_RGB(0,0,255); gfx_set_fgcolor(&color); gfx_set_colorrop(COLOR_ROP_NOP); gfx_fillrect(&rect); /* // is it used at all ? for (i=0; i<320; i++) fbuff[(100*320)+i] = 0; */ gfx_set_colorrop(COLOR_ROP_NOP); gfx_flush(); gfx_paint(); get_keys(&no_keys); // no_keys.key2 &= ~0x5ff0; while (1) { get_keys(&keys); // keys.key2 &= ~0x5ff0; if (keys.key2 != no_keys.key2) break; } return 0; }
int main(int argc, char* argv[]){ unsigned int size;/*Tamanho do triangulo*/ unsigned int default_size;/*Tamanho padrão do triangulo*/ unsigned int amount; /*Quantidade de triangulos*/ int quit; /*Verifica se o programa deve ser encerrado*/ char* msg; /*Auxiliar para colocar as informaçoes na tela*/ SDL_Event event; /*guarda um evento ocorrido*/ msg = (char*) malloc(sizeof(char) * 30); /*Aloca memoria para a string auxiliar*/ if(!msg){/*Verifica se foi alocado*/ printf("Erro ao alocar memoria.\n"); exit (0); } amount = 0;/*Inicializa o contador de triangulos*/ default_size = 100;/*Define o tamanho padrão do triangulo para caso o usuario não tenha definido*/ if(argc != 1){/*Verifica se foi passado algum argumento na chamada do programa*/ if(atoi(argv[1]) != 0){/*Se o argumento for um numero ele sera o tamanho padrão do triangulo*/ default_size = atoi(argv[1]); } } size = default_size;/*Define o tamanho com o tamanho padrão*/ gfx_init("Sierpinski");/*Seta o nome da janela*/ sierpinski((gfx_get_width() / 2) - (size / 2), gfx_get_height() - (int)((size * 1.732050808) / 2), size, &amount);/*Desenha o triangulo com o tamanho incial*/ sprintf(msg, "Lado: %d Quantidade: %u", size, amount); gfx_text(10, 10, msg);/*Imprime as informacões do triangulo*/ gfx_text(10, 30, "Atalhos: Zoom(i)n - Zoom(o)ut - (C)lear - (esc)ape");/*Imprime o menu*/ gfx_paint(); while(!quit){/*Loop principal*/ while(SDL_PollEvent(&event)){/*Verifica se ocorreu algum evento*/ switch(event.type){/*Seleciona o tipo de evento*/ case SDL_QUIT:/*Clique no botão de fechar*/ quit = 1;/*sair do loop principal*/ break; case SDL_KEYDOWN:/*Tecla pressionada*/ while(event.key.state == SDL_PRESSED && quit == 0){/*Tecla continua pressionada e não é o ESC*/ switch (event.key.keysym.sym){/*Seleciona a tecla*/ case SDLK_i:/*Caso seja 'i' os triangulos aumentam*/ size += 5;/*Incrementa o tamanho do triangulo*/ gfx_clear();/*Limpa a tela*/ amount = 0;/*Zera o contador de triangulos*/ sierpinski((gfx_get_width() / 2) - (size / 2), gfx_get_height() - (int)((size * 1.732050808) / 2), size, &amount);/*Desenha o triangulo de Sierpinski*/ sprintf(msg, "Lado: %d Quantidade: %u", size, amount); gfx_text(10, 10, msg);/*Imprime as informacões do triangulo*/ gfx_text(10, 30, "Atalhos: Zoom(i)n - Zoom(o)ut - (C)lear - (esc)ape");/*Imprime o menu*/ break; case SDLK_o:/*Caso seja 'o' os triangulos diminuem*/ size -= 5; gfx_clear(); amount = 0; sierpinski((gfx_get_width() / 2) - (size / 2), gfx_get_height() - (int)((size * 1.732050808) / 2), size, &amount); sprintf(msg, "Lado: %d Quantidade: %u", size, amount); gfx_text(10, 10, msg);/*Imprime as informacões do triangulo*/ gfx_text(10, 30, "Atalhos: Zoom(i)n - Zoom(o)ut - (C)lear - (esc)ape");/*Imprime o menu*/ break; case SDLK_c: /*Caso seja 'c' o triangulo é resetado*/ size = default_size;/*Define o tamanho com o tamanho padrão*/ gfx_clear();/*Limpa tela*/ amount = 0;/*Zera o contador de triangulos*/ sierpinski((gfx_get_width() / 2) - (size / 2), gfx_get_height() - (int)((size * 1.732050808) / 2), size, &amount);/*Desenha o triangulo com o tamanho padrão*/ sprintf(msg, "Lado: %d Quantidade: %u", size, amount); gfx_text(10, 10, msg);/*Imprime as informacões do triangulo*/ gfx_text(10, 30, "Atalhos: Zoom(i)n - Zoom(o)ut - (C)lear - (esc)ape");/*Imprime o menu*/ break; case SDLK_ESCAPE: /*Caso seja 'ESC' encerra o programa*/ quit = 1; break; default:/*Outra tecla nada é feito*/ break; } gfx_refresh();/*Atualiza a tela*/ usleep(120000);/*Delay para ler um novo evento*/ SDL_PollEvent(&event);/*Le um novo evento*/ } break; } } } gfx_quit();/*Fecha a janela*/ free(msg);/*Libera a memoria alocada*/ return 0; }