gimp r25112 - in trunk: . app/display
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25112 - in trunk: . app/display
- Date: Tue, 18 Mar 2008 20:24:49 +0000 (GMT)
Author: mitch
Date: Tue Mar 18 20:24:49 2008
New Revision: 25112
URL: http://svn.gnome.org/viewvc/gimp?rev=25112&view=rev
Log:
2008-03-18 Michael Natterer <mitch gimp org>
* app/display/gimpcanvas.[ch]: add gimp_canvas_draw_drop_zone()
which simply renders a big "Drop Here" on the canvas. Replaced
Gimp member and construct property by GimpDisplayConfig.
* app/display/gimpdisplayshell.c (gimp_display_shell_new): changed
accordingly.
Modified:
trunk/ChangeLog
trunk/app/display/gimpcanvas.c
trunk/app/display/gimpcanvas.h
trunk/app/display/gimpdisplayshell.c
Modified: trunk/app/display/gimpcanvas.c
==============================================================================
--- trunk/app/display/gimpcanvas.c (original)
+++ trunk/app/display/gimpcanvas.c Tue Mar 18 20:24:49 2008
@@ -26,17 +26,17 @@
#include "config/gimpdisplayconfig.h"
-#include "core/gimp.h"
-
#include "widgets/gimpwidgets-utils.h"
#include "gimpcanvas.h"
+#include "gimp-intl.h"
+
enum
{
PROP_0,
- PROP_GIMP
+ PROP_CONFIG
};
@@ -163,9 +163,9 @@
widget_class->unrealize = gimp_canvas_unrealize;
widget_class->style_set = gimp_canvas_style_set;
- g_object_class_install_property (object_class, PROP_GIMP,
- g_param_spec_object ("gimp", NULL, NULL,
- GIMP_TYPE_GIMP,
+ g_object_class_install_property (object_class, PROP_CONFIG,
+ g_param_spec_object ("config", NULL, NULL,
+ GIMP_TYPE_DISPLAY_CONFIG,
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
}
@@ -192,8 +192,8 @@
switch (property_id)
{
- case PROP_GIMP:
- canvas->gimp = g_value_get_object (value);
+ case PROP_CONFIG:
+ canvas->config = g_value_get_object (value); /* don't dup */
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -211,8 +211,8 @@
switch (property_id)
{
- case PROP_GIMP:
- g_value_set_object (value, canvas->gimp);
+ case PROP_CONFIG:
+ g_value_set_object (value, canvas->config);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -262,6 +262,12 @@
canvas->layout = NULL;
}
+ if (canvas->drop_zone_layout)
+ {
+ g_object_unref (canvas->drop_zone_layout);
+ canvas->drop_zone_layout = NULL;
+ }
+
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
}
@@ -279,6 +285,12 @@
g_object_unref (canvas->layout);
canvas->layout = NULL;
}
+
+ if (canvas->drop_zone_layout)
+ {
+ g_object_unref (canvas->drop_zone_layout);
+ canvas->drop_zone_layout = NULL;
+ }
}
/* Returns: %TRUE if the XOR color is not white */
@@ -286,10 +298,9 @@
gimp_canvas_get_xor_color (GimpCanvas *canvas,
GdkColor *color)
{
- GimpDisplayConfig *config = GIMP_DISPLAY_CONFIG (canvas->gimp->config);
- guchar r, g, b;
+ guchar r, g, b;
- gimp_rgb_get_uchar (&config->xor_color, &r, &g, &b);
+ gimp_rgb_get_uchar (&canvas->config->xor_color, &r, &g, &b);
color->red = (r << 8) | r;
color->green = (g << 8) | g;
@@ -491,13 +502,13 @@
* Return value: a new #GimpCanvas widget
**/
GtkWidget *
-gimp_canvas_new (Gimp *gimp)
+gimp_canvas_new (GimpDisplayConfig *config)
{
- g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
+ g_return_val_if_fail (GIMP_IS_DISPLAY_CONFIG (config), NULL);
return g_object_new (GIMP_TYPE_CANVAS,
- "name", "gimp-canvas",
- "gimp", gimp,
+ "name", "gimp-canvas",
+ "config", config,
NULL);
}
@@ -822,6 +833,34 @@
rgb_buf, rowstride, xdith, ydith);
}
+void
+gimp_canvas_draw_drop_zone (GimpCanvas *canvas,
+ cairo_t *cr)
+{
+ GtkWidget *widget = GTK_WIDGET (canvas);
+ gint width;
+ gint height;
+ gdouble factor;
+
+ if (! canvas->drop_zone_layout)
+ canvas->drop_zone_layout = gtk_widget_create_pango_layout (widget,
+ _("Drop Files"));
+
+ pango_layout_get_pixel_size (canvas->drop_zone_layout, &width, &height);
+
+ factor = MIN (2.0 / 3.0 * widget->allocation.width / width,
+ 2.0 / 3.0 * widget->allocation.height / height);
+
+ cairo_scale (cr, factor, factor);
+
+ cairo_move_to (cr,
+ (widget->allocation.width / factor - width) / 2.0,
+ (widget->allocation.height / factor - height) / 2.0);
+
+ pango_cairo_show_layout (cr, canvas->drop_zone_layout);
+ cairo_fill (cr);
+}
+
/**
* gimp_canvas_set_clip_rect:
* @canvas: a #GimpCanvas widget
Modified: trunk/app/display/gimpcanvas.h
==============================================================================
--- trunk/app/display/gimpcanvas.h (original)
+++ trunk/app/display/gimpcanvas.h Tue Mar 18 20:24:49 2008
@@ -59,13 +59,14 @@
struct _GimpCanvas
{
- GtkDrawingArea parent_instance;
+ GtkDrawingArea parent_instance;
- Gimp *gimp;
+ GimpDisplayConfig *config;
- GdkGC *gc[GIMP_CANVAS_NUM_STYLES];
- GdkBitmap *stipple[GIMP_CANVAS_NUM_STIPPLES];
- PangoLayout *layout;
+ GdkGC *gc[GIMP_CANVAS_NUM_STYLES];
+ GdkBitmap *stipple[GIMP_CANVAS_NUM_STIPPLES];
+ PangoLayout *layout;
+ PangoLayout *drop_zone_layout;
};
struct _GimpCanvasClass
@@ -76,84 +77,86 @@
GType gimp_canvas_get_type (void) G_GNUC_CONST;
-GtkWidget * gimp_canvas_new (Gimp *gimp);
+GtkWidget * gimp_canvas_new (GimpDisplayConfig *config);
-void gimp_canvas_draw_cursor (GimpCanvas *canvas,
- gint x,
- gint y);
-void gimp_canvas_draw_point (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gint x,
- gint y);
-void gimp_canvas_draw_points (GimpCanvas *canvas,
- GimpCanvasStyle style,
- GdkPoint *points,
- gint num_points);
-void gimp_canvas_draw_line (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gint x1,
- gint y1,
- gint x2,
- gint y2);
-void gimp_canvas_draw_lines (GimpCanvas *canvas,
- GimpCanvasStyle style,
- GdkPoint *points,
- gint num_points);
-void gimp_canvas_draw_rectangle (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gboolean filled,
- gint x,
- gint y,
- gint width,
- gint height);
-void gimp_canvas_draw_arc (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gboolean filled,
- gint x,
- gint y,
- gint width,
- gint height,
- gint angle1,
- gint angle2);
-void gimp_canvas_draw_polygon (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gboolean filled,
- GdkPoint *points,
- gint num_points);
-void gimp_canvas_draw_segments (GimpCanvas *canvas,
- GimpCanvasStyle style,
- GdkSegment *segments,
- gint num_segments);
-void gimp_canvas_draw_text (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gint x,
- gint y,
- const gchar *format,
+void gimp_canvas_draw_cursor (GimpCanvas *canvas,
+ gint x,
+ gint y);
+void gimp_canvas_draw_point (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gint x,
+ gint y);
+void gimp_canvas_draw_points (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ GdkPoint *points,
+ gint num_points);
+void gimp_canvas_draw_line (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gint x1,
+ gint y1,
+ gint x2,
+ gint y2);
+void gimp_canvas_draw_lines (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ GdkPoint *points,
+ gint num_points);
+void gimp_canvas_draw_rectangle (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gboolean filled,
+ gint x,
+ gint y,
+ gint width,
+ gint height);
+void gimp_canvas_draw_arc (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gboolean filled,
+ gint x,
+ gint y,
+ gint width,
+ gint height,
+ gint angle1,
+ gint angle2);
+void gimp_canvas_draw_polygon (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gboolean filled,
+ GdkPoint *points,
+ gint num_points);
+void gimp_canvas_draw_segments (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ GdkSegment *segments,
+ gint num_segments);
+void gimp_canvas_draw_text (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gint x,
+ gint y,
+ const gchar *format,
...) G_GNUC_PRINTF (5, 6);
-void gimp_canvas_draw_rgb (GimpCanvas *canvas,
- GimpCanvasStyle style,
- gint x,
- gint y,
- gint width,
- gint height,
- guchar *rgb_buf,
- gint rowstride,
- gint xdith,
- gint ydith);
-
-void gimp_canvas_set_clip_rect (GimpCanvas *canvas,
- GimpCanvasStyle style,
- GdkRectangle *rect);
-void gimp_canvas_set_clip_region (GimpCanvas *canvas,
- GimpCanvasStyle style,
- GdkRegion *region);
-void gimp_canvas_set_stipple_index (GimpCanvas *canvas,
- GimpCanvasStyle style,
- guint index);
-void gimp_canvas_set_custom_gc (GimpCanvas *canvas,
- GdkGC *gc);
-void gimp_canvas_set_bg_color (GimpCanvas *canvas,
- GimpRGB *color);
+void gimp_canvas_draw_rgb (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ gint x,
+ gint y,
+ gint width,
+ gint height,
+ guchar *rgb_buf,
+ gint rowstride,
+ gint xdith,
+ gint ydith);
+void gimp_canvas_draw_drop_zone (GimpCanvas *canvas,
+ cairo_t *cr);
+
+void gimp_canvas_set_clip_rect (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ GdkRectangle *rect);
+void gimp_canvas_set_clip_region (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ GdkRegion *region);
+void gimp_canvas_set_stipple_index (GimpCanvas *canvas,
+ GimpCanvasStyle style,
+ guint index);
+void gimp_canvas_set_custom_gc (GimpCanvas *canvas,
+ GdkGC *gc);
+void gimp_canvas_set_bg_color (GimpCanvas *canvas,
+ GimpRGB *color);
#endif /* __GIMP_CANVAS_H__ */
Modified: trunk/app/display/gimpdisplayshell.c
==============================================================================
--- trunk/app/display/gimpdisplayshell.c (original)
+++ trunk/app/display/gimpdisplayshell.c Tue Mar 18 20:24:49 2008
@@ -895,7 +895,7 @@
_("Access the image menu"),
GIMP_HELP_IMAGE_WINDOW_ORIGIN);
- shell->canvas = gimp_canvas_new (shell->display->image->gimp);
+ shell->canvas = gimp_canvas_new (GIMP_DISPLAY_CONFIG (shell->display->image->gimp->config));
gimp_display_shell_selection_init (shell);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]