Beispiel #1
0
void 
Recorder::post_draw_CB()
{
   if ( !_paused && _render_on && _play_on) { 

      /*make directory */

      char num[32]; //yes, this is absurd
      sprintf (num, "%06d", _path_pos); //1 million frames

      //mkdir("imagedir");
      string base_dir = recorder_image_path;
      string filename = base_dir + _cur_path->get_name() +
         "_" + num + ".png";
      cerr << "writing " << filename << "\n";
      int w,h; VIEW_SIZE (w,h);
      Image output (w,h,3);
      //sketchy/

      VIEWimpl* impl = _view->impl();

      if (impl) { 
         _view->set_grabbing_screen(1);
         impl->prepare_buf_read();
         impl->read_pixels(output.data());
         _view->set_grabbing_screen(0);
         impl->end_buf_read();
      }

      if ( !output.write_png(filename.c_str())) {cerr << "error writing file!"; }
  
   }
}
Beispiel #2
0
/////////////////////////////////////
// draw_start()
/////////////////////////////////////
void
ProxyStroke::draw_start()
{
   // Push affected state:
   glPushAttrib(
      GL_CURRENT_BIT            |
      GL_ENABLE_BIT             |
      GL_COLOR_BUFFER_BIT       |
      GL_TEXTURE_BIT
      );

   glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);

   // Set state for drawing strokes:
   glDisable(GL_LIGHTING);      // GL_ENABLE_BIT
   glDisable(GL_CULL_FACE);     // GL_ENABLE_BIT
   if (!_use_depth)  
      glDisable(GL_DEPTH_TEST); // GL_ENABLE_BIT
   glEnable(GL_BLEND);          // GL_ENABLE_BIT
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_COLOR_BUFFER_BIT

   // Enable or disable texturing:
   if (_tex) {
      glEnable(GL_TEXTURE_2D);  // GL_ENABLE_BIT
      _tex->apply_texture();    // GL_TEXTURE_BIT
   } else {
      glDisable(GL_TEXTURE_2D); // GL_ENABLE_BIT
   }

   glEnableClientState(GL_VERTEX_ARRAY); //GL_CLIENT_VERTEX_ARRAY_BIT)
   glEnableClientState(GL_COLOR_ARRAY);  //GL_CLIENT_VERTEX_ARRAY_BIT)
   if (_tex)
      glEnableClientState(GL_TEXTURE_COORD_ARRAY);//GL_CLIENT_VERTEX_ARRAY_BIT)

   // Set projection and modelview matrices for drawing in NDC:
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadMatrixd(VIEW::peek()->ndc_proj().transpose().matrix());

   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();

   // Cache view related info:
   if (_stamp != VIEW::stamp()) {
      _stamp = VIEW::stamp();
      int w, h;
      VIEW_SIZE(w, h);
      _scale = (float)VIEW::pix_to_ndc_scale();
      
      _max_x = w*_scale/2;
      _max_y = h*_scale/2;
      
      _cam = VIEW::peek_cam()->data()->from();
      _cam_at_v = VIEW::peek_cam()->data()->at_v();
      
      _strokes_drawn = 0;
   }
   
   GLSLPaperShader::begin_glsl_paper(_p);  
}
Beispiel #3
0
};

#define VIEW_SIZE(action,label,size) \
  { "dockable-preview-size-" action, NULL, \
    (label), NULL, NULL, \
    (size), \
    GIMP_HELP_DOCK_PREVIEW_SIZE }
#define TAB_STYLE(action,label,style) \
  { "dockable-tab-style-" action, NULL, \
    (label), NULL, NULL, \
    (style), \
    GIMP_HELP_DOCK_TAB_STYLE }

static const GimpRadioActionEntry dockable_view_size_actions[] =
{
    VIEW_SIZE ("tiny",        N_("_Tiny"),        GIMP_VIEW_SIZE_TINY),
    VIEW_SIZE ("extra-small", N_("E_xtra Small"), GIMP_VIEW_SIZE_EXTRA_SMALL),
    VIEW_SIZE ("small",       N_("_Small"),       GIMP_VIEW_SIZE_SMALL),
    VIEW_SIZE ("medium",      N_("_Medium"),      GIMP_VIEW_SIZE_MEDIUM),
    VIEW_SIZE ("large",       N_("_Large"),       GIMP_VIEW_SIZE_LARGE),
    VIEW_SIZE ("extra-large", N_("Ex_tra Large"), GIMP_VIEW_SIZE_EXTRA_LARGE),
    VIEW_SIZE ("huge",        N_("_Huge"),        GIMP_VIEW_SIZE_HUGE),
    VIEW_SIZE ("enormous",    N_("_Enormous"),    GIMP_VIEW_SIZE_ENORMOUS),
    VIEW_SIZE ("gigantic",    N_("_Gigantic"),    GIMP_VIEW_SIZE_GIGANTIC)
};

static const GimpRadioActionEntry dockable_tab_style_actions[] =
{
    TAB_STYLE ("icon",         N_("_Icon"),           GIMP_TAB_STYLE_ICON),
    TAB_STYLE ("preview",      N_("Current _Status"), GIMP_TAB_STYLE_PREVIEW),
    TAB_STYLE ("name",         N_("_Text"),           GIMP_TAB_STYLE_NAME),