示例#1
0
// Draw whole scene
void graph3d::draw_end(void)
{
  if(graphics) {
    clear();

    if(config.opengl_lighting) {
      gl_light::on();
    }
    
    if(p_scene_active) {
      p_scene_active->draw_end(config.draw_debug_all_objects);
    }
    
    if(config.opengl_lighting) {
      gl_light::off();
    }

    // Reset world matrix
    GPIPE *p_pipe = gpipe_get();
    if(p_pipe)
      p_pipe->world_init();
    
    if(config.draw_grid)
      grid_draw();
        
    if(p_pipe)
      p_pipe->matrix_2d_mode_set();

    if(config.draw_debug_fps)
      fps_draw();
    
    if(config.draw_console)
      console_draw();
    
    if(config.draw_mouse_cursor)
      mouse_cursor_draw();
  
    if(config.draw_selection)
      selection_rectangle_draw();
    
    if(p_pipe)
      p_pipe->matrix_3d_mode_set();
    
    flip();
  }
}
示例#2
0
文件: display.c 项目: chebizarro/dia
void
ddisplay_render_pixmap(DDisplay *ddisp, Rectangle *update)
{
  GList *list;
  DiaObject *obj;
  int i;
  DiaInteractiveRendererInterface *renderer;
#ifdef TRACES
  GTimer *timer;
#endif
  
  if (ddisp->renderer==NULL) {
    printf("ERROR! Renderer was NULL!!\n");
    return;
  }

  renderer = DIA_GET_INTERACTIVE_RENDERER_INTERFACE (ddisp->renderer);

  /* Erase background */
  g_return_if_fail (renderer->fill_pixel_rect != NULL);
  DIA_RENDERER_GET_CLASS(ddisp->renderer)->begin_render(ddisp->renderer, update);
  if (update) {
    int x0, y0, x1, y1;

    ddisplay_transform_coords (ddisp, update->left, update->top, &x0, &y0);
    ddisplay_transform_coords (ddisp, update->right, update->bottom, &x1, &y1);
    renderer->fill_pixel_rect (ddisp->renderer,
			       x0, y0, x1-x0, y1-y0,
			       &ddisp->diagram->data->bg_color);
  } else
    renderer->fill_pixel_rect (ddisp->renderer,
			       0, 0,
		               dia_renderer_get_width_pixels (ddisp->renderer),
			       dia_renderer_get_height_pixels (ddisp->renderer),
			       &ddisp->diagram->data->bg_color);

  /* Draw grid */
  grid_draw(ddisp, update);
  pagebreak_draw(ddisp, update);

#ifdef TRACES
  timer = g_timer_new();
#endif
  data_render(ddisp->diagram->data, ddisp->renderer, update,
	      ddisplay_obj_render, (gpointer) ddisp);
#ifdef TRACES
  g_print ("data_render(%g%%) took %g seconds\n", ddisp->zoom_factor * 5.0, g_timer_elapsed (timer, NULL));
  g_timer_destroy (timer);
#endif
  /* Draw handles for all selected objects */
  list = ddisp->diagram->data->selected;
  while (list!=NULL) {
    obj = (DiaObject *) list->data;

    for (i=0;i<obj->num_handles;i++) {
       handle_draw(obj->handles[i], ddisp);
     }
    list = g_list_next(list);
  }
  DIA_RENDERER_GET_CLASS(ddisp->renderer)->end_render(ddisp->renderer);
}
示例#3
0
void sequencer_mode_draw()
{
    grid_draw(&lp_sequencer);
}