diff options
Diffstat (limited to 'src')
81 files changed, 165 insertions, 303 deletions
diff --git a/src/color.h b/src/color.h index 887daf66b..02a4fc90f 100644 --- a/src/color.h +++ b/src/color.h @@ -30,6 +30,7 @@ typedef unsigned int guint32; // uint is guaranteed to hold up to 2^32 − 1 #define SP_RGBA32_A_F(v) SP_COLOR_U_TO_F (SP_RGBA32_A_U (v)) #define SP_RGBA32_U_COMPOSE(r,g,b,a) ((((r) & 0xff) << 24) | (((g) & 0xff) << 16) | (((b) & 0xff) << 8) | ((a) & 0xff)) #define SP_RGBA32_F_COMPOSE(r,g,b,a) SP_RGBA32_U_COMPOSE (SP_COLOR_F_TO_U (r), SP_COLOR_F_TO_U (g), SP_COLOR_F_TO_U (b), SP_COLOR_F_TO_U (a)) +#define SP_RGBA32_C_COMPOSE(c,o) SP_RGBA32_U_COMPOSE(SP_RGBA32_R_U(c),SP_RGBA32_G_U(c),SP_RGBA32_B_U(c),SP_COLOR_F_TO_U(o)) struct SVGICCColor; diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index 5fef8cbfc..894087c8c 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -521,7 +521,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) GdkCursor *guide_cursor = gdk_cursor_new_for_display(display, cursor_type); if(guide->getLocked()){ - guide_cursor = sp_cursor_new_from_xpm(cursor_select_xpm , 1, 1); + guide_cursor = sp_cursor_from_xpm(cursor_select_xpm); } gdk_window_set_cursor(gtk_widget_get_window (GTK_WIDGET(desktop->getCanvas())), guide_cursor); g_object_unref(guide_cursor); diff --git a/src/pixmaps/cursor-3dbox.xpm b/src/pixmaps/cursor-3dbox.xpm index 3fda78ef1..c7fcb9248 100644 --- a/src/pixmaps/cursor-3dbox.xpm +++ b/src/pixmaps/cursor-3dbox.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_3dbox_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-arc.xpm b/src/pixmaps/cursor-arc.xpm deleted file mode 100644 index cbf6a9e30..000000000 --- a/src/pixmaps/cursor-arc.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char const *cursor_arc_xpm[] = { -"32 32 3 1", -" c None", -". c #FFFFFF", -"+ c #000000", -" ... ", -" .+. ", -" .+. ", -"....+.... ", -".+++ +++. ", -"....+.... ", -" .+. ", -" .+. ..... ", -" ... .+++.... ", -" .+..+++.. ", -" .+.....+.. ", -" .+......+.. ", -" ..+.......+. ", -" ...++.......+. ", -" ...++.........+. ", -" ...++..........+.. ", -" .++...........+.. ", -" ...++......+++.. ", -" ...++++++.... ", -" ........ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" "}; diff --git a/src/pixmaps/cursor-arrow.xpm b/src/pixmaps/cursor-arrow.xpm deleted file mode 100644 index 963656a92..000000000 --- a/src/pixmaps/cursor-arrow.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char const *cursor_arrow_xpm[] = { -"32 32 3 1", -" c None", -". c #FFFFFF", -"+ c #000000", -" .. ", -".++.. ", -".+ ++.. ", -" .+ ++.. ", -" .+ ++.. ", -" .+ ++. ", -" .+ +. ", -" .+ +. ", -" .+ +. ", -" .+ +. ", -" .+ + +. ", -" .++.+ +. ", -" .. .+ +. ", -" .+ +. ", -" .+ +. ", -" .+ +. ", -" .+ +. ", -" .+ +. ", -" .+. ", -" . ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" "}; diff --git a/src/pixmaps/cursor-calligraphy.xpm b/src/pixmaps/cursor-calligraphy.xpm index 52c4f76cb..193bd6196 100644 --- a/src/pixmaps/cursor-calligraphy.xpm +++ b/src/pixmaps/cursor-calligraphy.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_calligraphy_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-connector.xpm b/src/pixmaps/cursor-connector.xpm index ddff5cdf5..86e8d1753 100644 --- a/src/pixmaps/cursor-connector.xpm +++ b/src/pixmaps/cursor-connector.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_connector_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-crosshairs.xpm b/src/pixmaps/cursor-crosshairs.xpm index 8c7554523..407b76048 100644 --- a/src/pixmaps/cursor-crosshairs.xpm +++ b/src/pixmaps/cursor-crosshairs.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_crosshairs_xpm[] = { -"32 32 3 1", +"32 32 3 1 7 7", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-dropper-f.xpm b/src/pixmaps/cursor-dropper-f.xpm index 3bf1e80e1..e5602d94b 100644 --- a/src/pixmaps/cursor-dropper-f.xpm +++ b/src/pixmaps/cursor-dropper-f.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_dropper_f_xpm[] = { -"32 32 3 1", +"32 32 3 1 5 5", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-dropper-s.xpm b/src/pixmaps/cursor-dropper-s.xpm index 1a12934d8..2a80f3600 100644 --- a/src/pixmaps/cursor-dropper-s.xpm +++ b/src/pixmaps/cursor-dropper-s.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_dropper_s_xpm[] = { -"32 32 3 1", +"32 32 3 1 5 5", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-ellipse.xpm b/src/pixmaps/cursor-ellipse.xpm index b0f20d18c..83a820f49 100644 --- a/src/pixmaps/cursor-ellipse.xpm +++ b/src/pixmaps/cursor-ellipse.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_ellipse_xpm[] = { -"32 32 5 1", +"32 32 5 1 4 4", " c None", ". c #FFFFFF", "% c Stroke", diff --git a/src/pixmaps/cursor-eraser.xpm b/src/pixmaps/cursor-eraser.xpm index dbe730291..b3f8f2d84 100644 --- a/src/pixmaps/cursor-eraser.xpm +++ b/src/pixmaps/cursor-eraser.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_eraser_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-gradient-add.xpm b/src/pixmaps/cursor-gradient-add.xpm index d1fe8ed95..ea8341bb2 100644 --- a/src/pixmaps/cursor-gradient-add.xpm +++ b/src/pixmaps/cursor-gradient-add.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_gradient_add_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-gradient.xpm b/src/pixmaps/cursor-gradient.xpm index a7be769f5..92c9a9a15 100644 --- a/src/pixmaps/cursor-gradient.xpm +++ b/src/pixmaps/cursor-gradient.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_gradient_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-measure.xpm b/src/pixmaps/cursor-measure.xpm index 2a28579c6..9f6497c65 100644 --- a/src/pixmaps/cursor-measure.xpm +++ b/src/pixmaps/cursor-measure.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_measure_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-node-d.xpm b/src/pixmaps/cursor-node-d.xpm index 7e177bff4..e28bc73d3 100644 --- a/src/pixmaps/cursor-node-d.xpm +++ b/src/pixmaps/cursor-node-d.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_node_d_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-node-m.xpm b/src/pixmaps/cursor-node-m.xpm deleted file mode 100644 index 08574bfb0..000000000 --- a/src/pixmaps/cursor-node-m.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char const *cursor_node_m_xpm[] = { -"32 32 3 1", -" g None", -". g #FFFFFF", -"+ g #000000", -" . ", -".+. ", -" .+. ", -" .++. ", -" .++. ", -" .+++. ", -" .+++. ", -" .++++. ", -" .++++. ", -" .+++++. ", -" .+++++. ", -" .++++++. +++ ", -" .+++++. +.+..+ ", -" .+++.. +..+..++++ ", -" .+. +..+..+..+ ", -" . +..+..+..++ ", -" +++..+..+..+.+ ", -" +..+..+..+..+.+ ", -" +..+..+..+..+.+ ", -" +..+..+..+..+.+ ", -" +.............+ ", -" +............+ ", -" +...........+ ", -" +..........+ ", -" +.........+ ", -" +........+ ", -" +.......+ ", -" +.......+ ", -" +++++++++ ", -" ", -" ", -" "}; diff --git a/src/pixmaps/cursor-node.xpm b/src/pixmaps/cursor-node.xpm index 6daae6bda..4d3bd9407 100644 --- a/src/pixmaps/cursor-node.xpm +++ b/src/pixmaps/cursor-node.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_node_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-paintbucket.xpm b/src/pixmaps/cursor-paintbucket.xpm index 11ffd6ed1..0c6767f75 100644 --- a/src/pixmaps/cursor-paintbucket.xpm +++ b/src/pixmaps/cursor-paintbucket.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_paintbucket_xpm[] = { -"32 32 3 1", +"32 32 3 1 11 30", " c None", ". c #000000", "+ c #FFFFFF", diff --git a/src/pixmaps/cursor-pen.xpm b/src/pixmaps/cursor-pen.xpm index 11512e03f..79b68e9ba 100644 --- a/src/pixmaps/cursor-pen.xpm +++ b/src/pixmaps/cursor-pen.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_pen_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-pencil.xpm b/src/pixmaps/cursor-pencil.xpm index 4e7b03776..92c6331ab 100644 --- a/src/pixmaps/cursor-pencil.xpm +++ b/src/pixmaps/cursor-pencil.xpm @@ -1,6 +1,6 @@ /* XPM */ static const char * cursor_pencil_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-rect.xpm b/src/pixmaps/cursor-rect.xpm index 69007bc77..e54b7ce4f 100644 --- a/src/pixmaps/cursor-rect.xpm +++ b/src/pixmaps/cursor-rect.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_rect_xpm[] = { -"32 32 5 1", +"32 32 5 1 4 4", " c None", ". c #FFFFFF", "% c Stroke", diff --git a/src/pixmaps/cursor-select-d.xpm b/src/pixmaps/cursor-select-d.xpm index 501816da0..e84e4de9f 100644 --- a/src/pixmaps/cursor-select-d.xpm +++ b/src/pixmaps/cursor-select-d.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_select_d_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #000000", "+ c #FFFFFF", diff --git a/src/pixmaps/cursor-select-m.xpm b/src/pixmaps/cursor-select-m.xpm index 439639c8f..8dd8fb076 100644 --- a/src/pixmaps/cursor-select-m.xpm +++ b/src/pixmaps/cursor-select-m.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_select_m_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #000000", "+ c #FFFFFF", diff --git a/src/pixmaps/cursor-select.xpm b/src/pixmaps/cursor-select.xpm index 569573618..36b40c6c5 100644 --- a/src/pixmaps/cursor-select.xpm +++ b/src/pixmaps/cursor-select.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_select_xpm[] = { -"32 32 3 1", +"32 32 3 1 1 1", " c None", ". c #000000", "+ c #FFFFFF", diff --git a/src/pixmaps/cursor-spiral.xpm b/src/pixmaps/cursor-spiral.xpm index db6f9d2ec..1eaef1e8c 100644 --- a/src/pixmaps/cursor-spiral.xpm +++ b/src/pixmaps/cursor-spiral.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_spiral_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-spray-move.xpm b/src/pixmaps/cursor-spray-move.xpm index ad898b3a5..0c918392a 100644 --- a/src/pixmaps/cursor-spray-move.xpm +++ b/src/pixmaps/cursor-spray-move.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_spray_move_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-spray.xpm b/src/pixmaps/cursor-spray.xpm index 9ccefee4f..19a40997c 100644 --- a/src/pixmaps/cursor-spray.xpm +++ b/src/pixmaps/cursor-spray.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_spray_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-star.xpm b/src/pixmaps/cursor-star.xpm index eedf448e4..c9f2e85e7 100644 --- a/src/pixmaps/cursor-star.xpm +++ b/src/pixmaps/cursor-star.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_star_xpm[] = { -"32 32 5 1", +"32 32 5 1 4 4", " c None", ". c #FFFFFF", "% c Stroke", diff --git a/src/pixmaps/cursor-text-insert.xpm b/src/pixmaps/cursor-text-insert.xpm index d72c59686..488791e2e 100644 --- a/src/pixmaps/cursor-text-insert.xpm +++ b/src/pixmaps/cursor-text-insert.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_text_insert_xpm[] = { -"32 32 3 1", +"32 32 3 1 7 10", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-text.xpm b/src/pixmaps/cursor-text.xpm index 46098db30..6d74ae305 100644 --- a/src/pixmaps/cursor-text.xpm +++ b/src/pixmaps/cursor-text.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_text_xpm[] = { -"32 32 3 1", +"32 32 3 1 7 7", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-attract.xpm b/src/pixmaps/cursor-tweak-attract.xpm index 56033b287..264360b2e 100644 --- a/src/pixmaps/cursor-attract.xpm +++ b/src/pixmaps/cursor-tweak-attract.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_attract_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-color.xpm b/src/pixmaps/cursor-tweak-color.xpm index 327028ba8..4bce642d6 100644 --- a/src/pixmaps/cursor-color.xpm +++ b/src/pixmaps/cursor-tweak-color.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_color_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-less.xpm b/src/pixmaps/cursor-tweak-less.xpm index 6c065ba62..c669bca77 100644 --- a/src/pixmaps/cursor-tweak-less.xpm +++ b/src/pixmaps/cursor-tweak-less.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_less_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-more.xpm b/src/pixmaps/cursor-tweak-more.xpm index 0e80bb9c5..6321ce940 100644 --- a/src/pixmaps/cursor-tweak-more.xpm +++ b/src/pixmaps/cursor-tweak-more.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_more_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-move-in.xpm b/src/pixmaps/cursor-tweak-move-in.xpm index 11ee4c3e1..d80fa03c6 100644 --- a/src/pixmaps/cursor-tweak-move-in.xpm +++ b/src/pixmaps/cursor-tweak-move-in.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_move_in_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-move-jitter.xpm b/src/pixmaps/cursor-tweak-move-jitter.xpm index 1f2b1d26a..7f0f8114d 100644 --- a/src/pixmaps/cursor-tweak-move-jitter.xpm +++ b/src/pixmaps/cursor-tweak-move-jitter.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_move_jitter_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-move-out.xpm b/src/pixmaps/cursor-tweak-move-out.xpm index 7d4569dfe..1fa0293bb 100644 --- a/src/pixmaps/cursor-tweak-move-out.xpm +++ b/src/pixmaps/cursor-tweak-move-out.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_move_out_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-move.xpm b/src/pixmaps/cursor-tweak-move.xpm index e44028f6c..67b10980b 100644 --- a/src/pixmaps/cursor-tweak-move.xpm +++ b/src/pixmaps/cursor-tweak-move.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_move_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-push.xpm b/src/pixmaps/cursor-tweak-push.xpm index ba05369a8..bf331e58d 100644 --- a/src/pixmaps/cursor-push.xpm +++ b/src/pixmaps/cursor-tweak-push.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_push_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-repel.xpm b/src/pixmaps/cursor-tweak-repel.xpm index d365cddc3..5dccefdb8 100644 --- a/src/pixmaps/cursor-repel.xpm +++ b/src/pixmaps/cursor-tweak-repel.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_repel_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-rotate-clockwise.xpm b/src/pixmaps/cursor-tweak-rotate-clockwise.xpm index 20bad59af..ecbbde820 100644 --- a/src/pixmaps/cursor-tweak-rotate-clockwise.xpm +++ b/src/pixmaps/cursor-tweak-rotate-clockwise.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_rotate_clockwise_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-rotate-counterclockwise.xpm b/src/pixmaps/cursor-tweak-rotate-counterclockwise.xpm index c5fcc70e8..a3c220842 100644 --- a/src/pixmaps/cursor-tweak-rotate-counterclockwise.xpm +++ b/src/pixmaps/cursor-tweak-rotate-counterclockwise.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_rotate_counterclockwise_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-roughen.xpm b/src/pixmaps/cursor-tweak-roughen.xpm index 5adafbbd2..1581b95fa 100644 --- a/src/pixmaps/cursor-roughen.xpm +++ b/src/pixmaps/cursor-tweak-roughen.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_roughen_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-scale-down.xpm b/src/pixmaps/cursor-tweak-scale-down.xpm index cfd804aab..b1b15af17 100644 --- a/src/pixmaps/cursor-tweak-scale-down.xpm +++ b/src/pixmaps/cursor-tweak-scale-down.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_scale_down_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-tweak-scale-up.xpm b/src/pixmaps/cursor-tweak-scale-up.xpm index 547346f4c..dcc73c122 100644 --- a/src/pixmaps/cursor-tweak-scale-up.xpm +++ b/src/pixmaps/cursor-tweak-scale-up.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const * cursor_tweak_scale_up_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-thicken.xpm b/src/pixmaps/cursor-tweak-thicken.xpm index ab76c6c8c..ba7a2dfb8 100644 --- a/src/pixmaps/cursor-thicken.xpm +++ b/src/pixmaps/cursor-tweak-thicken.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_thicken_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-thin.xpm b/src/pixmaps/cursor-tweak-thin.xpm index 16a32311d..7d10fe7e9 100644 --- a/src/pixmaps/cursor-thin.xpm +++ b/src/pixmaps/cursor-tweak-thin.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_thin_xpm[] = { -"32 32 3 1", +"32 32 3 1 4 4", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-zoom-out.xpm b/src/pixmaps/cursor-zoom-out.xpm index c8ddf48a2..8f35ad049 100644 --- a/src/pixmaps/cursor-zoom-out.xpm +++ b/src/pixmaps/cursor-zoom-out.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_zoom_out_xpm[] = { -"32 32 3 1", +"32 32 3 1 6 6", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/pixmaps/cursor-zoom.xpm b/src/pixmaps/cursor-zoom.xpm index 0def57427..e869239d6 100644 --- a/src/pixmaps/cursor-zoom.xpm +++ b/src/pixmaps/cursor-zoom.xpm @@ -1,6 +1,6 @@ /* XPM */ static char const *cursor_zoom_xpm[] = { -"32 32 3 1", +"32 32 3 1 6 6", " c None", ". c #FFFFFF", "+ c #000000", diff --git a/src/sp-cursor.cpp b/src/sp-cursor.cpp index 4b9f1cc2d..78bfc9075 100644 --- a/src/sp-cursor.cpp +++ b/src/sp-cursor.cpp @@ -54,82 +54,92 @@ struct RGBA { } }; -GdkPixbuf *sp_cursor_pixbuf_from_xpm(char const *const *xpm, GdkColor const& black, GdkColor const& white, guint32 fill, guint32 stroke) +GdkCursor *sp_cursor_from_xpm(char const *const *xpm, GdkColor *black, GdkColor *white, guint32 fill, guint32 stroke) { + GdkPixbuf *pixbuf; + GdkCursor *cursor; + GdkDisplay *display = gdk_display_get_default(); + int height = 0; int width = 0; int colors = 0; int pix = 0; + int hot_x = 0; + int hot_y = 0; std::stringstream ss (std::stringstream::in | std::stringstream::out); ss << xpm[0]; ss >> height; ss >> width; ss >> colors; ss >> pix; + ss >> hot_x; + ss >> hot_y; - std::map<char, RGBA> colorMap; + if (gdk_display_supports_cursor_alpha(display) && gdk_display_supports_cursor_color(display)) { + std::map<char, RGBA> colorMap; - for (int i = 0; i < colors; i++) { + for (int i = 0; i < colors; i++) { - char const *p = xpm[1 + i]; - g_assert(*p >=0); - unsigned char const ccode = (guchar) *p; + char const *p = xpm[1 + i]; + g_assert(*p >=0); + unsigned char const ccode = (guchar) *p; - p++; - while (isspace(*p)) { p++; - } - p++; - while (isspace(*p)) { + while (isspace(*p)) { + p++; + } p++; + while (isspace(*p)) { + p++; + } + + if (strcmp(p, "Fill") == 0) { + colorMap[ccode] = RGBA(SP_RGBA32_R_U(fill), SP_RGBA32_G_U(fill), SP_RGBA32_B_U(fill), SP_RGBA32_A_U(fill)); + } else if (strcmp(p, "Stroke") == 0) { + colorMap[ccode] = RGBA(SP_RGBA32_R_U(stroke), SP_RGBA32_G_U(stroke), SP_RGBA32_B_U(stroke), SP_RGBA32_A_U(stroke)); + } else if (black && strcmp(p, "#000000") == 0) { + colorMap[ccode] = RGBA(black->red, black->green, black->blue, 255); + } else if (white && strcmp(p, "#FFFFFF") == 0) { + colorMap[ccode] = RGBA(white->red, white->green, white->blue, 255); + } else if (p[0] == '#') { + GdkRGBA color; + if (gdk_rgba_parse(&color, p)) { + colorMap[ccode] = RGBA(color.red * 255, color.green * 255, color.blue * 255, color.alpha * 255); + } else { + colorMap[ccode] = RGBA(); + } + } else { // Catches 'None' + colorMap[ccode] = RGBA(); + } } - if (strcmp(p, "None") == 0) { - colorMap[ccode] = RGBA(); - } else if (strcmp(p, "Fill") == 0) { - colorMap[ccode] = RGBA(SP_RGBA32_R_U(fill), SP_RGBA32_G_U(fill), SP_RGBA32_B_U(fill), SP_RGBA32_A_U(fill)); - } else if (strcmp(p, "Stroke") == 0) { - colorMap[ccode] = RGBA(SP_RGBA32_R_U(stroke), SP_RGBA32_G_U(stroke), SP_RGBA32_B_U(stroke), SP_RGBA32_A_U(stroke)); - } else if (strcmp(p, "#000000") == 0) { - colorMap[ccode] = RGBA(black.red, black.green, black.blue, 255); - } else if (strcmp(p, "#FFFFFF") == 0) { - colorMap[ccode] = RGBA(white.red, white.green, white.blue, 255); - } else { - colorMap[ccode] = RGBA(); - } - } + guint32 *pixmap_buffer = new guint32[width * height]; - guint32 *pixmap_buffer = new guint32[width * height]; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - std::map<char, RGBA>::const_iterator it = colorMap.find(xpm[1 + colors + y][x]); - pixmap_buffer[y * width + x] = (it == colorMap.end()) ? 0u : it->second; + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + std::map<char, RGBA>::const_iterator it = colorMap.find(xpm[1 + colors + y][x]); + pixmap_buffer[y * width + x] = (it == colorMap.end()) ? 0u : it->second; + } } - } #if G_BYTE_ORDER == G_BIG_ENDIAN - for (int i = 0, n = width * height; i < n; i++) { - guint32 v = pixmap_buffer[i]; - pixmap_buffer[i] = ((v & 0xFF) << 24) | (((v >> 8) & 0xFF) << 16) | (((v >> 16) & 0xFF) << 8) | ((v >> 24) & 0xFF); - } + for (int i = 0, n = width * height; i < n; i++) { + guint32 v = pixmap_buffer[i]; + pixmap_buffer[i] = ((v & 0xFF) << 24) | (((v >> 8) & 0xFF) << 16) | (((v >> 16) & 0xFF) << 8) | ((v >> 24) & 0xFF); + } #endif - return gdk_pixbuf_new_from_data(reinterpret_cast<guchar*>(pixmap_buffer), GDK_COLORSPACE_RGB, TRUE, 8, width, height, width * sizeof(guint32), free_cursor_data, NULL); -} - -GdkCursor *sp_cursor_new_from_xpm(char const *const *xpm, int hot_x, int hot_y) -{ - GdkCursor *cursor = 0; - GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)xpm); - - if (pixbuf) { - cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), - pixbuf, hot_x, hot_y); + pixbuf = gdk_pixbuf_new_from_data(reinterpret_cast<guchar*>(pixmap_buffer), GDK_COLORSPACE_RGB, TRUE, 8, width, height, width * sizeof(guint32), free_cursor_data, NULL); + } else { + pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)xpm); + } + if (pixbuf != NULL) { + cursor = gdk_cursor_new_from_pixbuf(display, pixbuf, hot_x, hot_y); g_object_unref(pixbuf); + } else { + g_warning("Failed to load cursor from xpm!"); } - return cursor; } diff --git a/src/sp-cursor.h b/src/sp-cursor.h index c0b8b46a3..6579d6a16 100644 --- a/src/sp-cursor.h +++ b/src/sp-cursor.h @@ -6,8 +6,7 @@ typedef struct _GdkPixbuf GdkPixbuf; typedef struct _GdkCursor GdkCursor; typedef struct _GdkColor GdkColor; -GdkPixbuf* sp_cursor_pixbuf_from_xpm(char const *const *xpm, GdkColor const& black, GdkColor const& white, guint32 fill, guint32 stroke); -GdkCursor *sp_cursor_new_from_xpm(char const *const *xpm, int hot_x, int hot_y); +GdkCursor* sp_cursor_from_xpm(char const *const *xpm, GdkColor *black=NULL, GdkColor *white=NULL, guint32 fill=0, guint32 stroke=0); #endif diff --git a/src/ui/tools/arc-tool.cpp b/src/ui/tools/arc-tool.cpp index 6652f7ab5..01e0c3e00 100644 --- a/src/ui/tools/arc-tool.cpp +++ b/src/ui/tools/arc-tool.cpp @@ -59,7 +59,7 @@ const std::string ArcTool::prefsPath = "/tools/shapes/arc"; ArcTool::ArcTool() - : ToolBase(cursor_ellipse_xpm, 4, 4) + : ToolBase(cursor_ellipse_xpm) , arc(NULL) { } diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp index 425695a2c..276385335 100644 --- a/src/ui/tools/box3d-tool.cpp +++ b/src/ui/tools/box3d-tool.cpp @@ -54,7 +54,7 @@ const std::string& Box3dTool::getPrefsPath() { const std::string Box3dTool::prefsPath = "/tools/shapes/3dbox"; Box3dTool::Box3dTool() - : ToolBase(cursor_3dbox_xpm, 4, 4) + : ToolBase(cursor_3dbox_xpm) , _vpdrag(NULL) , box3d(NULL) , ctrl_dragged(false) diff --git a/src/ui/tools/calligraphic-tool.cpp b/src/ui/tools/calligraphic-tool.cpp index 7228a52bc..266375caa 100644 --- a/src/ui/tools/calligraphic-tool.cpp +++ b/src/ui/tools/calligraphic-tool.cpp @@ -88,7 +88,7 @@ const std::string& CalligraphicTool::getPrefsPath() { const std::string CalligraphicTool::prefsPath = "/tools/calligraphic"; CalligraphicTool::CalligraphicTool() - : DynamicBase(cursor_calligraphy_xpm, 4, 4) + : DynamicBase(cursor_calligraphy_xpm) , keep_selected(true) , hatch_spacing(0) , hatch_spacing_step(0) diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp index 7e6fb4b72..29be4831a 100644 --- a/src/ui/tools/connector-tool.cpp +++ b/src/ui/tools/connector-tool.cpp @@ -145,7 +145,7 @@ const std::string& ConnectorTool::getPrefsPath() { const std::string ConnectorTool::prefsPath = "/tools/connector"; ConnectorTool::ConnectorTool() - : ToolBase(cursor_connector_xpm, 1, 1) + : ToolBase(cursor_connector_xpm) , selection(NULL) , npoints(0) , state(SP_CONNECTOR_CONTEXT_IDLE) diff --git a/src/ui/tools/dropper-tool.cpp b/src/ui/tools/dropper-tool.cpp index 99177dc75..bd341262b 100644 --- a/src/ui/tools/dropper-tool.cpp +++ b/src/ui/tools/dropper-tool.cpp @@ -60,7 +60,7 @@ const std::string& DropperTool::getPrefsPath() { const std::string DropperTool::prefsPath = "/tools/dropper"; DropperTool::DropperTool() - : ToolBase(cursor_dropper_f_xpm, 5, 5) + : ToolBase(cursor_dropper_f_xpm) , R(0) , G(0) , B(0) @@ -70,8 +70,8 @@ DropperTool::DropperTool() , area(NULL) , centre(0, 0) { - cursor_dropper_fill = sp_cursor_new_from_xpm(cursor_dropper_f_xpm , 5, 5); - cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 5, 5); + cursor_dropper_fill = sp_cursor_from_xpm(cursor_dropper_f_xpm); + cursor_dropper_stroke = sp_cursor_from_xpm(cursor_dropper_s_xpm); } DropperTool::~DropperTool() { diff --git a/src/ui/tools/dynamic-base.cpp b/src/ui/tools/dynamic-base.cpp index 6627a470e..bb4989333 100644 --- a/src/ui/tools/dynamic-base.cpp +++ b/src/ui/tools/dynamic-base.cpp @@ -18,8 +18,8 @@ namespace Inkscape { namespace UI { namespace Tools { -DynamicBase::DynamicBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y) - : ToolBase(cursor_shape, hot_x, hot_y) +DynamicBase::DynamicBase(gchar const *const *cursor_shape) + : ToolBase(cursor_shape) , accumulated(NULL) , segments(NULL) , currentshape(NULL) diff --git a/src/ui/tools/dynamic-base.h b/src/ui/tools/dynamic-base.h index 095af8f88..e270052f3 100644 --- a/src/ui/tools/dynamic-base.h +++ b/src/ui/tools/dynamic-base.h @@ -38,7 +38,7 @@ namespace Tools { class DynamicBase : public ToolBase { public: - DynamicBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y); + DynamicBase(gchar const *const *cursor_shape); virtual ~DynamicBase(); virtual void set(const Inkscape::Preferences::Entry& val); diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index ae312e054..b4246b9cc 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -93,7 +93,7 @@ const std::string& EraserTool::getPrefsPath() { const std::string EraserTool::prefsPath = "/tools/eraser"; EraserTool::EraserTool() - : DynamicBase(cursor_eraser_xpm, 4, 4) + : DynamicBase(cursor_eraser_xpm) , nowidth(false) { } diff --git a/src/ui/tools/flood-tool.cpp b/src/ui/tools/flood-tool.cpp index 6e1d085aa..f6f9b4355 100644 --- a/src/ui/tools/flood-tool.cpp +++ b/src/ui/tools/flood-tool.cpp @@ -98,7 +98,7 @@ Glib::ustring gap_init[4] = { const std::vector<Glib::ustring> FloodTool::gap_list( gap_init, gap_init+4 ); FloodTool::FloodTool() - : ToolBase(cursor_paintbucket_xpm, 11, 30) + : ToolBase(cursor_paintbucket_xpm) , item(NULL) { // TODO: Why does the flood tool use a hardcoded tolerance instead of a pref? diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp index 4af70a816..8a5ef0aad 100644 --- a/src/ui/tools/freehand-base.cpp +++ b/src/ui/tools/freehand-base.cpp @@ -63,8 +63,8 @@ static void spdc_flush_white(FreehandBase *dc, SPCurve *gc); static void spdc_reset_white(FreehandBase *dc); static void spdc_free_colors(FreehandBase *dc); -FreehandBase::FreehandBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y) - : ToolBase(cursor_shape, hot_x, hot_y) +FreehandBase::FreehandBase(gchar const *const *cursor_shape) + : ToolBase(cursor_shape) , selection(NULL) , grab(NULL) , attach(false) diff --git a/src/ui/tools/freehand-base.h b/src/ui/tools/freehand-base.h index 3ee4cd7d0..a3069aa09 100644 --- a/src/ui/tools/freehand-base.h +++ b/src/ui/tools/freehand-base.h @@ -44,7 +44,7 @@ namespace Tools { class FreehandBase : public ToolBase { public: - FreehandBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y); + FreehandBase(gchar const *const *cursor_shape); virtual ~FreehandBase(); Inkscape::Selection *selection; diff --git a/src/ui/tools/gradient-tool.cpp b/src/ui/tools/gradient-tool.cpp index 750596808..95d940bd6 100644 --- a/src/ui/tools/gradient-tool.cpp +++ b/src/ui/tools/gradient-tool.cpp @@ -58,7 +58,7 @@ const std::string GradientTool::prefsPath = "/tools/gradient"; GradientTool::GradientTool() - : ToolBase(cursor_gradient_xpm, 4, 4) + : ToolBase(cursor_gradient_xpm) , cursor_addnode(false) , node_added(false) // TODO: Why are these connections stored as pointers? diff --git a/src/ui/tools/lpe-tool.cpp b/src/ui/tools/lpe-tool.cpp index 29e4c9e74..35e6d14a0 100644 --- a/src/ui/tools/lpe-tool.cpp +++ b/src/ui/tools/lpe-tool.cpp @@ -68,7 +68,7 @@ const std::string& LpeTool::getPrefsPath() { const std::string LpeTool::prefsPath = "/tools/lpetool"; LpeTool::LpeTool() - : PenTool(cursor_crosshairs_xpm, 7, 7) + : PenTool(cursor_crosshairs_xpm) , shape_editor(NULL) , canvas_bbox(NULL) , mode(Inkscape::LivePathEffect::BEND_PATH) diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp index 98b2c7d03..7f3c99716 100644 --- a/src/ui/tools/measure-tool.cpp +++ b/src/ui/tools/measure-tool.cpp @@ -322,7 +322,7 @@ void createAngleDisplayCurve(SPDesktop *desktop, Geom::Point const ¢er, Geom boost::optional<Geom::Point> explicit_base_tmp = boost::none; MeasureTool::MeasureTool() - : ToolBase(cursor_measure_xpm, 4, 4) + : ToolBase(cursor_measure_xpm) , grabbed(NULL) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; diff --git a/src/ui/tools/mesh-tool.cpp b/src/ui/tools/mesh-tool.cpp index ac43b6c9d..d79741270 100644 --- a/src/ui/tools/mesh-tool.cpp +++ b/src/ui/tools/mesh-tool.cpp @@ -72,7 +72,7 @@ const std::string MeshTool::prefsPath = "/tools/mesh"; // TODO: The gradient tool class looks like a 1:1 copy. MeshTool::MeshTool() - : ToolBase(cursor_gradient_xpm, 4, 4) + : ToolBase(cursor_gradient_xpm) , cursor_addnode(false) , node_added(false) , show_handles(true) diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp index 0c948c91c..08aacf805 100644 --- a/src/ui/tools/node-tool.cpp +++ b/src/ui/tools/node-tool.cpp @@ -118,7 +118,7 @@ const std::string NodeTool::prefsPath = "/tools/nodes"; SPCanvasGroup *create_control_group(SPDesktop *d); NodeTool::NodeTool() - : ToolBase(cursor_node_xpm, 1, 1) + : ToolBase(cursor_node_xpm) , _selected_nodes(NULL) , _multipath(NULL) , edit_clipping_paths(false) @@ -773,14 +773,10 @@ void NodeTool::mouseover_changed(Inkscape::UI::ControlPoint *p) { if (cdp && !this->cursor_drag) { this->cursor_shape = cursor_node_d_xpm; - this->hot_x = 1; - this->hot_y = 1; this->sp_event_context_update_cursor(); this->cursor_drag = true; } else if (!cdp && this->cursor_drag) { this->cursor_shape = cursor_node_xpm; - this->hot_x = 1; - this->hot_y = 1; this->sp_event_context_update_cursor(); this->cursor_drag = false; } diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp index caf6faec2..265ddf2ea 100644 --- a/src/ui/tools/pen-tool.cpp +++ b/src/ui/tools/pen-tool.cpp @@ -81,7 +81,7 @@ const std::string& PenTool::getPrefsPath() { const std::string PenTool::prefsPath = "/tools/freehand/pen"; PenTool::PenTool() - : FreehandBase(cursor_pen_xpm, 4, 4) + : FreehandBase(cursor_pen_xpm) , p() , npoints(0) , mode(MODE_CLICK) @@ -100,8 +100,8 @@ PenTool::PenTool() { } -PenTool::PenTool(gchar const *const *cursor_shape, gint hot_x, gint hot_y) - : FreehandBase(cursor_shape, hot_x, hot_y) +PenTool::PenTool(gchar const *const *cursor_shape) + : FreehandBase(cursor_shape) , p() , npoints(0) , mode(MODE_CLICK) diff --git a/src/ui/tools/pen-tool.h b/src/ui/tools/pen-tool.h index 5a21e3bac..7e5483358 100644 --- a/src/ui/tools/pen-tool.h +++ b/src/ui/tools/pen-tool.h @@ -23,7 +23,7 @@ namespace Tools { class PenTool : public FreehandBase { public: PenTool(); - PenTool(gchar const *const *cursor_shape, gint hot_x, gint hot_y); + PenTool(gchar const *const *cursor_shape); virtual ~PenTool(); enum Mode { diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp index ec2874823..99b8103c3 100644 --- a/src/ui/tools/pencil-tool.cpp +++ b/src/ui/tools/pencil-tool.cpp @@ -57,7 +57,7 @@ const std::string& PencilTool::getPrefsPath() { const std::string PencilTool::prefsPath = "/tools/freehand/pencil"; PencilTool::PencilTool() - : FreehandBase(cursor_pencil_xpm, 4, 4) + : FreehandBase(cursor_pencil_xpm) , p() , npoints(0) , state(SP_PENCIL_CONTEXT_IDLE) diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp index 272531945..8eaae2f7b 100644 --- a/src/ui/tools/rect-tool.cpp +++ b/src/ui/tools/rect-tool.cpp @@ -52,7 +52,7 @@ const std::string& RectTool::getPrefsPath() { const std::string RectTool::prefsPath = "/tools/shapes/rect"; RectTool::RectTool() - : ToolBase(cursor_rect_xpm, 4, 4) + : ToolBase(cursor_rect_xpm) , rect(NULL) , rx(0) , ry(0) diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp index 927b8a3d4..fca2173ca 100644 --- a/src/ui/tools/select-tool.cpp +++ b/src/ui/tools/select-tool.cpp @@ -81,7 +81,7 @@ sp_load_handles(int start, int count, char const **xpm) { SelectTool::SelectTool() // Don't load a default cursor - : ToolBase(NULL, 0, 0) + : ToolBase(NULL) , dragging(false) , moved(false) , button_press_shift(false) @@ -94,8 +94,8 @@ SelectTool::SelectTool() , _describer(NULL) { // cursors in select context - CursorSelectMouseover = sp_cursor_new_from_xpm(cursor_select_m_xpm , 1, 1); - CursorSelectDragging = sp_cursor_new_from_xpm(cursor_select_d_xpm , 1, 1); + CursorSelectMouseover = sp_cursor_from_xpm(cursor_select_m_xpm); + CursorSelectDragging = sp_cursor_from_xpm(cursor_select_d_xpm); // selection handles sp_load_handles(0, 2, handle_scale_xpm); diff --git a/src/ui/tools/spiral-tool.cpp b/src/ui/tools/spiral-tool.cpp index 0ba08853e..08c35b9b0 100644 --- a/src/ui/tools/spiral-tool.cpp +++ b/src/ui/tools/spiral-tool.cpp @@ -51,7 +51,7 @@ const std::string& SpiralTool::getPrefsPath() { const std::string SpiralTool::prefsPath = "/tools/shapes/spiral"; SpiralTool::SpiralTool() - : ToolBase(cursor_spiral_xpm, 4, 4) + : ToolBase(cursor_spiral_xpm) , spiral(NULL) , revo(3) , exp(1) diff --git a/src/ui/tools/spray-tool.cpp b/src/ui/tools/spray-tool.cpp index ad006627c..f3e7e6d3c 100644 --- a/src/ui/tools/spray-tool.cpp +++ b/src/ui/tools/spray-tool.cpp @@ -137,7 +137,7 @@ static void sp_spray_scale_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *it } SprayTool::SprayTool() - : ToolBase(cursor_spray_xpm, 4, 4, false) + : ToolBase(cursor_spray_xpm, false) , pressure(TC_DEFAULT_PRESSURE) , dragging(false) , usepressurewidth(false) diff --git a/src/ui/tools/star-tool.cpp b/src/ui/tools/star-tool.cpp index ddee08189..18992d87a 100644 --- a/src/ui/tools/star-tool.cpp +++ b/src/ui/tools/star-tool.cpp @@ -57,7 +57,7 @@ const std::string& StarTool::getPrefsPath() { const std::string StarTool::prefsPath = "/tools/shapes/star"; StarTool::StarTool() - : ToolBase(cursor_star_xpm, 4, 4) + : ToolBase(cursor_star_xpm) , star(NULL) , magnitude(5) , proportion(0.5) diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 649bbb045..9091b455e 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -76,7 +76,7 @@ const std::string TextTool::prefsPath = "/tools/text"; TextTool::TextTool() - : ToolBase(cursor_text_xpm, 7, 7) + : ToolBase(cursor_text_xpm) , imc(NULL) , text(NULL) , pdoc(0, 0) @@ -359,8 +359,6 @@ bool TextTool::item_handler(SPItem* item, GdkEvent* event) { sp_canvas_item_show(this->indicator); this->cursor_shape = cursor_text_insert_xpm; - this->hot_x = 7; - this->hot_y = 10; this->sp_event_context_update_cursor(); sp_text_context_update_text_selection(this); @@ -548,8 +546,6 @@ bool TextTool::root_handler(GdkEvent* event) { this->over_text = 0; // update cursor and statusbar: we are not over a text object now this->cursor_shape = cursor_text_xpm; - this->hot_x = 7; - this->hot_y = 7; this->sp_event_context_update_cursor(); desktop->event_context->defaultMessageContext()->clear(); } diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp index 9231db7c8..0467b984e 100644 --- a/src/ui/tools/tool-base.cpp +++ b/src/ui/tools/tool-base.cpp @@ -86,7 +86,7 @@ SPDesktop const& ToolBase::getDesktop() const { return *desktop; } -ToolBase::ToolBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y, bool uses_snap) +ToolBase::ToolBase(gchar const *const *cursor_shape, bool uses_snap) : pref_observer(NULL) , cursor(NULL) , xp(0) @@ -104,8 +104,6 @@ ToolBase::ToolBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y, boo , desktop(NULL) , _uses_snap(uses_snap) , cursor_shape(cursor_shape) - , hot_x(hot_x) - , hot_y(hot_y) { } @@ -154,44 +152,24 @@ void ToolBase::sp_event_context_set_cursor(GdkCursorType cursor_type) { void ToolBase::sp_event_context_update_cursor() { GtkWidget *w = GTK_WIDGET(this->desktop->getCanvas()); if (gtk_widget_get_window (w)) { - GtkStyle *style = gtk_widget_get_style(w); - /* fixme: */ if (this->cursor_shape) { - GdkDisplay *display = gdk_display_get_default(); - if (gdk_display_supports_cursor_alpha(display) && gdk_display_supports_cursor_color(display)) { - bool fillHasColor=false, strokeHasColor=false; - guint32 fillColor = sp_desktop_get_color_tool(this->desktop, this->getPrefsPath(), true, &fillHasColor); - guint32 strokeColor = sp_desktop_get_color_tool(this->desktop, this->getPrefsPath(), false, &strokeHasColor); - double fillOpacity = fillHasColor ? sp_desktop_get_opacity_tool(this->desktop, this->getPrefsPath(), true) : 0; - double strokeOpacity = strokeHasColor ? sp_desktop_get_opacity_tool(this->desktop, this->getPrefsPath(), false) : 0; - - GdkPixbuf *pixbuf = sp_cursor_pixbuf_from_xpm( - this->cursor_shape, - style->black, style->white, - SP_RGBA32_U_COMPOSE(SP_RGBA32_R_U(fillColor),SP_RGBA32_G_U(fillColor),SP_RGBA32_B_U(fillColor),SP_COLOR_F_TO_U(fillOpacity)), - SP_RGBA32_U_COMPOSE(SP_RGBA32_R_U(strokeColor),SP_RGBA32_G_U(strokeColor),SP_RGBA32_B_U(strokeColor),SP_COLOR_F_TO_U(strokeOpacity)) - ); - if (pixbuf != NULL) { - if (this->cursor) { - g_object_unref(this->cursor); - } - this->cursor = gdk_cursor_new_from_pixbuf(display, pixbuf, this->hot_x, this->hot_y); - g_object_unref(pixbuf); - } - } else { - GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)this->cursor_shape); - - if (pixbuf) { - if (this->cursor) { - g_object_unref(this->cursor); - } - this->cursor = gdk_cursor_new_from_pixbuf(display, - pixbuf, this->hot_x, this->hot_y); - g_object_unref(pixbuf); - } + if(this->cursor) { + g_object_unref(this->cursor); } + + bool fillHasColor=false, strokeHasColor=false; + guint32 fillColor = sp_desktop_get_color_tool(this->desktop, this->getPrefsPath(), true, &fillHasColor); + guint32 strokeColor = sp_desktop_get_color_tool(this->desktop, this->getPrefsPath(), false, &strokeHasColor); + double fillOpacity = fillHasColor ? sp_desktop_get_opacity_tool(this->desktop, this->getPrefsPath(), true) : 0; + double strokeOpacity = strokeHasColor ? sp_desktop_get_opacity_tool(this->desktop, this->getPrefsPath(), false) : 0; + + this->cursor = sp_cursor_from_xpm( + this->cursor_shape, &style->black, &style->white, + SP_RGBA32_C_COMPOSE(fillColor, fillOpacity), + SP_RGBA32_C_COMPOSE(strokeColor, strokeOpacity) + ); } gdk_window_set_cursor(gtk_widget_get_window (w), this->cursor); gdk_flush(); @@ -208,8 +186,7 @@ void ToolBase::sp_event_context_update_cursor() { void ToolBase::setup() { this->pref_observer = new ToolPrefObserver(this->getPrefsPath(), this); Inkscape::Preferences::get()->addObserver(*(this->pref_observer)); - - this->sp_event_context_update_cursor(); + this->sp_event_context_update_cursor(); } /** diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h index 3d22fc66f..b0140cecb 100644 --- a/src/ui/tools/tool-base.h +++ b/src/ui/tools/tool-base.h @@ -144,7 +144,7 @@ public: void enableGrDrag (bool enable=true); bool deleteSelectedDrag(bool just_one); - ToolBase(gchar const *const *cursor_shape, gint hot_x, gint hot_y, bool uses_snap = true); + ToolBase(gchar const *const *cursor_shape, bool uses_snap=true); virtual ~ToolBase(); @@ -224,9 +224,6 @@ protected: /// An xpm containing the shape of the tool's cursor. gchar const *const *cursor_shape; - /// The cursor's hot spot - gint hot_x, hot_y; - bool sp_event_context_knot_mouseover() const; private: diff --git a/src/ui/tools/tweak-tool.cpp b/src/ui/tools/tweak-tool.cpp index ff5d623c2..dcd9413fb 100644 --- a/src/ui/tools/tweak-tool.cpp +++ b/src/ui/tools/tweak-tool.cpp @@ -38,13 +38,13 @@ #include "pixmaps/cursor-tweak-rotate-counterclockwise.xpm" #include "pixmaps/cursor-tweak-more.xpm" #include "pixmaps/cursor-tweak-less.xpm" -#include "pixmaps/cursor-thin.xpm" -#include "pixmaps/cursor-thicken.xpm" -#include "pixmaps/cursor-attract.xpm" -#include "pixmaps/cursor-repel.xpm" -#include "pixmaps/cursor-push.xpm" -#include "pixmaps/cursor-roughen.xpm" -#include "pixmaps/cursor-color.xpm" +#include "pixmaps/cursor-tweak-thin.xpm" +#include "pixmaps/cursor-tweak-thicken.xpm" +#include "pixmaps/cursor-tweak-attract.xpm" +#include "pixmaps/cursor-tweak-repel.xpm" +#include "pixmaps/cursor-tweak-push.xpm" +#include "pixmaps/cursor-tweak-roughen.xpm" +#include "pixmaps/cursor-tweak-color.xpm" #include "context-fns.h" #include "inkscape.h" #include "splivarot.h" @@ -92,7 +92,7 @@ const std::string& TweakTool::getPrefsPath() { const std::string TweakTool::prefsPath = "/tools/tweak"; TweakTool::TweakTool() - : ToolBase(cursor_push_xpm, 4, 4) + : ToolBase(cursor_push_xpm) , pressure(TC_DEFAULT_PRESSURE) , dragging(false) , usepressure(false) diff --git a/src/ui/tools/zoom-tool.cpp b/src/ui/tools/zoom-tool.cpp index d40d2e969..8ba0c17b3 100644 --- a/src/ui/tools/zoom-tool.cpp +++ b/src/ui/tools/zoom-tool.cpp @@ -36,7 +36,7 @@ const std::string& ZoomTool::getPrefsPath() { const std::string ZoomTool::prefsPath = "/tools/zoom"; ZoomTool::ZoomTool() - : ToolBase(cursor_zoom_xpm, 6, 6) + : ToolBase(cursor_zoom_xpm) , grabbed(NULL) , escaped(false) { |
