Exemplo n.º 1
0
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);
    }
  }
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
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;
  }
}
Exemplo n.º 5
0
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();
  }
}
Exemplo n.º 6
0
  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()