int MainCanvas::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: tinChanged(); break; case 1: hfpChanged(); break; case 2: numclustersChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: open(); break; case 4: save_model(); break; case 5: save_scene(); break; case 6: closeMesh(); break; case 7: properties(); break; case 8: runhfp(); break; case 9: shuffleColors(); break; case 10: increaseNumClusters(); break; case 11: decreaseNumClusters(); break; case 12: showAllClusters(); break; case 13: showOneCluster(); break; case 14: about(); break; case 15: setSceneGraph(); break; case 16: checkNoTIN(); break; case 17: checkHFPStatus(); break; case 18: updateMatIndexes(); break; case 19: setNumClusters((*reinterpret_cast< int(*)>(_a[1]))); break; case 20: setNumClusters(); break; default: ; } _id -= 21; } return _id; }
int handle_key(int keycode, t_rt *scene) { int i; if (keycode == ESC) { i = -1; while (++i < NTHREAD) { my_free_tab((void **)scene[i].objs); my_free_tab((void **)scene[i].spots); } exit(EXIT_SUCCESS); } if (keycode == 's' || keycode == 'b') save_scene(scene[0].mlx->img); return (EXIT_SUCCESS); }
/***************************************************************************** Função que configura as cenas contidas no cartão sd *****************************************************************************/ void cmd_scene(char *par) { char i,addr,erro = __FALSE, str[30]; if(par[0] == '?') /*Solicitando a alguma cena?*/ { if(par[1] >= '0' && par[1] <= '3') /*Cenas de 0 a 3?*/ { if(read_scene(par[1]-48,FILE_DIMMER_SCENE)) sprintf(buf_tx,"%s%u",aux_scene,par[1]-48); else sprintf(buf_tx,"ERROR %u",ERROR_SD); }else { sprintf(buf_tx,"%s%u", (current_scene[0]==0) ? "SET 0000000000007" : current_scene, current_id_scene); if(strcmp(current_scene,scene[current_id_scene])/*strlen(current_scene) < 15*/) sprintf(current_scene,"%s%u",scene[current_id_scene], current_id_scene); } return; } memset(str,0,sizeof(str)); strncpy(str,par,17); /*Cena ex: 0SET 020020020000*/ addr = str[0]-48; for(i=0;i<20;i++) /*Loop para eliminar o id da cena da string...Ex: SET 020020020000*/ str[i] = str[i+1]; for(i=4;i<16;i++) /*Loop para verificar possiveis erros de parâmetro*/ { if(str[i] < '0' || str[i] > '9' || addr > 7) erro = __TRUE; if(str[i] == '\r' || str[i] == '\n') /*Elimina caracteres indesejados da cena*/ str[i] = 0; } //printf("str:%s\r",str); //fflush(stdout); if(strlen(str) != 16 || !strstr(str,"SET") || erro) /*Há erro?*/ sprintf(buf_tx,"ERROR %u",ERROR_PARAMETER); else { if(save_scene(str,addr)) /*A cena foi salva no cartão sd?*/ { init_scene(addr); /*Lê a cena para se certificar que foi escrita no sd*/ sprintf(buf_tx,"%s%u",scene[addr],addr); if(rcv_cmd == RCV_CMD_UART_0) { /*Envia imediatamente para o LPC1113 a alteração da cena 'addr' */ uart_putString(UART_LINK_LPC,scene[addr]); uart_putString(UART_LINK_LPC,"!\0"); strcpy(current_scene,scene[addr]); /*Copia para a cena atual*/ current_id_scene = addr; }else { printf("Cena %u configurada: %s\r",addr,str); fflush(stdout); } }else sprintf(buf_tx,"ERROR %u",ERROR_SD); /*Error permitido para cartão SD*/ } }
static void send_codes(vx_display_t * disp, const uint8_t * data, int datalen) { state_t * state = disp->impl; vx_code_input_stream_t * cins = vx_code_input_stream_create(data, datalen); // Peek at the code type to determine which function to call uint32_t code = cins->read_uint32(cins); pthread_mutex_lock(&state->mutex); switch(code) { case OP_BUFFER_RESOURCES: vx_resc_manager_buffer_resources(state->mgr, data, datalen); break; case OP_BUFFER_ENABLED: vx_gl_renderer_buffer_enabled(state->glrend, cins); break; case OP_BUFFER_CODES: vx_gl_renderer_set_buffer_render_codes(state->glrend, cins); break; case OP_LAYER_INFO: vx_gl_renderer_update_layer(state->glrend, cins); { vx_code_input_stream_t * c2 = vx_code_input_stream_create(data, datalen); c2->read_uint32(c2); //discard code process_layer(state, c2); vx_code_input_stream_destroy(c2); } // XXX Also need to intercept these! break; case OP_DEALLOC_RESOURCES: vx_gl_renderer_remove_resources(state->glrend, cins); break; case OP_LAYER_VIEWPORT_REL: process_viewport_rel(state, cins); break; case OP_LAYER_VIEWPORT_ABS: process_viewport_abs(state, cins); break; case OP_LAYER_CAMERA: process_camera_codes(state, cins); break; case OP_WINDOW_SCENE: { save_scene(state, cins); break; } case OP_WINDOW_SCREENSHOT: screen_shot(state, cins); break; case OP_WINDOW_MOVIE_RECORD: case OP_WINDOW_MOVIE_STOP: movie(state, cins, code == OP_WINDOW_MOVIE_RECORD); break; default: assert(0); } pthread_mutex_unlock(&state->mutex); // Buffer layer manager, outside the lock switch(code) { case OP_BUFFER_ENABLED: vx_gtk_buffer_manager_codes(state->buffer_manager, data, datalen); break; case OP_BUFFER_CODES: vx_gtk_buffer_manager_codes(state->buffer_manager, data, datalen); break; case OP_LAYER_INFO: vx_gtk_buffer_manager_codes(state->buffer_manager, data, datalen); break; } vx_code_input_stream_destroy(cins); }
int main(void) { Evas *canvas; Evas_Object *bg, *r1, *r2, *r3; evas_init(); // create your canvas // NOTE: consider using ecore_evas_buffer_new() instead! canvas = create_canvas(WIDTH, HEIGHT); if (!canvas) return -1; bg = evas_object_rectangle_add(canvas); evas_object_color_set(bg, 255, 255, 255, 255); // white bg evas_object_move(bg, 0, 0); // at origin evas_object_resize(bg, WIDTH, HEIGHT); // covers full canvas evas_object_show(bg); puts("initial scene, with just background:"); draw_scene(canvas); r1 = evas_object_rectangle_add(canvas); evas_object_color_set(r1, 255, 0, 0, 255); // 100% opaque red evas_object_move(r1, 10, 10); evas_object_resize(r1, 100, 100); evas_object_show(r1); // pay attention to transparency! Evas color values are pre-multiplied by // alpha, so 50% opaque green is: // non-premul: r=0, g=255, b=0 a=128 (50% alpha) // premul: // r_premul = r * a / 255 = 0 * 128 / 255 = 0 // g_premul = g * a / 255 = 255 * 128 / 255 = 128 // b_premul = b * a / 255 = 0 * 128 / 255 = 0 // // this 50% green is over a red background, so it will show in the // final output as yellow (green + red = yellow) r2 = evas_object_rectangle_add(canvas); evas_object_color_set(r2, 0, 128, 0, 128); // 50% opaque green evas_object_move(r2, 10, 10); evas_object_resize(r2, 50, 50); evas_object_show(r2); r3 = evas_object_rectangle_add(canvas); evas_object_color_set(r3, 0, 128, 0, 255); // 100% opaque dark green evas_object_move(r3, 60, 60); evas_object_resize(r3, 50, 50); evas_object_show(r3); puts("final scene (note updates):"); draw_scene(canvas); save_scene(canvas, "/tmp/evas-buffer-simple-render.ppm"); // NOTE: use ecore_evas_buffer_new() and here ecore_evas_free() destroy_canvas(canvas); evas_shutdown(); return 0; }