[gimp] app: add "n-lines" property to GimpCanvasRectangleGuides
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add "n-lines" property to GimpCanvasRectangleGuides
- Date: Sun, 24 Jul 2011 16:43:41 +0000 (UTC)
commit be5c0df1738ceaba92dd97c87d2b9e9920446bad
Author: Michael Natterer <mitch gimp org>
Date: Sun Jul 24 17:49:31 2011 +0200
app: add "n-lines" property to GimpCanvasRectangleGuides
and add handling of the N_LINES guides type. Hardcode "4" in
GimpdrawTool for now, it's currently unused anyway.
app/display/gimpcanvasrectangleguides.c | 71 +++++++++++++++++++++----------
app/display/gimpcanvasrectangleguides.h | 6 ++-
app/tools/gimpdrawtool.c | 2 +-
3 files changed, 53 insertions(+), 26 deletions(-)
---
diff --git a/app/display/gimpcanvasrectangleguides.c b/app/display/gimpcanvasrectangleguides.c
index 8a210e3..364e732 100644
--- a/app/display/gimpcanvasrectangleguides.c
+++ b/app/display/gimpcanvasrectangleguides.c
@@ -43,7 +43,8 @@ enum
PROP_Y,
PROP_WIDTH,
PROP_HEIGHT,
- PROP_TYPE
+ PROP_TYPE,
+ PROP_N_GUIDES
};
@@ -56,6 +57,7 @@ struct _GimpCanvasRectangleGuidesPrivate
gdouble width;
gdouble height;
GimpGuidesType type;
+ gint n_guides;
};
#define GET_PRIVATE(rectangle) \
@@ -129,6 +131,11 @@ gimp_canvas_rectangle_guides_class_init (GimpCanvasRectangleGuidesClass *klass)
GIMP_GUIDES_NONE,
GIMP_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_N_GUIDES,
+ g_param_spec_int ("n-guides", NULL, NULL,
+ 1, 128, 4,
+ GIMP_PARAM_READWRITE));
+
g_type_class_add_private (klass, sizeof (GimpCanvasRectangleGuidesPrivate));
}
@@ -162,6 +169,9 @@ gimp_canvas_rectangle_guides_set_property (GObject *object,
case PROP_TYPE:
private->type = g_value_get_enum (value);
break;
+ case PROP_N_GUIDES:
+ private->n_guides = g_value_get_int (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -194,6 +204,9 @@ gimp_canvas_rectangle_guides_get_property (GObject *object,
case PROP_TYPE:
g_value_set_enum (value, private->type);
break;
+ case PROP_N_GUIDES:
+ g_value_set_int (value, private->n_guides);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -265,6 +278,7 @@ gimp_canvas_rectangle_guides_draw (GimpCanvasItem *item,
GimpCanvasRectangleGuidesPrivate *private = GET_PRIVATE (item);
gdouble x1, y1;
gdouble x2, y2;
+ gint i;
gimp_canvas_rectangle_guides_transform (item, shell, &x1, &y1, &x2, &y2);
@@ -287,15 +301,11 @@ gimp_canvas_rectangle_guides_draw (GimpCanvasItem *item,
break;
case GIMP_GUIDES_FIFTHS:
- draw_hline (cr, x1, x2, y1 + (y2 - y1) / 5);
- draw_hline (cr, x1, x2, y1 + 2 * (y2 - y1) / 5);
- draw_hline (cr, x1, x2, y1 + 3 * (y2 - y1) / 5);
- draw_hline (cr, x1, x2, y1 + 4 * (y2 - y1) / 5);
-
- draw_vline (cr, y1, y2, x1 + (x2 - x1) / 5);
- draw_vline (cr, y1, y2, x1 + 2 * (x2 - x1) / 5);
- draw_vline (cr, y1, y2, x1 + 3 * (x2 - x1) / 5);
- draw_vline (cr, y1, y2, x1 + 4 * (x2 - x1) / 5);
+ for (i = 0; i < 5; i++)
+ {
+ draw_hline (cr, x1, x2, y1 + i * (y2 - y1) / 5);
+ draw_vline (cr, y1, y2, x1 + i * (x2 - x1) / 5);
+ }
break;
case GIMP_GUIDES_GOLDEN:
@@ -333,6 +343,17 @@ gimp_canvas_rectangle_guides_draw (GimpCanvasItem *item,
cairo_line_to (cr, x2 - square_side, y2 - square_side);
}
break;
+
+ case GIMP_GUIDES_N_LINES:
+ for (i = 0; i < private->n_guides; i++)
+ {
+ draw_hline (cr, x1, x2, y1 + i * (y2 - y1) / private->n_guides);
+ draw_vline (cr, y1, y2, x1 + i * (x2 - x1) / private->n_guides);
+ }
+ break;
+
+ case GIMP_GUIDES_SPACING:
+ break;
}
_gimp_canvas_item_stroke (item, cr);
@@ -369,17 +390,19 @@ gimp_canvas_rectangle_guides_new (GimpDisplayShell *shell,
gdouble y,
gdouble width,
gdouble height,
- GimpGuidesType type)
+ GimpGuidesType type,
+ gint n_guides)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_RECTANGLE_GUIDES,
- "shell", shell,
- "x", x,
- "y", y,
- "width", width,
- "height", height,
- "type", type,
+ "shell", shell,
+ "x", x,
+ "y", y,
+ "width", width,
+ "height", height,
+ "type", type,
+ "n-guides", n_guides,
NULL);
}
@@ -389,18 +412,20 @@ gimp_canvas_rectangle_guides_set (GimpCanvasItem *rectangle,
gdouble y,
gdouble width,
gdouble height,
- GimpGuidesType type)
+ GimpGuidesType type,
+ gint n_guides)
{
g_return_if_fail (GIMP_IS_CANVAS_RECTANGLE_GUIDES (rectangle));
gimp_canvas_item_begin_change (rectangle);
g_object_set (rectangle,
- "x", x,
- "y", y,
- "width", width,
- "height", height,
- "type", type,
+ "x", x,
+ "y", y,
+ "width", width,
+ "height", height,
+ "type", type,
+ "n-guides", n_guides,
NULL);
gimp_canvas_item_end_change (rectangle);
diff --git a/app/display/gimpcanvasrectangleguides.h b/app/display/gimpcanvasrectangleguides.h
index a76a67f..f29f05e 100644
--- a/app/display/gimpcanvasrectangleguides.h
+++ b/app/display/gimpcanvasrectangleguides.h
@@ -54,14 +54,16 @@ GimpCanvasItem * gimp_canvas_rectangle_guides_new (GimpDisplayShell *shell,
gdouble y,
gdouble width,
gdouble height,
- GimpGuidesType type);
+ GimpGuidesType type,
+ gint n_guides);
void gimp_canvas_rectangle_guides_set (GimpCanvasItem *rectangle,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
- GimpGuidesType type);
+ GimpGuidesType type,
+ gint n_guides);
#endif /* __GIMP_CANVAS_RECTANGLE_GUIDES_H__ */
diff --git a/app/tools/gimpdrawtool.c b/app/tools/gimpdrawtool.c
index c41816b..9eb927b 100644
--- a/app/tools/gimpdrawtool.c
+++ b/app/tools/gimpdrawtool.c
@@ -615,7 +615,7 @@ gimp_draw_tool_add_rectangle_guides (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_rectangle_guides_new (gimp_display_get_shell (draw_tool->display),
- x, y, width, height, type);
+ x, y, width, height, type, 4);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]