summaryrefslogtreecommitdiffstats
path: root/src/display
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2011-06-19 10:00:24 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2011-06-19 10:00:24 +0000
commit06dfaa02d7a80bcdff717d579a48f81643f53f31 (patch)
tree49b8e67ad9051f1507b0959cac986383ab4001e2 /src/display
parentFix rendering of control points (diff)
parentfix bug 796451: Measure tools should support rotation constraint (diff)
downloadinkscape-06dfaa02d7a80bcdff717d579a48f81643f53f31.tar.gz
inkscape-06dfaa02d7a80bcdff717d579a48f81643f53f31.zip
Merge from trunk
(bzr r9508.1.89)
Diffstat (limited to 'src/display')
-rw-r--r--src/display/CMakeLists.txt187
-rw-r--r--src/display/canvas-arena.cpp11
-rw-r--r--src/display/canvas-arena.h8
-rw-r--r--src/display/canvas-bpath.h8
-rw-r--r--src/display/canvas-grid.h8
-rw-r--r--src/display/canvas-temporary-item.cpp2
-rw-r--r--src/display/canvas-text.h4
-rw-r--r--src/display/curve-test.h2
-rw-r--r--src/display/gnome-canvas-acetate.h8
-rw-r--r--src/display/grayscale.cpp14
-rw-r--r--src/display/grayscale.h6
-rw-r--r--src/display/guideline.cpp37
-rw-r--r--src/display/guideline.h8
-rw-r--r--src/display/nr-3dutils.h2
-rw-r--r--src/display/nr-arena-glyphs.cpp2
-rw-r--r--src/display/nr-arena-glyphs.h2
-rw-r--r--src/display/nr-arena.h3
-rw-r--r--src/display/nr-filter-diffuselighting.h2
-rw-r--r--src/display/nr-filter-specularlighting.h2
-rw-r--r--src/display/nr-light.h2
-rw-r--r--src/display/nr-svgfonts.cpp103
-rw-r--r--src/display/nr-svgfonts.h6
-rw-r--r--src/display/sodipodi-ctrl.h10
-rw-r--r--src/display/sodipodi-ctrlrect.h8
-rw-r--r--src/display/sp-canvas-group.h4
-rw-r--r--src/display/sp-canvas-item.h10
-rw-r--r--src/display/sp-canvas.cpp40
-rw-r--r--src/display/sp-canvas.h10
-rw-r--r--src/display/sp-ctrlline.h4
-rw-r--r--src/display/sp-ctrlpoint.h4
-rw-r--r--src/display/sp-ctrlquadr.h4
31 files changed, 344 insertions, 177 deletions
diff --git a/src/display/CMakeLists.txt b/src/display/CMakeLists.txt
index 9fa2304be..30643550f 100644
--- a/src/display/CMakeLists.txt
+++ b/src/display/CMakeLists.txt
@@ -1,59 +1,130 @@
-SET(display_SRC
-canvas-arena.cpp
-canvas-axonomgrid.cpp
-canvas-bpath.cpp
-canvas-grid.cpp
-canvas-temporary-item.cpp
-canvas-temporary-item-list.cpp
-curve.cpp
-gnome-canvas-acetate.cpp
-guideline.cpp
-inkscape-cairo.cpp
-nr-3dutils.cpp
-nr-arena.cpp
-nr-arena-glyphs.cpp
-nr-arena-group.cpp
-nr-arena-image.cpp
-nr-arena-item.cpp
-nr-arena-shape.cpp
-nr-filter-blend.cpp
-nr-filter-colormatrix.cpp
-nr-filter-component-transfer.cpp
-nr-filter-composite.cpp
-nr-filter-convolve-matrix.cpp
-nr-filter.cpp
-nr-filter-diffuselighting.cpp
-nr-filter-displacement-map.cpp
-nr-filter-flood.cpp
-nr-filter-gaussian.cpp
-nr-filter-getalpha.cpp
-nr-filter-image.cpp
-nr-filter-merge.cpp
-nr-filter-morphology.cpp
-nr-filter-offset.cpp
-nr-filter-primitive.cpp
-nr-filter-skeleton.cpp
-nr-filter-slot.cpp
-nr-filter-specularlighting.cpp
-nr-filter-tile.cpp
-nr-filter-turbulence.cpp
-nr-filter-units.cpp
-nr-filter-utils.cpp
-nr-light.cpp
-nr-plain-stuff.cpp
-nr-plain-stuff-gdk.cpp
-nr-svgfonts.h
-pixblock-scaler.cpp
-pixblock-transform.cpp
-snap-indicator.cpp
-sodipodi-ctrl.cpp
-sodipodi-ctrlrect.cpp
-sp-canvas.cpp
-sp-canvas-util.cpp
-sp-ctrlline.cpp
-sp-ctrlquadr.cpp
-#testnr.cpp
+
+set(display_SRC
+ canvas-arena.cpp
+ canvas-axonomgrid.cpp
+ canvas-bpath.cpp
+ canvas-grid.cpp
+ canvas-temporary-item-list.cpp
+ canvas-temporary-item.cpp
+ canvas-text.cpp
+ curve.cpp
+ gnome-canvas-acetate.cpp
+ grayscale.cpp
+ guideline.cpp
+ inkscape-cairo.cpp
+ nr-3dutils.cpp
+ nr-arena-glyphs.cpp
+ nr-arena-group.cpp
+ nr-arena-image.cpp
+ nr-arena-item.cpp
+ nr-arena-shape.cpp
+ nr-arena.cpp
+ nr-filter-blend.cpp
+ nr-filter-colormatrix.cpp
+ nr-filter-component-transfer.cpp
+ nr-filter-composite.cpp
+ nr-filter-convolve-matrix.cpp
+ nr-filter-diffuselighting.cpp
+ nr-filter-displacement-map.cpp
+ nr-filter-flood.cpp
+ nr-filter-gaussian.cpp
+ nr-filter-getalpha.cpp
+ nr-filter-image.cpp
+ nr-filter-merge.cpp
+ nr-filter-morphology.cpp
+ nr-filter-offset.cpp
+ nr-filter-primitive.cpp
+ # nr-filter-skeleton.cpp
+ nr-filter-slot.cpp
+ nr-filter-specularlighting.cpp
+ nr-filter-tile.cpp
+ nr-filter-turbulence.cpp
+ nr-filter-units.cpp
+ nr-filter-utils.cpp
+ nr-filter.cpp
+ nr-light.cpp
+ nr-plain-stuff-gdk.cpp
+ nr-plain-stuff.cpp
+ nr-svgfonts.cpp
+ nr-svgfonts.h
+ pixblock-scaler.cpp
+ pixblock-transform.cpp
+ snap-indicator.cpp
+ sodipodi-ctrl.cpp
+ sodipodi-ctrlrect.cpp
+ sp-canvas-util.cpp
+ sp-canvas.cpp
+ sp-ctrlline.cpp
+ sp-ctrlpoint.cpp
+ sp-ctrlquadr.cpp
+
+
+ # -------
+ # Headers
+ canvas-arena.h
+ canvas-axonomgrid.h
+ canvas-bpath.h
+ canvas-grid.h
+ canvas-temporary-item-list.h
+ canvas-temporary-item.h
+ canvas-text.h
+ curve-test.h
+ curve.h
+ gnome-canvas-acetate.h
+ grayscale.h
+ guideline.h
+ inkscape-cairo.h
+ nr-3dutils.h
+ nr-arena-forward.h
+ nr-arena-glyphs.h
+ nr-arena-group.h
+ nr-arena-image.h
+ nr-arena-item.h
+ nr-arena-shape.h
+ nr-arena.h
+ nr-filter-blend.h
+ nr-filter-colormatrix.h
+ nr-filter-component-transfer.h
+ nr-filter-composite.h
+ nr-filter-convolve-matrix.h
+ nr-filter-diffuselighting.h
+ nr-filter-displacement-map.h
+ nr-filter-flood.h
+ nr-filter-gaussian.h
+ nr-filter-getalpha.h
+ nr-filter-image.h
+ nr-filter-merge.h
+ nr-filter-morphology.h
+ nr-filter-offset.h
+ nr-filter-pixops.h
+ nr-filter-primitive.h
+ nr-filter-skeleton.h
+ nr-filter-slot.h
+ nr-filter-specularlighting.h
+ nr-filter-tile.h
+ nr-filter-turbulence.h
+ nr-filter-types.h
+ nr-filter-units.h
+ nr-filter-utils.h
+ nr-filter.h
+ nr-light-types.h
+ nr-light.h
+ nr-plain-stuff-gdk.h
+ nr-plain-stuff.h
+ pixblock-scaler.h
+ pixblock-transform.h
+ rendermode.h
+ snap-indicator.h
+ sodipodi-ctrl.h
+ sodipodi-ctrlrect.h
+ sp-canvas-group.h
+ sp-canvas-item.h
+ sp-canvas-util.h
+ sp-canvas.h
+ sp-ctrlline.h
+ sp-ctrlpoint.h
+ sp-ctrlquadr.h
)
-ADD_LIBRARY(display STATIC ${display_SRC})
-TARGET_LINK_LIBRARIES(display
-2geom ${INKSCAPE_LIBS}) \ No newline at end of file
+
+# add_inkscape_lib(display_LIB "${display_SRC}")
+add_inkscape_source("${display_SRC}")
diff --git a/src/display/canvas-arena.cpp b/src/display/canvas-arena.cpp
index 884e604be..72062ce99 100644
--- a/src/display/canvas-arena.cpp
+++ b/src/display/canvas-arena.cpp
@@ -10,7 +10,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtksignal.h>
+#include <gtk/gtk.h>
#include "display/display-forward.h"
#include "display/sp-canvas-util.h"
@@ -77,10 +77,11 @@ sp_canvas_arena_class_init (SPCanvasArenaClass *klass)
parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM);
- signals[ARENA_EVENT] = gtk_signal_new ("arena_event",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE(object_class),
+ signals[ARENA_EVENT] = g_signal_new ("arena_event",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_LAST,
((glong)((guint8*)&(klass->arena_event) - (guint8*)klass)),
+ NULL, NULL,
sp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -319,7 +320,7 @@ sp_canvas_arena_send_event (SPCanvasArena *arena, GdkEvent *event)
gint ret = FALSE;
/* Send event to arena */
- gtk_signal_emit (GTK_OBJECT (arena), signals[ARENA_EVENT], arena->active, event, &ret);
+ g_signal_emit (G_OBJECT (arena), signals[ARENA_EVENT], 0, arena->active, event, &ret);
return ret;
}
diff --git a/src/display/canvas-arena.h b/src/display/canvas-arena.h
index 6db87b675..ef065a03b 100644
--- a/src/display/canvas-arena.h
+++ b/src/display/canvas-arena.h
@@ -22,10 +22,10 @@
G_BEGIN_DECLS
#define SP_TYPE_CANVAS_ARENA (sp_canvas_arena_get_type ())
-#define SP_CANVAS_ARENA(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CANVAS_ARENA, SPCanvasArena))
-#define SP_CANVAS_ARENA_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_ARENA, SPCanvasArenaClass))
-#define SP_IS_CANVAS_ARENA(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CANVAS_ARENA))
-#define SP_IS_CANVAS_ARENA_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CANVAS_ARENA))
+#define SP_CANVAS_ARENA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CANVAS_ARENA, SPCanvasArena))
+#define SP_CANVAS_ARENA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_ARENA, SPCanvasArenaClass))
+#define SP_IS_CANVAS_ARENA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CANVAS_ARENA))
+#define SP_IS_CANVAS_ARENA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_CANVAS_ARENA))
typedef struct _SPCanvasArena SPCanvasArena;
typedef struct _SPCanvasArenaClass SPCanvasArenaClass;
diff --git a/src/display/canvas-bpath.h b/src/display/canvas-bpath.h
index 7f8b75dfe..ad19797c2 100644
--- a/src/display/canvas-bpath.h
+++ b/src/display/canvas-bpath.h
@@ -25,10 +25,10 @@ struct SPCanvasGroup;
struct SPCurve;
#define SP_TYPE_CANVAS_BPATH (sp_canvas_bpath_get_type ())
-#define SP_CANVAS_BPATH(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CANVAS_BPATH, SPCanvasBPath))
-#define SP_CANVAS_BPATH_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_BPATH, SPCanvasBPathClass))
-#define SP_IS_CANVAS_BPATH(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CANVAS_BPATH))
-#define SP_IS_CANVAS_BPATH_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CANVAS_BPATH))
+#define SP_CANVAS_BPATH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CANVAS_BPATH, SPCanvasBPath))
+#define SP_CANVAS_BPATH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_BPATH, SPCanvasBPathClass))
+#define SP_IS_CANVAS_BPATH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CANVAS_BPATH))
+#define SP_IS_CANVAS_BPATH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_CANVAS_BPATH))
#define bpath_liv
diff --git a/src/display/canvas-grid.h b/src/display/canvas-grid.h
index f386fe05e..f42fecad7 100644
--- a/src/display/canvas-grid.h
+++ b/src/display/canvas-grid.h
@@ -39,10 +39,10 @@ enum GridType {
#define GRID_MAXTYPENR 1
#define INKSCAPE_TYPE_GRID_CANVASITEM (Inkscape::grid_canvasitem_get_type ())
-#define INKSCAPE_GRID_CANVASITEM(obj) (GTK_CHECK_CAST ((obj), INKSCAPE_TYPE_GRID_CANVASITEM, GridCanvasItem))
-#define INKSCAPE_GRID_CANVASITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), INKSCAPE_TYPE_GRID_CANVASITEM, GridCanvasItem))
-#define INKSCAPE_IS_GRID_CANVASITEM(obj) (GTK_CHECK_TYPE ((obj), INKSCAPE_TYPE_GRID_CANVASITEM))
-#define INKSCAPE_IS_GRID_CANVASITEM_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), INKSCAPE_TYPE_GRID_CANVASITEM))
+#define INKSCAPE_GRID_CANVASITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INKSCAPE_TYPE_GRID_CANVASITEM, GridCanvasItem))
+#define INKSCAPE_GRID_CANVASITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INKSCAPE_TYPE_GRID_CANVASITEM, GridCanvasItem))
+#define INKSCAPE_IS_GRID_CANVASITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INKSCAPE_TYPE_GRID_CANVASITEM))
+#define INKSCAPE_IS_GRID_CANVASITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INKSCAPE_TYPE_GRID_CANVASITEM))
class CanvasGrid;
diff --git a/src/display/canvas-temporary-item.cpp b/src/display/canvas-temporary-item.cpp
index ccef4d0cb..8d336f0ff 100644
--- a/src/display/canvas-temporary-item.cpp
+++ b/src/display/canvas-temporary-item.cpp
@@ -16,7 +16,7 @@
#include "display/canvas-temporary-item.h"
-#include <gtk/gtkobject.h>
+#include <gtk/gtk.h>
namespace Inkscape {
namespace Display {
diff --git a/src/display/canvas-text.h b/src/display/canvas-text.h
index 9a6a93eb4..a621e655c 100644
--- a/src/display/canvas-text.h
+++ b/src/display/canvas-text.h
@@ -20,8 +20,8 @@ struct SPItem;
struct SPDesktop;
#define SP_TYPE_CANVASTEXT (sp_canvastext_get_type ())
-#define SP_CANVASTEXT(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CANVASTEXT, SPCanvasText))
-#define SP_IS_CANVASTEXT(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CANVASTEXT))
+#define SP_CANVASTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CANVASTEXT, SPCanvasText))
+#define SP_IS_CANVASTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CANVASTEXT))
struct SPCanvasText : public SPCanvasItem {
SPItem *item; // the item to which this line belongs in some sense; may be NULL for some users
diff --git a/src/display/curve-test.h b/src/display/curve-test.h
index d89cb4c99..3d698ca07 100644
--- a/src/display/curve-test.h
+++ b/src/display/curve-test.h
@@ -21,7 +21,7 @@ public:
path1.close();
// Closed path (ClosingSegment is zero length)
path2.append(Geom::LineSegment(Geom::Point(2,0),Geom::Point(3,0)));
- path2.append(Geom::BezierCurve<3>(Geom::Point(3,0),Geom::Point(2,1),Geom::Point(1,1),Geom::Point(2,0)));
+ // TODO fix path2.append(Geom::BezierCurve<3>(Geom::Point(3,0),Geom::Point(2,1),Geom::Point(1,1),Geom::Point(2,0)));
path2.close();
// Open path
path3.append(Geom::SVGEllipticalArc(Geom::Point(4,0),1,2,M_PI,false,false,Geom::Point(5,1)));
diff --git a/src/display/gnome-canvas-acetate.h b/src/display/gnome-canvas-acetate.h
index 8c284291c..756c663ca 100644
--- a/src/display/gnome-canvas-acetate.h
+++ b/src/display/gnome-canvas-acetate.h
@@ -20,10 +20,10 @@
#define GNOME_TYPE_CANVAS_ACETATE (sp_canvas_acetate_get_type ())
-#define SP_CANVAS_ACETATE(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CANVAS_ACETATE, SPCanvasAcetate))
-#define SP_CANVAS_ACETATE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_ACETATE, SPCanvasAcetateClass))
-#define GNOME_IS_CANVAS_ACETATE(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CANVAS_ACETATE))
-#define GNOME_IS_CANVAS_ACETATE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_ACETATE))
+#define SP_CANVAS_ACETATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNOME_TYPE_CANVAS_ACETATE, SPCanvasAcetate))
+#define SP_CANVAS_ACETATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_ACETATE, SPCanvasAcetateClass))
+#define GNOME_IS_CANVAS_ACETATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNOME_TYPE_CANVAS_ACETATE))
+#define GNOME_IS_CANVAS_ACETATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_ACETATE))
struct SPCanvasAcetate {
diff --git a/src/display/grayscale.cpp b/src/display/grayscale.cpp
index 37f2b255c..745a08c1e 100644
--- a/src/display/grayscale.cpp
+++ b/src/display/grayscale.cpp
@@ -21,14 +21,22 @@
namespace Grayscale {
+/* Original values from Johan:
+const float red_factor = 0.3;
+const float green_factor = 0.59;
+const float blue_factor = 0.11;
+*/
+
+// Values below are from the SVG specification
+const float red_factor = 0.2125;
+const float green_factor = 0.7154;
+const float blue_factor = 0.0721;
+
guint32 process(guint32 rgba) {
return process(SP_RGBA32_R_U(rgba), SP_RGBA32_G_U(rgba), SP_RGBA32_B_U(rgba), SP_RGBA32_A_U(rgba));
}
guint32 process(guchar r, guchar g, guchar b, guchar a) {
- float red_factor = 0.3;
- float green_factor = 0.59;
- float blue_factor = 0.11;
/** To reduce banding in gradients, this calculation is tweaked a bit
* by outputing blue+1 or red+1 or both. The luminance is calculated
diff --git a/src/display/grayscale.h b/src/display/grayscale.h
index 855c9e465..fe0d75cad 100644
--- a/src/display/grayscale.h
+++ b/src/display/grayscale.h
@@ -12,17 +12,13 @@
* Released under GNU GPL
*/
-#include <gdk/gdktypes.h>
+#include <gdk/gdk.h>
namespace Grayscale {
guint32 process(guint32 rgba);
guint32 process(guchar r, guchar g, guchar b, guchar a);
guchar luminance(guchar r, guchar g, guchar b);
- const float red_factor = 0.3;
- const float green_factor = 0.59;
- const float blue_factor = 0.11;
-
bool activeDesktopIsGrayscale();
};
diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp
index 072ae69f1..c761fa74e 100644
--- a/src/display/guideline.cpp
+++ b/src/display/guideline.cpp
@@ -77,6 +77,7 @@ static void sp_guideline_init(SPGuideLine *gl)
gl->sensitive = 0;
gl->origin = NULL;
+ gl->label = NULL;
}
static void sp_guideline_destroy(GtkObject *object)
@@ -98,6 +99,10 @@ static void sp_guideline_destroy(GtkObject *object)
static void sp_guideline_render(SPCanvasItem *item, SPCanvasBuf *buf)
{
+ //TODO: the routine that renders the label of a specific guideline sometimes
+ // ends up erasing the labels of the other guidelines.
+ // Maybe we should render all labels everytime.
+
SPGuideLine const *gl = SP_GUIDELINE (item);
cairo_save(buf->ct);
@@ -105,6 +110,20 @@ static void sp_guideline_render(SPCanvasItem *item, SPCanvasBuf *buf)
ink_cairo_set_source_rgba32(buf->ct, gl->rgba);
cairo_set_line_width(buf->ct, 1);
cairo_set_line_cap(buf->ct, CAIRO_LINE_CAP_SQUARE);
+ cairo_set_font_size(buf->ct, 10);
+
+ int px = (int) Inkscape::round(gl->point_on_line[Geom::X]);
+ int py = (int) Inkscape::round(gl->point_on_line[Geom::Y]);
+
+ if (gl->label) {
+ cairo_save(buf->ct);
+ cairo_translate(buf->ct, px, py);
+ cairo_rotate(buf->ct, atan2(gl->normal_to_line[Geom::X], gl->normal_to_line[Geom::Y]));
+ cairo_translate(buf->ct, 0, -5);
+ cairo_move_to(buf->ct, 0, 0);
+ cairo_show_text(buf->ct, gl->label);
+ cairo_restore(buf->ct);
+ }
if (gl->is_vertical()) {
int position = (int) Inkscape::round(gl->point_on_line[Geom::X]);
@@ -174,10 +193,11 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine,
sp_canvas_item_request_update(SP_CANVAS_ITEM (gl->origin));
if (gl->is_horizontal()) {
- sp_canvas_update_bbox (item, -1000000, (int) Inkscape::round(gl->point_on_line[Geom::Y]), 1000000, (int) Inkscape::round(gl->point_on_line[Geom::Y] + 1));
+ sp_canvas_update_bbox (item, -1000000, (int) Inkscape::round(gl->point_on_line[Geom::Y] - 16), 1000000, (int) Inkscape::round(gl->point_on_line[Geom::Y] + 1));
} else if (gl->is_vertical()) {
- sp_canvas_update_bbox (item, (int) Inkscape::round(gl->point_on_line[Geom::X]), -1000000, (int) Inkscape::round(gl->point_on_line[Geom::X] + 1), 1000000);
+ sp_canvas_update_bbox (item, (int) Inkscape::round(gl->point_on_line[Geom::X]), -1000000, (int) Inkscape::round(gl->point_on_line[Geom::X] + 16), 1000000);
} else {
+ //TODO: labels in angled guidelines are not showing up for some reason.
sp_canvas_update_bbox (item, -1000000, -1000000, 1000000, 1000000);
}
}
@@ -198,7 +218,7 @@ static double sp_guideline_point(SPCanvasItem *item, Geom::Point p, SPCanvasItem
return MAX(fabs(distance)-1, 0);
}
-SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, Geom::Point point_on_line, Geom::Point normal)
+SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point point_on_line, Geom::Point normal)
{
SPCanvasItem *item = sp_canvas_item_new(parent, SP_TYPE_GUIDELINE, NULL);
SPCanvasItem *origin = sp_canvas_item_new(parent, SP_TYPE_CTRLPOINT, NULL);
@@ -208,6 +228,7 @@ SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, Geom::Point point_on_line,
gl->origin = cp;
normal.normalize();
+ gl->label = label;
gl->normal_to_line = normal;
gl->angle = tan( -gl->normal_to_line[Geom::X] / gl->normal_to_line[Geom::Y]);
sp_guideline_set_position(gl, point_on_line);
@@ -217,6 +238,16 @@ SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, Geom::Point point_on_line,
return item;
}
+void sp_guideline_set_label(SPGuideLine *gl, const char* label)
+{
+ if (gl->label) {
+ g_free(gl->label);
+ }
+ gl->label = g_strdup(label);
+
+ sp_canvas_item_request_update(SP_CANVAS_ITEM (gl));
+}
+
void sp_guideline_set_position(SPGuideLine *gl, Geom::Point point_on_line)
{
sp_canvas_item_affine_absolute(SP_CANVAS_ITEM (gl), Geom::Affine(Geom::Translate(point_on_line)));
diff --git a/src/display/guideline.h b/src/display/guideline.h
index 9654d04a1..a3966f76f 100644
--- a/src/display/guideline.h
+++ b/src/display/guideline.h
@@ -18,8 +18,8 @@
#include "sp-canvas-item.h"
#define SP_TYPE_GUIDELINE (sp_guideline_get_type())
-#define SP_GUIDELINE(o) (GTK_CHECK_CAST((o), SP_TYPE_GUIDELINE, SPGuideLine))
-#define SP_IS_GUIDELINE(o) (GTK_CHECK_TYPE((o), SP_TYPE_GUIDELINE))
+#define SP_GUIDELINE(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_GUIDELINE, SPGuideLine))
+#define SP_IS_GUIDELINE(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_GUIDELINE))
class SPCtrlPoint;
@@ -29,6 +29,7 @@ struct SPGuideLine {
guint32 rgba;
+ char* label;
Geom::Point normal_to_line;
Geom::Point point_on_line;
double angle;
@@ -45,8 +46,9 @@ struct SPGuideLineClass {
GType sp_guideline_get_type();
-SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, Geom::Point point_on_line, Geom::Point normal);
+SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point point_on_line, Geom::Point normal);
+void sp_guideline_set_label(SPGuideLine *gl, const char* label);
void sp_guideline_set_position(SPGuideLine *gl, Geom::Point point_on_line);
void sp_guideline_set_normal(SPGuideLine *gl, Geom::Point normal_to_line);
void sp_guideline_set_color(SPGuideLine *gl, unsigned int rgba);
diff --git a/src/display/nr-3dutils.h b/src/display/nr-3dutils.h
index 4e98c2374..44cb371e6 100644
--- a/src/display/nr-3dutils.h
+++ b/src/display/nr-3dutils.h
@@ -14,7 +14,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gdk/gdktypes.h>
+#include <gdk/gdk.h>
#include <2geom/forward.h>
struct NRPixBlock;
diff --git a/src/display/nr-arena-glyphs.cpp b/src/display/nr-arena-glyphs.cpp
index 5f21ceaa9..facb5e9c6 100644
--- a/src/display/nr-arena-glyphs.cpp
+++ b/src/display/nr-arena-glyphs.cpp
@@ -1,5 +1,3 @@
-#define __NR_ARENA_GLYPHS_C__
-
/*
* RGBA display list system for inkscape
*
diff --git a/src/display/nr-arena-glyphs.h b/src/display/nr-arena-glyphs.h
index 6f8a0bde5..c43095cb2 100644
--- a/src/display/nr-arena-glyphs.h
+++ b/src/display/nr-arena-glyphs.h
@@ -20,7 +20,6 @@
#include "libnrtype/nrtype-forward.h"
#include "display/display-forward.h"
#include "forward.h"
-#include "sp-paint-server.h"
#include "display/nr-arena-item.h"
#include "display/nr-style.h"
@@ -28,6 +27,7 @@
struct SPCurve;
class Shape;
+class SPPainter;
NRType nr_arena_glyphs_get_type (void);
diff --git a/src/display/nr-arena.h b/src/display/nr-arena.h
index 4d33aaa99..1c8216434 100644
--- a/src/display/nr-arena.h
+++ b/src/display/nr-arena.h
@@ -30,7 +30,8 @@ G_END_DECLS
#include <libnr/nr-forward.h>
#include <libnr/nr-object.h>
#include "nr-arena-forward.h"
-#include "sp-paint-server.h"
+
+class SPPainter;
NRType nr_arena_get_type (void);
diff --git a/src/display/nr-filter-diffuselighting.h b/src/display/nr-filter-diffuselighting.h
index 100673749..6e39242f6 100644
--- a/src/display/nr-filter-diffuselighting.h
+++ b/src/display/nr-filter-diffuselighting.h
@@ -13,7 +13,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gdk/gdktypes.h>
+#include <gdk/gdk.h>
#include "display/nr-light-types.h"
#include "display/nr-filter-primitive.h"
#include "display/nr-filter-slot.h"
diff --git a/src/display/nr-filter-specularlighting.h b/src/display/nr-filter-specularlighting.h
index 155496a41..2fcb02588 100644
--- a/src/display/nr-filter-specularlighting.h
+++ b/src/display/nr-filter-specularlighting.h
@@ -13,7 +13,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gdk/gdktypes.h>
+#include <gdk/gdk.h>
#include "display/nr-light-types.h"
#include "display/nr-filter-primitive.h"
diff --git a/src/display/nr-light.h b/src/display/nr-light.h
index 49130cc4e..022243bfc 100644
--- a/src/display/nr-light.h
+++ b/src/display/nr-light.h
@@ -8,7 +8,7 @@
* light color components (at a given point).
*/
-#include <gdk/gdktypes.h>
+#include <gdk/gdk.h>
#include "display/nr-3dutils.h"
#include "display/nr-light-types.h"
#include <2geom/forward.h>
diff --git a/src/display/nr-svgfonts.cpp b/src/display/nr-svgfonts.cpp
index b33835f64..8869274d4 100644
--- a/src/display/nr-svgfonts.cpp
+++ b/src/display/nr-svgfonts.cpp
@@ -14,12 +14,20 @@
#include <2geom/pathvector.h>
#include <2geom/transforms.h>
-#include "../style.h"
#include <cairo.h>
#include <vector>
+#include "style.h"
#include "svg/svg.h"
#include "display/cairo-utils.h"
#include "display/nr-svgfonts.h"
+#include "display/nr-svgfonts.h"
+#include "sp-path.h"
+#include "sp-object-group.h"
+#include "sp-use.h"
+#include "sp-use-reference.h"
+#include "display/curve.h"
+#include "xml/repr.h"
+#include "sp-font-face.h"
//*************************//
// UserFont Implementation //
@@ -212,6 +220,47 @@ SvgFont::scaled_font_text_to_glyphs (cairo_scaled_font_t */*scaled_font*/,
return CAIRO_STATUS_SUCCESS;
}
+void
+SvgFont::render_glyph_path(cairo_t* cr, Geom::PathVector* pathv){
+ if (!pathv->empty()){
+ //This glyph has a path description on its d attribute, so we render it:
+ cairo_new_path(cr);
+
+ //adjust scale of the glyph
+// Geom::Scale s(1.0/((SPFont*) node->parent)->horiz_adv_x);
+ Geom::Scale s(1.0/1000);//TODO: use here the units-per-em attribute?
+
+ Geom::Rect area( Geom::Point(0,0), Geom::Point(1,1) ); //I need help here! (reaction: note that the 'area' parameter is an *optional* rect, so you can pass an empty Geom::OptRect() )
+
+ feed_pathvector_to_cairo (cr, *pathv, s, area, false, 0);
+ cairo_fill(cr);
+ }
+}
+
+void
+SvgFont::glyph_modified(SPObject* /* blah */, unsigned int /* bleh */){
+ this->refresh();
+ //TODO: update rendering on svgfonts preview widget (in the svg fonts dialog)
+}
+
+Geom::PathVector
+SvgFont::flip_coordinate_system(SPFont* spfont, Geom::PathVector pathv){
+ double units_per_em = 1000;
+ SPObject* obj;
+ for (obj = ((SPObject*) spfont)->children; obj; obj=obj->next){
+ if (SP_IS_FONTFACE(obj)){
+ //XML Tree being directly used here while it shouldn't be.
+ sp_repr_get_double(obj->getRepr(), "units_per_em", &units_per_em);
+ }
+ }
+
+ double baseline_offset = units_per_em - spfont->horiz_origin_y;
+
+ //This matrix flips y-axis and places the origin at baseline
+ Geom::Affine m(Geom::Coord(1),Geom::Coord(0),Geom::Coord(0),Geom::Coord(-1),Geom::Coord(0),Geom::Coord(baseline_offset));
+ return pathv*m;
+}
+
cairo_status_t
SvgFont::scaled_font_render_glyph (cairo_scaled_font_t */*scaled_font*/,
unsigned long glyph,
@@ -234,37 +283,53 @@ SvgFont::scaled_font_render_glyph (cairo_scaled_font_t */*scaled_font*/,
node = (SPObject*) this->glyphs[glyph];
}
+ if (!SP_IS_GLYPH(node) && !SP_IS_MISSING_GLYPH(node)) {
+ return CAIRO_STATUS_SUCCESS; // FIXME: is this the right code to return?
+ }
+
+ SPFont* spfont = (SPFont*) node->parent;
+ if (!spfont) {
+ return CAIRO_STATUS_SUCCESS; // FIXME: is this the right code to return?
+ }
+
//glyphs can be described by arbitrary SVG declared in the childnodes of a glyph node
// or using the d attribute of a glyph node.
// pathv stores the path description from the d attribute:
Geom::PathVector pathv;
if (SP_IS_GLYPH(node) && ((SPGlyph*)node)->d) {
pathv = sp_svg_read_pathv(((SPGlyph*)node)->d);
+ pathv = flip_coordinate_system(spfont, pathv);
+ this->render_glyph_path(cr, &pathv);
} else if (SP_IS_MISSING_GLYPH(node) && ((SPMissingGlyph*)node)->d) {
pathv = sp_svg_read_pathv(((SPMissingGlyph*)node)->d);
- } else {
- return CAIRO_STATUS_SUCCESS; // FIXME: is this the right code to return?
+ pathv = flip_coordinate_system(spfont, pathv);
+ this->render_glyph_path(cr, &pathv);
}
- if (!pathv.empty()){
- //This glyph has a path description on its d attribute, so we render it:
- cairo_new_path(cr);
- //adjust scale of the glyph
-// Geom::Scale s(1.0/((SPFont*) node->parent)->horiz_adv_x);
- Geom::Scale s(1.0/1000);//TODO: use here the units-per-em attribute?
- //This matrix flips the glyph vertically
- Geom::Affine m(Geom::Coord(1),Geom::Coord(0),Geom::Coord(0),Geom::Coord(-1),Geom::Coord(0),Geom::Coord(0));
- //then we offset it
-// pathv += Geom::Point(Geom::Coord(0),Geom::Coord(-((SPFont*) node->parent)->horiz_adv_x));
- pathv += Geom::Point(Geom::Coord(0),Geom::Coord(-1000));//TODO: use here the units-per-em attribute?
-
- Geom::Rect area( Geom::Point(0,0), Geom::Point(1,1) ); //I need help here! (reaction: note that the 'area' parameter is an *optional* rect, so you can pass an empty Geom::OptRect() )
+ if (node->hasChildren()){
+ //render the SVG described on this glyph's child nodes.
+ for(node = node->children; node; node=node->next){
+ if (SP_IS_PATH(node)){
+ pathv = ((SPShape*)node)->curve->get_pathvector();
+ pathv = flip_coordinate_system(spfont, pathv);
+ this->render_glyph_path(cr, &pathv);
+ }
+ if (SP_IS_OBJECTGROUP(node)){
+ g_warning("TODO: svgfonts: render OBJECTGROUP");
+ }
+ if (SP_IS_USE(node)){
+ SPItem* item = SP_USE(node)->ref->getObject();
+ if (SP_IS_PATH(item)){
+ pathv = ((SPShape*)item)->curve->get_pathvector();
+ pathv = flip_coordinate_system(spfont, pathv);
+ this->render_glyph_path(cr, &pathv);
+ }
- feed_pathvector_to_cairo (cr, pathv, s*m, area, false, 0);
- cairo_fill(cr);
+ glyph_modified_connection = ((SPObject*) item)->connectModified(sigc::mem_fun(*this, &SvgFont::glyph_modified));
+ }
+ }
}
- //TODO: render the SVG described on this glyph's child nodes.
return CAIRO_STATUS_SUCCESS;
}
diff --git a/src/display/nr-svgfonts.h b/src/display/nr-svgfonts.h
index ddf4ba327..3cfcbaa72 100644
--- a/src/display/nr-svgfonts.h
+++ b/src/display/nr-svgfonts.h
@@ -19,6 +19,7 @@
#include "../sp-missing-glyph.h"
#include "../sp-font.h"
#include "../sp-glyph-kerning.h"
+#include <sigc++/sigc++.h>
class SvgFont;
struct SPFont;
@@ -38,11 +39,16 @@ cairo_status_t scaled_font_init (cairo_scaled_font_t *scaled_font, cairo_font_ex
cairo_status_t scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, const char *utf8, int utf8_len, cairo_glyph_t **glyphs, int *num_glyphs, cairo_text_cluster_t **clusters, int *num_clusters, cairo_text_cluster_flags_t *flags);
cairo_status_t scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, unsigned long glyph, cairo_t *cr, cairo_text_extents_t *metrics);
+Geom::PathVector flip_coordinate_system(SPFont* spfont, Geom::PathVector pathv);
+void render_glyph_path(cairo_t* cr, Geom::PathVector* pathv);
+void glyph_modified(SPObject *, unsigned int);
+
private:
SPFont* font;
UserFont* userfont;
std::vector<SPGlyph*> glyphs;
SPMissingGlyph* missingglyph;
+sigc::connection glyph_modified_connection;
bool drawing_expose_cb (Gtk::Widget *widget, GdkEventExpose *event, gpointer data);
};
diff --git a/src/display/sodipodi-ctrl.h b/src/display/sodipodi-ctrl.h
index df0470adb..3bf0889c7 100644
--- a/src/display/sodipodi-ctrl.h
+++ b/src/display/sodipodi-ctrl.h
@@ -7,17 +7,17 @@
*
*/
-#include <gtk/gtkenums.h>
+#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <libnr/nr-rect-l.h>
#include "sp-canvas-item.h"
#define SP_TYPE_CTRL (sp_ctrl_get_type ())
-#define SP_CTRL(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CTRL, SPCtrl))
-#define SP_CTRL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_CTRL, SPCtrlClass))
-#define SP_IS_CTRL(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CTRL))
-#define SP_IS_CTRL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CTRL))
+#define SP_CTRL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CTRL, SPCtrl))
+#define SP_CTRL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_CTRL, SPCtrlClass))
+#define SP_IS_CTRL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRL))
+#define SP_IS_CTRL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_CTRL))
typedef enum {
SP_CTRL_SHAPE_SQUARE,
diff --git a/src/display/sodipodi-ctrlrect.h b/src/display/sodipodi-ctrlrect.h
index 2ba73a4c9..945deabc4 100644
--- a/src/display/sodipodi-ctrlrect.h
+++ b/src/display/sodipodi-ctrlrect.h
@@ -23,10 +23,10 @@
struct SPCanvasBuf;
#define SP_TYPE_CTRLRECT (sp_ctrlrect_get_type ())
-#define SP_CTRLRECT(obj) (GTK_CHECK_CAST((obj), SP_TYPE_CTRLRECT, CtrlRect))
-#define SP_CTRLRECT_CLASS(c) (GTK_CHECK_CLASS_CAST((c), SP_TYPE_CTRLRECT, SPCtrlRectClass))
-#define SP_IS_CTRLRECT(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CTRLRECT))
-#define SP_IS_CTRLRECT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CTRLRECT))
+#define SP_CTRLRECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_CTRLRECT, CtrlRect))
+#define SP_CTRLRECT_CLASS(c) (G_TYPE_CHECK_CLASS_CAST((c), SP_TYPE_CTRLRECT, SPCtrlRectClass))
+#define SP_IS_CTRLRECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRLRECT))
+#define SP_IS_CTRLRECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_CTRLRECT))
class CtrlRect : public SPCanvasItem
{
diff --git a/src/display/sp-canvas-group.h b/src/display/sp-canvas-group.h
index 10bf0fa6c..354d389b7 100644
--- a/src/display/sp-canvas-group.h
+++ b/src/display/sp-canvas-group.h
@@ -24,8 +24,8 @@
#include <glib-object.h>
#define SP_TYPE_CANVAS_GROUP (sp_canvas_group_get_type())
-#define SP_CANVAS_GROUP(obj) (GTK_CHECK_CAST((obj), SP_TYPE_CANVAS_GROUP, SPCanvasGroup))
-#define SP_IS_CANVAS_GROUP(obj) (GTK_CHECK_TYPE((obj), SP_TYPE_CANVAS_GROUP))
+#define SP_CANVAS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_CANVAS_GROUP, SPCanvasGroup))
+#define SP_IS_CANVAS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_CANVAS_GROUP))
GType sp_canvas_group_get_type();
diff --git a/src/display/sp-canvas-item.h b/src/display/sp-canvas-item.h
index cc0bdfc77..f62dc34a7 100644
--- a/src/display/sp-canvas-item.h
+++ b/src/display/sp-canvas-item.h
@@ -22,8 +22,8 @@
#endif
#include <glib-object.h>
-#include <gtk/gtkobject.h>
-#include <gdk/gdkevents.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
#include "2geom/rect.h"
@@ -36,9 +36,9 @@ struct SPCanvasGroup;
typedef struct _SPCanvasItemClass SPCanvasItemClass;
#define SP_TYPE_CANVAS_ITEM (sp_canvas_item_get_type())
-#define SP_CANVAS_ITEM(obj) (GTK_CHECK_CAST((obj), SP_TYPE_CANVAS_ITEM, SPCanvasItem))
-#define SP_IS_CANVAS_ITEM(obj) (GTK_CHECK_TYPE((obj), SP_TYPE_CANVAS_ITEM))
-#define SP_CANVAS_ITEM_GET_CLASS(o) (GTK_CHECK_GET_CLASS((o), SP_TYPE_CANVAS_ITEM, SPCanvasItemClass))
+#define SP_CANVAS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_CANVAS_ITEM, SPCanvasItem))
+#define SP_IS_CANVAS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_CANVAS_ITEM))
+#define SP_CANVAS_ITEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), SP_TYPE_CANVAS_ITEM, SPCanvasItemClass))
GType sp_canvas_item_get_type();
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 105a9a0ff..c84452c07 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -18,10 +18,7 @@
# include <config.h>
#endif
-#include <gtk/gtkmain.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkversion.h>
-
+#include <gtk/gtk.h>
#include <gtkmm.h>
#include "helper/sp-marshal.h"
@@ -44,12 +41,9 @@
using Inkscape::Debug::GdkEventLatencyTracker;
-// GTK_CHECK_VERSION returns false on failure
-#define HAS_GDK_EVENT_REQUEST_MOTIONS GTK_CHECK_VERSION(2, 12, 0)
-
// gtk_check_version returns non-NULL on failure
static bool const HAS_BROKEN_MOTION_HINTS =
- true || gtk_check_version(2, 12, 0) != NULL || !HAS_GDK_EVENT_REQUEST_MOTIONS;
+ true || gtk_check_version(2, 12, 0) != NULL;
// Define this to visualize the regions to be redrawn
//#define DEBUG_REDRAW 1;
@@ -539,7 +533,7 @@ sp_canvas_item_grab (SPCanvasItem *item, guint event_mask, GdkCursor *cursor, gu
{
g_return_val_if_fail (item != NULL, -1);
g_return_val_if_fail (SP_IS_CANVAS_ITEM (item), -1);
- g_return_val_if_fail (GTK_WIDGET_MAPPED (item->canvas), -1);
+ g_return_val_if_fail (gtk_widget_get_mapped (GTK_WIDGET (item->canvas)), -1);
if (item->canvas->grabbed_item)
return -1;
@@ -630,7 +624,7 @@ sp_canvas_item_grab_focus (SPCanvasItem *item)
{
g_return_if_fail (item != NULL);
g_return_if_fail (SP_IS_CANVAS_ITEM (item));
- g_return_if_fail (GTK_WIDGET_CAN_FOCUS (GTK_WIDGET (item->canvas)));
+ g_return_if_fail (gtk_widget_get_can_focus (GTK_WIDGET (item->canvas)));
SPCanvasItem *focused_item = item->canvas->focused_item;
@@ -1022,9 +1016,9 @@ sp_canvas_class_init (SPCanvasClass *klass)
static void
sp_canvas_init (SPCanvas *canvas)
{
- GTK_WIDGET_UNSET_FLAGS (canvas, GTK_NO_WINDOW);
- GTK_WIDGET_UNSET_FLAGS (canvas, GTK_DOUBLE_BUFFERED);
- GTK_WIDGET_SET_FLAGS (canvas, GTK_CAN_FOCUS);
+ gtk_widget_set_has_window (GTK_WIDGET (canvas), TRUE);
+ gtk_widget_set_double_buffered (GTK_WIDGET (canvas), FALSE);
+ gtk_widget_set_can_focus (GTK_WIDGET (canvas), TRUE);
canvas->pick_event.type = GDK_LEAVE_NOTIFY;
canvas->pick_event.crossing.x = 0;
@@ -1178,7 +1172,7 @@ sp_canvas_realize (GtkWidget *widget)
widget->style = gtk_style_attach (widget->style, widget->window);
- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+ gtk_widget_set_realized (widget, TRUE);
canvas->pixmap_gc = gdk_gc_new (SP_CANVAS_WINDOW (canvas));
}
@@ -1243,7 +1237,7 @@ sp_canvas_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
widget->allocation = *allocation;
- if (GTK_WIDGET_REALIZED (widget)) {
+ if (gtk_widget_get_realized (widget)) {
gdk_window_move_resize (widget->window,
widget->allocation.x, widget->allocation.y,
widget->allocation.width, widget->allocation.height);
@@ -1362,7 +1356,7 @@ emit_event (SPCanvas *canvas, GdkEvent *event)
while (item && !finished) {
gtk_object_ref (GTK_OBJECT (item));
- gtk_signal_emit (GTK_OBJECT (item), item_signals[ITEM_EVENT], &ev, &finished);
+ g_signal_emit (G_OBJECT (item), item_signals[ITEM_EVENT], 0, &ev, &finished);
SPCanvasItem *parent = item->parent;
gtk_object_unref (GTK_OBJECT (item));
item = parent;
@@ -1596,9 +1590,7 @@ sp_canvas_scroll (GtkWidget *widget, GdkEventScroll *event)
static inline void request_motions(GdkWindow *w, GdkEventMotion *event) {
gdk_window_get_pointer(w, NULL, NULL, NULL);
-#if HAS_GDK_EVENT_REQUEST_MOTIONS
gdk_event_request_motions(event);
-#endif
}
/**
@@ -1937,7 +1929,7 @@ sp_canvas_expose (GtkWidget *widget, GdkEventExpose *event)
{
SPCanvas *canvas = SP_CANVAS (widget);
- if (!GTK_WIDGET_DRAWABLE (widget) ||
+ if (!gtk_widget_is_drawable (widget) ||
(event->window != SP_CANVAS_WINDOW (canvas)))
return FALSE;
@@ -1992,7 +1984,7 @@ sp_canvas_crossing (GtkWidget *widget, GdkEventCrossing *event)
static gint
sp_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
{
- GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
+ gtk_widget_grab_focus (widget);
SPCanvas *canvas = SP_CANVAS (widget);
@@ -2009,8 +2001,6 @@ sp_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
static gint
sp_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
{
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
-
SPCanvas *canvas = SP_CANVAS (widget);
if (canvas->focused_item)
@@ -2093,7 +2083,7 @@ do_update (SPCanvas *canvas)
}
/* Paint if able to */
- if (GTK_WIDGET_DRAWABLE (canvas)) {
+ if (gtk_widget_is_drawable ( GTK_WIDGET (canvas))) {
return paint (canvas);
}
@@ -2177,7 +2167,7 @@ sp_canvas_scroll_to (SPCanvas *canvas, double cx, double cy, unsigned int clear,
// scrolling without zoom; redraw only the newly exposed areas
if ((dx != 0) || (dy != 0)) {
canvas->is_scrolling = is_scrolling;
- if (GTK_WIDGET_REALIZED (canvas)) {
+ if (gtk_widget_get_realized (GTK_WIDGET (canvas))) {
gdk_window_scroll (SP_CANVAS_WINDOW (canvas), -dx, -dy);
}
}
@@ -2226,7 +2216,7 @@ sp_canvas_request_redraw (SPCanvas *canvas, int x0, int y0, int x1, int y1)
g_return_if_fail (canvas != NULL);
g_return_if_fail (SP_IS_CANVAS (canvas));
- if (!GTK_WIDGET_DRAWABLE (canvas)) return;
+ if (!gtk_widget_is_drawable ( GTK_WIDGET (canvas))) return;
if ((x0 >= x1) || (y0 >= y1)) return;
bbox.x0 = x0;
diff --git a/src/display/sp-canvas.h b/src/display/sp-canvas.h
index 53b8a61f1..7a6b3295e 100644
--- a/src/display/sp-canvas.h
+++ b/src/display/sp-canvas.h
@@ -28,10 +28,8 @@
#endif
#include <glib/gtypes.h>
-#include <gdk/gdkevents.h>
-#include <gdk/gdkgc.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtkwidget.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
#include <glibmm/ustring.h>
@@ -43,8 +41,8 @@
G_BEGIN_DECLS
#define SP_TYPE_CANVAS sp_canvas_get_type()
-#define SP_CANVAS(obj) (GTK_CHECK_CAST((obj), SP_TYPE_CANVAS, SPCanvas))
-#define SP_IS_CANVAS(obj) (GTK_CHECK_TYPE((obj), SP_TYPE_CANVAS))
+#define SP_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_CANVAS, SPCanvas))
+#define SP_IS_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_CANVAS))
GType sp_canvas_get_type();
diff --git a/src/display/sp-ctrlline.h b/src/display/sp-ctrlline.h
index e69c478fb..eeed7e75d 100644
--- a/src/display/sp-ctrlline.h
+++ b/src/display/sp-ctrlline.h
@@ -19,8 +19,8 @@
struct SPItem;
#define SP_TYPE_CTRLLINE (sp_ctrlline_get_type ())
-#define SP_CTRLLINE(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CTRLLINE, SPCtrlLine))
-#define SP_IS_CTRLLINE(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CTRLLINE))
+#define SP_CTRLLINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CTRLLINE, SPCtrlLine))
+#define SP_IS_CTRLLINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRLLINE))
struct SPCtrlLine : public SPCanvasItem{
SPItem *item; // the item to which this line belongs in some sense; may be NULL for some users
diff --git a/src/display/sp-ctrlpoint.h b/src/display/sp-ctrlpoint.h
index b98d48f67..907f74bf8 100644
--- a/src/display/sp-ctrlpoint.h
+++ b/src/display/sp-ctrlpoint.h
@@ -17,8 +17,8 @@
struct SPItem;
#define SP_TYPE_CTRLPOINT (sp_ctrlpoint_get_type ())
-#define SP_CTRLPOINT(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CTRLPOINT, SPCtrlPoint))
-#define SP_IS_CTRLPOINT(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CTRLPOINT))
+#define SP_CTRLPOINT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CTRLPOINT, SPCtrlPoint))
+#define SP_IS_CTRLPOINT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRLPOINT))
struct SPCtrlPoint : public SPCanvasItem {
SPItem *item; // the item to which this line belongs in some sense; may be NULL for some users
diff --git a/src/display/sp-ctrlquadr.h b/src/display/sp-ctrlquadr.h
index f3c1ced45..9fdfd29b3 100644
--- a/src/display/sp-ctrlquadr.h
+++ b/src/display/sp-ctrlquadr.h
@@ -17,8 +17,8 @@
#define SP_TYPE_CTRLQUADR (sp_ctrlquadr_get_type ())
-#define SP_CTRLQUADR(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CTRLQUADR, SPCtrlQuadr))
-#define SP_IS_CTRLQUADR(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CTRLQUADR))
+#define SP_CTRLQUADR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CTRLQUADR, SPCtrlQuadr))
+#define SP_IS_CTRLQUADR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRLQUADR))
struct SPCtrlQuadr;
struct SPCtrlQuadrClass;