Exemple #1
0
static void
draw_shadow (GdkPixmap *pixmap, int x, int y, int width, int height)
{
	GdkPixbuf *shadow;
	int        i, alpha = 0, max;

	shadow = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width, height);

	gdk_pixbuf_fill (shadow, 0x00000000);

	max = MAX (width / 2, height / 2);
	for (i = 1; i < max; i++) {
		_gdk_pixbuf_draw_rectangle (shadow, i, alpha);
		alpha += 12;
		alpha = MIN (alpha, 255);
	}

	gdk_pixbuf_render_to_drawable_alpha (shadow,
					     pixmap,
					     0, 0,
					     x, y,
					     width, height,
					     GDK_PIXBUF_ALPHA_FULL, 
					     255,
					     GDK_RGB_DITHER_MAX, 0, 0);

	g_object_unref (shadow);
}
Exemple #2
0
void draw_selected_color (GtkWidget * widget, 
                          HSV hsv, GdkPixbuf **pixbufs) {
    GdkGC * gc;
    float angle, radius;
    GdkPixbuf * colorwheel, * brightness;
    gint xcenter, ycenter, x, y, width, height;
    GtkAllocation allocation;

    gc = gdk_gc_new(gtk_widget_get_window(widget));
    gdk_rgb_gc_set_foreground(gc, 0);
    
    colorwheel = g_object_get_data(G_OBJECT (widget), DATA_HS_PIXBUF);
    brightness = g_object_get_data(G_OBJECT (widget), DATA_V_PIXBUF);

    width = gdk_pixbuf_get_width(brightness);
    height = gdk_pixbuf_get_height(brightness);
    gtk_widget_get_allocation(widget, &allocation);
    x = allocation.width - 
        gdk_pixbuf_get_width(brightness) -
        2*COLORWHEEL_SELECT;
    y = (1.0 - hsv.V) * (float) gdk_pixbuf_get_height(brightness);
    gdk_draw_line(
        gtk_widget_get_window(widget), gc,
        x, y + COLORWHEEL_SELECT,
        allocation.width, COLORWHEEL_SELECT + y);
    
    /* Hue is 0..6 */
    angle = (hsv.H / 3) * (M_PI);
    radius = (hsv.S * gdk_pixbuf_get_width(colorwheel)) / 2.0;
    x = radius * cos (angle);
    y = radius * sin (angle);

    width = gdk_pixbuf_get_width(pixbufs[PM_COLOR_SEL]);
    height = gdk_pixbuf_get_height(pixbufs[PM_COLOR_SEL]);
    xcenter = allocation.height / 2.0; // Use height on purpose
    ycenter = allocation.height / 2.0;    
    gdk_pixbuf_render_to_drawable_alpha(
        pixbufs[PM_COLOR_SEL],
        gtk_widget_get_window(widget),
        0, 0,
        (xcenter + x) - width/2, (ycenter + y) - height/2, 
        width,
        height,
        GDK_PIXBUF_ALPHA_FULL,
        127,
        GDK_RGB_DITHER_NORMAL, 
        0, 0);
    gdk_gc_unref(gc);
}
static void draw_eye (t_eyes *eyes_applet,
                      gint eye_num,
                      gint pupil_x,
                      gint pupil_y)
{
    /*
     * XXX - gdk_pixbuf_render_to_drawable_alpha is deprecated. Any
     * replacements?
     *
     * dannym: yes ;)
     */

#if defined (GTK_CHECK_VERSION) && GTK_CHECK_VERSION(2,2,0)
    gdk_draw_pixbuf (eyes_applet->eyes[eye_num]->window,
                     /*gc*/NULL,
                     eyes_applet->eye_image,
                     0, 0,
                     0, 0,
                     eyes_applet->eye_width,
                     eyes_applet->eye_height,
                     GDK_RGB_DITHER_NONE,
                     0, 0);
    /* how to do the alpha channel? */

    gdk_draw_pixbuf (
        eyes_applet->eyes[eye_num]->window,
        /*gc*/ NULL,
        eyes_applet->pupil_image,
        0, 0,
        pupil_x - eyes_applet->pupil_width / 2,
        pupil_y - eyes_applet->pupil_height / 2,
        -1, -1,
        GDK_RGB_DITHER_NONE,
        0,
        0);

#else
    /*pixbuf,drwable(dest),src_x,src_y,dest_x,dest_y,w,h,resv,resv,dither,xdither,ydither) */
    gdk_pixbuf_render_to_drawable_alpha (eyes_applet->eye_image,
                                         eyes_applet->eyes[eye_num]->window,
                                         0, 0,
                                         0, 0,
                                         eyes_applet->eye_width,
                                         eyes_applet->eye_height,
                                         GDK_PIXBUF_ALPHA_BILEVEL,
                                         128,
                                         GDK_RGB_DITHER_NONE,
                                         0,
                                         0);

    gdk_pixbuf_render_to_drawable_alpha (eyes_applet->pupil_image,
                                         eyes_applet->eyes[eye_num]->window,
                                         0, 0,
                                         pupil_x - eyes_applet->pupil_width / 2,
                                         pupil_y - eyes_applet->pupil_height / 2,
                                         -1, -1,
                                         GDK_PIXBUF_ALPHA_BILEVEL,
                                         128,
                                         GDK_RGB_DITHER_NONE,
                                         0,
                                         0);
#endif

}
Exemple #4
0
static gboolean drawing_expose_event_callback (GtkWidget *widget,
                                               GdkEventExpose *event, 
                                               gpointer data) {
    GList * ll, ** list;
    HSV * hsv, prev_hsv;
    GjaySong * s;
    gint xcenter, ycenter, width, height, num_colors;
    GdkPixbuf * colorwheel, * brightness;
    GtkAllocation allocation;
    gboolean set;
	GjayApp *gjay=(GjayApp*)data;

    set = FALSE;
    num_colors = 0;
    list = g_object_get_data(G_OBJECT (widget), DATA_LIST);
    hsv = g_object_get_data(G_OBJECT (widget), DATA_COLOR);
    assert(hsv);
    prev_hsv.H = -1;
    prev_hsv.S = -1;
    prev_hsv.V = -1;

    colorwheel = g_object_get_data(G_OBJECT (widget), DATA_HS_PIXBUF);
    brightness = g_object_get_data(G_OBJECT (widget), DATA_V_PIXBUF);

    gdk_draw_rectangle  (gtk_widget_get_window(widget),
                         gtk_widget_get_style(widget)->bg_gc[gtk_widget_get_state(widget)],
                         TRUE,
                         event->area.x,
                         event->area.y,
                         event->area.width,
                         event->area.height);
    
    width = gdk_pixbuf_get_width(brightness);
    height = gdk_pixbuf_get_height(brightness);
    gtk_widget_get_allocation(widget, &allocation);
    gdk_pixbuf_render_to_drawable_alpha(
        brightness, 
        gtk_widget_get_window(widget),
        0, 0,
        allocation.width - width - COLORWHEEL_SELECT,
        COLORWHEEL_SELECT,
        width,
        height,
        GDK_PIXBUF_ALPHA_FULL,
        127,
        GDK_RGB_DITHER_NORMAL, 
        0, 0);

    width = gdk_pixbuf_get_width(colorwheel);
    height = gdk_pixbuf_get_height(colorwheel);
    gtk_widget_get_allocation(widget, &allocation);
    xcenter = allocation.height / 2.0; // Use height on purpose
    ycenter = allocation.height / 2.0;
    gdk_pixbuf_render_to_drawable_alpha(
        colorwheel, 
        gtk_widget_get_window(widget),
        0, 0,
        xcenter - width/2,
        ycenter - height/2,
        width,
        height,
        GDK_PIXBUF_ALPHA_FULL,
        127,
        GDK_RGB_DITHER_NORMAL, 
        0, 0);

    if (list) {
        for (ll = g_list_first(gjay->selected_songs); ll; ll = g_list_next(ll)) {
            s = (GjaySong *) ll->data;
            if (!s->no_color) {
                set = TRUE;
                *hsv = s->color;
                if (!((hsv->H == prev_hsv.H) &&
                      (hsv->S == prev_hsv.S) &&
                      (hsv->V == prev_hsv.V))) {
                    draw_selected_color(widget, s->color, gjay->gui->pixbufs);
                    num_colors++;   
                    prev_hsv = *hsv;
             }
            }
        }    
        if (set) {
            if (num_colors == 1) {
                draw_swatch_color(widget, *hsv);
            }
        } else {
            width = gdk_pixbuf_get_width(gjay->gui->pixbufs[PM_NOT_SET]);
            height = gdk_pixbuf_get_height(gjay->gui->pixbufs[PM_NOT_SET]);
            gdk_pixbuf_render_to_drawable_alpha(
                gjay->gui->pixbufs[PM_NOT_SET],
                gtk_widget_get_window(widget),
                0, 0,
                xcenter - width/2, ycenter - height/2,
                width, height,
                GDK_PIXBUF_ALPHA_FULL,
                127,
                GDK_RGB_DITHER_NORMAL, 
                0, 0);

            // When the user does set a color, make it full brightness
            hsv->V = 1;
        }
    } else {
        draw_selected_color(widget, *hsv, gjay->gui->pixbufs);
        draw_swatch_color(widget, *hsv);
    }
    return TRUE;
}
Exemple #5
0
void
gthumb_draw_image_shadow_out (int          image_x,
			      int          image_y,
			      int          image_w,
			      int          image_h,
			      GdkDrawable *drawable)
{
	GdkPixbuf *shadow;

	shadow = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, image_w, image_h);

	gdk_pixbuf_fill (shadow,  0xFFFFFF80);
	gdk_pixbuf_render_to_drawable_alpha (shadow,
					     drawable,
					     0, 0,
					     image_x - INOUT_SHADOW_OFFSET,
					     image_y - INOUT_SHADOW_OFFSET,
					     image_w, image_h,
					     GDK_PIXBUF_ALPHA_FULL, 
					     255,
					     GDK_RGB_DITHER_MAX, 0, 0);

	gdk_pixbuf_fill (shadow,  0x00000080);
	gdk_pixbuf_render_to_drawable_alpha (shadow,
					     drawable,
					     0, 0,
					     image_x + INOUT_SHADOW_OFFSET,
					     image_y + INOUT_SHADOW_OFFSET,
					     image_w, image_h,
					     GDK_PIXBUF_ALPHA_FULL, 
					     255,
					     GDK_RGB_DITHER_MAX, 0, 0);

	g_object_unref (shadow);

	/**/

	shadow = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 
				 INOUT_SHADOW_OFFSET * 2, 
				 INOUT_SHADOW_OFFSET * 2);

	_gdk_pixbuf_fill_triangle (shadow, 0xFFFFFF80, 0x00000080);
	
	gdk_pixbuf_render_to_drawable_alpha (shadow,
					     drawable,
					     0, 0,
					     image_x + image_w - INOUT_SHADOW_OFFSET,
					     image_y - INOUT_SHADOW_OFFSET,
					     INOUT_SHADOW_OFFSET * 2, 
					     INOUT_SHADOW_OFFSET * 2,
					     GDK_PIXBUF_ALPHA_FULL, 
					     255,
					     GDK_RGB_DITHER_MAX, 0, 0);

	gdk_pixbuf_render_to_drawable_alpha (shadow,
					     drawable,
					     0, 0,
					     image_x - INOUT_SHADOW_OFFSET,
					     image_y + image_h - INOUT_SHADOW_OFFSET,
					     INOUT_SHADOW_OFFSET * 2, 
					     INOUT_SHADOW_OFFSET * 2,
					     GDK_PIXBUF_ALPHA_FULL, 
					     255,
					     GDK_RGB_DITHER_MAX, 0, 0);


	g_object_unref (shadow);
}