void vsx_widget_desktop::save_configuration() { // final destination for the configuration data vsx_string save_filename = vsx_get_data_path() + "vsxu.conf"; vsx_command_list s_conf; for (std::map<vsx_string, vsx_string>::iterator it = configuration.begin(); it != configuration.end(); ++it) { s_conf.add_raw((*it).first+" "+(*it).second); } s_conf.save_to_file(save_filename); }
void vsx_window_object_inspector::load_file(vsx_string filename) { //cout << "trying to load " << filename << endl; filename = vsx_get_data_path()+filename; #ifdef VSXU_DEBUG printf("filename: %s\n", filename.c_str()); #endif std::vector<vsx_string> parts; vsx_string deli = "."; explode(filename, deli, parts); if (filename_loaded != filename) { if (parts[parts.size()-1] == "jpg") { view_type = 1; // image viewer texture_loaded = false; #ifndef VSXU_PLAYER texture.texture_info.size_y = 0; // if (texture.valid) texture.unload(); texture.init_opengl_texture(); texture.load_jpeg(filename,false); //float screenaspect = screen_x/screen_y; //printf("%f, %f\n",texture.texture_info.size_x,texture.texture_info.size_y); #endif filename_loaded = filename; } else if (parts[parts.size()-1] == "png") { //printf("png"); //texture.unload(); view_type = 1; // image viewer texture_loaded = false; #ifndef VSXU_PLAYER texture.texture_info.size_y = 0; // if (texture.valid) texture.unload(); texture.load_png(filename,false); //float screenaspect = screen_x/screen_y; //printf("%f, %f\n",texture.texture_info.size_x,texture.texture_info.size_y); #endif filename_loaded = filename; //vsx_vector aa; //aa.x = 0.4/screenaspect*(texture.size_x/texture.size_y); //aa.y = 0.4; //aa.z = 0; //resize_to(aa); //move(1-0.4/screenaspect*(texture.size_x/texture.size_y),1,0); //resize_to(vsx_vector(0.1,0.1,0)); //move(0.9,1,0); } } }
void vsxu_assistant::init() { temp_size = -1.0f; if (!init_run) vsx_widget::init(); render_type = VSX_WIDGET_RENDER_2D; coord_type = VSX_WIDGET_COORD_CORNER; topmost = true; myf.mode_2d = true; texture.load_png(PLATFORM_SHARED_FILES+"gfx"+DIRECTORY_SEPARATOR+"luna.png"); if (configuration.find("assistant_size") != configuration.end()) { size_multiplier = s2f(configuration["assistant_size"]); } else size_multiplier = 1.0f; pager = add(new vsx_widget_2d_pager,"pages"); pager->init(); title = "Luna <3"; inspected = 0; menu = add(new vsx_widget_popup_menu,".obtx_menu"); menu->commands.adds(VSX_COMMAND_MENU, "Toggle size {tab}", "mini",""); menu->commands.adds(VSX_COMMAND_MENU, "Automatic Mode", "auto",""); menu->commands.adds(VSX_COMMAND_MENU, "Courses;Introduction course", "load","course_intro"); menu->commands.adds(VSX_COMMAND_MENU, "Courses;Performance mode", "load","course_performance_mode"); menu->commands.adds(VSX_COMMAND_MENU, "Courses;Macros", "load","course_macro"); menu->size.x = 0.2; menu->init(); vsx_command_s* c; vsx_command_list cla; cla.load_from_file(vsx_get_data_path()+"help_settings.conf",true,4); auto_ = false; while ( (c = cla.pop()) ) { if (c->cmd == "auto") { // printf("auto is true\n"); auto_ = true; } } if (!auto_) { command_q_b.add_raw("load course_intro"); vsx_command_queue_b(this); } target_pos = pos; target_size = size; // lesson_id = 0; }
void vsx_widget_desktop::load_configuration() { vsx_command_list main_conf; vsx_string config_file = vsx_get_data_path() + "vsxu.conf"; if (access(config_file.c_str(),0) == 0) { main_conf.load_from_file(config_file.c_str(),true,0); } else { main_conf.load_from_file(PLATFORM_SHARED_FILES+"vsxu.conf",true,0); } #ifdef VSXU_DEBUG printf("conf: %s\n", config_file.c_str()); #endif main_conf.reset(); vsx_command_s* mc = 0; auto_undo = 1; while ( (mc = main_conf.get()) ) { if (mc->cmd == "skin") { skin_path = PLATFORM_SHARED_FILES+vsx_string("gfx")+DIRECTORY_SEPARATOR+mc->cmd_data+DIRECTORY_SEPARATOR; #ifdef VSXU_DEBUG printf("skin path: %s\n",skin_path.c_str()); #endif } else if (mc->cmd == "global_interpolation_speed") { global_interpolation_speed = s2f(mc->cmd_data); } else if (mc->cmd == "automatic_undo") { auto_undo = s2i(mc->cmd_data); } else if (mc->cmd == "global_framerate_limit") { global_framerate_limit = s2f(mc->cmd_data); } else if (mc->cmd == "global_key_speed") { global_key_speed = s2f(mc->cmd_data); } if (mc->cmd != "" && mc->cmd != "#") configuration[mc->cmd] = mc->cmd_data; } }
void vsxu_assistant::vsx_command_process_b(vsx_command_s *t) { if (t->cmd == "mini") { toggle_size(); //size_multiplier = 0.2; } else if (t->cmd == "auto") { if (!auto_) { inspected = 0; vsx_command_list cla; cla.add_raw("auto"); cla.save_to_file(vsx_get_data_path()+"help_settings.conf"); auto_ = true; course.clear(); ((vsx_widget_2d_pager*)pager)->max_pages = 0;//course.size(); } } else if (t->cmd == "load") { auto_ = false; vsx_command_s* c; vsx_command_list cl; cl.load_from_file(PLATFORM_SHARED_FILES+"doc/"+t->cmd_data+".txt",false,4); vsx_string newstr; course.clear(); while ((c = cl.pop())) { if (c->raw == "|||") { course.push_back(newstr); newstr = ""; } else { newstr = newstr + c->raw+"\n"; } } course.push_back(newstr); ((vsx_widget_2d_pager*)pager)->max_pages = course.size(); } }
void draw() { if (record_movie) { vxe->set_constant_frame_progression(1.0f / 60.0f); vxe->play(); } if (desktop) { desktop->vsx_command_process_f(); } if (first) { intro = new vsx_logo_intro; } dt = gui_t.dtime(); gui_f_time += dt; gui_g_time += dt; float f_wait; bool run_always = false; if (desktop) { if (desktop->global_framerate_limit == -1) { run_always = true; } else { f_wait = 1.0f/desktop->global_framerate_limit; } } else { f_wait = 1.0f/100.0f; } if (run_always || gui_f_time > f_wait) { ++frame_count; if (desktop) { desktop->dtime = gui_f_time; desktop->time += desktop->dtime; desktop->frames = frame_count; } gui_fullscreen_fpstimer += gui_f_time; current_fps = f2s(round(1.0f/gui_f_time),2); if (gui_fullscreen_fpstimer > 1) { vsx_string h = fpsstring + " @ "+ current_fps+ "fps"; gui_fullscreen_fpstimer = 0; } gui_f_time = 0; if (!*gui_prod_fullwindow) { if (desktop) { desktop->init_frame(); desktop->draw(); desktop->draw_2d(); } } if (!dual_monitor) { vxe->process_message_queue(&internal_cmd_in,&internal_cmd_out); } if (*gui_prod_fullwindow) { glDepthMask(GL_TRUE); glClearColor(0.0f,0.0f,0.0f,1.0f); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); #ifndef NO_INTRO if (vxe->e_state == VSX_ENGINE_STOPPED) { //intro->draw(true); } #endif if (vxe && !dual_monitor) { vxe->render(); glDisable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_BLEND); ++frame_counter; ++delta_frame_counter; delta_frame_time+= dt; total_time += dt; if (delta_frame_counter == 100) { delta_fps = 100.0f/delta_frame_time; delta_frame_counter = 0; delta_frame_time = 0.0f; } if (gui_prod_fullwindow_helptext) { glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f(0,0,0,0.4f); glBegin(GL_QUADS); // Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right glVertex3f( 1.0f,0.92f, 0.0f); // Bottom Right glVertex3f(-1.0f,0.92f, 0.0f); // Bottom Left glEnd(); // Done Drawing The Quad myf.print(vsx_vector(-1.0f,0.92f)," Fc "+i2s(frame_counter)+" Fps "+f2s(delta_fps)+" T "+f2s(total_time)+" Tfps "+f2s(frame_counter/total_time)+" MC "+i2s(vxe->get_num_modules())+" VSX Ultra (c) 2003-2010 Vovoid - Alt+T=toggle this text, Ctrl+Alt+P=screenshot (data dir), Alt+F=performance mode ",0.03f); } } if (desktop && desktop->performance_mode) { glClear(GL_DEPTH_BUFFER_BIT); desktop->init_frame(); desktop->draw(); desktop->draw_2d(); } } #ifndef NO_INTRO //intro->draw(); #endif if (!first && !desktop) { pgv.iterations = -1; } pgv.process_garbage(); if (first) { if (!dual_monitor) { vxe->init(); vxe->start(); } load_desktop_a(); first = false; } } else { int zz = (int)((f_wait-gui_f_time)*1000.0f); if (zz < 0) zz = 0; //printf("zz%d ",zz); //Sleep(zz); } //------------------------------------------------------------------ // movie recording //------------------------------------------------------------------ if (record_movie) { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); char* pixeldata = (char*)malloc( viewport[2] * viewport[3] * 3 ); char* pixeldata_flipped = (char*)malloc( viewport[2] * viewport[3] * 3 ); take_screenshot = false; glReadPixels(0,0,viewport[2],viewport[3],GL_RGB,GL_UNSIGNED_BYTE, (GLvoid*)pixeldata); int x3 = viewport[2]*3; int hi = viewport[3]; for (int y = 0; y < hi; y++) { for (int x = 0; x < x3; x++) { pixeldata_flipped[y*x3+x] = pixeldata[ (hi-y)*x3+x]; } } CJPEGTest jpeg; jpeg.m_nResX = viewport[2]; jpeg.m_nResY = viewport[3]; jpeg.m_pBuf = (unsigned char*)pixeldata_flipped; //char filename[32768]; #if PLATFORM_FAMILY == PLATFORM_FAMILY_UNIX if (access((vsx_get_data_path()+"videos").c_str(),0) != 0) mkdir((vsx_get_data_path()+"/videos").c_str(),0700); //sprintf(filename, "%sscreenshots/%d_%d_%d_rgb.jpg",vsx_get_data_path().c_str(),(int)time(0),viewport[2],viewport[3]); #endif vsx_string err; char mfilename[32]; sprintf(mfilename, "%05d", movie_frame_count); jpeg.SaveJPEG( vsx_get_data_path()+"videos"+DIRECTORY_SEPARATOR+vsx_string(mfilename)+"_"+ i2s(viewport[2]) + "_" + i2s(viewport[3])+".jpg", err, 100 ); jpeg.m_pBuf = 0; free(pixeldata); free(pixeldata_flipped); movie_frame_count++; } //------------------------------------------------------------------ // screenshots //------------------------------------------------------------------ if (take_screenshot) { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); char* pixeldata = (char*)malloc( viewport[2] * viewport[3] * 3 ); char* pixeldata_flipped = (char*)malloc( viewport[2] * viewport[3] * 3 ); take_screenshot = false; glReadPixels(0,0,viewport[2],viewport[3],GL_RGB,GL_UNSIGNED_BYTE, (GLvoid*)pixeldata); int x3 = viewport[2]*3; int hi = viewport[3]; for (int y = 0; y < hi; y++) { for (int x = 0; x < x3; x++) { pixeldata_flipped[y*x3+x] = pixeldata[ (hi-y)*x3+x]; } } CJPEGTest jpeg; jpeg.m_nResX = viewport[2]; jpeg.m_nResY = viewport[3]; jpeg.m_pBuf = (unsigned char*)pixeldata_flipped; //char filename[32768]; #if PLATFORM_FAMILY == PLATFORM_FAMILY_UNIX if (access((vsx_get_data_path()+"screenshots").c_str(),0) != 0) mkdir((vsx_get_data_path()+"/screenshots").c_str(),0700); //sprintf(filename, "%sscreenshots/%d_%d_%d_rgb.jpg",vsx_get_data_path().c_str(),(int)time(0),viewport[2],viewport[3]); #endif /*FILE* fp = fopen(filename,"wb"); fwrite(pixeldata_flipped, 1, viewport[2] * viewport[3] * 3, fp); fclose(fp);*/ vsx_string err; jpeg.SaveJPEG( vsx_get_data_path()+"screenshots"+DIRECTORY_SEPARATOR+i2s(time(0))+"_"+ i2s(viewport[2]) + "_" + i2s(viewport[3])+".jpg", err, 100 ); jpeg.m_pBuf = 0; free(pixeldata); free(pixeldata_flipped); } } // ::draw()