static void get_property(GObject *gobject, guint property_id, GValue *value, GParamSpec *pspec) { GeglGtkView *self = GEGL_GTK_VIEW(gobject); ViewHelper *priv = GET_PRIVATE(self); switch (property_id) { case PROP_NODE: g_value_set_object(value, gegl_gtk_view_get_node(self)); break; case PROP_X: g_value_set_float(value, gegl_gtk_view_get_x(self)); break; case PROP_BLOCK: g_value_set_boolean(value, priv->block); break; case PROP_Y: g_value_set_float(value, gegl_gtk_view_get_y(self)); break; case PROP_SCALE: g_value_set_double(value, gegl_gtk_view_get_scale(self)); break; case PROP_AUTOSCALE_POLICY: g_value_set_enum(value, gegl_gtk_view_get_autoscale_policy(self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, property_id, pspec); break; } }
static void finalize(GObject *gobject) { GeglGtkView *self = GEGL_GTK_VIEW(gobject); g_object_unref(G_OBJECT(self->priv)); G_OBJECT_CLASS(gegl_gtk_view_parent_class)->finalize(gobject); }
static void size_allocate(GtkWidget *widget, GdkRectangle *allocation, gpointer user_data) { GeglGtkView *self = GEGL_GTK_VIEW(widget); gint scale_factor; scale_factor = gtk_widget_get_scale_factor (widget); view_helper_set_allocation(GET_PRIVATE(self), allocation, scale_factor); }
static gboolean draw(GtkWidget *widget, cairo_t *cr) { GeglGtkView *self = GEGL_GTK_VIEW(widget); ViewHelper *priv = GET_PRIVATE(self); GdkRectangle rect; if (!priv->node) return FALSE; gdk_cairo_get_clip_rectangle(cr, &rect); draw_implementation(self, cr, &rect); return FALSE; }
static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event) { GeglGtkView *self = GEGL_GTK_VIEW(widget); ViewHelper *priv = GET_PRIVATE(self); cairo_t *cr; GdkRectangle rect; if (!priv->node) return FALSE; cr = gdk_cairo_create(widget->window); gdk_cairo_region(cr, event->region); cairo_clip(cr); gdk_region_get_clipbox(event->region, &rect); draw_implementation(self, cr, &rect); cairo_destroy(cr); return FALSE; }
/** * gegl_gtk_view_new: * * Create a new #GeglGtkView * * Returns: New #GeglGtkView **/ GeglGtkView * gegl_gtk_view_new(void) { return GEGL_GTK_VIEW(g_object_new(GEGL_GTK_TYPE_VIEW, NULL)); }
static void size_allocate(GtkWidget *widget, GdkRectangle *allocation, gpointer user_data) { GeglGtkView *self = GEGL_GTK_VIEW(widget); view_helper_set_allocation(GET_PRIVATE(self), allocation); }