mirror of https://github.com/GNOME/gimp.git
Removed the old paths and the remaining legacy stuff it needed. Fixes bug
2003-05-21 Michael Natterer <mitch@gimp.org> Removed the old paths and the remaining legacy stuff it needed. Fixes bug #104471. * Makefile.am * configure.in * pixmaps/*: removed the pixmaps/ directory. * app/ops_buttons.[ch] * app/path.[ch] * app/pathP.h * app/path_transform.h * app/gui/paths-dialog.[ch] * app/tools/gimpbezierselecttool.[ch]: removed these files. * app/Makefile.am * app/gui/Makefile.am * app/tools/Makefile.am: changed accordingly. * app/core/core-types.h: removed the Path* types. * app/core/gimpimage.[ch] * app/core/gimpimage-duplicate.c: removed gimage->paths. * app/gui/about-dialog.c: inline wilber2_xpm for now. * app/gui/dialogs-constructors.c * app/gui/dialogs-menu.c * app/gui/dialogs.c * app/gui/menus.c: removed the old paths dialog. * app/gui/gui.c: removed gui_rotate_the_shield_harmonics() hack which was broken anyway. * app/tools/gimptransformtool.c: #if 0 path_transform preview stuff. * app/tools/gimpiscissorstool.c: removed useless include. * app/tools/tools.c: removed the bezier select tool. * app/vectors/gimpvectors.c (gimp_vectors_real_stroke_add): use g_list_append(), not g_list_prepend() so some ugly side conditions of legacy path loading are honored. * app/xcf/xcf-load.c * app/xcf/xcf-save.c: load and save only GimpVectors.
This commit is contained in:
parent
bf4d38d70e
commit
487f71ba05
48
ChangeLog
48
ChangeLog
|
@ -1,3 +1,51 @@
|
||||||
|
2003-05-21 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
Removed the old paths and the remaining legacy stuff it needed.
|
||||||
|
Fixes bug #104471.
|
||||||
|
|
||||||
|
* Makefile.am
|
||||||
|
* configure.in
|
||||||
|
* pixmaps/*: removed the pixmaps/ directory.
|
||||||
|
|
||||||
|
* app/ops_buttons.[ch]
|
||||||
|
* app/path.[ch]
|
||||||
|
* app/pathP.h
|
||||||
|
* app/path_transform.h
|
||||||
|
* app/gui/paths-dialog.[ch]
|
||||||
|
* app/tools/gimpbezierselecttool.[ch]: removed these files.
|
||||||
|
|
||||||
|
* app/Makefile.am
|
||||||
|
* app/gui/Makefile.am
|
||||||
|
* app/tools/Makefile.am: changed accordingly.
|
||||||
|
|
||||||
|
* app/core/core-types.h: removed the Path* types.
|
||||||
|
|
||||||
|
* app/core/gimpimage.[ch]
|
||||||
|
* app/core/gimpimage-duplicate.c: removed gimage->paths.
|
||||||
|
|
||||||
|
* app/gui/about-dialog.c: inline wilber2_xpm for now.
|
||||||
|
|
||||||
|
* app/gui/dialogs-constructors.c
|
||||||
|
* app/gui/dialogs-menu.c
|
||||||
|
* app/gui/dialogs.c
|
||||||
|
* app/gui/menus.c: removed the old paths dialog.
|
||||||
|
|
||||||
|
* app/gui/gui.c: removed gui_rotate_the_shield_harmonics() hack
|
||||||
|
which was broken anyway.
|
||||||
|
|
||||||
|
* app/tools/gimptransformtool.c: #if 0 path_transform preview stuff.
|
||||||
|
|
||||||
|
* app/tools/gimpiscissorstool.c: removed useless include.
|
||||||
|
|
||||||
|
* app/tools/tools.c: removed the bezier select tool.
|
||||||
|
|
||||||
|
* app/vectors/gimpvectors.c (gimp_vectors_real_stroke_add): use
|
||||||
|
g_list_append(), not g_list_prepend() so some ugly side conditions
|
||||||
|
of legacy path loading are honored.
|
||||||
|
|
||||||
|
* app/xcf/xcf-load.c
|
||||||
|
* app/xcf/xcf-save.c: load and save only GimpVectors.
|
||||||
|
|
||||||
2003-05-21 Michael Natterer <mitch@gimp.org>
|
2003-05-21 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
* app/core/gimpdrawable.[ch]: added GimpDrawable::alpha_changed()
|
* app/core/gimpdrawable.[ch]: added GimpDrawable::alpha_changed()
|
||||||
|
|
|
@ -4,7 +4,6 @@ SUBDIRS = \
|
||||||
m4macros \
|
m4macros \
|
||||||
tools \
|
tools \
|
||||||
regexrepl \
|
regexrepl \
|
||||||
pixmaps \
|
|
||||||
cursors \
|
cursors \
|
||||||
themes \
|
themes \
|
||||||
po \
|
po \
|
||||||
|
|
|
@ -35,21 +35,7 @@ scriptdata =
|
||||||
|
|
||||||
bin_PROGRAMS = gimp-1.3
|
bin_PROGRAMS = gimp-1.3
|
||||||
|
|
||||||
##
|
gimp_1_3_SOURCES = \
|
||||||
## stuff which is about to be replaced by new subsystems
|
|
||||||
##
|
|
||||||
bye_sources = \
|
|
||||||
ops_buttons.c \
|
|
||||||
ops_buttons.h \
|
|
||||||
path.c \
|
|
||||||
path.h \
|
|
||||||
pathP.h \
|
|
||||||
path_transform.h
|
|
||||||
|
|
||||||
##
|
|
||||||
## stuff
|
|
||||||
##
|
|
||||||
stuff_sources = \
|
|
||||||
appenv.h \
|
appenv.h \
|
||||||
app_procs.c \
|
app_procs.c \
|
||||||
app_procs.h \
|
app_procs.h \
|
||||||
|
@ -62,10 +48,6 @@ stuff_sources = \
|
||||||
libgimp_glue.c \
|
libgimp_glue.c \
|
||||||
libgimp_glue.h
|
libgimp_glue.h
|
||||||
|
|
||||||
gimp_1_3_SOURCES = \
|
|
||||||
$(bye_sources) \
|
|
||||||
$(stuff_sources)
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
makefile.msc \
|
makefile.msc \
|
||||||
gimp.rc \
|
gimp.rc \
|
||||||
|
@ -95,6 +77,7 @@ INCLUDES = \
|
||||||
|
|
||||||
gimp_1_3_LDADD = \
|
gimp_1_3_LDADD = \
|
||||||
$(gimp_exp) \
|
$(gimp_exp) \
|
||||||
|
$(top_builddir)/libgimpwidgets/libgimpwidgets-$(LT_RELEASE).la \
|
||||||
config/libappconfig.a \
|
config/libappconfig.a \
|
||||||
gui/libappgui.a \
|
gui/libappgui.a \
|
||||||
display/libappdisplay.a \
|
display/libappdisplay.a \
|
||||||
|
@ -114,7 +97,6 @@ gimp_1_3_LDADD = \
|
||||||
$(top_builddir)/libgimpmath/libgimpmath-$(LT_RELEASE).la \
|
$(top_builddir)/libgimpmath/libgimpmath-$(LT_RELEASE).la \
|
||||||
$(top_builddir)/libgimpbase/libgimpbase-$(LT_RELEASE).la \
|
$(top_builddir)/libgimpbase/libgimpbase-$(LT_RELEASE).la \
|
||||||
$(top_builddir)/libgimpmodule/libgimpmodule-$(LT_RELEASE).la \
|
$(top_builddir)/libgimpmodule/libgimpmodule-$(LT_RELEASE).la \
|
||||||
$(top_builddir)/libgimpwidgets/libgimpwidgets-$(LT_RELEASE).la \
|
|
||||||
$(GTK_LIBS) \
|
$(GTK_LIBS) \
|
||||||
$(PANGOFT2_LIBS) \
|
$(PANGOFT2_LIBS) \
|
||||||
$(LIBART_LIBS) \
|
$(LIBART_LIBS) \
|
||||||
|
|
|
@ -131,13 +131,6 @@ typedef struct _GimpPaletteEntry GimpPaletteEntry;
|
||||||
typedef struct _GimpPlugInDebug GimpPlugInDebug;
|
typedef struct _GimpPlugInDebug GimpPlugInDebug;
|
||||||
|
|
||||||
|
|
||||||
/* EEK stuff */
|
|
||||||
|
|
||||||
typedef struct _Path Path;
|
|
||||||
typedef struct _PathPoint PathPoint;
|
|
||||||
typedef struct _PathList PathList;
|
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
typedef void (* GimpInitStatusFunc) (const gchar *text1,
|
typedef void (* GimpInitStatusFunc) (const gchar *text1,
|
||||||
|
|
|
@ -42,8 +42,6 @@
|
||||||
#include "gimplist.h"
|
#include "gimplist.h"
|
||||||
#include "gimpparasitelist.h"
|
#include "gimpparasitelist.h"
|
||||||
|
|
||||||
#include "path.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,7 +59,6 @@ gimp_image_duplicate (GimpImage *gimage)
|
||||||
GimpDrawable *new_floating_sel_drawable = NULL;
|
GimpDrawable *new_floating_sel_drawable = NULL;
|
||||||
GimpDrawable *floating_sel_drawable = NULL;
|
GimpDrawable *floating_sel_drawable = NULL;
|
||||||
GimpParasiteList *parasites;
|
GimpParasiteList *parasites;
|
||||||
PathList *paths;
|
|
||||||
gint count;
|
gint count;
|
||||||
|
|
||||||
g_return_val_if_fail (gimage != NULL, NULL);
|
g_return_val_if_fail (gimage != NULL, NULL);
|
||||||
|
@ -222,26 +219,6 @@ gimp_image_duplicate (GimpImage *gimage)
|
||||||
new_gimage->parasites = gimp_parasite_list_copy (parasites);
|
new_gimage->parasites = gimp_parasite_list_copy (parasites);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy paths */
|
|
||||||
paths = gimp_image_get_paths (gimage);
|
|
||||||
if (paths)
|
|
||||||
{
|
|
||||||
GSList *plist = NULL;
|
|
||||||
GSList *new_plist = NULL;
|
|
||||||
Path *path;
|
|
||||||
PathList *new_paths;
|
|
||||||
|
|
||||||
for (plist = paths->bz_paths; plist; plist = plist->next)
|
|
||||||
{
|
|
||||||
path = plist->data;
|
|
||||||
new_plist = g_slist_append (new_plist, path_copy (new_gimage, path));
|
|
||||||
}
|
|
||||||
|
|
||||||
new_paths = path_list_new (new_gimage,
|
|
||||||
paths->last_selected_row, new_plist);
|
|
||||||
gimp_image_set_paths (new_gimage, new_paths);
|
|
||||||
}
|
|
||||||
|
|
||||||
gimp_image_undo_enable (new_gimage);
|
gimp_image_undo_enable (new_gimage);
|
||||||
|
|
||||||
return new_gimage;
|
return new_gimage;
|
||||||
|
|
|
@ -60,8 +60,6 @@
|
||||||
|
|
||||||
#include "vectors/gimpvectors.h"
|
#include "vectors/gimpvectors.h"
|
||||||
|
|
||||||
#include "path.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -474,8 +472,6 @@ gimp_image_init (GimpImage *gimage)
|
||||||
|
|
||||||
gimage->parasites = gimp_parasite_list_new ();
|
gimage->parasites = gimp_parasite_list_new ();
|
||||||
|
|
||||||
gimage->paths = NULL;
|
|
||||||
|
|
||||||
gimage->qmask_state = FALSE;
|
gimage->qmask_state = FALSE;
|
||||||
gimage->qmask_inverted = FALSE;
|
gimage->qmask_inverted = FALSE;
|
||||||
gimage->qmask_color.r = 1.0;
|
gimage->qmask_color.r = 1.0;
|
||||||
|
@ -641,8 +637,6 @@ gimp_image_get_memsize (GimpObject *object)
|
||||||
|
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->parasites));
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->parasites));
|
||||||
|
|
||||||
/* FIXME paths */
|
|
||||||
|
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->undo_stack));
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->undo_stack));
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->redo_stack));
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->redo_stack));
|
||||||
|
|
||||||
|
@ -2066,7 +2060,7 @@ gimp_image_set_tattoo_state (GimpImage *gimage,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* layers / channels / paths */
|
/* layers / channels / vectors */
|
||||||
|
|
||||||
GimpContainer *
|
GimpContainer *
|
||||||
gimp_image_get_layers (const GimpImage *gimage)
|
gimp_image_get_layers (const GimpImage *gimage)
|
||||||
|
@ -2092,23 +2086,6 @@ gimp_image_get_vectors (const GimpImage *gimage)
|
||||||
return gimage->vectors;
|
return gimage->vectors;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
gimp_image_set_paths (GimpImage *gimage,
|
|
||||||
PathList *paths)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GIMP_IS_IMAGE (gimage));
|
|
||||||
|
|
||||||
gimage->paths = paths;
|
|
||||||
}
|
|
||||||
|
|
||||||
PathList *
|
|
||||||
gimp_image_get_paths (const GimpImage *gimage)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GIMP_IS_IMAGE (gimage), NULL);
|
|
||||||
|
|
||||||
return gimage->paths;
|
|
||||||
}
|
|
||||||
|
|
||||||
GimpDrawable *
|
GimpDrawable *
|
||||||
gimp_image_active_drawable (const GimpImage *gimage)
|
gimp_image_active_drawable (const GimpImage *gimage)
|
||||||
{
|
{
|
||||||
|
|
|
@ -140,8 +140,6 @@ struct _GimpImage
|
||||||
|
|
||||||
GimpParasiteList *parasites; /* Plug-in parasite data */
|
GimpParasiteList *parasites; /* Plug-in parasite data */
|
||||||
|
|
||||||
PathList *paths; /* Paths data for this image */
|
|
||||||
|
|
||||||
gboolean visible[MAX_CHANNELS]; /* visible channels */
|
gboolean visible[MAX_CHANNELS]; /* visible channels */
|
||||||
gboolean active[MAX_CHANNELS]; /* active channels */
|
gboolean active[MAX_CHANNELS]; /* active channels */
|
||||||
|
|
||||||
|
@ -385,10 +383,6 @@ GimpContainer * gimp_image_get_layers (const GimpImage *gimage);
|
||||||
GimpContainer * gimp_image_get_channels (const GimpImage *gimage);
|
GimpContainer * gimp_image_get_channels (const GimpImage *gimage);
|
||||||
GimpContainer * gimp_image_get_vectors (const GimpImage *gimage);
|
GimpContainer * gimp_image_get_vectors (const GimpImage *gimage);
|
||||||
|
|
||||||
void gimp_image_set_paths (GimpImage *gimage,
|
|
||||||
PathList *paths);
|
|
||||||
PathList * gimp_image_get_paths (const GimpImage *gimage);
|
|
||||||
|
|
||||||
GimpDrawable * gimp_image_active_drawable (const GimpImage *gimage);
|
GimpDrawable * gimp_image_active_drawable (const GimpImage *gimage);
|
||||||
GimpLayer * gimp_image_get_active_layer (const GimpImage *gimage);
|
GimpLayer * gimp_image_get_active_layer (const GimpImage *gimage);
|
||||||
GimpChannel * gimp_image_get_active_channel (const GimpImage *gimage);
|
GimpChannel * gimp_image_get_active_channel (const GimpImage *gimage);
|
||||||
|
|
|
@ -41,13 +41,119 @@
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
#include "pixmaps/wilber2.xpm"
|
|
||||||
|
|
||||||
|
|
||||||
#define ANIMATION_STEPS 16
|
#define ANIMATION_STEPS 16
|
||||||
#define ANIMATION_SIZE 2
|
#define ANIMATION_SIZE 2
|
||||||
|
|
||||||
|
|
||||||
|
static char * wilber2_xpm[] = {
|
||||||
|
"95 95 9 1",
|
||||||
|
" c None",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #B6B6B6",
|
||||||
|
"@ c #494949",
|
||||||
|
"# c #DBDBDB",
|
||||||
|
"$ c #6D6D6D",
|
||||||
|
"% c #929292",
|
||||||
|
"& c #242424",
|
||||||
|
"* c #000000",
|
||||||
|
" .+. ",
|
||||||
|
" .+. .+@# ..+. ",
|
||||||
|
" #@+. .$@# .%&. ",
|
||||||
|
" #&+. .&@#. .+&$. ..#. ",
|
||||||
|
" .++. +*$.. .$*%. .%*%. ..%%. ",
|
||||||
|
" .$@. #@*%. .#*&. .#&@. .%*%. ",
|
||||||
|
" .$&+. .#&&+ .%*&# .#&*# #&@.. ",
|
||||||
|
" .+*&+. .#*&+ .#&*$. .#@*&# #&$. ",
|
||||||
|
" .+#. ..%&&+. .%*&# .%**+. .$**%. .+&@. ..++. ",
|
||||||
|
" .%@#. ..@*$. #@*&#. .$**+. #**@.. ..+@*@. .#$&%. ",
|
||||||
|
" .+&$.. .@*%. .@**%. .#&*@.. #&*@. .%**&+. .%*%.. ",
|
||||||
|
" #&*@+. #&*@.. .+&*&+. .%**%. .$*&#. #&*&+. .$*#. ",
|
||||||
|
" .#+.+$*&+. #&*&%.. .+&*&+..#&*&#..+**%. #&*@. ..+&*# ",
|
||||||
|
" ... .@&...@*%. .%***$#. .%**&# .@**%. #&*@. .@*@. .+@&*&. .... ",
|
||||||
|
" +%..#&$+..@*@.. ..+@**&+..#&**+ .@**$..#**&# .$*&# #&**@+. .#+@%. ",
|
||||||
|
" +&%.+*@+#.@**%#.. .#@**@. #&**+.#&**+..%**&. .$*&+ +**$#. .$*@#. ",
|
||||||
|
" #@&$@**%+#%***@%#...+**&#.+&*@##@**$..%&**$..#&**+ .+**+. .#&&#. ",
|
||||||
|
" .+@&***@##.%&***&%. #&*&#.@*&+#@**$.#@**&%..#$**&+ .%*&# ..#+$*%. ",
|
||||||
|
" ..+&**&#...#+&**&#.#&*$.%**@.#&**+.%**&+.#$&***$. .$*&# .#$&**&+. ",
|
||||||
|
" .@***%.....+&**+.%**+.%**@.#&**+.$**@..@***&%#..+&*&# .%***@%. ",
|
||||||
|
" ... .$***@......$**+.@**+.+***+.@**$.%**@.+&**$#..#%&**&#..$**%#.. ..... ",
|
||||||
|
" #$#. .$***&%.....#@*#.@**@#.$**&+#&**+#&*&#+**&#.%&*****%.#$@*@.. ..%@&+ ",
|
||||||
|
" #@@++#.. .$****&$+....#$#.%***@+#$**&+%**@.$**+#&*@.#&***&@%#%$+$*%. .%*&%. ",
|
||||||
|
" .+&*&&$. .@******&%.....++#%&**&+#@**$#***#%**$#&*&#+**&%##+@%##&*+. .#+++@&+.. ",
|
||||||
|
" .+%$**+..$********$.....#+++@**&+%**&#&**#%**@#@*&#%**$#$&*%..%*&# .+&****$. ",
|
||||||
|
" ...@*&%#%*****@$@*@#....#&$+&**$+**&+***#@**$#&*&+%**&***@..#&*$. .@***&@#. ",
|
||||||
|
" .+***&&*****&##+@@+....%&&&**@+**&@**@%***+$**&+$*****@#..#@%#..+&*@+#.. ",
|
||||||
|
" .@**********%..#@&+...#&$%&*&@**&**&@***@%&***&*****&+.........$*&#. ",
|
||||||
|
" ... ..+++%&*****@...#&@...#&@##@*********************@%&%....++###$**$. ..##.. ",
|
||||||
|
" +$+..#.. ..+*****&#...+&+..+@&$.#&@%+%$$@&&**&***&&@$+#%&#...$&*&&&**&+. .....#@&&%. ",
|
||||||
|
" #@&@@&$#. #@*****@#...%$...#@&.+$#......##++%%%%+#.+$@&%...+&*******@. .#%$++@*$%#. ",
|
||||||
|
" .#&*&**$#..#++#.#******&+..#%....+%....................#&@%+....@**&$$@&$#..#@*****$... ",
|
||||||
|
" ..#.%**&@&***&+.$*******&%%++%$@&$.............##++#..#+......+**&#........$***&&@#. ",
|
||||||
|
" ..@********@##&*************&%..........+##....+$%#.......+@**%.#++#...%&*@+##.. ",
|
||||||
|
" .#@@@%%$&**+.+&************%..........%&&@$.....$$#.....+&**&##@**&$%@**&#. ",
|
||||||
|
" .......+&*&##@***********@...........%$%+@+.....$%.#%$$@***%#@*********%. ",
|
||||||
|
" .%***&&***********+...............+@#....#$+#+##+@&%#$***@@&***$.. ... ..... ",
|
||||||
|
" .##..#+#. ..###.#&**************&#........#$#.....%#.....#@.....#$%$&*&%#.#%$+....+%#..+@@%# ",
|
||||||
|
" #@@$$&*@#..+@&&@+.%&*&&@&*********@+#......+*@$$+..........@#.....#&***%..##... ..$&*&$$&&&@+ ",
|
||||||
|
" .#@**@**&@&*****&#.####.#%*******@&*&$+....+%+++$$#.....##.%+......&**@#+@&@%...#$******&+... ",
|
||||||
|
" ..+#.%&****&&***$#.#+$&@&******&+##%@&@#........$+.....%&@%%......@&$#+&****@%$@**@%%$$#. ",
|
||||||
|
" ..%&&$+##+@**&@&***********&#....%&#..#......#.....@**&%...#+.@+#+&**********$#..... ",
|
||||||
|
" ..##.. .#&***************&#....+&#.#$........+.#%****%...$*%&@&***@%+$****@#. ",
|
||||||
|
" .....+&**&@%%$*******&#....+@#.#&&@$@$..#*&&*****#.+#$*******$#...+@@%#. ",
|
||||||
|
" .#%@$#.+%%##++%&******&#...#@+...+%+$$$%.#&******&.#&&&**&**&$##%%#.......#.. ",
|
||||||
|
" .###...+&***&#...+@&*********&+...$%.....#.......%&*****%.#@****%%%+#%&**&+. .#%&@+..#+#..",
|
||||||
|
".##.+@*&%%$******&++$&************%..+&#.....+#.......%@&**&+..#+@**@%%%@*****&+##+@***&$%&*&%#",
|
||||||
|
"#$&&*&&*****&$$@*******&&&********@..%$.......%%#......#$@++@$%$@&&*************&&***&&***&$$$#",
|
||||||
|
".#%@@##$**&$#...%****&$##+&*******&#.%$........%@%%%%%$$%#..#+++%$$@@&***&*********&+##%@$#....",
|
||||||
|
" .......+$+.. ..%&&@+#+@&*********$.+@.........#+++++#.............+&**$+$****&**@#. ..... ",
|
||||||
|
" ... ..#+#.##..$*************$#&$..........%$@$$%...........#&**@+$&****$+#.. ",
|
||||||
|
" .#$&*&%#.#$***************$@*$.......+@&@@@$+..........#@***********@# .... ",
|
||||||
|
" .#$*****@@&**&@%%***********&&*%.....$@%#...............%************&#..#%%#. ",
|
||||||
|
" ..+#.#$***&&*****&%#+@**************&#....#.................#&*************$%$&**&#... ",
|
||||||
|
" ..#@*&&&**@+##%&**&+#@*****************@+....................#@&********************&%%@. ",
|
||||||
|
" .#+%@*&****$#. ..+$%##$*******************&&$%+###............#$&@***********&&**&$+%&***&. ",
|
||||||
|
" #$&*&%#%@&$#...##....+&**@%@***************@@@&&&@@$+#......#%@**@&*********&@@$%#...+@@%%. ",
|
||||||
|
" ..#++....#....%&&@%+%&**%#+&***********&%@*@##&&@&***&@%%%%$&****&$********@$@#... ..... ",
|
||||||
|
" .%*********@#$************&@+&&@$.&*+%****************&%@&**&@$@$#. ",
|
||||||
|
" .#&**&&****&#+&***&*******&+$&*$#$%&*$$*$&***&**********&@@@@$@&*@+###++#. ",
|
||||||
|
" ....#@**$##+$&$+.@**&+%&********&&*%.#@&&@@*@$*&&***************$+#@***&&&**$.. ",
|
||||||
|
" .#%%$&**%.. .....+**&#+&***********@+..#&%+*&$&&+%****************$.+*********%.... ",
|
||||||
|
" .#@*****@#..#+%+#+&**%#&***&*********&$+.+#.@$#+++&***@***$%@@&&&**&#.%@@@%+%&*&%%%$. ",
|
||||||
|
" ..#%*&@&&@#..#@**&&&**&#%***%%&**********&@+#.####+&****%***@+####+@*&+...#....#@*****. ",
|
||||||
|
" #$&*@#.###. .$********%.@**$#@**************&@@@&****&**%$****@$%#.#**$.. .#%%+%.. ",
|
||||||
|
" #%$%#. #&**@%%$@+.#&*&#$***$%&*****************&$**@#$******@#.&**$#..... .... ",
|
||||||
|
" ..... .+**$#......%**@#&**$+&**&@&**********&**@%***%#+$@&***%.@***&@@@%#. ",
|
||||||
|
" ...#@*@#...+%%$&**$#&*&#$**&%@**&$**&$&*&%**&#@***$+..+@**$.+&*******%. ",
|
||||||
|
" .#%$&**%..#$******&+#&*@.@**$+&**%@**$%**@+***++@****@#.#&*$..#%$$$@**@.. ",
|
||||||
|
" #@****@#..%****&&&+.#**@#&**+%**@+&**+%**&#@**@+#%&***@#.&*@........%&*%##. ",
|
||||||
|
" .+*&@@$+. .@**@+###..%**@.@**#%**@#&**++**&++&**&%##$***+.&**%.. ..$**&@+. ",
|
||||||
|
" ..+@&#.... .&*&#...#+$&**$.$**++**@#@**%.&**@#+&***$.#@*&+.@***$+#.. .#%$@&@# ",
|
||||||
|
" .$*&$. .#**%..#$*****&#.$**%#@*&+%**&#+&**@##@***#.$*&#.+&*****@+. ....+@% ",
|
||||||
|
" #++#.. ..$*&+..%***&@%+.#@**$.$**$.@**$.+&**$.#&**%.@*&#..+$@&***@. .## ",
|
||||||
|
" ..+$**&# .$**@#...+@***+.%**@.+***#.%**&#.@**##@**+. ...#+&*&# ",
|
||||||
|
" .$****$. .@**+..#@****$..$**@.#&**+.#**&##@*@..@**&+.. .#**+.. ",
|
||||||
|
" #&*@$+.. .$*@. .@***$#.#%&**%.#&**+.+**$.+**%..+&**&$+.. .@*&%+. ",
|
||||||
|
" .+*$#.. .@*@. .&**%..#@**&%##@**$.#@*&#.$**$. .+@&**&$. .+@&*&#. ",
|
||||||
|
" .#@*+. .#&*@. .&*&#..%**&+..$**$#.%**$..%**&#. ..+$**&# ..#%*%. ",
|
||||||
|
" #&&%. .#@**$. .@*&. .@**$. +**&#..@**%..#&**@#.. ..$**+ ..$@. ",
|
||||||
|
" #+#.. .+&**&+. .%*&. .$**+. +**@# .$**@#..+@**&%.. .#&*+. ..#. ",
|
||||||
|
" .$*@%#. .%*&# .+**%. #&*&#..+&*&+. .#%&**%. #&*$#. ",
|
||||||
|
" .@&#.. ..$**+ .&*$. .$**+. .+&*&+. ..%**$. .%&*@+. ",
|
||||||
|
" .#@&. ..%**&# .$*&#...@*&#. .+&*&#. .#&*%. ..#%*$. ",
|
||||||
|
" .$&$. .%**@+. .%**%. .+**$. .$**%. #&*+. ..@@. ",
|
||||||
|
" #@%#. .$*@#. ..@**+. #**&. .%**+. #&*%.. .+$# ",
|
||||||
|
" ##.. .%*+. .%**$. .+**$. .%*&# .%&&%. ... ",
|
||||||
|
" .+*%. #@*$.. .@*@#. .@*$. ..#&&# ",
|
||||||
|
" #@&+. .$*+. .@*%. .%&@#. .%&# ",
|
||||||
|
" +&%. .+*%. .$*%. ..%*$. .+@# ",
|
||||||
|
" ##.. .+*$. .#&&# .#@@. .#. ",
|
||||||
|
" .$&#. .$&# .@$. ",
|
||||||
|
" .$%. .@@. .%+. ",
|
||||||
|
" .#.. .%+. .... ",
|
||||||
|
" ... "};
|
||||||
|
|
||||||
|
|
||||||
static gboolean about_dialog_load_logo (GtkWidget *window);
|
static gboolean about_dialog_load_logo (GtkWidget *window);
|
||||||
static void about_dialog_destroy (GtkObject *object,
|
static void about_dialog_destroy (GtkObject *object,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
@ -68,7 +174,7 @@ static void about_dialog_tool_drop (GtkWidget *widget,
|
||||||
static gboolean about_dialog_timer (gpointer data);
|
static gboolean about_dialog_timer (gpointer data);
|
||||||
|
|
||||||
|
|
||||||
extern gboolean double_speed;
|
static gboolean double_speed = FALSE;
|
||||||
|
|
||||||
static GtkWidget *about_dialog = NULL;
|
static GtkWidget *about_dialog = NULL;
|
||||||
static GtkWidget *logo_area = NULL;
|
static GtkWidget *logo_area = NULL;
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
#include "file-new-dialog.h"
|
#include "file-new-dialog.h"
|
||||||
#include "layers-commands.h"
|
#include "layers-commands.h"
|
||||||
#include "module-browser.h"
|
#include "module-browser.h"
|
||||||
#include "paths-dialog.h"
|
|
||||||
#include "preferences-dialog.h"
|
#include "preferences-dialog.h"
|
||||||
#include "templates-commands.h"
|
#include "templates-commands.h"
|
||||||
#include "tips-dialog.h"
|
#include "tips-dialog.h"
|
||||||
|
@ -123,8 +122,6 @@ static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_path_context_func (GimpDockable *dockable,
|
|
||||||
GimpContext *context);
|
|
||||||
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_navigation_context_func (GimpDockable *dockable,
|
static void dialogs_set_navigation_context_func (GimpDockable *dockable,
|
||||||
|
@ -141,9 +138,6 @@ static GtkWidget * dialogs_dockable_new (GtkWidget *widget,
|
||||||
static void dialogs_image_item_view_image_changed (GimpContext *context,
|
static void dialogs_image_item_view_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
GimpContainerView *view);
|
GimpContainerView *view);
|
||||||
static void dialogs_path_view_image_changed (GimpContext *context,
|
|
||||||
GimpImage *gimage,
|
|
||||||
GtkWidget *view);
|
|
||||||
static void dialogs_image_editor_image_changed (GimpContext *context,
|
static void dialogs_image_editor_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
GimpImageEditor *editor);
|
GimpImageEditor *editor);
|
||||||
|
@ -740,32 +734,6 @@ dialogs_vectors_list_view_new (GimpDialogFactory *factory,
|
||||||
return dockable;
|
return dockable;
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
|
||||||
dialogs_path_list_view_new (GimpDialogFactory *factory,
|
|
||||||
GimpContext *context,
|
|
||||||
gint preview_size)
|
|
||||||
{
|
|
||||||
static GtkWidget *view = NULL;
|
|
||||||
|
|
||||||
GtkWidget *dockable;
|
|
||||||
|
|
||||||
if (view)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
view = paths_dialog_create ();
|
|
||||||
|
|
||||||
g_object_add_weak_pointer (G_OBJECT (view), (gpointer *) &view);
|
|
||||||
|
|
||||||
dockable = dialogs_dockable_new (view,
|
|
||||||
"Old Path List", "Old Paths", NULL,
|
|
||||||
NULL, NULL,
|
|
||||||
dialogs_set_path_context_func);
|
|
||||||
|
|
||||||
gimp_dockable_set_context (GIMP_DOCKABLE (dockable), context);
|
|
||||||
|
|
||||||
return dockable;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
||||||
GimpContext *context,
|
GimpContext *context,
|
||||||
|
@ -1312,41 +1280,6 @@ dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
dialogs_set_path_context_func (GimpDockable *dockable,
|
|
||||||
GimpContext *context)
|
|
||||||
{
|
|
||||||
GtkWidget *view;
|
|
||||||
|
|
||||||
view = (GtkWidget *) g_object_get_data (G_OBJECT (dockable),
|
|
||||||
"gimp-dialogs-view");
|
|
||||||
|
|
||||||
if (! view)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (dockable->context)
|
|
||||||
{
|
|
||||||
g_signal_handlers_disconnect_by_func (dockable->context,
|
|
||||||
dialogs_path_view_image_changed,
|
|
||||||
view);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context)
|
|
||||||
{
|
|
||||||
g_signal_connect (context, "image_changed",
|
|
||||||
G_CALLBACK (dialogs_path_view_image_changed),
|
|
||||||
view);
|
|
||||||
|
|
||||||
dialogs_path_view_image_changed (context,
|
|
||||||
gimp_context_get_image (context),
|
|
||||||
view);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dialogs_path_view_image_changed (NULL, NULL, view);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context)
|
GimpContext *context)
|
||||||
|
@ -1450,14 +1383,6 @@ dialogs_image_item_view_image_changed (GimpContext *context,
|
||||||
gimp_item_tree_view_set_image (GIMP_ITEM_TREE_VIEW (view), gimage);
|
gimp_item_tree_view_set_image (GIMP_ITEM_TREE_VIEW (view), gimage);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
dialogs_path_view_image_changed (GimpContext *context,
|
|
||||||
GimpImage *gimage,
|
|
||||||
GtkWidget *widget)
|
|
||||||
{
|
|
||||||
paths_dialog_update (gimage);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dialogs_image_editor_image_changed (GimpContext *context,
|
dialogs_image_editor_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
|
|
|
@ -165,8 +165,6 @@ static const GimpDialogFactoryEntry dock_entries[] =
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-path-list", dialogs_path_list_view_new,
|
|
||||||
0, TRUE, FALSE, FALSE, TRUE },
|
|
||||||
{ "gimp-indexed-palette", dialogs_indexed_palette_new,
|
{ "gimp-indexed-palette", dialogs_indexed_palette_new,
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-selection-editor", dialogs_selection_editor_new,
|
{ "gimp-selection-editor", dialogs_selection_editor_new,
|
||||||
|
|
|
@ -43,8 +43,6 @@ dialogs_sources = \
|
||||||
palette-import-dialog.h \
|
palette-import-dialog.h \
|
||||||
palette-select.c \
|
palette-select.c \
|
||||||
palette-select.h \
|
palette-select.h \
|
||||||
paths-dialog.c \
|
|
||||||
paths-dialog.h \
|
|
||||||
pattern-select.c \
|
pattern-select.c \
|
||||||
pattern-select.h \
|
pattern-select.h \
|
||||||
preferences-dialog.c \
|
preferences-dialog.c \
|
||||||
|
|
|
@ -41,13 +41,119 @@
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
#include "pixmaps/wilber2.xpm"
|
|
||||||
|
|
||||||
|
|
||||||
#define ANIMATION_STEPS 16
|
#define ANIMATION_STEPS 16
|
||||||
#define ANIMATION_SIZE 2
|
#define ANIMATION_SIZE 2
|
||||||
|
|
||||||
|
|
||||||
|
static char * wilber2_xpm[] = {
|
||||||
|
"95 95 9 1",
|
||||||
|
" c None",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #B6B6B6",
|
||||||
|
"@ c #494949",
|
||||||
|
"# c #DBDBDB",
|
||||||
|
"$ c #6D6D6D",
|
||||||
|
"% c #929292",
|
||||||
|
"& c #242424",
|
||||||
|
"* c #000000",
|
||||||
|
" .+. ",
|
||||||
|
" .+. .+@# ..+. ",
|
||||||
|
" #@+. .$@# .%&. ",
|
||||||
|
" #&+. .&@#. .+&$. ..#. ",
|
||||||
|
" .++. +*$.. .$*%. .%*%. ..%%. ",
|
||||||
|
" .$@. #@*%. .#*&. .#&@. .%*%. ",
|
||||||
|
" .$&+. .#&&+ .%*&# .#&*# #&@.. ",
|
||||||
|
" .+*&+. .#*&+ .#&*$. .#@*&# #&$. ",
|
||||||
|
" .+#. ..%&&+. .%*&# .%**+. .$**%. .+&@. ..++. ",
|
||||||
|
" .%@#. ..@*$. #@*&#. .$**+. #**@.. ..+@*@. .#$&%. ",
|
||||||
|
" .+&$.. .@*%. .@**%. .#&*@.. #&*@. .%**&+. .%*%.. ",
|
||||||
|
" #&*@+. #&*@.. .+&*&+. .%**%. .$*&#. #&*&+. .$*#. ",
|
||||||
|
" .#+.+$*&+. #&*&%.. .+&*&+..#&*&#..+**%. #&*@. ..+&*# ",
|
||||||
|
" ... .@&...@*%. .%***$#. .%**&# .@**%. #&*@. .@*@. .+@&*&. .... ",
|
||||||
|
" +%..#&$+..@*@.. ..+@**&+..#&**+ .@**$..#**&# .$*&# #&**@+. .#+@%. ",
|
||||||
|
" +&%.+*@+#.@**%#.. .#@**@. #&**+.#&**+..%**&. .$*&+ +**$#. .$*@#. ",
|
||||||
|
" #@&$@**%+#%***@%#...+**&#.+&*@##@**$..%&**$..#&**+ .+**+. .#&&#. ",
|
||||||
|
" .+@&***@##.%&***&%. #&*&#.@*&+#@**$.#@**&%..#$**&+ .%*&# ..#+$*%. ",
|
||||||
|
" ..+&**&#...#+&**&#.#&*$.%**@.#&**+.%**&+.#$&***$. .$*&# .#$&**&+. ",
|
||||||
|
" .@***%.....+&**+.%**+.%**@.#&**+.$**@..@***&%#..+&*&# .%***@%. ",
|
||||||
|
" ... .$***@......$**+.@**+.+***+.@**$.%**@.+&**$#..#%&**&#..$**%#.. ..... ",
|
||||||
|
" #$#. .$***&%.....#@*#.@**@#.$**&+#&**+#&*&#+**&#.%&*****%.#$@*@.. ..%@&+ ",
|
||||||
|
" #@@++#.. .$****&$+....#$#.%***@+#$**&+%**@.$**+#&*@.#&***&@%#%$+$*%. .%*&%. ",
|
||||||
|
" .+&*&&$. .@******&%.....++#%&**&+#@**$#***#%**$#&*&#+**&%##+@%##&*+. .#+++@&+.. ",
|
||||||
|
" .+%$**+..$********$.....#+++@**&+%**&#&**#%**@#@*&#%**$#$&*%..%*&# .+&****$. ",
|
||||||
|
" ...@*&%#%*****@$@*@#....#&$+&**$+**&+***#@**$#&*&+%**&***@..#&*$. .@***&@#. ",
|
||||||
|
" .+***&&*****&##+@@+....%&&&**@+**&@**@%***+$**&+$*****@#..#@%#..+&*@+#.. ",
|
||||||
|
" .@**********%..#@&+...#&$%&*&@**&**&@***@%&***&*****&+.........$*&#. ",
|
||||||
|
" ... ..+++%&*****@...#&@...#&@##@*********************@%&%....++###$**$. ..##.. ",
|
||||||
|
" +$+..#.. ..+*****&#...+&+..+@&$.#&@%+%$$@&&**&***&&@$+#%&#...$&*&&&**&+. .....#@&&%. ",
|
||||||
|
" #@&@@&$#. #@*****@#...%$...#@&.+$#......##++%%%%+#.+$@&%...+&*******@. .#%$++@*$%#. ",
|
||||||
|
" .#&*&**$#..#++#.#******&+..#%....+%....................#&@%+....@**&$$@&$#..#@*****$... ",
|
||||||
|
" ..#.%**&@&***&+.$*******&%%++%$@&$.............##++#..#+......+**&#........$***&&@#. ",
|
||||||
|
" ..@********@##&*************&%..........+##....+$%#.......+@**%.#++#...%&*@+##.. ",
|
||||||
|
" .#@@@%%$&**+.+&************%..........%&&@$.....$$#.....+&**&##@**&$%@**&#. ",
|
||||||
|
" .......+&*&##@***********@...........%$%+@+.....$%.#%$$@***%#@*********%. ",
|
||||||
|
" .%***&&***********+...............+@#....#$+#+##+@&%#$***@@&***$.. ... ..... ",
|
||||||
|
" .##..#+#. ..###.#&**************&#........#$#.....%#.....#@.....#$%$&*&%#.#%$+....+%#..+@@%# ",
|
||||||
|
" #@@$$&*@#..+@&&@+.%&*&&@&*********@+#......+*@$$+..........@#.....#&***%..##... ..$&*&$$&&&@+ ",
|
||||||
|
" .#@**@**&@&*****&#.####.#%*******@&*&$+....+%+++$$#.....##.%+......&**@#+@&@%...#$******&+... ",
|
||||||
|
" ..+#.%&****&&***$#.#+$&@&******&+##%@&@#........$+.....%&@%%......@&$#+&****@%$@**@%%$$#. ",
|
||||||
|
" ..%&&$+##+@**&@&***********&#....%&#..#......#.....@**&%...#+.@+#+&**********$#..... ",
|
||||||
|
" ..##.. .#&***************&#....+&#.#$........+.#%****%...$*%&@&***@%+$****@#. ",
|
||||||
|
" .....+&**&@%%$*******&#....+@#.#&&@$@$..#*&&*****#.+#$*******$#...+@@%#. ",
|
||||||
|
" .#%@$#.+%%##++%&******&#...#@+...+%+$$$%.#&******&.#&&&**&**&$##%%#.......#.. ",
|
||||||
|
" .###...+&***&#...+@&*********&+...$%.....#.......%&*****%.#@****%%%+#%&**&+. .#%&@+..#+#..",
|
||||||
|
".##.+@*&%%$******&++$&************%..+&#.....+#.......%@&**&+..#+@**@%%%@*****&+##+@***&$%&*&%#",
|
||||||
|
"#$&&*&&*****&$$@*******&&&********@..%$.......%%#......#$@++@$%$@&&*************&&***&&***&$$$#",
|
||||||
|
".#%@@##$**&$#...%****&$##+&*******&#.%$........%@%%%%%$$%#..#+++%$$@@&***&*********&+##%@$#....",
|
||||||
|
" .......+$+.. ..%&&@+#+@&*********$.+@.........#+++++#.............+&**$+$****&**@#. ..... ",
|
||||||
|
" ... ..#+#.##..$*************$#&$..........%$@$$%...........#&**@+$&****$+#.. ",
|
||||||
|
" .#$&*&%#.#$***************$@*$.......+@&@@@$+..........#@***********@# .... ",
|
||||||
|
" .#$*****@@&**&@%%***********&&*%.....$@%#...............%************&#..#%%#. ",
|
||||||
|
" ..+#.#$***&&*****&%#+@**************&#....#.................#&*************$%$&**&#... ",
|
||||||
|
" ..#@*&&&**@+##%&**&+#@*****************@+....................#@&********************&%%@. ",
|
||||||
|
" .#+%@*&****$#. ..+$%##$*******************&&$%+###............#$&@***********&&**&$+%&***&. ",
|
||||||
|
" #$&*&%#%@&$#...##....+&**@%@***************@@@&&&@@$+#......#%@**@&*********&@@$%#...+@@%%. ",
|
||||||
|
" ..#++....#....%&&@%+%&**%#+&***********&%@*@##&&@&***&@%%%%$&****&$********@$@#... ..... ",
|
||||||
|
" .%*********@#$************&@+&&@$.&*+%****************&%@&**&@$@$#. ",
|
||||||
|
" .#&**&&****&#+&***&*******&+$&*$#$%&*$$*$&***&**********&@@@@$@&*@+###++#. ",
|
||||||
|
" ....#@**$##+$&$+.@**&+%&********&&*%.#@&&@@*@$*&&***************$+#@***&&&**$.. ",
|
||||||
|
" .#%%$&**%.. .....+**&#+&***********@+..#&%+*&$&&+%****************$.+*********%.... ",
|
||||||
|
" .#@*****@#..#+%+#+&**%#&***&*********&$+.+#.@$#+++&***@***$%@@&&&**&#.%@@@%+%&*&%%%$. ",
|
||||||
|
" ..#%*&@&&@#..#@**&&&**&#%***%%&**********&@+#.####+&****%***@+####+@*&+...#....#@*****. ",
|
||||||
|
" #$&*@#.###. .$********%.@**$#@**************&@@@&****&**%$****@$%#.#**$.. .#%%+%.. ",
|
||||||
|
" #%$%#. #&**@%%$@+.#&*&#$***$%&*****************&$**@#$******@#.&**$#..... .... ",
|
||||||
|
" ..... .+**$#......%**@#&**$+&**&@&**********&**@%***%#+$@&***%.@***&@@@%#. ",
|
||||||
|
" ...#@*@#...+%%$&**$#&*&#$**&%@**&$**&$&*&%**&#@***$+..+@**$.+&*******%. ",
|
||||||
|
" .#%$&**%..#$******&+#&*@.@**$+&**%@**$%**@+***++@****@#.#&*$..#%$$$@**@.. ",
|
||||||
|
" #@****@#..%****&&&+.#**@#&**+%**@+&**+%**&#@**@+#%&***@#.&*@........%&*%##. ",
|
||||||
|
" .+*&@@$+. .@**@+###..%**@.@**#%**@#&**++**&++&**&%##$***+.&**%.. ..$**&@+. ",
|
||||||
|
" ..+@&#.... .&*&#...#+$&**$.$**++**@#@**%.&**@#+&***$.#@*&+.@***$+#.. .#%$@&@# ",
|
||||||
|
" .$*&$. .#**%..#$*****&#.$**%#@*&+%**&#+&**@##@***#.$*&#.+&*****@+. ....+@% ",
|
||||||
|
" #++#.. ..$*&+..%***&@%+.#@**$.$**$.@**$.+&**$.#&**%.@*&#..+$@&***@. .## ",
|
||||||
|
" ..+$**&# .$**@#...+@***+.%**@.+***#.%**&#.@**##@**+. ...#+&*&# ",
|
||||||
|
" .$****$. .@**+..#@****$..$**@.#&**+.#**&##@*@..@**&+.. .#**+.. ",
|
||||||
|
" #&*@$+.. .$*@. .@***$#.#%&**%.#&**+.+**$.+**%..+&**&$+.. .@*&%+. ",
|
||||||
|
" .+*$#.. .@*@. .&**%..#@**&%##@**$.#@*&#.$**$. .+@&**&$. .+@&*&#. ",
|
||||||
|
" .#@*+. .#&*@. .&*&#..%**&+..$**$#.%**$..%**&#. ..+$**&# ..#%*%. ",
|
||||||
|
" #&&%. .#@**$. .@*&. .@**$. +**&#..@**%..#&**@#.. ..$**+ ..$@. ",
|
||||||
|
" #+#.. .+&**&+. .%*&. .$**+. +**@# .$**@#..+@**&%.. .#&*+. ..#. ",
|
||||||
|
" .$*@%#. .%*&# .+**%. #&*&#..+&*&+. .#%&**%. #&*$#. ",
|
||||||
|
" .@&#.. ..$**+ .&*$. .$**+. .+&*&+. ..%**$. .%&*@+. ",
|
||||||
|
" .#@&. ..%**&# .$*&#...@*&#. .+&*&#. .#&*%. ..#%*$. ",
|
||||||
|
" .$&$. .%**@+. .%**%. .+**$. .$**%. #&*+. ..@@. ",
|
||||||
|
" #@%#. .$*@#. ..@**+. #**&. .%**+. #&*%.. .+$# ",
|
||||||
|
" ##.. .%*+. .%**$. .+**$. .%*&# .%&&%. ... ",
|
||||||
|
" .+*%. #@*$.. .@*@#. .@*$. ..#&&# ",
|
||||||
|
" #@&+. .$*+. .@*%. .%&@#. .%&# ",
|
||||||
|
" +&%. .+*%. .$*%. ..%*$. .+@# ",
|
||||||
|
" ##.. .+*$. .#&&# .#@@. .#. ",
|
||||||
|
" .$&#. .$&# .@$. ",
|
||||||
|
" .$%. .@@. .%+. ",
|
||||||
|
" .#.. .%+. .... ",
|
||||||
|
" ... "};
|
||||||
|
|
||||||
|
|
||||||
static gboolean about_dialog_load_logo (GtkWidget *window);
|
static gboolean about_dialog_load_logo (GtkWidget *window);
|
||||||
static void about_dialog_destroy (GtkObject *object,
|
static void about_dialog_destroy (GtkObject *object,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
@ -68,7 +174,7 @@ static void about_dialog_tool_drop (GtkWidget *widget,
|
||||||
static gboolean about_dialog_timer (gpointer data);
|
static gboolean about_dialog_timer (gpointer data);
|
||||||
|
|
||||||
|
|
||||||
extern gboolean double_speed;
|
static gboolean double_speed = FALSE;
|
||||||
|
|
||||||
static GtkWidget *about_dialog = NULL;
|
static GtkWidget *about_dialog = NULL;
|
||||||
static GtkWidget *logo_area = NULL;
|
static GtkWidget *logo_area = NULL;
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
#include "file-new-dialog.h"
|
#include "file-new-dialog.h"
|
||||||
#include "layers-commands.h"
|
#include "layers-commands.h"
|
||||||
#include "module-browser.h"
|
#include "module-browser.h"
|
||||||
#include "paths-dialog.h"
|
|
||||||
#include "preferences-dialog.h"
|
#include "preferences-dialog.h"
|
||||||
#include "templates-commands.h"
|
#include "templates-commands.h"
|
||||||
#include "tips-dialog.h"
|
#include "tips-dialog.h"
|
||||||
|
@ -123,8 +122,6 @@ static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_path_context_func (GimpDockable *dockable,
|
|
||||||
GimpContext *context);
|
|
||||||
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void dialogs_set_navigation_context_func (GimpDockable *dockable,
|
static void dialogs_set_navigation_context_func (GimpDockable *dockable,
|
||||||
|
@ -141,9 +138,6 @@ static GtkWidget * dialogs_dockable_new (GtkWidget *widget,
|
||||||
static void dialogs_image_item_view_image_changed (GimpContext *context,
|
static void dialogs_image_item_view_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
GimpContainerView *view);
|
GimpContainerView *view);
|
||||||
static void dialogs_path_view_image_changed (GimpContext *context,
|
|
||||||
GimpImage *gimage,
|
|
||||||
GtkWidget *view);
|
|
||||||
static void dialogs_image_editor_image_changed (GimpContext *context,
|
static void dialogs_image_editor_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
GimpImageEditor *editor);
|
GimpImageEditor *editor);
|
||||||
|
@ -740,32 +734,6 @@ dialogs_vectors_list_view_new (GimpDialogFactory *factory,
|
||||||
return dockable;
|
return dockable;
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
|
||||||
dialogs_path_list_view_new (GimpDialogFactory *factory,
|
|
||||||
GimpContext *context,
|
|
||||||
gint preview_size)
|
|
||||||
{
|
|
||||||
static GtkWidget *view = NULL;
|
|
||||||
|
|
||||||
GtkWidget *dockable;
|
|
||||||
|
|
||||||
if (view)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
view = paths_dialog_create ();
|
|
||||||
|
|
||||||
g_object_add_weak_pointer (G_OBJECT (view), (gpointer *) &view);
|
|
||||||
|
|
||||||
dockable = dialogs_dockable_new (view,
|
|
||||||
"Old Path List", "Old Paths", NULL,
|
|
||||||
NULL, NULL,
|
|
||||||
dialogs_set_path_context_func);
|
|
||||||
|
|
||||||
gimp_dockable_set_context (GIMP_DOCKABLE (dockable), context);
|
|
||||||
|
|
||||||
return dockable;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
||||||
GimpContext *context,
|
GimpContext *context,
|
||||||
|
@ -1312,41 +1280,6 @@ dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
dialogs_set_path_context_func (GimpDockable *dockable,
|
|
||||||
GimpContext *context)
|
|
||||||
{
|
|
||||||
GtkWidget *view;
|
|
||||||
|
|
||||||
view = (GtkWidget *) g_object_get_data (G_OBJECT (dockable),
|
|
||||||
"gimp-dialogs-view");
|
|
||||||
|
|
||||||
if (! view)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (dockable->context)
|
|
||||||
{
|
|
||||||
g_signal_handlers_disconnect_by_func (dockable->context,
|
|
||||||
dialogs_path_view_image_changed,
|
|
||||||
view);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context)
|
|
||||||
{
|
|
||||||
g_signal_connect (context, "image_changed",
|
|
||||||
G_CALLBACK (dialogs_path_view_image_changed),
|
|
||||||
view);
|
|
||||||
|
|
||||||
dialogs_path_view_image_changed (context,
|
|
||||||
gimp_context_get_image (context),
|
|
||||||
view);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dialogs_path_view_image_changed (NULL, NULL, view);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||||
GimpContext *context)
|
GimpContext *context)
|
||||||
|
@ -1450,14 +1383,6 @@ dialogs_image_item_view_image_changed (GimpContext *context,
|
||||||
gimp_item_tree_view_set_image (GIMP_ITEM_TREE_VIEW (view), gimage);
|
gimp_item_tree_view_set_image (GIMP_ITEM_TREE_VIEW (view), gimage);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
dialogs_path_view_image_changed (GimpContext *context,
|
|
||||||
GimpImage *gimage,
|
|
||||||
GtkWidget *widget)
|
|
||||||
{
|
|
||||||
paths_dialog_update (gimage);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dialogs_image_editor_image_changed (GimpContext *context,
|
dialogs_image_editor_image_changed (GimpContext *context,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
|
|
|
@ -104,7 +104,6 @@ GimpItemFactoryEntry dialogs_menu_entries[] =
|
||||||
MENU_SEPARATOR ("/Add Tab/---"),
|
MENU_SEPARATOR ("/Add Tab/---"),
|
||||||
|
|
||||||
ADD_TAB (N_("/Add Tab/Tools..."), "gimp-tool-list", NULL, NULL),
|
ADD_TAB (N_("/Add Tab/Tools..."), "gimp-tool-list", NULL, NULL),
|
||||||
ADD_TAB (N_("/Add Tab/Old Paths..."), "gimp-path-list", NULL, NULL),
|
|
||||||
|
|
||||||
{ { N_("/Remove Tab"), NULL,
|
{ { N_("/Remove Tab"), NULL,
|
||||||
dialogs_remove_tab_cmd_callback, 0,
|
dialogs_remove_tab_cmd_callback, 0,
|
||||||
|
|
|
@ -165,8 +165,6 @@ static const GimpDialogFactoryEntry dock_entries[] =
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-path-list", dialogs_path_list_view_new,
|
|
||||||
0, TRUE, FALSE, FALSE, TRUE },
|
|
||||||
{ "gimp-indexed-palette", dialogs_indexed_palette_new,
|
{ "gimp-indexed-palette", dialogs_indexed_palette_new,
|
||||||
0, FALSE, FALSE, FALSE, TRUE },
|
0, FALSE, FALSE, FALSE, TRUE },
|
||||||
{ "gimp-selection-editor", dialogs_selection_editor_new,
|
{ "gimp-selection-editor", dialogs_selection_editor_new,
|
||||||
|
|
119
app/gui/gui.c
119
app/gui/gui.c
|
@ -58,40 +58,34 @@
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
#include "pixmaps/wilber2.xpm"
|
|
||||||
|
|
||||||
|
|
||||||
/* local function prototypes */
|
/* local function prototypes */
|
||||||
|
|
||||||
static void gui_threads_enter (Gimp *gimp);
|
static void gui_threads_enter (Gimp *gimp);
|
||||||
static void gui_threads_leave (Gimp *gimp);
|
static void gui_threads_leave (Gimp *gimp);
|
||||||
static void gui_set_busy (Gimp *gimp);
|
static void gui_set_busy (Gimp *gimp);
|
||||||
static void gui_unset_busy (Gimp *gimp);
|
static void gui_unset_busy (Gimp *gimp);
|
||||||
static void gui_message (Gimp *gimp,
|
static void gui_message (Gimp *gimp,
|
||||||
const gchar *message);
|
const gchar *message);
|
||||||
static GimpObject * gui_display_new (GimpImage *gimage,
|
static GimpObject * gui_display_new (GimpImage *gimage,
|
||||||
guint scale);
|
guint scale);
|
||||||
|
|
||||||
static void gui_themes_dir_foreach_func (GimpDatafileData *file_data);
|
static void gui_themes_dir_foreach_func (GimpDatafileData *file_data);
|
||||||
static gint gui_rotate_the_shield_harmonics (GtkWidget *widget,
|
static gboolean gui_exit_callback (Gimp *gimp,
|
||||||
GdkEvent *eevent,
|
gboolean kill_it);
|
||||||
gpointer data);
|
static gboolean gui_exit_finish_callback (Gimp *gimp,
|
||||||
|
gboolean kill_it);
|
||||||
static gboolean gui_exit_callback (Gimp *gimp,
|
static void gui_really_quit_callback (GtkWidget *button,
|
||||||
gboolean kill_it);
|
gboolean quit,
|
||||||
static gboolean gui_exit_finish_callback (Gimp *gimp,
|
gpointer data);
|
||||||
gboolean kill_it);
|
static void gui_show_tooltips_notify (GObject *config,
|
||||||
static void gui_really_quit_callback (GtkWidget *button,
|
GParamSpec *param_spec,
|
||||||
gboolean quit,
|
Gimp *gimp);
|
||||||
gpointer data);
|
static void gui_display_changed (GimpContext *context,
|
||||||
static void gui_show_tooltips_notify (GObject *config,
|
GimpDisplay *display,
|
||||||
GParamSpec *param_spec,
|
Gimp *gimp);
|
||||||
Gimp *gimp);
|
static void gui_image_disconnect (GimpImage *gimage,
|
||||||
static void gui_display_changed (GimpContext *context,
|
Gimp *gimp);
|
||||||
GimpDisplay *display,
|
|
||||||
Gimp *gimp);
|
|
||||||
static void gui_image_disconnect (GimpImage *gimage,
|
|
||||||
Gimp *gimp);
|
|
||||||
|
|
||||||
|
|
||||||
/* private variables */
|
/* private variables */
|
||||||
|
@ -102,7 +96,6 @@ static GHashTable *themes_hash = NULL;
|
||||||
|
|
||||||
static GimpItemFactory *toolbox_item_factory = NULL;
|
static GimpItemFactory *toolbox_item_factory = NULL;
|
||||||
static GimpItemFactory *image_item_factory = NULL;
|
static GimpItemFactory *image_item_factory = NULL;
|
||||||
static GimpItemFactory *paths_item_factory = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
/* public functions */
|
/* public functions */
|
||||||
|
@ -304,12 +297,6 @@ gui_restore (Gimp *gimp,
|
||||||
gimp,
|
gimp,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
paths_item_factory = gimp_menu_factory_menu_new (global_menu_factory,
|
|
||||||
"<Paths>",
|
|
||||||
GTK_TYPE_MENU,
|
|
||||||
gimp,
|
|
||||||
FALSE);
|
|
||||||
|
|
||||||
gimp_devices_restore (gimp);
|
gimp_devices_restore (gimp);
|
||||||
|
|
||||||
if (GIMP_GUI_CONFIG (gimp->config)->restore_session || restore_session)
|
if (GIMP_GUI_CONFIG (gimp->config)->restore_session || restore_session)
|
||||||
|
@ -438,8 +425,6 @@ gui_message (Gimp *gimp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean double_speed = FALSE;
|
|
||||||
|
|
||||||
static GimpObject *
|
static GimpObject *
|
||||||
gui_display_new (GimpImage *gimage,
|
gui_display_new (GimpImage *gimage,
|
||||||
guint scale)
|
guint scale)
|
||||||
|
@ -457,11 +442,6 @@ gui_display_new (GimpImage *gimage,
|
||||||
|
|
||||||
gimp_item_factory_update (shell->menubar_factory, shell);
|
gimp_item_factory_update (shell->menubar_factory, shell);
|
||||||
|
|
||||||
if (double_speed)
|
|
||||||
g_signal_connect_after (shell->canvas, "expose_event",
|
|
||||||
G_CALLBACK (gui_rotate_the_shield_harmonics),
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
return GIMP_OBJECT (gdisp);
|
return GIMP_OBJECT (gdisp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,54 +463,6 @@ gui_themes_dir_foreach_func (GimpDatafileData *file_data)
|
||||||
g_strdup (file_data->filename));
|
g_strdup (file_data->filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
|
||||||
gui_rotate_the_shield_harmonics (GtkWidget *widget,
|
|
||||||
GdkEvent *eevent,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GdkPixmap *pixmap = NULL;
|
|
||||||
GdkBitmap *mask = NULL;
|
|
||||||
gint width = 0;
|
|
||||||
gint height = 0;
|
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (widget,
|
|
||||||
gui_rotate_the_shield_harmonics,
|
|
||||||
data);
|
|
||||||
|
|
||||||
pixmap = gdk_pixmap_create_from_xpm_d (widget->window,
|
|
||||||
&mask,
|
|
||||||
NULL,
|
|
||||||
wilber2_xpm);
|
|
||||||
|
|
||||||
gdk_drawable_get_size (pixmap, &width, &height);
|
|
||||||
|
|
||||||
if (widget->allocation.width >= width &&
|
|
||||||
widget->allocation.height >= height)
|
|
||||||
{
|
|
||||||
gint x, y;
|
|
||||||
|
|
||||||
x = (widget->allocation.width - width) / 2;
|
|
||||||
y = (widget->allocation.height - height) / 2;
|
|
||||||
|
|
||||||
gdk_gc_set_clip_mask (widget->style->black_gc, mask);
|
|
||||||
gdk_gc_set_clip_origin (widget->style->black_gc, x, y);
|
|
||||||
|
|
||||||
gdk_draw_drawable (widget->window,
|
|
||||||
widget->style->black_gc,
|
|
||||||
pixmap, 0, 0,
|
|
||||||
x, y,
|
|
||||||
width, height);
|
|
||||||
|
|
||||||
gdk_gc_set_clip_mask (widget->style->black_gc, NULL);
|
|
||||||
gdk_gc_set_clip_origin (widget->style->black_gc, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (pixmap);
|
|
||||||
g_object_unref (mask);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gui_exit_callback (Gimp *gimp,
|
gui_exit_callback (Gimp *gimp,
|
||||||
gboolean kill_it)
|
gboolean kill_it)
|
||||||
|
@ -588,9 +520,6 @@ gui_exit_finish_callback (Gimp *gimp,
|
||||||
g_object_unref (image_item_factory);
|
g_object_unref (image_item_factory);
|
||||||
image_item_factory = NULL;
|
image_item_factory = NULL;
|
||||||
|
|
||||||
g_object_unref (paths_item_factory);
|
|
||||||
paths_item_factory = NULL;
|
|
||||||
|
|
||||||
menus_exit (gimp);
|
menus_exit (gimp);
|
||||||
render_exit (gimp);
|
render_exit (gimp);
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,6 @@
|
||||||
#include "menus.h"
|
#include "menus.h"
|
||||||
#include "palette-editor-menu.h"
|
#include "palette-editor-menu.h"
|
||||||
#include "palettes-menu.h"
|
#include "palettes-menu.h"
|
||||||
#include "paths-dialog.h"
|
|
||||||
#include "patterns-menu.h"
|
#include "patterns-menu.h"
|
||||||
#include "qmask-menu.h"
|
#include "qmask-menu.h"
|
||||||
#include "templates-menu.h"
|
#include "templates-menu.h"
|
||||||
|
@ -149,12 +148,6 @@ menus_init (Gimp *gimp)
|
||||||
n_vectors_menu_entries,
|
n_vectors_menu_entries,
|
||||||
vectors_menu_entries);
|
vectors_menu_entries);
|
||||||
|
|
||||||
gimp_menu_factory_menu_register (global_menu_factory,
|
|
||||||
"<Paths>", "paths",
|
|
||||||
NULL, NULL, FALSE,
|
|
||||||
n_paths_menu_entries,
|
|
||||||
paths_menu_entries);
|
|
||||||
|
|
||||||
gimp_menu_factory_menu_register (global_menu_factory,
|
gimp_menu_factory_menu_register (global_menu_factory,
|
||||||
"<Dialogs>", "dialogs",
|
"<Dialogs>", "dialogs",
|
||||||
NULL, dialogs_menu_update, TRUE,
|
NULL, dialogs_menu_update, TRUE,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,68 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1999 Andy Thomas alt@picnic.demon.co.uk
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PATHS_DIALOG_H__
|
|
||||||
#define __PATHS_DIALOG_H__
|
|
||||||
|
|
||||||
GtkWidget * paths_dialog_create (void);
|
|
||||||
void paths_dialog_free (void);
|
|
||||||
void paths_dialog_update (GimpImage *gimage);
|
|
||||||
void paths_dialog_flush (void);
|
|
||||||
|
|
||||||
|
|
||||||
extern GimpItemFactoryEntry paths_menu_entries[];
|
|
||||||
extern gint n_paths_menu_entries;
|
|
||||||
|
|
||||||
|
|
||||||
void paths_dialog_new_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_delete_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_dup_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_copy_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_paste_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_stroke_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_path_to_sel_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_sel_to_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_import_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_export_path_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_edit_path_attributes_callback (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
void paths_dialog_destroy_cb (GtkObject *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
/* EEEK */
|
|
||||||
|
|
||||||
void paths_newpoint_current (GimpBezierSelectTool *, GimpDisplay *);
|
|
||||||
void paths_first_button_press (GimpBezierSelectTool *, GimpDisplay *);
|
|
||||||
void paths_new_bezier_select_tool (void);
|
|
||||||
Path * paths_get_bzpaths (void);
|
|
||||||
void paths_set_bzpaths (GimpImage *, Path *);
|
|
||||||
void paths_dialog_set_default_op (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PATHS_DIALOG_H__ */
|
|
|
@ -53,7 +53,6 @@
|
||||||
#include "menus.h"
|
#include "menus.h"
|
||||||
#include "palette-editor-menu.h"
|
#include "palette-editor-menu.h"
|
||||||
#include "palettes-menu.h"
|
#include "palettes-menu.h"
|
||||||
#include "paths-dialog.h"
|
|
||||||
#include "patterns-menu.h"
|
#include "patterns-menu.h"
|
||||||
#include "qmask-menu.h"
|
#include "qmask-menu.h"
|
||||||
#include "templates-menu.h"
|
#include "templates-menu.h"
|
||||||
|
@ -149,12 +148,6 @@ menus_init (Gimp *gimp)
|
||||||
n_vectors_menu_entries,
|
n_vectors_menu_entries,
|
||||||
vectors_menu_entries);
|
vectors_menu_entries);
|
||||||
|
|
||||||
gimp_menu_factory_menu_register (global_menu_factory,
|
|
||||||
"<Paths>", "paths",
|
|
||||||
NULL, NULL, FALSE,
|
|
||||||
n_paths_menu_entries,
|
|
||||||
paths_menu_entries);
|
|
||||||
|
|
||||||
gimp_menu_factory_menu_register (global_menu_factory,
|
gimp_menu_factory_menu_register (global_menu_factory,
|
||||||
"<Dialogs>", "dialogs",
|
"<Dialogs>", "dialogs",
|
||||||
NULL, dialogs_menu_update, TRUE,
|
NULL, dialogs_menu_update, TRUE,
|
||||||
|
|
|
@ -1,150 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
#include "libgimpwidgets/gimpwidgets.h"
|
|
||||||
|
|
||||||
#include "ops_buttons.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
OPS_BUTTON_MODIFIER_NONE,
|
|
||||||
OPS_BUTTON_MODIFIER_SHIFT,
|
|
||||||
OPS_BUTTON_MODIFIER_CTRL,
|
|
||||||
OPS_BUTTON_MODIFIER_ALT,
|
|
||||||
OPS_BUTTON_MODIFIER_SHIFT_CTRL,
|
|
||||||
OPS_BUTTON_MODIFIER_LAST
|
|
||||||
} OpsButtonModifier;
|
|
||||||
|
|
||||||
|
|
||||||
static void ops_button_extended_clicked (GtkWidget *widget,
|
|
||||||
guint modifier_state,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
GtkWidget *
|
|
||||||
ops_button_box_new (OpsButton *ops_button,
|
|
||||||
OpsButtonType ops_type)
|
|
||||||
{
|
|
||||||
GtkWidget *button;
|
|
||||||
GtkWidget *button_box;
|
|
||||||
GtkWidget *pixmap;
|
|
||||||
GSList *group = NULL;
|
|
||||||
|
|
||||||
button_box = gtk_hbox_new (TRUE, 1);
|
|
||||||
|
|
||||||
while (ops_button->xpm_data)
|
|
||||||
{
|
|
||||||
pixmap = gimp_pixmap_new (ops_button->xpm_data);
|
|
||||||
|
|
||||||
switch (ops_type)
|
|
||||||
{
|
|
||||||
case OPS_BUTTON_NORMAL:
|
|
||||||
button = gimp_button_new ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OPS_BUTTON_RADIO:
|
|
||||||
button = gtk_radio_button_new (group);
|
|
||||||
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
|
|
||||||
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_warning ("ops_button_box_new: unknown type %d\n", ops_type);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (button), pixmap);
|
|
||||||
|
|
||||||
if (ops_button->ext_callbacks == NULL)
|
|
||||||
{
|
|
||||||
g_signal_connect_swapped (button, "clicked",
|
|
||||||
G_CALLBACK (ops_button->callback),
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_signal_connect (button, "extended_clicked",
|
|
||||||
G_CALLBACK (ops_button_extended_clicked),
|
|
||||||
ops_button);
|
|
||||||
}
|
|
||||||
|
|
||||||
gimp_help_set_help_data (button,
|
|
||||||
gettext (ops_button->tooltip),
|
|
||||||
ops_button->private_tip);
|
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0);
|
|
||||||
|
|
||||||
gtk_widget_show (pixmap);
|
|
||||||
gtk_widget_show (button);
|
|
||||||
|
|
||||||
ops_button->widget = button;
|
|
||||||
|
|
||||||
ops_button++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return button_box;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ops_button_extended_clicked (GtkWidget *widget,
|
|
||||||
guint modifier_state,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
OpsButton *ops_button;
|
|
||||||
OpsButtonModifier modifier;
|
|
||||||
|
|
||||||
g_return_if_fail (data != NULL);
|
|
||||||
ops_button = (OpsButton *) data;
|
|
||||||
|
|
||||||
if (modifier_state & GDK_SHIFT_MASK)
|
|
||||||
{
|
|
||||||
if (modifier_state & GDK_CONTROL_MASK)
|
|
||||||
modifier = OPS_BUTTON_MODIFIER_SHIFT_CTRL;
|
|
||||||
else
|
|
||||||
modifier = OPS_BUTTON_MODIFIER_SHIFT;
|
|
||||||
}
|
|
||||||
else if (modifier_state & GDK_CONTROL_MASK)
|
|
||||||
modifier = OPS_BUTTON_MODIFIER_CTRL;
|
|
||||||
else if (modifier_state & GDK_MOD1_MASK)
|
|
||||||
modifier = OPS_BUTTON_MODIFIER_ALT;
|
|
||||||
else
|
|
||||||
modifier = OPS_BUTTON_MODIFIER_NONE;
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#warning FIXME: remove ops_buttons
|
|
||||||
#endif
|
|
||||||
#if 0
|
|
||||||
if (modifier > OPS_BUTTON_MODIFIER_NONE &&
|
|
||||||
modifier < OPS_BUTTON_MODIFIER_LAST)
|
|
||||||
{
|
|
||||||
if (ops_button->ext_callbacks[modifier - 1] != NULL)
|
|
||||||
(ops_button->ext_callbacks[modifier - 1]) (widget, NULL);
|
|
||||||
else
|
|
||||||
(ops_button->callback) (widget, NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
(ops_button->callback) (widget, NULL);
|
|
||||||
#endif
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __OPS_BUTTONS_H__
|
|
||||||
#define __OPS_BUTTONS_H__
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
OPS_BUTTON_NORMAL,
|
|
||||||
OPS_BUTTON_RADIO
|
|
||||||
} OpsButtonType;
|
|
||||||
|
|
||||||
typedef struct _OpsButton OpsButton;
|
|
||||||
|
|
||||||
struct _OpsButton
|
|
||||||
{
|
|
||||||
gchar **xpm_data; /* xpm data for the button */
|
|
||||||
GCallback callback; /* callback function */
|
|
||||||
GCallback *ext_callbacks; /* callback functions when *
|
|
||||||
* modifiers are pressed */
|
|
||||||
gchar *tooltip;
|
|
||||||
gchar *private_tip;
|
|
||||||
GtkWidget *widget; /* the button widget */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Function declarations */
|
|
||||||
|
|
||||||
GtkWidget * ops_button_box_new (OpsButton *ops_button,
|
|
||||||
OpsButtonType ops_type);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __OPS_BUTTONS_H__ */
|
|
340
app/path.c
340
app/path.c
|
@ -1,340 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1999 Andy Thomas alt@picnic.demon.co.uk
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
* Some of this code is based on the layers_dialog box code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
#include "libgimpmath/gimpmath.h"
|
|
||||||
|
|
||||||
#include "tools/tools-types.h"
|
|
||||||
|
|
||||||
#include "core/gimpimage.h"
|
|
||||||
|
|
||||||
#include "display/gimpdisplay.h"
|
|
||||||
#include "display/gimpdisplay-foreach.h"
|
|
||||||
|
|
||||||
#include "tools/gimpbezierselecttool.h"
|
|
||||||
|
|
||||||
#include "gui/paths-dialog.h"
|
|
||||||
|
|
||||||
#include "path.h"
|
|
||||||
#include "pathP.h"
|
|
||||||
|
|
||||||
|
|
||||||
static gchar * unique_name (GimpImage *gimage,
|
|
||||||
gchar *cstr);
|
|
||||||
|
|
||||||
|
|
||||||
Path *
|
|
||||||
path_new (GimpImage *gimage,
|
|
||||||
PathType ptype,
|
|
||||||
GSList *path_details,
|
|
||||||
gint closed,
|
|
||||||
gint state,
|
|
||||||
gint locked,
|
|
||||||
gint tattoo,
|
|
||||||
gchar *name)
|
|
||||||
{
|
|
||||||
gchar *suniq;
|
|
||||||
Path *path = g_new0 (Path, 1);
|
|
||||||
|
|
||||||
suniq = unique_name (gimage, name);
|
|
||||||
if (suniq)
|
|
||||||
path->name = suniq;
|
|
||||||
else
|
|
||||||
path->name = g_strdup (name);
|
|
||||||
|
|
||||||
path->path_details = path_details;
|
|
||||||
path->closed = closed;
|
|
||||||
path->state = state;
|
|
||||||
path->locked = locked;
|
|
||||||
path->pathtype = ptype;
|
|
||||||
|
|
||||||
if(tattoo)
|
|
||||||
path->tattoo = tattoo;
|
|
||||||
else
|
|
||||||
path->tattoo = gimp_image_get_new_tattoo (gimage);
|
|
||||||
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
Path *
|
|
||||||
path_copy (GimpImage *gimage,
|
|
||||||
Path *path)
|
|
||||||
{
|
|
||||||
Path *p_copy = g_new0 (Path, 1);
|
|
||||||
gchar *name;
|
|
||||||
|
|
||||||
name = unique_name (gimage, path->name);
|
|
||||||
|
|
||||||
if (name)
|
|
||||||
p_copy->name = name;
|
|
||||||
else
|
|
||||||
p_copy->name = g_strdup (path->name);
|
|
||||||
|
|
||||||
p_copy->closed = path->closed;
|
|
||||||
p_copy->state = path->state;
|
|
||||||
p_copy->pathtype = path->pathtype;
|
|
||||||
p_copy->path_details = pathpoints_copy (path->path_details);
|
|
||||||
|
|
||||||
if (gimage)
|
|
||||||
p_copy->tattoo = gimp_image_get_new_tattoo (gimage);
|
|
||||||
else
|
|
||||||
p_copy->tattoo = path->tattoo;
|
|
||||||
|
|
||||||
return p_copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
path_free (Path *path)
|
|
||||||
{
|
|
||||||
g_return_if_fail (path != NULL);
|
|
||||||
|
|
||||||
g_free (path->name);
|
|
||||||
pathpoints_free (path->path_details);
|
|
||||||
g_free (path);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PathPoint *
|
|
||||||
path_point_new (guint type,
|
|
||||||
gdouble x,
|
|
||||||
gdouble y)
|
|
||||||
{
|
|
||||||
PathPoint *pathpoint = g_new0 (PathPoint,1);
|
|
||||||
|
|
||||||
pathpoint->type = type;
|
|
||||||
pathpoint->x = x;
|
|
||||||
pathpoint->y = y;
|
|
||||||
|
|
||||||
return pathpoint;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
path_point_free (PathPoint *pathpoint)
|
|
||||||
{
|
|
||||||
g_free (pathpoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
path_stroke (GimpImage *gimage,
|
|
||||||
PathList *pl,
|
|
||||||
Path *bzp)
|
|
||||||
{
|
|
||||||
GimpBezierSelectTool *bezier_sel;
|
|
||||||
GimpDisplay *gdisp;
|
|
||||||
|
|
||||||
gdisp = gdisplays_check_valid (pl->gdisp, gimage);
|
|
||||||
bezier_sel = path_to_beziersel (bzp);
|
|
||||||
bezier_stroke (bezier_sel, gdisp, SUBDIVIDE, !bzp->closed);
|
|
||||||
bezier_select_free (bezier_sel);
|
|
||||||
}
|
|
||||||
|
|
||||||
gint
|
|
||||||
path_distance (Path *bzp,
|
|
||||||
gdouble dist,
|
|
||||||
gint *x,
|
|
||||||
gint *y,
|
|
||||||
gdouble *grad)
|
|
||||||
{
|
|
||||||
gint ret;
|
|
||||||
GimpBezierSelectTool *bezier_sel;
|
|
||||||
|
|
||||||
bezier_sel = path_to_beziersel (bzp);
|
|
||||||
ret = bezier_distance_along (bezier_sel, !bzp->closed, dist, x, y, grad);
|
|
||||||
bezier_select_free (bezier_sel);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
GimpTattoo
|
|
||||||
path_get_tattoo (Path* p)
|
|
||||||
{
|
|
||||||
if (!p)
|
|
||||||
{
|
|
||||||
g_warning ("path_get_tattoo: invalid path");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return p->tattoo;
|
|
||||||
}
|
|
||||||
|
|
||||||
Path*
|
|
||||||
path_get_path_by_tattoo (GimpImage *gimage,
|
|
||||||
GimpTattoo tattoo)
|
|
||||||
{
|
|
||||||
GSList *tlist;
|
|
||||||
PathList *plp;
|
|
||||||
|
|
||||||
if (!gimage || !tattoo)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* Go around the list and check all tattoos. */
|
|
||||||
|
|
||||||
/* Get path structure */
|
|
||||||
plp = (PathList*) gimp_image_get_paths (gimage);
|
|
||||||
|
|
||||||
if (!plp)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
for (tlist = plp->bz_paths; tlist; tlist = g_slist_next(tlist))
|
|
||||||
{
|
|
||||||
Path* p = (Path*)(tlist->data);
|
|
||||||
|
|
||||||
if (p->tattoo == tattoo)
|
|
||||||
return (p);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
PathList *
|
|
||||||
path_list_new (GimpImage *gimage,
|
|
||||||
gint last_selected_row,
|
|
||||||
GSList *bz_paths)
|
|
||||||
{
|
|
||||||
PathList *pip = g_new0 (PathList, 1);
|
|
||||||
|
|
||||||
pip->gimage = gimage;
|
|
||||||
pip->last_selected_row = last_selected_row;
|
|
||||||
|
|
||||||
/* add connector to image delete/destroy */
|
|
||||||
pip->sig_id = g_signal_connect (gimage, "disconnect",
|
|
||||||
G_CALLBACK (paths_dialog_destroy_cb),
|
|
||||||
pip);
|
|
||||||
|
|
||||||
pip->bz_paths = bz_paths;
|
|
||||||
|
|
||||||
return (PathList *) pip;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
path_list_free (PathList* iml)
|
|
||||||
{
|
|
||||||
g_return_if_fail (iml != NULL);
|
|
||||||
|
|
||||||
if (iml->bz_paths)
|
|
||||||
{
|
|
||||||
g_slist_foreach (iml->bz_paths, (GFunc) path_free, NULL);
|
|
||||||
g_slist_free (iml->bz_paths);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (iml);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Always return a copy that must be freed later */
|
|
||||||
|
|
||||||
static gchar *
|
|
||||||
strip_off_cnumber (gchar *str)
|
|
||||||
{
|
|
||||||
gchar *hashptr;
|
|
||||||
gint num;
|
|
||||||
gchar *copy;
|
|
||||||
|
|
||||||
if (!str)
|
|
||||||
return str;
|
|
||||||
|
|
||||||
copy = g_strdup (str);
|
|
||||||
|
|
||||||
if ((hashptr = strrchr (copy,'#')) && /* have a hash */
|
|
||||||
strlen(hashptr) > 0 && /* followed by something */
|
|
||||||
(num = atoi(hashptr+1)) > 0 && /* which is a number */
|
|
||||||
((int) log10 (num) + 1) == strlen (hashptr+1)) /* which is at the end */
|
|
||||||
{
|
|
||||||
gchar *tstr;
|
|
||||||
|
|
||||||
/* Has a #<number> */
|
|
||||||
*hashptr = '\0';
|
|
||||||
tstr = g_strdup (copy);
|
|
||||||
g_free (copy);
|
|
||||||
copy = tstr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return NULL if already unique else a unique string */
|
|
||||||
|
|
||||||
static gchar *
|
|
||||||
unique_name (GimpImage *gimage,
|
|
||||||
gchar *cstr)
|
|
||||||
{
|
|
||||||
GSList *tlist;
|
|
||||||
PathList *plp;
|
|
||||||
gboolean unique = TRUE;
|
|
||||||
gchar *copy_cstr;
|
|
||||||
gchar *copy_test;
|
|
||||||
gchar *stripped_copy;
|
|
||||||
gint counter = 1;
|
|
||||||
|
|
||||||
/* Get bzpath structure */
|
|
||||||
if (!gimage || !(plp = (PathList*) gimp_image_get_paths(gimage)))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
tlist = plp->bz_paths;
|
|
||||||
|
|
||||||
while (tlist)
|
|
||||||
{
|
|
||||||
gchar *test_str;
|
|
||||||
|
|
||||||
test_str = ((Path *) (tlist->data))->name;
|
|
||||||
|
|
||||||
if (strcmp (cstr, test_str) == 0)
|
|
||||||
{
|
|
||||||
unique = FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
tlist = g_slist_next(tlist);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unique)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* OK Clashes with something */
|
|
||||||
/* restart scan to find unique name */
|
|
||||||
|
|
||||||
stripped_copy = strip_off_cnumber (cstr);
|
|
||||||
copy_cstr = g_strdup_printf ("%s#%d", stripped_copy, counter++);
|
|
||||||
|
|
||||||
tlist = plp->bz_paths;
|
|
||||||
|
|
||||||
while (tlist)
|
|
||||||
{
|
|
||||||
copy_test = ((Path*)(tlist->data))->name;
|
|
||||||
|
|
||||||
if (strcmp (copy_cstr,copy_test) == 0)
|
|
||||||
{
|
|
||||||
g_free (copy_cstr);
|
|
||||||
copy_cstr = g_strdup_printf ("%s#%d", stripped_copy, counter++);
|
|
||||||
tlist = plp->bz_paths;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
tlist = g_slist_next(tlist);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (stripped_copy);
|
|
||||||
|
|
||||||
return copy_cstr;
|
|
||||||
}
|
|
82
app/path.h
82
app/path.h
|
@ -1,82 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1999 Andy Thomas alt@picnic.demon.co.uk
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PATH_H__
|
|
||||||
#define __PATH_H__
|
|
||||||
|
|
||||||
|
|
||||||
struct _PathList
|
|
||||||
{
|
|
||||||
GimpImage *gimage;
|
|
||||||
gpointer gdisp; /* This is a hack.. Needed so we can get back to
|
|
||||||
* the same display that these curves were added
|
|
||||||
* too. That way when an entry in the paths dialog
|
|
||||||
* is clicked the bezier tool can be targeted at
|
|
||||||
* correct display. Note this display could have been
|
|
||||||
* deleted (ie different view), but gdisplays_check_valid()
|
|
||||||
* function will take care of that.. In this case we just
|
|
||||||
* pick a display that the gimage is rendered in.
|
|
||||||
*/
|
|
||||||
GSList *bz_paths; /* list of BZPATHP */
|
|
||||||
guint sig_id;
|
|
||||||
gint32 last_selected_row;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
BEZIER = 1
|
|
||||||
} PathType;
|
|
||||||
|
|
||||||
Path* path_new (GimpImage *gimage,
|
|
||||||
PathType ptype,
|
|
||||||
GSList *path_details,
|
|
||||||
gint closed,
|
|
||||||
gint state,
|
|
||||||
gint locked,
|
|
||||||
gint tattoo,
|
|
||||||
gchar *name);
|
|
||||||
Path* path_copy (GimpImage *gimage,
|
|
||||||
Path *path);
|
|
||||||
void path_free (Path *path);
|
|
||||||
|
|
||||||
GimpTattoo path_get_tattoo (Path *path);
|
|
||||||
Path* path_get_path_by_tattoo (GimpImage *gimage,
|
|
||||||
GimpTattoo tattoo);
|
|
||||||
|
|
||||||
void path_stroke (GimpImage *gimage,
|
|
||||||
PathList *pl,
|
|
||||||
Path *bzp);
|
|
||||||
gint path_distance (Path *bzp,
|
|
||||||
gdouble dist,
|
|
||||||
gint *x,
|
|
||||||
gint *y,
|
|
||||||
gdouble *grad);
|
|
||||||
|
|
||||||
PathPoint* path_point_new (guint type,
|
|
||||||
gdouble x,
|
|
||||||
gdouble y);
|
|
||||||
void path_point_free (PathPoint *pathpoint);
|
|
||||||
|
|
||||||
PathList* path_list_new (GimpImage *gimage,
|
|
||||||
gint last_selected_row,
|
|
||||||
GSList *bz_paths);
|
|
||||||
void path_list_free (PathList *plist);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PATH_H__ */
|
|
||||||
|
|
59
app/pathP.h
59
app/pathP.h
|
@ -1,59 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1999 Andy Thomas alt@picnic.demon.co.uk
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PATHP_H__
|
|
||||||
#define __PATHP_H__
|
|
||||||
|
|
||||||
struct _PathPoint
|
|
||||||
{
|
|
||||||
guint32 type;
|
|
||||||
gdouble x;
|
|
||||||
gdouble y;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Path
|
|
||||||
{
|
|
||||||
GSList *path_details;
|
|
||||||
gint pathtype; /* Only beziers to start with */
|
|
||||||
gboolean closed;
|
|
||||||
guint32 state;
|
|
||||||
guint32 locked; /* Only bottom bit used */
|
|
||||||
GimpTattoo tattoo; /* The tattoo for the path */
|
|
||||||
gchar *name;
|
|
||||||
};
|
|
||||||
|
|
||||||
gboolean path_set_path (GimpImage *gimage,
|
|
||||||
gchar *pname);
|
|
||||||
gboolean path_set_path_points (GimpImage *gimage,
|
|
||||||
gchar *pname,
|
|
||||||
gint ptype,
|
|
||||||
gint pclosed,
|
|
||||||
gint num_pnts,
|
|
||||||
gdouble *pnts);
|
|
||||||
gboolean path_delete_path (GimpImage *gimage,
|
|
||||||
gchar *pname);
|
|
||||||
|
|
||||||
GSList* pathpoints_copy (GSList *list);
|
|
||||||
void pathpoints_free (GSList *list);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PATHP_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1999 Andy Thomas alt@picnic.demon.co.uk
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PATH_TRANSFORM_H__
|
|
||||||
#define __PATH_TRANSFORM_H__
|
|
||||||
|
|
||||||
|
|
||||||
GSList * path_transform_start_undo (GimpImage *gimage);
|
|
||||||
void path_transform_free_undo (GSList *pundo);
|
|
||||||
void path_transform_do_undo (GimpImage *gimage,
|
|
||||||
GSList *pundo);
|
|
||||||
|
|
||||||
void path_transform_current_path (GimpImage *gimage,
|
|
||||||
GimpMatrix3 transform,
|
|
||||||
gboolean forpreview);
|
|
||||||
void path_transform_draw_current (GimpDisplay *gimage,
|
|
||||||
GimpDrawTool *core,
|
|
||||||
GimpMatrix3 transform);
|
|
||||||
|
|
||||||
void path_transform_flip_horz (GimpImage *gimage);
|
|
||||||
void path_transform_flip_vert (GimpImage *gimage);
|
|
||||||
void path_transform_xy (GimpImage *gimage,
|
|
||||||
gint x,
|
|
||||||
gint y);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PATH_TRANSFORM_H__ */
|
|
|
@ -9,8 +9,6 @@ libapptools_a_sources = \
|
||||||
tools.h \
|
tools.h \
|
||||||
gimpairbrushtool.c \
|
gimpairbrushtool.c \
|
||||||
gimpairbrushtool.h \
|
gimpairbrushtool.h \
|
||||||
gimpbezierselecttool.c \
|
|
||||||
gimpbezierselecttool.h \
|
|
||||||
gimpblendoptions.c \
|
gimpblendoptions.c \
|
||||||
gimpblendoptions.h \
|
gimpblendoptions.h \
|
||||||
gimpblendtool.c \
|
gimpblendtool.c \
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,168 +0,0 @@
|
||||||
/* The GIMP -- an image manipulation program
|
|
||||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GIMP_BEZIER_SELECT_TOOL_H__
|
|
||||||
#define __GIMP_BEZIER_SELECT_TOOL_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include "gimpselectiontool.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define GIMP_TYPE_BEZIER_SELECT_TOOL (gimp_bezier_select_tool_get_type ())
|
|
||||||
#define GIMP_BEZIER_SELECT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectTool))
|
|
||||||
#define GIMP_BEZIER_SELECT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectToolClass))
|
|
||||||
#define GIMP_IS_BEZIER_SELECT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL))
|
|
||||||
#define GIMP_IS_BEZIER_SELECT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_BEZIER_SELECT_TOOL))
|
|
||||||
#define GIMP_BEZIER_SELECT_TOOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectToolClass))
|
|
||||||
|
|
||||||
|
|
||||||
#define BEZIER_START 1
|
|
||||||
#define BEZIER_ADD 2
|
|
||||||
#define BEZIER_EDIT 4
|
|
||||||
#define BEZIER_DRAG 8
|
|
||||||
|
|
||||||
#define BEZIER_ANCHOR 1
|
|
||||||
#define BEZIER_CONTROL 2
|
|
||||||
#define BEZIER_MOVE 3
|
|
||||||
|
|
||||||
#define IMAGE_COORDS 1
|
|
||||||
#define AA_IMAGE_COORDS 2
|
|
||||||
#define SCREEN_COORDS 3
|
|
||||||
|
|
||||||
#define SUBDIVIDE 1000
|
|
||||||
|
|
||||||
enum { EXTEND_EDIT, EXTEND_ADD, EXTEND_REMOVE, EXTEND_NEW };
|
|
||||||
|
|
||||||
|
|
||||||
/* typedef struct _GimpBezierSelectTool GimpBezierSelectTool;
|
|
||||||
* typedef struct _GimpBezierSelectPoint GimpBezierSelectPoint; */
|
|
||||||
typedef struct _GimpBezierSelectToolClass GimpBezierSelectToolClass;
|
|
||||||
|
|
||||||
struct _GimpBezierSelectPoint
|
|
||||||
{
|
|
||||||
gint type; /* type of point (anchor/control/move) */
|
|
||||||
gdouble x, y; /* location of point in image space */
|
|
||||||
gint sx, sy; /* location of point in screen space */
|
|
||||||
|
|
||||||
GimpBezierSelectPoint *next; /* next point on curve */
|
|
||||||
GimpBezierSelectPoint *prev; /* prev point on curve */
|
|
||||||
GimpBezierSelectPoint *next_curve; /* Next curve segment */
|
|
||||||
|
|
||||||
gint pointflags; /* Status of point 0 = not selected
|
|
||||||
* 1 = selected
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GimpBezierSelectTool
|
|
||||||
{
|
|
||||||
GimpSelectionTool parent_instance;
|
|
||||||
|
|
||||||
gint state; /* start, add, edit or drag */
|
|
||||||
gint draw_mode; /* all or part */
|
|
||||||
gint closed; /* is the last curve closed */
|
|
||||||
|
|
||||||
GimpBezierSelectPoint *points; /* the curve */
|
|
||||||
GimpBezierSelectPoint *cur_anchor; /* the current active anchor point */
|
|
||||||
GimpBezierSelectPoint *cur_control; /* the current active control point */
|
|
||||||
GimpBezierSelectPoint *last_point; /* the last point on the curve */
|
|
||||||
|
|
||||||
gint num_points; /* number of points in the curve */
|
|
||||||
GimpChannel *mask; /* null if the curve is open */
|
|
||||||
GSList **scanlines; /* used in converting a curve */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct _GimpBezierSelectToolClass
|
|
||||||
{
|
|
||||||
GimpSelectionToolClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef void (* GimpBezierSelectPointsFunc) (GimpBezierSelectTool *bezier_sel,
|
|
||||||
GdkPoint *points,
|
|
||||||
gint n_points,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
gint count;
|
|
||||||
} CountCurves;
|
|
||||||
|
|
||||||
|
|
||||||
/* Public functions */
|
|
||||||
|
|
||||||
void gimp_bezier_select_tool_register (GimpToolRegisterCallback callback,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
GType gimp_bezier_select_tool_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
|
|
||||||
gboolean bezier_tool_selected (void);
|
|
||||||
|
|
||||||
void gimp_bezier_select_tool_bezier_select (GimpBezierSelectTool *rect_tool,
|
|
||||||
gint x,
|
|
||||||
gint y,
|
|
||||||
gint w,
|
|
||||||
gint h);
|
|
||||||
|
|
||||||
|
|
||||||
void bezier_select (GimpImage *gimage,
|
|
||||||
gint x,
|
|
||||||
gint y,
|
|
||||||
gint w,
|
|
||||||
gint h,
|
|
||||||
SelectOps op,
|
|
||||||
gboolean feather,
|
|
||||||
gdouble feather_radius);
|
|
||||||
|
|
||||||
gint bezier_select_load (GimpDisplay *gdisp,
|
|
||||||
GimpBezierSelectPoint *points,
|
|
||||||
gint n_points,
|
|
||||||
gint closed);
|
|
||||||
void bezier_draw_curve (GimpBezierSelectTool *bezier_sel,
|
|
||||||
GimpBezierSelectPointsFunc func,
|
|
||||||
gint coord,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
void bezier_select_reset (GimpBezierSelectTool *bezier_sel);
|
|
||||||
void bezier_select_free (GimpBezierSelectTool *bezier_sel);
|
|
||||||
GimpBezierSelectTool* path_to_beziersel (Path *path);
|
|
||||||
|
|
||||||
void bezier_add_point (GimpBezierSelectTool *bezier_sel,
|
|
||||||
gint type,
|
|
||||||
gdouble x,
|
|
||||||
gdouble y);
|
|
||||||
void bezier_paste_bezierselect_to_current (GimpDisplay *gdisp,
|
|
||||||
GimpBezierSelectTool *bezier_sel);
|
|
||||||
void bezier_select_mode (gint);
|
|
||||||
void bezier_stroke (GimpBezierSelectTool *bezier_sel,
|
|
||||||
GimpDisplay *gdisp,
|
|
||||||
gint subdivisions,
|
|
||||||
gint open_path);
|
|
||||||
void bezier_to_selection (GimpBezierSelectTool *bezier_sel,
|
|
||||||
GimpDisplay *gdisp);
|
|
||||||
gint bezier_distance_along (GimpBezierSelectTool *bezier_sel,
|
|
||||||
gint open_path,
|
|
||||||
gdouble dist,
|
|
||||||
gint *x,
|
|
||||||
gint *y,
|
|
||||||
gdouble *gradient);
|
|
||||||
void bezier_draw (GimpDisplay *gdisp,
|
|
||||||
GimpBezierSelectTool *bezier_sel);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_BEZIER_SELECT_TOOL_H__ */
|
|
|
@ -73,7 +73,6 @@
|
||||||
|
|
||||||
#include "display/gimpdisplay.h"
|
#include "display/gimpdisplay.h"
|
||||||
|
|
||||||
#include "gimpbezierselecttool.h"
|
|
||||||
#include "gimpiscissorstool.h"
|
#include "gimpiscissorstool.h"
|
||||||
#include "gimpeditselectiontool.h"
|
#include "gimpeditselectiontool.h"
|
||||||
#include "gimpselectionoptions.h"
|
#include "gimpselectionoptions.h"
|
||||||
|
|
|
@ -63,8 +63,6 @@
|
||||||
#include "gimptransformtool-undo.h"
|
#include "gimptransformtool-undo.h"
|
||||||
#include "tool_manager.h"
|
#include "tool_manager.h"
|
||||||
|
|
||||||
#include "path_transform.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -462,9 +460,11 @@ gimp_transform_tool_button_release (GimpTool *tool,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
/* Only update the paths preview */
|
/* Only update the paths preview */
|
||||||
path_transform_current_path (gdisp->gimage,
|
path_transform_current_path (gdisp->gimage,
|
||||||
tr_tool->transform, TRUE);
|
tr_tool->transform, TRUE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -480,9 +480,11 @@ gimp_transform_tool_button_release (GimpTool *tool,
|
||||||
|
|
||||||
gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
|
gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* Update the paths preview */
|
/* Update the paths preview */
|
||||||
path_transform_current_path (gdisp->gimage,
|
path_transform_current_path (gdisp->gimage,
|
||||||
tr_tool->transform, TRUE);
|
tr_tool->transform, TRUE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,8 +763,10 @@ gimp_transform_tool_draw (GimpDrawTool *draw_tool)
|
||||||
gimp_matrix3_duplicate (tr_tool->transform, tmp_matrix);
|
gimp_matrix3_duplicate (tr_tool->transform, tmp_matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
path_transform_draw_current (GIMP_TOOL (draw_tool)->gdisp,
|
path_transform_draw_current (GIMP_TOOL (draw_tool)->gdisp,
|
||||||
draw_tool, tmp_matrix);
|
draw_tool, tmp_matrix);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include "tool_manager.h"
|
#include "tool_manager.h"
|
||||||
|
|
||||||
#include "gimpairbrushtool.h"
|
#include "gimpairbrushtool.h"
|
||||||
#include "gimpbezierselecttool.h"
|
|
||||||
#include "gimpblendtool.h"
|
#include "gimpblendtool.h"
|
||||||
#include "gimpbrightnesscontrasttool.h"
|
#include "gimpbrightnesscontrasttool.h"
|
||||||
#include "gimpbucketfilltool.h"
|
#include "gimpbucketfilltool.h"
|
||||||
|
@ -119,7 +118,6 @@ tools_init (Gimp *gimp)
|
||||||
|
|
||||||
/* selection tools */
|
/* selection tools */
|
||||||
|
|
||||||
gimp_bezier_select_tool_register,
|
|
||||||
gimp_iscissors_tool_register,
|
gimp_iscissors_tool_register,
|
||||||
gimp_by_color_select_tool_register,
|
gimp_by_color_select_tool_register,
|
||||||
gimp_fuzzy_select_tool_register,
|
gimp_fuzzy_select_tool_register,
|
||||||
|
|
|
@ -657,7 +657,9 @@ static void
|
||||||
gimp_vectors_real_stroke_add (GimpVectors *vectors,
|
gimp_vectors_real_stroke_add (GimpVectors *vectors,
|
||||||
GimpStroke *stroke)
|
GimpStroke *stroke)
|
||||||
{
|
{
|
||||||
vectors->strokes = g_list_prepend (vectors->strokes, stroke);
|
/* Don't g_list_prepend() here. See ChangeLog 2003-05-21 --Mitch */
|
||||||
|
|
||||||
|
vectors->strokes = g_list_append (vectors->strokes, stroke);
|
||||||
g_object_ref (stroke);
|
g_object_ref (stroke);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,12 +54,19 @@
|
||||||
#include "xcf-read.h"
|
#include "xcf-read.h"
|
||||||
#include "xcf-seek.h"
|
#include "xcf-seek.h"
|
||||||
|
|
||||||
#include "path.h"
|
|
||||||
#include "pathP.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _XcfPathPoint PathPoint;
|
||||||
|
|
||||||
|
struct _XcfPathPoint
|
||||||
|
{
|
||||||
|
guint32 type;
|
||||||
|
gdouble x;
|
||||||
|
gdouble y;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static gboolean xcf_load_image_props (XcfInfo *info,
|
static gboolean xcf_load_image_props (XcfInfo *info,
|
||||||
GimpImage *gimage);
|
GimpImage *gimage);
|
||||||
static gboolean xcf_load_layer_props (XcfInfo *info,
|
static gboolean xcf_load_layer_props (XcfInfo *info,
|
||||||
|
@ -90,9 +97,9 @@ static gboolean xcf_load_tile_rle (XcfInfo *info,
|
||||||
Tile *tile,
|
Tile *tile,
|
||||||
gint data_length);
|
gint data_length);
|
||||||
static GimpParasite * xcf_load_parasite (XcfInfo *info);
|
static GimpParasite * xcf_load_parasite (XcfInfo *info);
|
||||||
static PathList * xcf_load_old_paths (XcfInfo *info,
|
static gboolean xcf_load_old_paths (XcfInfo *info,
|
||||||
GimpImage *gimage);
|
GimpImage *gimage);
|
||||||
static Path * xcf_load_old_path (XcfInfo *info,
|
static gboolean xcf_load_old_path (XcfInfo *info,
|
||||||
GimpImage *gimage);
|
GimpImage *gimage);
|
||||||
static PathPoint * xcf_load_old_path_point1 (XcfInfo *info,
|
static PathPoint * xcf_load_old_path_point1 (XcfInfo *info,
|
||||||
GimpCoords *coords);
|
GimpCoords *coords);
|
||||||
|
@ -408,11 +415,7 @@ xcf_load_image_props (XcfInfo *info,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_PATHS:
|
case PROP_PATHS:
|
||||||
{
|
xcf_load_old_paths (info, gimage);
|
||||||
PathList *paths = xcf_load_old_paths (info, gimage);
|
|
||||||
/* add to gimage */
|
|
||||||
gimp_image_set_paths (gimage, paths);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_USER_UNIT:
|
case PROP_USER_UNIT:
|
||||||
|
@ -1305,15 +1308,12 @@ xcf_load_parasite (XcfInfo *info)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PathList *
|
static gboolean
|
||||||
xcf_load_old_paths (XcfInfo *info,
|
xcf_load_old_paths (XcfInfo *info,
|
||||||
GimpImage *gimage)
|
GimpImage *gimage)
|
||||||
{
|
{
|
||||||
guint32 num_paths;
|
guint32 num_paths;
|
||||||
guint32 last_selected_row;
|
guint32 last_selected_row;
|
||||||
PathList *paths;
|
|
||||||
GSList *bzp_list = NULL;
|
|
||||||
|
|
||||||
GimpVectors *active_vectors;
|
GimpVectors *active_vectors;
|
||||||
|
|
||||||
info->cp += xcf_read_int32 (info->fp, &last_selected_row, 1);
|
info->cp += xcf_read_int32 (info->fp, &last_selected_row, 1);
|
||||||
|
@ -1322,14 +1322,7 @@ xcf_load_old_paths (XcfInfo *info,
|
||||||
g_print ("num_paths: %d selected_row: %d\n", num_paths, last_selected_row);
|
g_print ("num_paths: %d selected_row: %d\n", num_paths, last_selected_row);
|
||||||
|
|
||||||
while (num_paths-- > 0)
|
while (num_paths-- > 0)
|
||||||
{
|
xcf_load_old_path (info, gimage);
|
||||||
Path *bzp;
|
|
||||||
/* Read in a path */
|
|
||||||
bzp = xcf_load_old_path (info, gimage);
|
|
||||||
bzp_list = g_slist_append (bzp_list, bzp);
|
|
||||||
}
|
|
||||||
|
|
||||||
paths = path_list_new (gimage, last_selected_row, bzp_list);
|
|
||||||
|
|
||||||
active_vectors = (GimpVectors *)
|
active_vectors = (GimpVectors *)
|
||||||
gimp_container_get_child_by_index (gimage->vectors, last_selected_row);
|
gimp_container_get_child_by_index (gimage->vectors, last_selected_row);
|
||||||
|
@ -1337,24 +1330,22 @@ xcf_load_old_paths (XcfInfo *info,
|
||||||
if (active_vectors)
|
if (active_vectors)
|
||||||
gimp_image_set_active_vectors (gimage, active_vectors);
|
gimp_image_set_active_vectors (gimage, active_vectors);
|
||||||
|
|
||||||
return paths;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Path *
|
static gboolean
|
||||||
xcf_load_old_path (XcfInfo *info,
|
xcf_load_old_path (XcfInfo *info,
|
||||||
GimpImage *gimage)
|
GimpImage *gimage)
|
||||||
{
|
{
|
||||||
Path *bzp;
|
gchar *name;
|
||||||
gchar *name;
|
guint32 locked;
|
||||||
guint32 locked;
|
guint8 state;
|
||||||
guint8 state;
|
guint32 closed;
|
||||||
guint32 closed;
|
guint32 num_points;
|
||||||
guint32 num_points;
|
guint32 version; /* changed from num_paths */
|
||||||
guint32 version; /* changed from num_paths */
|
GimpTattoo tattoo = 0;
|
||||||
GimpTattoo tattoo = 0;
|
GSList *pts_list = NULL;
|
||||||
GSList *pts_list = NULL;
|
GSList *free_list = NULL;
|
||||||
PathType ptype;
|
|
||||||
|
|
||||||
GimpVectors *vectors;
|
GimpVectors *vectors;
|
||||||
GimpCoords *coords;
|
GimpCoords *coords;
|
||||||
GimpCoords *curr_coord;
|
GimpCoords *curr_coord;
|
||||||
|
@ -1380,8 +1371,6 @@ xcf_load_old_path (XcfInfo *info,
|
||||||
|
|
||||||
if (version == 1)
|
if (version == 1)
|
||||||
{
|
{
|
||||||
ptype = BEZIER;
|
|
||||||
|
|
||||||
while (num_points-- > 0)
|
while (num_points-- > 0)
|
||||||
{
|
{
|
||||||
PathPoint *bpt;
|
PathPoint *bpt;
|
||||||
|
@ -1392,8 +1381,10 @@ xcf_load_old_path (XcfInfo *info,
|
||||||
}
|
}
|
||||||
else if (version == 2)
|
else if (version == 2)
|
||||||
{
|
{
|
||||||
|
guint32 dummy;
|
||||||
|
|
||||||
/* Had extra type field and points are stored as doubles */
|
/* Had extra type field and points are stored as doubles */
|
||||||
info->cp += xcf_read_int32 (info->fp, (guint32 *) &ptype, 1);
|
info->cp += xcf_read_int32 (info->fp, (guint32 *) &dummy, 1);
|
||||||
|
|
||||||
while (num_points-- > 0)
|
while (num_points-- > 0)
|
||||||
{
|
{
|
||||||
|
@ -1405,8 +1396,10 @@ xcf_load_old_path (XcfInfo *info,
|
||||||
}
|
}
|
||||||
else if (version == 3)
|
else if (version == 3)
|
||||||
{
|
{
|
||||||
|
guint32 dummy;
|
||||||
|
|
||||||
/* Has extra tatto field */
|
/* Has extra tatto field */
|
||||||
info->cp += xcf_read_int32 (info->fp, (guint32 *) &ptype, 1);
|
info->cp += xcf_read_int32 (info->fp, (guint32 *) &dummy, 1);
|
||||||
info->cp += xcf_read_int32 (info->fp, (guint32 *) &tattoo, 1);
|
info->cp += xcf_read_int32 (info->fp, (guint32 *) &tattoo, 1);
|
||||||
|
|
||||||
while (num_points-- > 0)
|
while (num_points-- > 0)
|
||||||
|
@ -1424,14 +1417,13 @@ xcf_load_old_path (XcfInfo *info,
|
||||||
|
|
||||||
g_print ("\n");
|
g_print ("\n");
|
||||||
|
|
||||||
bzp = path_new (gimage,
|
|
||||||
ptype, pts_list, closed, (gint) state, locked, tattoo, name);
|
|
||||||
|
|
||||||
if (tattoo)
|
if (tattoo)
|
||||||
GIMP_ITEM (vectors)->tattoo = tattoo;
|
GIMP_ITEM (vectors)->tattoo = tattoo;
|
||||||
|
|
||||||
curr_coord = coords;
|
curr_coord = coords;
|
||||||
|
|
||||||
|
free_list = pts_list;
|
||||||
|
|
||||||
while (num_coords > 0)
|
while (num_coords > 0)
|
||||||
{
|
{
|
||||||
GimpStroke *stroke;
|
GimpStroke *stroke;
|
||||||
|
@ -1478,11 +1470,13 @@ xcf_load_old_path (XcfInfo *info,
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (coords);
|
g_free (coords);
|
||||||
|
g_slist_foreach (free_list, (GFunc) g_free, NULL);
|
||||||
|
g_slist_free (free_list);
|
||||||
|
|
||||||
gimp_image_add_vectors (gimage, vectors,
|
gimp_image_add_vectors (gimage, vectors,
|
||||||
gimp_container_num_children (gimage->vectors));
|
gimp_container_num_children (gimage->vectors));
|
||||||
|
|
||||||
return bzp;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PathPoint*
|
static PathPoint*
|
||||||
|
@ -1498,7 +1492,11 @@ xcf_load_old_path_point1 (XcfInfo *info,
|
||||||
info->cp += xcf_read_int32 (info->fp, (guint32 *) &x, 1);
|
info->cp += xcf_read_int32 (info->fp, (guint32 *) &x, 1);
|
||||||
info->cp += xcf_read_int32 (info->fp, (guint32 *) &y, 1);
|
info->cp += xcf_read_int32 (info->fp, (guint32 *) &y, 1);
|
||||||
|
|
||||||
ptr = path_point_new (type, (gdouble) x, (gdouble) y);
|
ptr = g_new0 (PathPoint, 1);
|
||||||
|
|
||||||
|
ptr->type = type;
|
||||||
|
ptr->x = x;
|
||||||
|
ptr->y = y;
|
||||||
|
|
||||||
coords->x = x;
|
coords->x = x;
|
||||||
coords->y = y;
|
coords->y = y;
|
||||||
|
@ -1525,7 +1523,11 @@ xcf_load_old_path_point (XcfInfo *info,
|
||||||
|
|
||||||
g_print ("path point type: %d (at %f, %f)\n", type, x, y);
|
g_print ("path point type: %d (at %f, %f)\n", type, x, y);
|
||||||
|
|
||||||
ptr = path_point_new (type, (gdouble) x, (gdouble) y);
|
ptr = g_new0 (PathPoint, 1);
|
||||||
|
|
||||||
|
ptr->type = type;
|
||||||
|
ptr->x = x;
|
||||||
|
ptr->y = y;
|
||||||
|
|
||||||
coords->x = x;
|
coords->x = x;
|
||||||
coords->y = y;
|
coords->y = y;
|
||||||
|
|
|
@ -43,16 +43,18 @@
|
||||||
#include "core/gimpparasitelist.h"
|
#include "core/gimpparasitelist.h"
|
||||||
#include "core/gimpunit.h"
|
#include "core/gimpunit.h"
|
||||||
|
|
||||||
|
#include "vectors/gimpanchor.h"
|
||||||
|
#include "vectors/gimpstroke.h"
|
||||||
|
#include "vectors/gimpvectors.h"
|
||||||
|
|
||||||
#include "xcf-private.h"
|
#include "xcf-private.h"
|
||||||
#include "xcf-read.h"
|
#include "xcf-read.h"
|
||||||
#include "xcf-seek.h"
|
#include "xcf-seek.h"
|
||||||
#include "xcf-write.h"
|
#include "xcf-write.h"
|
||||||
|
|
||||||
#include "path.h"
|
|
||||||
#include "pathP.h"
|
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
static gboolean xcf_save_image_props (XcfInfo *info,
|
static gboolean xcf_save_image_props (XcfInfo *info,
|
||||||
GimpImage *gimage,
|
GimpImage *gimage,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
@ -94,7 +96,7 @@ static void xcf_save_parasite (gchar *key,
|
||||||
GimpParasite *parasite,
|
GimpParasite *parasite,
|
||||||
XcfInfo *info);
|
XcfInfo *info);
|
||||||
static gboolean xcf_save_old_paths (XcfInfo *info,
|
static gboolean xcf_save_old_paths (XcfInfo *info,
|
||||||
PathList *paths,
|
GimpImage *gimage,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
|
||||||
|
@ -414,8 +416,8 @@ xcf_save_image_props (XcfInfo *info,
|
||||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_UNIT,
|
xcf_check_error (xcf_save_prop (info, gimage, PROP_UNIT,
|
||||||
error, gimage->unit));
|
error, gimage->unit));
|
||||||
|
|
||||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_PATHS,
|
if (gimp_container_num_children (gimage->vectors) > 0)
|
||||||
error, gimage->paths));
|
xcf_check_error (xcf_save_prop (info, gimage, PROP_PATHS, error));
|
||||||
|
|
||||||
if (gimage->unit >= _gimp_unit_get_number_of_built_in_units (gimage->gimp))
|
if (gimage->unit >= _gimp_unit_get_number_of_built_in_units (gimage->gimp))
|
||||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_USER_UNIT,
|
xcf_check_error (xcf_save_prop (info, gimage, PROP_USER_UNIT,
|
||||||
|
@ -852,34 +854,33 @@ xcf_save_prop (XcfInfo *info,
|
||||||
break;
|
break;
|
||||||
case PROP_PATHS:
|
case PROP_PATHS:
|
||||||
{
|
{
|
||||||
PathList *paths_list;
|
guint32 base, length;
|
||||||
guint32 base, length;
|
glong pos;
|
||||||
glong pos;
|
|
||||||
|
|
||||||
paths_list = va_arg (args, PathList *);
|
xcf_write_int32_check_error (info->fp, (guint32 *) &prop_type, 1);
|
||||||
|
|
||||||
if (paths_list)
|
/* because we don't know how much room the paths list will take
|
||||||
|
we save the file position and write the length later
|
||||||
|
*/
|
||||||
|
pos = info->cp;
|
||||||
|
xcf_write_int32_check_error (info->fp, &length, 1);
|
||||||
|
|
||||||
|
base = info->cp;
|
||||||
|
|
||||||
|
xcf_check_error (xcf_save_old_paths (info, gimage, error));
|
||||||
|
|
||||||
|
length = info->cp - base;
|
||||||
|
|
||||||
|
/* go back to the saved position and write the length */
|
||||||
|
xcf_check_error (xcf_seek_pos (info, pos, error));
|
||||||
|
xcf_write_int32 (info->fp, &length, 1, &tmp_error);
|
||||||
|
if (tmp_error)
|
||||||
{
|
{
|
||||||
xcf_write_int32_check_error (info->fp, (guint32 *) &prop_type, 1);
|
g_propagate_error (error, tmp_error);
|
||||||
/* because we don't know how much room the paths list will take
|
return FALSE;
|
||||||
we save the file position and write the length later
|
|
||||||
*/
|
|
||||||
pos = info->cp;
|
|
||||||
xcf_write_int32_check_error (info->fp, &length, 1);
|
|
||||||
base = info->cp;
|
|
||||||
xcf_check_error (xcf_save_old_paths (info, paths_list, error));
|
|
||||||
length = info->cp - base;
|
|
||||||
/* go back to the saved position and write the length */
|
|
||||||
xcf_check_error (xcf_seek_pos (info, pos, error));
|
|
||||||
xcf_write_int32 (info->fp, &length, 1, &tmp_error);
|
|
||||||
if (tmp_error)
|
|
||||||
{
|
|
||||||
g_propagate_error (error, tmp_error);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
xcf_check_error (xcf_seek_end (info, error));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xcf_check_error (xcf_seek_end (info, error));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_USER_UNIT:
|
case PROP_USER_UNIT:
|
||||||
|
@ -1379,13 +1380,15 @@ xcf_save_parasite (gchar *key,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
xcf_save_old_paths (XcfInfo *info,
|
xcf_save_old_paths (XcfInfo *info,
|
||||||
PathList *paths,
|
GimpImage *gimage,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
guint32 num_paths;
|
GimpVectors *active_vectors;
|
||||||
GSList *slist;
|
guint32 num_paths;
|
||||||
GError *tmp_error = NULL;
|
guint32 active_index = 0;
|
||||||
|
GList *list;
|
||||||
|
GError *tmp_error = NULL;
|
||||||
|
|
||||||
/* Write out the following:-
|
/* Write out the following:-
|
||||||
*
|
*
|
||||||
|
@ -1395,20 +1398,31 @@ xcf_save_old_paths (XcfInfo *info,
|
||||||
* then each path:-
|
* then each path:-
|
||||||
*/
|
*/
|
||||||
|
|
||||||
xcf_write_int32_check_error (info->fp,
|
num_paths = gimp_container_num_children (gimage->vectors);
|
||||||
(guint32 *) &paths->last_selected_row, 1);
|
|
||||||
|
|
||||||
num_paths = g_slist_length (paths->bz_paths);
|
active_vectors = gimp_image_get_active_vectors (gimage);
|
||||||
|
|
||||||
|
if (active_vectors)
|
||||||
|
active_index = gimp_container_get_child_index (gimage->vectors,
|
||||||
|
GIMP_OBJECT (active_vectors));
|
||||||
|
|
||||||
|
xcf_write_int32_check_error (info->fp, &active_index, 1);
|
||||||
xcf_write_int32_check_error (info->fp, &num_paths, 1);
|
xcf_write_int32_check_error (info->fp, &num_paths, 1);
|
||||||
|
|
||||||
for (slist = paths->bz_paths; slist; slist = g_slist_next (slist))
|
for (list = GIMP_LIST (gimage->vectors)->list;
|
||||||
|
list;
|
||||||
|
list = g_list_next (list))
|
||||||
{
|
{
|
||||||
Path *bzp = slist->data;
|
GimpVectors *vectors = list->data;
|
||||||
guint8 state = bzp->state;
|
gchar *name;
|
||||||
guint32 num_points;
|
guint32 locked;
|
||||||
guint32 closed;
|
guint8 state;
|
||||||
guint32 version;
|
guint32 num_points = 0;
|
||||||
GSList *points;
|
guint32 closed = FALSE;
|
||||||
|
guint32 version;
|
||||||
|
guint32 pathtype;
|
||||||
|
guint32 tattoo;
|
||||||
|
GList *strokes;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* name (string)
|
* name (string)
|
||||||
|
@ -1416,39 +1430,106 @@ xcf_save_old_paths (XcfInfo *info,
|
||||||
* state (gchar)
|
* state (gchar)
|
||||||
* closed (gint)
|
* closed (gint)
|
||||||
* number points (gint)
|
* number points (gint)
|
||||||
* number paths (gint unused)
|
* version (gint)
|
||||||
|
* pathtype (gint)
|
||||||
|
* tattoo (gint)
|
||||||
* then each point.
|
* then each point.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
xcf_write_string_check_error (info->fp, &bzp->name, 1);
|
|
||||||
xcf_write_int32_check_error (info->fp, &bzp->locked, 1);
|
|
||||||
xcf_write_int8_check_error (info->fp, &state, 1);
|
|
||||||
|
|
||||||
closed = bzp->closed;
|
|
||||||
xcf_write_int32_check_error (info->fp, &closed, 1);
|
|
||||||
|
|
||||||
num_points = g_slist_length (bzp->path_details);
|
for (strokes = vectors->strokes; strokes; strokes = g_list_next (strokes))
|
||||||
xcf_write_int32_check_error (info->fp, &num_points, 1);
|
|
||||||
|
|
||||||
version = 3;
|
|
||||||
xcf_write_int32_check_error (info->fp, &version, 1);
|
|
||||||
xcf_write_int32_check_error (info->fp, &bzp->pathtype, 1);
|
|
||||||
xcf_write_int32_check_error (info->fp, &bzp->tattoo, 1);
|
|
||||||
|
|
||||||
for (points = bzp->path_details; points; points = g_slist_next (points))
|
|
||||||
{
|
{
|
||||||
PathPoint *bpt = points->data;
|
GimpStroke *stroke = strokes->data;
|
||||||
gfloat xfloat = bpt->x;
|
gint n_anchors;
|
||||||
gfloat yfloat = bpt->y;
|
|
||||||
|
|
||||||
/* type (gint32)
|
g_assert (stroke->closed || ! strokes->next);
|
||||||
* x (float)
|
|
||||||
* y (float)
|
|
||||||
*/
|
|
||||||
|
|
||||||
xcf_write_int32_check_error (info->fp, &bpt->type, 1);
|
n_anchors = g_list_length (stroke->anchors);
|
||||||
xcf_write_float_check_error (info->fp, &xfloat, 1);
|
|
||||||
xcf_write_float_check_error (info->fp, &yfloat, 1);
|
if (! stroke->closed)
|
||||||
|
n_anchors--;
|
||||||
|
|
||||||
|
num_points += n_anchors;
|
||||||
|
|
||||||
|
if (! strokes->next)
|
||||||
|
closed = stroke->closed;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = (gchar *) gimp_object_get_name (GIMP_OBJECT (vectors));
|
||||||
|
locked = gimp_item_get_linked (GIMP_ITEM (vectors));
|
||||||
|
state = closed ? 4 : 2;
|
||||||
|
version = 3;
|
||||||
|
pathtype = 1;
|
||||||
|
tattoo = gimp_item_get_tattoo (GIMP_ITEM (vectors));
|
||||||
|
|
||||||
|
xcf_write_string_check_error (info->fp, &name, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &locked, 1);
|
||||||
|
xcf_write_int8_check_error (info->fp, &state, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &closed, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &num_points, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &version, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &pathtype, 1);
|
||||||
|
xcf_write_int32_check_error (info->fp, &tattoo, 1);
|
||||||
|
|
||||||
|
for (strokes = vectors->strokes;
|
||||||
|
strokes;
|
||||||
|
strokes = g_list_next (strokes))
|
||||||
|
{
|
||||||
|
GimpStroke *stroke = strokes->data;
|
||||||
|
GList *anchors;
|
||||||
|
|
||||||
|
for (anchors = stroke->anchors;
|
||||||
|
anchors;
|
||||||
|
anchors = g_list_next (anchors))
|
||||||
|
{
|
||||||
|
GimpAnchor *anchor = anchors->data;
|
||||||
|
guint32 type;
|
||||||
|
gfloat x;
|
||||||
|
gfloat y;
|
||||||
|
|
||||||
|
/* skip the first anchor, will add it at the end if needed */
|
||||||
|
if (! anchors->prev)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* type (gint32)
|
||||||
|
* x (float)
|
||||||
|
* y (float)
|
||||||
|
*/
|
||||||
|
|
||||||
|
switch (anchor->type)
|
||||||
|
{
|
||||||
|
case GIMP_ANCHOR_ANCHOR:
|
||||||
|
if (strokes->prev && anchors->prev == stroke->anchors)
|
||||||
|
type = 3; /* new stroke marker */
|
||||||
|
else
|
||||||
|
type = 1; /* ordinary anchor */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GIMP_ANCHOR_CONTROL:
|
||||||
|
type = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = anchor->position.x;
|
||||||
|
y = anchor->position.y;
|
||||||
|
|
||||||
|
xcf_write_int32_check_error (info->fp, &type, 1);
|
||||||
|
xcf_write_float_check_error (info->fp, &x, 1);
|
||||||
|
xcf_write_float_check_error (info->fp, &y, 1);
|
||||||
|
|
||||||
|
/* write the skipped control point */
|
||||||
|
if (! anchors->next && stroke->closed)
|
||||||
|
{
|
||||||
|
anchor = (GimpAnchor *) stroke->anchors->data;
|
||||||
|
|
||||||
|
type = 2;
|
||||||
|
x = anchor->position.x;
|
||||||
|
y = anchor->position.y;
|
||||||
|
|
||||||
|
xcf_write_int32_check_error (info->fp, &type, 1);
|
||||||
|
xcf_write_float_check_error (info->fp, &x, 1);
|
||||||
|
xcf_write_float_check_error (info->fp, &y, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1156,7 +1156,6 @@ docs/gimprc-1.3.5
|
||||||
docs/gimptool-1.3.1
|
docs/gimptool-1.3.1
|
||||||
docs/gimp-remote-1.3.1
|
docs/gimp-remote-1.3.1
|
||||||
tips/Makefile
|
tips/Makefile
|
||||||
pixmaps/Makefile
|
|
||||||
cursors/Makefile
|
cursors/Makefile
|
||||||
themes/Makefile
|
themes/Makefile
|
||||||
themes/Default/Makefile
|
themes/Default/Makefile
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
.xvpics
|
|
||||||
.thumbnails
|
|
|
@ -1,16 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
delete.xpm \
|
|
||||||
duplicate.xpm \
|
|
||||||
locked.xbm \
|
|
||||||
new.xpm \
|
|
||||||
path.xbm \
|
|
||||||
penadd.xpm \
|
|
||||||
pendel.xpm \
|
|
||||||
penedit.xpm \
|
|
||||||
pennorm.xpm \
|
|
||||||
penstroke.xpm \
|
|
||||||
topath.xpm \
|
|
||||||
toselection.xpm \
|
|
||||||
wilber2.xpm
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * delete_xpm[] = {
|
|
||||||
"16 16 9 1",
|
|
||||||
" c None",
|
|
||||||
". c #0B0B0D",
|
|
||||||
"+ c #EBEBE9",
|
|
||||||
"@ c #B8B8B9",
|
|
||||||
"# c #9E9E9D",
|
|
||||||
"$ c #3E3E3D",
|
|
||||||
"% c #2F2F2D",
|
|
||||||
"& c #242424",
|
|
||||||
"* c #656566",
|
|
||||||
" ... ",
|
|
||||||
" .++@. ",
|
|
||||||
" ........... ",
|
|
||||||
" .+++++++@@##. ",
|
|
||||||
" ............. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+%+&+.@. ",
|
|
||||||
" .+$+$+$+%#. ",
|
|
||||||
" .######**$. ",
|
|
||||||
" ......... "};
|
|
|
@ -1,48 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * duplicate_xpm[] = {
|
|
||||||
"16 16 29 1",
|
|
||||||
" c None",
|
|
||||||
". c #000000",
|
|
||||||
"+ c #F0F0F0",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #CCCCCC",
|
|
||||||
"$ c #F6F6F6",
|
|
||||||
"% c #666666",
|
|
||||||
"& c #F5F5F5",
|
|
||||||
"* c #F7F7F7",
|
|
||||||
"= c #EEEEEE",
|
|
||||||
"- c #FAFAFA",
|
|
||||||
"; c #E6E6E6",
|
|
||||||
"> c #DDDDDD",
|
|
||||||
", c #DBDBDB",
|
|
||||||
"' c #F2F2F2",
|
|
||||||
") c #F4F4F4",
|
|
||||||
"! c #E5E5E5",
|
|
||||||
"~ c #F8F8F8",
|
|
||||||
"{ c #F9F9F9",
|
|
||||||
"] c #E7E7E7",
|
|
||||||
"^ c #F3F3F3",
|
|
||||||
"/ c #EFEFEF",
|
|
||||||
"( c #E1E1E1",
|
|
||||||
"_ c #D8D8D8",
|
|
||||||
": c #EBEBEB",
|
|
||||||
"< c #D3D3D3",
|
|
||||||
"[ c #D2D2D2",
|
|
||||||
"} c #C7C7C7",
|
|
||||||
"| c #BDBDBD",
|
|
||||||
" ....... ",
|
|
||||||
" ..+@@@#. ",
|
|
||||||
" .@.$@@@%. ",
|
|
||||||
" .@#.&*@@%......",
|
|
||||||
".....=@-*%.@@@#.",
|
|
||||||
".=;>,'-@)%.@@@%.",
|
|
||||||
".@@+@@@&!%.*@@%.",
|
|
||||||
".@@~@@{];%.@-*%.",
|
|
||||||
".@$&*^/(_%.-@)%.",
|
|
||||||
".@)$&:;,_%.@&!%.",
|
|
||||||
".@(>,<[}|%.{];%.",
|
|
||||||
".#%%%%%%%%./(_%.",
|
|
||||||
"...........;,_%.",
|
|
||||||
" .@(>,<[}|%.",
|
|
||||||
" .#%%%%%%%%.",
|
|
||||||
" ..........."};
|
|
|
@ -1,9 +0,0 @@
|
||||||
/* Made with Gimp */
|
|
||||||
#define locked_width 20
|
|
||||||
#define locked_height 20
|
|
||||||
static char locked_bits[] = {
|
|
||||||
0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0xc0, 0x3f, 0x00, 0xe0, 0x70, 0x00,
|
|
||||||
0x60, 0x60, 0x00, 0x30, 0xc0, 0x00, 0x30, 0xc0, 0x00, 0xf8, 0xff, 0x01,
|
|
||||||
0xf8, 0xff, 0x01, 0x18, 0x80, 0x01, 0x18, 0x86, 0x01, 0x18, 0x8f, 0x01,
|
|
||||||
0x18, 0x8f, 0x01, 0x18, 0x86, 0x01, 0x18, 0x86, 0x01, 0x18, 0x86, 0x01,
|
|
||||||
0x18, 0x80, 0x01, 0xf8, 0xff, 0x01, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00 };
|
|
|
@ -1,56 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * new_xpm[] = {
|
|
||||||
"16 16 37 1",
|
|
||||||
" c None",
|
|
||||||
". c #000000",
|
|
||||||
"+ c #F0F0F0",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #CCCCCC",
|
|
||||||
"$ c #F6F6F6",
|
|
||||||
"% c #666666",
|
|
||||||
"& c #F5F5F5",
|
|
||||||
"* c #F7F7F7",
|
|
||||||
"= c #F9F9F9",
|
|
||||||
"- c #EEEEEE",
|
|
||||||
"; c #FAFAFA",
|
|
||||||
"> c #E6E6E6",
|
|
||||||
", c #DDDDDD",
|
|
||||||
"' c #DBDBDB",
|
|
||||||
") c #F2F2F2",
|
|
||||||
"! c #FCFCFC",
|
|
||||||
"~ c #F4F4F4",
|
|
||||||
"{ c #FBFBFB",
|
|
||||||
"] c #E5E5E5",
|
|
||||||
"^ c #F8F8F8",
|
|
||||||
"/ c #F1F1F1",
|
|
||||||
"( c #E7E7E7",
|
|
||||||
"_ c #F3F3F3",
|
|
||||||
": c #EFEFEF",
|
|
||||||
"< c #E1E1E1",
|
|
||||||
"[ c #D8D8D8",
|
|
||||||
"} c #EBEBEB",
|
|
||||||
"| c #DFDFDF",
|
|
||||||
"1 c #E8E8E8",
|
|
||||||
"2 c #DADADA",
|
|
||||||
"3 c #C9C9C9",
|
|
||||||
"4 c #D3D3D3",
|
|
||||||
"5 c #D2D2D2",
|
|
||||||
"6 c #CDCDCD",
|
|
||||||
"7 c #C7C7C7",
|
|
||||||
"8 c #BDBDBD",
|
|
||||||
" ",
|
|
||||||
" ........ ",
|
|
||||||
" ..+@@@@#. ",
|
|
||||||
" .@.$@@@@%. ",
|
|
||||||
" .@#.&*=@@%. ",
|
|
||||||
" .....-@@;*%. ",
|
|
||||||
" .->,');!@~%. ",
|
|
||||||
" .@@+@@@{&]%. ",
|
|
||||||
" .@@^@@=/(>%. ",
|
|
||||||
" .@$&*_:(<[%. ",
|
|
||||||
" .@~$&}>|'[%. ",
|
|
||||||
" .@1](<2[#3%. ",
|
|
||||||
" .@<,'45678%. ",
|
|
||||||
" .#%%%%%%%%%. ",
|
|
||||||
" ............ ",
|
|
||||||
" "};
|
|
|
@ -1,9 +0,0 @@
|
||||||
#define path_width 21
|
|
||||||
#define path_height 21
|
|
||||||
static unsigned char path_bits[] = {
|
|
||||||
0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0xe0, 0xff, 0x00, 0xe0, 0xff, 0x01,
|
|
||||||
0xe0, 0xe1, 0x01, 0xe0, 0xe1, 0x01, 0xe0, 0xe1, 0x01, 0xe0, 0xe1, 0x01,
|
|
||||||
0xe0, 0xff, 0x01, 0xe0, 0xff, 0x00, 0xe0, 0x7f, 0x00, 0xe0, 0x0f, 0x00,
|
|
||||||
0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00,
|
|
||||||
0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00,
|
|
||||||
0x00, 0x00, 0x00, };
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * penadd_xpm[] = {
|
|
||||||
"25 20 5 1",
|
|
||||||
" c None",
|
|
||||||
". c #949194",
|
|
||||||
"+ c #000000",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #DEDADE",
|
|
||||||
" ",
|
|
||||||
" . ",
|
|
||||||
" + ",
|
|
||||||
" +. ",
|
|
||||||
" +++. ",
|
|
||||||
" +@+#+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+++##+. ",
|
|
||||||
" +@#.+.##+. ",
|
|
||||||
" +#####+.. ",
|
|
||||||
" +###+.. ",
|
|
||||||
" +++++. + ",
|
|
||||||
" +.+++. +. ",
|
|
||||||
" +.+++. +++++ ",
|
|
||||||
" +.+++. +... ",
|
|
||||||
" +.+++. +. ",
|
|
||||||
" ..... . "};
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * pendel_xpm[] = {
|
|
||||||
"25 20 5 1",
|
|
||||||
" c None",
|
|
||||||
". c #949194",
|
|
||||||
"+ c #000000",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #DEDADE",
|
|
||||||
" ",
|
|
||||||
" . ",
|
|
||||||
" + ",
|
|
||||||
" +. ",
|
|
||||||
" +++. ",
|
|
||||||
" +@+#+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+++##+. ",
|
|
||||||
" +@#.+.##+. ",
|
|
||||||
" +#####+.. ",
|
|
||||||
" +###+.. ",
|
|
||||||
" +++++. ",
|
|
||||||
" +.+++. ",
|
|
||||||
" +.+++. +++++ ",
|
|
||||||
" +.+++. ..... ",
|
|
||||||
" +.+++. ",
|
|
||||||
" ..... "};
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * penedit_xpm[] = {
|
|
||||||
"25 20 5 1",
|
|
||||||
" c None",
|
|
||||||
". c #000000",
|
|
||||||
"+ c #949194",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #DEDADE",
|
|
||||||
" ... . ",
|
|
||||||
" ........ ... ",
|
|
||||||
" .. ... .. .. ",
|
|
||||||
" .. .+ ..... ",
|
|
||||||
" .. ...+ ",
|
|
||||||
" . .@.#.+ ",
|
|
||||||
" . .@.@.+ ",
|
|
||||||
" .@.@.+ ",
|
|
||||||
" .@#.##.+ ",
|
|
||||||
" .@#.##.+ ",
|
|
||||||
" .@#...##.+ ",
|
|
||||||
" .@#+.+##.+ ",
|
|
||||||
" .#####.++ ",
|
|
||||||
" .###.++ ",
|
|
||||||
" .....+ ",
|
|
||||||
" .+...+ ",
|
|
||||||
" .+...+ ",
|
|
||||||
" .+...+ ",
|
|
||||||
" .+...+ ",
|
|
||||||
" +++++ "};
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * pennorm_xpm[] = {
|
|
||||||
"25 20 5 1",
|
|
||||||
" c None",
|
|
||||||
". c #949194",
|
|
||||||
"+ c #000000",
|
|
||||||
"@ c #FFFFFF",
|
|
||||||
"# c #DEDADE",
|
|
||||||
" ",
|
|
||||||
" . ",
|
|
||||||
" + ",
|
|
||||||
" +. ",
|
|
||||||
" +++. ",
|
|
||||||
" +@+#+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@+@+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+##+. ",
|
|
||||||
" +@#+++##+. ",
|
|
||||||
" +@#.+.##+. ",
|
|
||||||
" +#####+.. ",
|
|
||||||
" +###+.. ",
|
|
||||||
" +++++. ",
|
|
||||||
" +.+++. ",
|
|
||||||
" +.+++. ",
|
|
||||||
" +.+++. ",
|
|
||||||
" +.+++. ",
|
|
||||||
" ..... "};
|
|
|
@ -1,93 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * penstroke_xpm[] = {
|
|
||||||
"17 17 73 1",
|
|
||||||
" c None",
|
|
||||||
". c #C5C5C5",
|
|
||||||
"+ c #A4A4A4",
|
|
||||||
"@ c #858585",
|
|
||||||
"# c #8F8F8F",
|
|
||||||
"$ c #B2B2B2",
|
|
||||||
"% c #979797",
|
|
||||||
"& c #343434",
|
|
||||||
"* c #262626",
|
|
||||||
"= c #323232",
|
|
||||||
"- c #2C2C2C",
|
|
||||||
"; c #1D1D1D",
|
|
||||||
"> c #111111",
|
|
||||||
", c #838383",
|
|
||||||
"' c #545454",
|
|
||||||
") c #202020",
|
|
||||||
"! c #525252",
|
|
||||||
"~ c #A1A1A1",
|
|
||||||
"{ c #BBBBBB",
|
|
||||||
"] c #C0C0C0",
|
|
||||||
"^ c #B7B7B7",
|
|
||||||
"/ c #949494",
|
|
||||||
"( c #494949",
|
|
||||||
"_ c #181818",
|
|
||||||
": c #575757",
|
|
||||||
"< c #535353",
|
|
||||||
"[ c #888888",
|
|
||||||
"} c #C8C8C8",
|
|
||||||
"| c #C7C7C7",
|
|
||||||
"1 c #989898",
|
|
||||||
"2 c #5A5A5A",
|
|
||||||
"3 c #9A9A9A",
|
|
||||||
"4 c #8C8C8C",
|
|
||||||
"5 c #969696",
|
|
||||||
"6 c #141414",
|
|
||||||
"7 c #282828",
|
|
||||||
"8 c #555555",
|
|
||||||
"9 c #4B4B4B",
|
|
||||||
"0 c #2A2A2A",
|
|
||||||
"a c #B0B0B0",
|
|
||||||
"b c #999999",
|
|
||||||
"c c #919191",
|
|
||||||
"d c #1C1C1C",
|
|
||||||
"e c #B6B6B6",
|
|
||||||
"f c #8B8B8B",
|
|
||||||
"g c #292929",
|
|
||||||
"h c #8E8E8E",
|
|
||||||
"i c #1E1E1E",
|
|
||||||
"j c #B8B8B8",
|
|
||||||
"k c #8A8A8A",
|
|
||||||
"l c #B3B3B3",
|
|
||||||
"m c #909090",
|
|
||||||
"n c #BABABA",
|
|
||||||
"o c #C6C6C6",
|
|
||||||
"p c #4C4C4C",
|
|
||||||
"q c #2B2B2B",
|
|
||||||
"r c #0E0E0E",
|
|
||||||
"s c #4F4F4F",
|
|
||||||
"t c #939393",
|
|
||||||
"u c #1F1F1F",
|
|
||||||
"v c #585858",
|
|
||||||
"w c #484848",
|
|
||||||
"x c #222222",
|
|
||||||
"y c #505050",
|
|
||||||
"z c #B9B9B9",
|
|
||||||
"A c #9D9D9D",
|
|
||||||
"B c #101010",
|
|
||||||
"C c #5B5B5B",
|
|
||||||
"D c #272727",
|
|
||||||
"E c #252525",
|
|
||||||
"F c #808080",
|
|
||||||
"G c #959595",
|
|
||||||
"H c #C9C9C9",
|
|
||||||
" .+@#$ ",
|
|
||||||
" %&*=-;>-, ",
|
|
||||||
" ')!~{]^/(_: ",
|
|
||||||
" <*[} |1;2 ",
|
|
||||||
" 3;4 56, ",
|
|
||||||
" 78} |90 ",
|
|
||||||
"a>b c>{",
|
|
||||||
"#d^ edf",
|
|
||||||
",g] ]0,",
|
|
||||||
"hij e;k",
|
|
||||||
"l>% m>n",
|
|
||||||
" *(o |pq ",
|
|
||||||
" [rh 4i[ ",
|
|
||||||
" s0t} |tuv ",
|
|
||||||
" wxy5z]{A9BC ",
|
|
||||||
" cDBu0ED0F ",
|
|
||||||
" lf,GH "};
|
|
|
@ -1,24 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * topath_xpm[] = {
|
|
||||||
"19 17 4 1",
|
|
||||||
" c None",
|
|
||||||
". c #020204",
|
|
||||||
"+ c #E8E8E9",
|
|
||||||
"@ c #B5B5B6",
|
|
||||||
".. ... ..",
|
|
||||||
"...................",
|
|
||||||
".. +++...+++ ..",
|
|
||||||
" .@ @ @ @ @. ",
|
|
||||||
" .@ @ @ @ @ @. ",
|
|
||||||
" + @ @ @ @ @ + ",
|
|
||||||
" + @ @ @ @ @ @ + ",
|
|
||||||
" .@ @ @ @ @ @ @. ",
|
|
||||||
" . @ @ @ @ @ @ . ",
|
|
||||||
" .@ @ @ @ @ @ @. ",
|
|
||||||
" + @ @ @ @ @ @ + ",
|
|
||||||
" + @ @ @ @ @ + ",
|
|
||||||
" .@ @ @ @ @ @. ",
|
|
||||||
" .@ @ @ @ @. ",
|
|
||||||
".. +++...+++ ..",
|
|
||||||
"...................",
|
|
||||||
".. ... .."};
|
|
|
@ -1,23 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * toselection_xpm[] = {
|
|
||||||
"16 16 4 1",
|
|
||||||
" c None",
|
|
||||||
". c #020204",
|
|
||||||
"+ c #E8E8E9",
|
|
||||||
"@ c #B5B5B6",
|
|
||||||
" ... ",
|
|
||||||
" +++@ @+++ ",
|
|
||||||
" .@ @ @ @ @. ",
|
|
||||||
" .@ @ @ @ @ @. ",
|
|
||||||
" + @ @ @ @ @ + ",
|
|
||||||
"+ @ @ @ @ @ @ + ",
|
|
||||||
".@ @ @ @ @ @ @. ",
|
|
||||||
". @ @ @ @ @ @ . ",
|
|
||||||
".@ @ @ @ @ @ @. ",
|
|
||||||
"+ @ @ @ @ @ @ + ",
|
|
||||||
" + @ @ @ @ @ + ",
|
|
||||||
" .@ @ @ @ @ @. ",
|
|
||||||
" .@ @ @ @ @. ",
|
|
||||||
" +++@ @+++ ",
|
|
||||||
" ... ",
|
|
||||||
" "};
|
|
|
@ -1,107 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * wilber2_xpm[] = {
|
|
||||||
"95 95 9 1",
|
|
||||||
" c None",
|
|
||||||
". c #FFFFFF",
|
|
||||||
"+ c #B6B6B6",
|
|
||||||
"@ c #494949",
|
|
||||||
"# c #DBDBDB",
|
|
||||||
"$ c #6D6D6D",
|
|
||||||
"% c #929292",
|
|
||||||
"& c #242424",
|
|
||||||
"* c #000000",
|
|
||||||
" .+. ",
|
|
||||||
" .+. .+@# ..+. ",
|
|
||||||
" #@+. .$@# .%&. ",
|
|
||||||
" #&+. .&@#. .+&$. ..#. ",
|
|
||||||
" .++. +*$.. .$*%. .%*%. ..%%. ",
|
|
||||||
" .$@. #@*%. .#*&. .#&@. .%*%. ",
|
|
||||||
" .$&+. .#&&+ .%*&# .#&*# #&@.. ",
|
|
||||||
" .+*&+. .#*&+ .#&*$. .#@*&# #&$. ",
|
|
||||||
" .+#. ..%&&+. .%*&# .%**+. .$**%. .+&@. ..++. ",
|
|
||||||
" .%@#. ..@*$. #@*&#. .$**+. #**@.. ..+@*@. .#$&%. ",
|
|
||||||
" .+&$.. .@*%. .@**%. .#&*@.. #&*@. .%**&+. .%*%.. ",
|
|
||||||
" #&*@+. #&*@.. .+&*&+. .%**%. .$*&#. #&*&+. .$*#. ",
|
|
||||||
" .#+.+$*&+. #&*&%.. .+&*&+..#&*&#..+**%. #&*@. ..+&*# ",
|
|
||||||
" ... .@&...@*%. .%***$#. .%**&# .@**%. #&*@. .@*@. .+@&*&. .... ",
|
|
||||||
" +%..#&$+..@*@.. ..+@**&+..#&**+ .@**$..#**&# .$*&# #&**@+. .#+@%. ",
|
|
||||||
" +&%.+*@+#.@**%#.. .#@**@. #&**+.#&**+..%**&. .$*&+ +**$#. .$*@#. ",
|
|
||||||
" #@&$@**%+#%***@%#...+**&#.+&*@##@**$..%&**$..#&**+ .+**+. .#&&#. ",
|
|
||||||
" .+@&***@##.%&***&%. #&*&#.@*&+#@**$.#@**&%..#$**&+ .%*&# ..#+$*%. ",
|
|
||||||
" ..+&**&#...#+&**&#.#&*$.%**@.#&**+.%**&+.#$&***$. .$*&# .#$&**&+. ",
|
|
||||||
" .@***%.....+&**+.%**+.%**@.#&**+.$**@..@***&%#..+&*&# .%***@%. ",
|
|
||||||
" ... .$***@......$**+.@**+.+***+.@**$.%**@.+&**$#..#%&**&#..$**%#.. ..... ",
|
|
||||||
" #$#. .$***&%.....#@*#.@**@#.$**&+#&**+#&*&#+**&#.%&*****%.#$@*@.. ..%@&+ ",
|
|
||||||
" #@@++#.. .$****&$+....#$#.%***@+#$**&+%**@.$**+#&*@.#&***&@%#%$+$*%. .%*&%. ",
|
|
||||||
" .+&*&&$. .@******&%.....++#%&**&+#@**$#***#%**$#&*&#+**&%##+@%##&*+. .#+++@&+.. ",
|
|
||||||
" .+%$**+..$********$.....#+++@**&+%**&#&**#%**@#@*&#%**$#$&*%..%*&# .+&****$. ",
|
|
||||||
" ...@*&%#%*****@$@*@#....#&$+&**$+**&+***#@**$#&*&+%**&***@..#&*$. .@***&@#. ",
|
|
||||||
" .+***&&*****&##+@@+....%&&&**@+**&@**@%***+$**&+$*****@#..#@%#..+&*@+#.. ",
|
|
||||||
" .@**********%..#@&+...#&$%&*&@**&**&@***@%&***&*****&+.........$*&#. ",
|
|
||||||
" ... ..+++%&*****@...#&@...#&@##@*********************@%&%....++###$**$. ..##.. ",
|
|
||||||
" +$+..#.. ..+*****&#...+&+..+@&$.#&@%+%$$@&&**&***&&@$+#%&#...$&*&&&**&+. .....#@&&%. ",
|
|
||||||
" #@&@@&$#. #@*****@#...%$...#@&.+$#......##++%%%%+#.+$@&%...+&*******@. .#%$++@*$%#. ",
|
|
||||||
" .#&*&**$#..#++#.#******&+..#%....+%....................#&@%+....@**&$$@&$#..#@*****$... ",
|
|
||||||
" ..#.%**&@&***&+.$*******&%%++%$@&$.............##++#..#+......+**&#........$***&&@#. ",
|
|
||||||
" ..@********@##&*************&%..........+##....+$%#.......+@**%.#++#...%&*@+##.. ",
|
|
||||||
" .#@@@%%$&**+.+&************%..........%&&@$.....$$#.....+&**&##@**&$%@**&#. ",
|
|
||||||
" .......+&*&##@***********@...........%$%+@+.....$%.#%$$@***%#@*********%. ",
|
|
||||||
" .%***&&***********+...............+@#....#$+#+##+@&%#$***@@&***$.. ... ..... ",
|
|
||||||
" .##..#+#. ..###.#&**************&#........#$#.....%#.....#@.....#$%$&*&%#.#%$+....+%#..+@@%# ",
|
|
||||||
" #@@$$&*@#..+@&&@+.%&*&&@&*********@+#......+*@$$+..........@#.....#&***%..##... ..$&*&$$&&&@+ ",
|
|
||||||
" .#@**@**&@&*****&#.####.#%*******@&*&$+....+%+++$$#.....##.%+......&**@#+@&@%...#$******&+... ",
|
|
||||||
" ..+#.%&****&&***$#.#+$&@&******&+##%@&@#........$+.....%&@%%......@&$#+&****@%$@**@%%$$#. ",
|
|
||||||
" ..%&&$+##+@**&@&***********&#....%&#..#......#.....@**&%...#+.@+#+&**********$#..... ",
|
|
||||||
" ..##.. .#&***************&#....+&#.#$........+.#%****%...$*%&@&***@%+$****@#. ",
|
|
||||||
" .....+&**&@%%$*******&#....+@#.#&&@$@$..#*&&*****#.+#$*******$#...+@@%#. ",
|
|
||||||
" .#%@$#.+%%##++%&******&#...#@+...+%+$$$%.#&******&.#&&&**&**&$##%%#.......#.. ",
|
|
||||||
" .###...+&***&#...+@&*********&+...$%.....#.......%&*****%.#@****%%%+#%&**&+. .#%&@+..#+#..",
|
|
||||||
".##.+@*&%%$******&++$&************%..+&#.....+#.......%@&**&+..#+@**@%%%@*****&+##+@***&$%&*&%#",
|
|
||||||
"#$&&*&&*****&$$@*******&&&********@..%$.......%%#......#$@++@$%$@&&*************&&***&&***&$$$#",
|
|
||||||
".#%@@##$**&$#...%****&$##+&*******&#.%$........%@%%%%%$$%#..#+++%$$@@&***&*********&+##%@$#....",
|
|
||||||
" .......+$+.. ..%&&@+#+@&*********$.+@.........#+++++#.............+&**$+$****&**@#. ..... ",
|
|
||||||
" ... ..#+#.##..$*************$#&$..........%$@$$%...........#&**@+$&****$+#.. ",
|
|
||||||
" .#$&*&%#.#$***************$@*$.......+@&@@@$+..........#@***********@# .... ",
|
|
||||||
" .#$*****@@&**&@%%***********&&*%.....$@%#...............%************&#..#%%#. ",
|
|
||||||
" ..+#.#$***&&*****&%#+@**************&#....#.................#&*************$%$&**&#... ",
|
|
||||||
" ..#@*&&&**@+##%&**&+#@*****************@+....................#@&********************&%%@. ",
|
|
||||||
" .#+%@*&****$#. ..+$%##$*******************&&$%+###............#$&@***********&&**&$+%&***&. ",
|
|
||||||
" #$&*&%#%@&$#...##....+&**@%@***************@@@&&&@@$+#......#%@**@&*********&@@$%#...+@@%%. ",
|
|
||||||
" ..#++....#....%&&@%+%&**%#+&***********&%@*@##&&@&***&@%%%%$&****&$********@$@#... ..... ",
|
|
||||||
" .%*********@#$************&@+&&@$.&*+%****************&%@&**&@$@$#. ",
|
|
||||||
" .#&**&&****&#+&***&*******&+$&*$#$%&*$$*$&***&**********&@@@@$@&*@+###++#. ",
|
|
||||||
" ....#@**$##+$&$+.@**&+%&********&&*%.#@&&@@*@$*&&***************$+#@***&&&**$.. ",
|
|
||||||
" .#%%$&**%.. .....+**&#+&***********@+..#&%+*&$&&+%****************$.+*********%.... ",
|
|
||||||
" .#@*****@#..#+%+#+&**%#&***&*********&$+.+#.@$#+++&***@***$%@@&&&**&#.%@@@%+%&*&%%%$. ",
|
|
||||||
" ..#%*&@&&@#..#@**&&&**&#%***%%&**********&@+#.####+&****%***@+####+@*&+...#....#@*****. ",
|
|
||||||
" #$&*@#.###. .$********%.@**$#@**************&@@@&****&**%$****@$%#.#**$.. .#%%+%.. ",
|
|
||||||
" #%$%#. #&**@%%$@+.#&*&#$***$%&*****************&$**@#$******@#.&**$#..... .... ",
|
|
||||||
" ..... .+**$#......%**@#&**$+&**&@&**********&**@%***%#+$@&***%.@***&@@@%#. ",
|
|
||||||
" ...#@*@#...+%%$&**$#&*&#$**&%@**&$**&$&*&%**&#@***$+..+@**$.+&*******%. ",
|
|
||||||
" .#%$&**%..#$******&+#&*@.@**$+&**%@**$%**@+***++@****@#.#&*$..#%$$$@**@.. ",
|
|
||||||
" #@****@#..%****&&&+.#**@#&**+%**@+&**+%**&#@**@+#%&***@#.&*@........%&*%##. ",
|
|
||||||
" .+*&@@$+. .@**@+###..%**@.@**#%**@#&**++**&++&**&%##$***+.&**%.. ..$**&@+. ",
|
|
||||||
" ..+@&#.... .&*&#...#+$&**$.$**++**@#@**%.&**@#+&***$.#@*&+.@***$+#.. .#%$@&@# ",
|
|
||||||
" .$*&$. .#**%..#$*****&#.$**%#@*&+%**&#+&**@##@***#.$*&#.+&*****@+. ....+@% ",
|
|
||||||
" #++#.. ..$*&+..%***&@%+.#@**$.$**$.@**$.+&**$.#&**%.@*&#..+$@&***@. .## ",
|
|
||||||
" ..+$**&# .$**@#...+@***+.%**@.+***#.%**&#.@**##@**+. ...#+&*&# ",
|
|
||||||
" .$****$. .@**+..#@****$..$**@.#&**+.#**&##@*@..@**&+.. .#**+.. ",
|
|
||||||
" #&*@$+.. .$*@. .@***$#.#%&**%.#&**+.+**$.+**%..+&**&$+.. .@*&%+. ",
|
|
||||||
" .+*$#.. .@*@. .&**%..#@**&%##@**$.#@*&#.$**$. .+@&**&$. .+@&*&#. ",
|
|
||||||
" .#@*+. .#&*@. .&*&#..%**&+..$**$#.%**$..%**&#. ..+$**&# ..#%*%. ",
|
|
||||||
" #&&%. .#@**$. .@*&. .@**$. +**&#..@**%..#&**@#.. ..$**+ ..$@. ",
|
|
||||||
" #+#.. .+&**&+. .%*&. .$**+. +**@# .$**@#..+@**&%.. .#&*+. ..#. ",
|
|
||||||
" .$*@%#. .%*&# .+**%. #&*&#..+&*&+. .#%&**%. #&*$#. ",
|
|
||||||
" .@&#.. ..$**+ .&*$. .$**+. .+&*&+. ..%**$. .%&*@+. ",
|
|
||||||
" .#@&. ..%**&# .$*&#...@*&#. .+&*&#. .#&*%. ..#%*$. ",
|
|
||||||
" .$&$. .%**@+. .%**%. .+**$. .$**%. #&*+. ..@@. ",
|
|
||||||
" #@%#. .$*@#. ..@**+. #**&. .%**+. #&*%.. .+$# ",
|
|
||||||
" ##.. .%*+. .%**$. .+**$. .%*&# .%&&%. ... ",
|
|
||||||
" .+*%. #@*$.. .@*@#. .@*$. ..#&&# ",
|
|
||||||
" #@&+. .$*+. .@*%. .%&@#. .%&# ",
|
|
||||||
" +&%. .+*%. .$*%. ..%*$. .+@# ",
|
|
||||||
" ##.. .+*$. .#&&# .#@@. .#. ",
|
|
||||||
" .$&#. .$&# .@$. ",
|
|
||||||
" .$%. .@@. .%+. ",
|
|
||||||
" .#.. .%+. .... ",
|
|
||||||
" ... "};
|
|
Loading…
Reference in New Issue