コード例 #1
0
ファイル: frmSplash.c プロジェクト: darxen/Darxen
static gboolean
darxen_splash_darea_realize(GtkWidget *widget)
{
	GdkGLContext *glcontext;
	GdkGLDrawable *gldrawable;

	g_return_val_if_fail(GTK_IS_DRAWING_AREA(widget), TRUE);
	glcontext = gtk_widget_get_gl_context(widget);
	gldrawable = gtk_widget_get_gl_drawable(widget);

	if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
		return TRUE;

	glDisable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);

	glSettings->glShareList = glcontext;
	darxen_renderer_shared_init_text();

	settings_set_gl(glSettings);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glClearColor(0.0, 0.0, 0.0, 0.0);

	gdk_gl_drawable_gl_end(gldrawable);

	return FALSE;
}
コード例 #2
0
ファイル: view_area.c プロジェクト: consultit/geomorph
gint area_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
	view_struct *vs;
	vs = (view_struct *) data;
  	if (event->count > 0) {
    		return(TRUE);
  	}
	if (GTK_IS_DRAWING_AREA(vs->area)) {
		if (vs->if_rgb) {
			gdk_draw_rgb_image(vs->area->window,
				vs->area->style->fg_gc[GTK_WIDGET_STATE (vs->area)],
				0,0,vs->width, 
				vs->height,
				GDK_RGB_DITHER_NONE,
				vs->buf8,
				3*vs->width);
		}
		else {
			gdk_draw_gray_image(vs->area->window, 
				vs->area->style->black_gc,
				0, 0, vs->width, 
				vs->height, 
				GDK_RGB_DITHER_NONE, 
				vs->buf8,
				vs->width);
		}
	}
	return TRUE;
}
コード例 #3
0
ファイル: tour1d.c プロジェクト: medmatix/ggobi
gboolean
tour1d_varsel (GtkWidget *w, gint jvar, gint toggle, gint mouse, GGobiStage *d, GGobiSession *gg)
{
  displayd *dsp = gg->current_display;
  gboolean redraw = true;

  if (GTK_IS_TOGGLE_BUTTON(w) || GTK_IS_BUTTON(w)) {  /* toggle or 'label' */
    /*
     * add/remove jvar to/from the subset of variables that <may> be active
    */
    gboolean fade = gg->tour1d.fade_vars;

    redraw = tour1d_subset_var_set (jvar, d, dsp, gg);
    if (redraw) {
      varcircles_visibility_set (dsp, gg);

      /*-- Add/remove the variable to/from the active set, too.
           But: if we just removed it from the subset, but it was
           already inactive, there's no need to do anything --*/
      if (dsp->t1d.subset_vars_p.els[jvar] == false &&
          dsp->t1d.active_vars_p.els[jvar] == false)
        ;
      else {
        gg->tour1d.fade_vars = false;
        tour1d_active_var_set (jvar, d, dsp, gg);
        gg->tour1d.fade_vars = fade;

        if (dsp->t1d_window != NULL && GTK_WIDGET_VISIBLE (dsp->t1d_window)) {
          free_optimize0_p(&dsp->t1d_pp_op);
          alloc_optimize0_p(&dsp->t1d_pp_op, d->n_rows,
            dsp->t1d.nactive, 1);
          t1d_pp_reinit(dsp, gg);
        }
      }
    }

  } else if (GTK_IS_DRAWING_AREA(w)) {

    /*-- any button --*/
    if (d->vcirc_ui.jcursor == GDK_HAND2) { /* This part sets the manip var */
      tour1d_manip_var_set (jvar, mouse, gg);
      varcircles_cursor_set_default (d);
    } else { /* This part sets active/not active var */
      tour1d_active_var_set (jvar, d, dsp, gg);

      if (dsp->t1d_window != NULL && GTK_WIDGET_VISIBLE (dsp->t1d_window)) {
        free_optimize0_p(&dsp->t1d_pp_op);
        alloc_optimize0_p(&dsp->t1d_pp_op, d->n_rows, dsp->t1d.nactive, 
          1);
        t1d_pp_reinit(dsp, gg);
      }
    }
  }

  return redraw;
}
コード例 #4
0
ファイル: frmSplash.c プロジェクト: darxen/Darxen
static gboolean
darxen_splash_darea_configure(GtkWidget *widget, GdkEventConfigure *event)
{
	GdkGLContext *glcontext;
	GdkGLDrawable *gldrawable;

	g_return_val_if_fail(GTK_IS_DRAWING_AREA(widget), TRUE);
	glcontext = gtk_widget_get_gl_context(widget);
	gldrawable = gtk_widget_get_gl_drawable(widget);

	if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
		return TRUE;

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, event->width, event->height, 0, 1, -1);
	glViewport(0, 0, event->width, event->height);
	glMatrixMode(GL_MODELVIEW);

	gdk_gl_drawable_gl_end(gldrawable);

	return FALSE;
}
コード例 #5
0
ファイル: accelerators.c プロジェクト: chubinou/darktable
void dt_accel_connect_slider_iop(dt_iop_module_t *module, const gchar *path,
                                 GtkWidget *slider)
{
  // just make this callback safe for bauhaus sliders for now:
  // TODO: implement it for these widgets, too!
  // (we check for their inheritance from gtk drawing area, that's simpler)
  if(GTK_IS_DRAWING_AREA(slider)) return;
  gchar increase_path[256];
  gchar decrease_path[256];
  gchar reset_path[256];
  gchar edit_path[256];
  dt_accel_t *accel = NULL;
  GClosure *closure;
  char *paths[] = {increase_path, decrease_path, reset_path, edit_path};
  dt_accel_paths_slider_iop(paths, 256, module->op, path);

  closure =  g_cclosure_new(G_CALLBACK(slider_increase_callback),
                            (gpointer)slider, NULL);
  accel = _lookup_accel(increase_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    increase_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_decrease_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(decrease_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    decrease_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_reset_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(reset_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    reset_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_edit_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(edit_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    edit_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }
}