static VALUE rg_m_set_icon(int argc, VALUE *argv, VALUE self) { VALUE context, obj, pixmap = Qnil, mask = Qnil, hot_x, hot_y; if (argc == 6) { rb_scan_args(argc, argv, "60", &context, &obj, &pixmap, &mask, &hot_x, &hot_y); gtk_drag_set_icon_pixmap(RVAL2DC(context), GDK_COLORMAP(RVAL2GOBJ(obj)), GDK_PIXMAP(RVAL2GOBJ(pixmap)), GDK_BITMAP(RVAL2GOBJ(mask)), NUM2INT(hot_x), NUM2INT(hot_y)); } else { rb_scan_args(argc, argv, "40", &context, &obj, &hot_x, &hot_y); if (TYPE(obj) == T_SYMBOL){ gtk_drag_set_icon_stock(RVAL2DC(context), rb_id2name(SYM2ID(obj)), NUM2INT(hot_x), NUM2INT(hot_y)); } else if (rb_obj_is_kind_of(obj, GTYPE2CLASS(GTK_TYPE_WIDGET))){ gtk_drag_set_icon_widget(RVAL2DC(context), RVAL2WIDGET(obj), NUM2INT(hot_x), NUM2INT(hot_y)); } else if (rb_obj_is_kind_of(obj, GTYPE2CLASS(GDK_TYPE_PIXBUF))){ gtk_drag_set_icon_pixbuf(RVAL2DC(context), GDK_PIXBUF(RVAL2GOBJ(obj)), NUM2INT(hot_x), NUM2INT(hot_y)); } else { rb_raise(rb_eArgError, "invalid argument %s", rb_class2name(CLASS_OF(obj))); } } return self; }
static VALUE rg_s_from_image(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self) { VALUE cmap, src, src_x, src_y, width, height, dest, dest_x, dest_y; GdkPixbuf* buf; rb_scan_args(argc, argv, "63", &cmap, &src, &src_x, &src_y, &width, &height, &dest, &dest_x, &dest_y); buf = gdk_pixbuf_get_from_image(GDK_PIXBUF(RVAL2GOBJ(dest)), GDK_IMAGE(RVAL2GOBJ(src)), GDK_COLORMAP(RVAL2GOBJ(cmap)), NUM2INT(src_x), NUM2INT(src_y), NIL_P(dest_x) ? 0 : NUM2INT(dest_x), NIL_P(dest_y) ? 0 : NUM2INT(dest_y), NUM2INT(width), NUM2INT(height)); if (NIL_P(dest)) { if (buf) { return GOBJ2RVAL(buf); } else { return Qnil; } } else { return dest; } }
int clip_GTK_DRAGSETICONPIXMAP(ClipMachine * cm) { C_object *ccontext = _fetch_co_arg(cm); C_object *ccolormap = _fetch_cobject(cm, _clip_spar(cm, 2)); C_object *cpixmap = _fetch_cobject(cm, _clip_spar(cm, 3)); C_object *cmask = _fetch_cobject(cm, _clip_spar(cm, 4)); gint hot_x = _clip_parni(cm, 5); gint hot_y = _clip_parni(cm, 6); if (!ccontext || ccontext->type != GDK_TYPE_DRAG_CONTEXT) goto err; CHECKCOBJ(ccolormap, GDK_IS_COLORMAP(ccolormap->object)); CHECKCOBJ(cpixmap, GDK_IS_PIXMAP(cpixmap->object)); CHECKCOBJ(cmask, GDK_IS_BITMAP(cmask)); CHECKARG(5, NUMERIC_t); CHECKARG(6, NUMERIC_t); gtk_drag_set_icon_pixmap((GdkDragContext*)ccontext->object, GDK_COLORMAP(ccolormap->object), GDK_PIXMAP(cpixmap->object), GDK_BITMAP(cmask->object), hot_x, hot_y ); return 0; err: return 1; }
static VALUE gdkpango_context_set_colormap(VALUE self, VALUE colormap) { gdk_pango_context_set_colormap(PANGO_CONTEXT(RVAL2GOBJ(self)), GDK_COLORMAP(RVAL2GOBJ(self))); return self; }
gboolean time_line_internal_draw_layer_name(TimeLinePrivate *priv, gint layer_number) { // Local variables const GdkColor colour_black = {0, 0, 0, 0 }; static GdkColormap *colourmap = NULL; // Colourmap used for drawing static GdkGC *display_buffer_gc = NULL; static PangoContext *font_context = NULL; static PangoFontDescription *font_description = NULL; static PangoLayout *font_layout = NULL; layer *layer_data; GList *layer_pointer; // Points to the layers in the selected slide GString *message = NULL; message = g_string_new(NULL); // Initialisation if (NULL == colourmap) { colourmap = gdk_colormap_get_system(); gdk_drawable_set_colormap(GDK_DRAWABLE(priv->display_buffer_bot_left), GDK_COLORMAP(colourmap)); } if (NULL == font_context) { font_context = gdk_pango_context_get(); } if (NULL == font_layout) { font_layout = pango_layout_new(font_context); } if (NULL == display_buffer_gc) { display_buffer_gc = gdk_gc_new(GDK_DRAWABLE(priv->display_buffer_bot_left)); } if (NULL == font_description) { font_description = pango_font_description_from_string("Sans , 15px"); pango_layout_set_font_description(font_layout, font_description); } // Retrieve the layer name string layer_pointer = get_current_slide_layers_pointer(); layer_pointer = g_list_first(layer_pointer); layer_data = g_list_nth_data(layer_pointer, layer_number); // g_string_printf(message, "%d %s ",layer_number,layer_data->name->str); pango_layout_set_text(font_layout, layer_data->name->str, -1); // Set a clip mask // clip_region.x = 0; // clip_region.y = (layer_number <= 0)?0:(layer_number * priv->row_height); // clip_region.width = priv->left_border_width - 1; // clip_region.height = priv->row_height * 2; // gdk_gc_set_clip_rectangle(GDK_GC(display_buffer_gc), &clip_region); // Draw the text string gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_black); gdk_draw_layout(GDK_DRAWABLE(priv->display_buffer_bot_left), GDK_GC(display_buffer_gc), 5, (layer_number * priv->row_height)+1,font_layout); return TRUE; }
static VALUE rg_set_colormap(VALUE self, VALUE colormap) { VALUE old_colormap; old_colormap = GOBJ2RVAL(gdk_drawable_get_colormap(_SELF(self))); G_CHILD_REMOVE(self, old_colormap); G_CHILD_ADD(self, colormap); gdk_drawable_set_colormap(_SELF(self), GDK_COLORMAP(RVAL2GOBJ(colormap))); return self; }
static VALUE gdkpmap_colormap_create_from_xpm_d(VALUE self, VALUE win, VALUE colormap, VALUE tcolor, VALUE data) { GdkPixmap *result; GdkBitmap *mask; const gchar **buf = RVAL2STRV(data); result = gdk_pixmap_colormap_create_from_xpm_d(NIL_P(win) ? NULL : GDK_WINDOW(RVAL2GOBJ(win)), GDK_COLORMAP(RVAL2GOBJ(colormap)), &mask, RVAL2GDKCOLOR(tcolor), (gchar **)buf); return rb_assoc_new(GOBJ2RVAL(result), GOBJ2RVAL(mask)); }
static VALUE gdkpmap_colormap_create_from_xpm(VALUE self, VALUE win, VALUE colormap, VALUE tcolor, VALUE fname) { GdkPixmap *result; GdkBitmap *mask; result = gdk_pixmap_colormap_create_from_xpm(NIL_P(win) ? NULL : GDK_WINDOW(RVAL2GOBJ(win)), GDK_COLORMAP(RVAL2GOBJ(colormap)), &mask, RVAL2GDKCOLOR(tcolor), RVAL2CSTR(fname)); if (result == NULL) rb_raise(rb_eArgError, "Pixmap not created from %s", RVAL2CSTR(fname)); return rb_assoc_new(GOBJ2RVAL(result), GOBJ2RVAL(mask)); }
static void gdk_colormap_finalize (GObject *object) { GdkColormap *colormap = GDK_COLORMAP (object); GdkColormapPrivateDirectFB *private = colormap->windowing_data; g_free (colormap->colors); if (private) { g_free (private->info); if (private->palette) private->palette->Release (private->palette); g_free (private); colormap->windowing_data = NULL; } G_OBJECT_CLASS (gdk_colormap_parent_class)->finalize (object); }
static VALUE rg_m_source_set_icon(int argc, VALUE *argv, VALUE self) { VALUE widget, obj, pixmap = Qnil, mask = Qnil; rb_scan_args(argc, argv, "22", &widget, &obj, &pixmap, &mask); if (argc == 4){ gtk_drag_source_set_icon(RVAL2WIDGET(widget), GDK_COLORMAP(RVAL2GOBJ(obj)), GDK_PIXMAP(RVAL2GOBJ(pixmap)), GDK_BITMAP(RVAL2GOBJ(mask))); } else if (argc == 2){ if (TYPE(obj) == T_SYMBOL){ gtk_drag_source_set_icon_stock(RVAL2WIDGET(widget), rb_id2name(SYM2ID(obj))); } else { gtk_drag_source_set_icon_pixbuf(RVAL2WIDGET(widget), GDK_PIXBUF(RVAL2GOBJ(obj))); } } else { rb_raise(rb_eArgError, "need 2 or 4 arguments"); } return self; }
int clip_GTK_DRAGSOURCESETICON(ClipMachine * cm) { C_widget *cwid = _fetch_cw_arg(cm); C_object *ccolormap = _fetch_cobject(cm, _clip_spar(cm, 2)); C_object *cpixmap = _fetch_cobject(cm, _clip_spar(cm, 3)); C_object *cmask = _fetch_cobject(cm, _clip_spar(cm, 4)); CHECKCWID(cwid, GTK_IS_WIDGET); CHECKCOBJ(ccolormap, GDK_IS_COLORMAP(ccolormap->object)); CHECKCOBJ(cpixmap, GDK_IS_PIXMAP(cpixmap->object)); CHECKCOBJ(cmask, GDK_IS_BITMAP(cmask)); gtk_drag_source_set_icon(GTK_WIDGET(cwid->widget), GDK_COLORMAP(ccolormap->object), GDK_PIXMAP(cpixmap->object), GDK_BITMAP(cmask->object)); return 0; err: return 1; }
int clip_GTK_DRAGSETDEFAULTICON(ClipMachine * cm) { C_object *ccolormap = _fetch_co_arg(cm); C_object *cpixmap = _fetch_cobject(cm, _clip_spar(cm, 2)); C_object *cmask = _fetch_cobject(cm, _clip_spar(cm, 3)); gint hot_x = _clip_parni(cm, 4); gint hot_y = _clip_parni(cm, 5); CHECKCOBJ(ccolormap, GDK_IS_COLORMAP(ccolormap->object)); CHECKCOBJ(cpixmap, GDK_IS_PIXMAP(cpixmap->object)); CHECKCOBJ(cmask, GDK_IS_PIXMAP(cmask)); CHECKARG(5, NUMERIC_t); CHECKARG(4, NUMERIC_t); gtk_drag_set_default_icon(GDK_COLORMAP(ccolormap->object), GDK_PIXMAP(cpixmap->object), GDK_BITMAP(cmask->object), hot_x, hot_y ); return 0; err: return 1; }
gboolean time_line_internal_draw_layer_duration(TimeLinePrivate *priv, gint layer_number) { // Local variables const GdkColor colour_black = {0, 0, 0, 0 }; const GdkColor colour_fade = {0, (160 << 8), (160 << 8), (190 << 8) }; const GdkColor colour_fully_visible = {0, (200 << 8), (200 << 8), (230 << 8) }; static GdkColormap *colourmap = NULL; // Colormap used for drawing static GdkGC *display_buffer_gc = NULL; gint layer_height; layer *layer_data; GList *layer_pointer; // Points to the layers in the selected slide gint layer_width; gint layer_x; gint layer_y; gint left_border; // Initialisation if (NULL == colourmap) { colourmap = gdk_colormap_get_system(); gdk_drawable_set_colormap(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_COLORMAP(colourmap)); } if (NULL == display_buffer_gc) { display_buffer_gc = gdk_gc_new(GDK_DRAWABLE(priv->display_buffer_bot_right)); } left_border = 0;// time_line_get_left_border_width(priv); // Select the layer we're working with layer_pointer = get_current_slide_layers_pointer(); layer_pointer = g_list_first(layer_pointer); layer_data = g_list_nth_data(layer_pointer, layer_number); // Set the height related variables layer_y = (layer_number * priv->row_height) + 2; layer_height = priv->row_height - 3; // Check if there's a fade in transition for this layer if (TRANS_LAYER_FADE == layer_data->transition_in_type) { // Draw the fade in layer_x = left_border + (layer_data->start_time * time_line_get_pixels_per_second()) + 1; layer_width = (layer_data->transition_in_duration * time_line_get_pixels_per_second()); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_fade); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), TRUE, layer_x, layer_y, layer_width, layer_height); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_black); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), FALSE, layer_x, layer_y, layer_width, layer_height - 1); // Draw the fully visible duration layer_x = left_border + ((layer_data->start_time + layer_data->transition_in_duration) * time_line_get_pixels_per_second()) + 1; layer_width = (layer_data->duration * time_line_get_pixels_per_second()); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_fully_visible); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), TRUE, layer_x, layer_y, layer_width, layer_height); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_black); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), FALSE, layer_x - 1, layer_y, layer_width, layer_height -1); } else { // There's no fade in transition for this layer layer_x = left_border + (layer_data->start_time * time_line_get_pixels_per_second()) + 1; layer_width = (layer_data->duration * time_line_get_pixels_per_second()); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_fully_visible); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), TRUE, layer_x, layer_y, layer_width, layer_height); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_black); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), FALSE, layer_x, layer_y, layer_width - 1, layer_height - 1); } // Check if there's a fade out transition for this layer if (TRANS_LAYER_FADE == layer_data->transition_out_type) { // Draw the fade out layer_x += (layer_data->duration * time_line_get_pixels_per_second()); layer_width = (layer_data->transition_out_duration * time_line_get_pixels_per_second()); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_fade); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), TRUE, layer_x, layer_y, layer_width, layer_height); gdk_gc_set_rgb_fg_color(GDK_GC(display_buffer_gc), &colour_black); gdk_draw_rectangle(GDK_DRAWABLE(priv->display_buffer_bot_right), GDK_GC(display_buffer_gc), FALSE, layer_x - 1, layer_y, layer_width, layer_height - 1); } return TRUE; }
static VALUE rg_set_colormap(VALUE self, VALUE val) { _SELF(self)->colormap = GDK_COLORMAP(RVAL2GOBJ(val)); return self; }
CLIP_DLLEXPORT void _map_to_style(ClipMachine *cm, ClipVar *m_style, GtkStyle *style) { ClipVar *c; PangoFontDescription * font = NULL; C_object *ccmap; if ( (c = _clip_mget( cm, m_style, HASH_BG_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->bg_gc); /* Colors */ if ( (c = _clip_mget( cm, m_style, HASH_FG_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->fg); if ( (c = _clip_mget( cm, m_style, HASH_BG_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->bg); if ( (c = _clip_mget( cm, m_style, HASH_LIGHT_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->light); if ( (c = _clip_mget( cm, m_style, HASH_DARK_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->dark); if ( (c = _clip_mget( cm, m_style, HASH_MID_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->mid); if ( (c = _clip_mget( cm, m_style, HASH_TEXT_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->text); if ( (c = _clip_mget( cm, m_style, HASH_BASE_COLOR )) != NULL ) _map_colors_to_gdk_array(cm, c, style->base); if ( (c = _clip_mget( cm, m_style, HASH_BLACK_COLOR )) != NULL ) _map_colors_to_gdk(cm, c, &style->black); if ( (c = _clip_mget( cm, m_style, HASH_WHITE_COLOR )) != NULL ) _map_colors_to_gdk(cm, c, &style->white); /* Graphics contexts */ if ( (c = _clip_mget( cm, m_style, HASH_FG_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->fg_gc); if ( (c = _clip_mget( cm, m_style, HASH_BG_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->bg_gc); if ( (c = _clip_mget( cm, m_style, HASH_LIGHT_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->light_gc); if ( (c = _clip_mget( cm, m_style, HASH_DARK_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->dark_gc); if ( (c = _clip_mget( cm, m_style, HASH_MID_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->mid_gc); if ( (c = _clip_mget( cm, m_style, HASH_TEXT_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->text_gc); if ( (c = _clip_mget( cm, m_style, HASH_BASE_GC )) != NULL ) _map_gc_to_gdk_array(cm, c, style->base_gc); if ( (c = _clip_mget( cm, m_style, HASH_BLACK_GC )) != NULL ) _map_gc_to_gdk(cm, c, &style->black_gc); if ( (c = _clip_mget( cm, m_style, HASH_WHITE_GC )) != NULL ) _map_gc_to_gdk(cm, c, &style->white_gc); /* Set font of widget */ c = _clip_mget(cm,m_style,HASH_FONT); if (c != NULL) { font = pango_font_description_from_string(c->s.str.buf); if (font) { style->font_desc = font; } } /* Set colormap of widget */ c = _clip_mget(cm,m_style,HASH_COLORMAP); if (c && (c->t.type == MAP_t || c->t.type == NUMERIC_t)) { ccmap = _fetch_cobject(cm,_clip_mget(cm,m_style,HASH_COLORMAP)); if (ccmap) { style->colormap = GDK_COLORMAP(ccmap->object); } } }
static VALUE rg_s_set_default_colormap(G_GNUC_UNUSED VALUE self, VALUE cmap) { gtk_widget_set_default_colormap(GDK_COLORMAP(RVAL2GOBJ(cmap))); return cmap; }
static VALUE rg_set_colormap(VALUE self, VALUE colormap) { gtk_widget_set_colormap(_SELF(self), GDK_COLORMAP(RVAL2GOBJ(colormap))); return self; }