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>
|
||||
|
||||
* app/core/gimpdrawable.[ch]: added GimpDrawable::alpha_changed()
|
||||
|
|
|
@ -4,7 +4,6 @@ SUBDIRS = \
|
|||
m4macros \
|
||||
tools \
|
||||
regexrepl \
|
||||
pixmaps \
|
||||
cursors \
|
||||
themes \
|
||||
po \
|
||||
|
|
|
@ -35,21 +35,7 @@ scriptdata =
|
|||
|
||||
bin_PROGRAMS = gimp-1.3
|
||||
|
||||
##
|
||||
## 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 = \
|
||||
gimp_1_3_SOURCES = \
|
||||
appenv.h \
|
||||
app_procs.c \
|
||||
app_procs.h \
|
||||
|
@ -62,10 +48,6 @@ stuff_sources = \
|
|||
libgimp_glue.c \
|
||||
libgimp_glue.h
|
||||
|
||||
gimp_1_3_SOURCES = \
|
||||
$(bye_sources) \
|
||||
$(stuff_sources)
|
||||
|
||||
EXTRA_DIST = \
|
||||
makefile.msc \
|
||||
gimp.rc \
|
||||
|
@ -95,6 +77,7 @@ INCLUDES = \
|
|||
|
||||
gimp_1_3_LDADD = \
|
||||
$(gimp_exp) \
|
||||
$(top_builddir)/libgimpwidgets/libgimpwidgets-$(LT_RELEASE).la \
|
||||
config/libappconfig.a \
|
||||
gui/libappgui.a \
|
||||
display/libappdisplay.a \
|
||||
|
@ -114,7 +97,6 @@ gimp_1_3_LDADD = \
|
|||
$(top_builddir)/libgimpmath/libgimpmath-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpbase/libgimpbase-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpmodule/libgimpmodule-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpwidgets/libgimpwidgets-$(LT_RELEASE).la \
|
||||
$(GTK_LIBS) \
|
||||
$(PANGOFT2_LIBS) \
|
||||
$(LIBART_LIBS) \
|
||||
|
|
|
@ -131,13 +131,6 @@ typedef struct _GimpPaletteEntry GimpPaletteEntry;
|
|||
typedef struct _GimpPlugInDebug GimpPlugInDebug;
|
||||
|
||||
|
||||
/* EEK stuff */
|
||||
|
||||
typedef struct _Path Path;
|
||||
typedef struct _PathPoint PathPoint;
|
||||
typedef struct _PathList PathList;
|
||||
|
||||
|
||||
/* functions */
|
||||
|
||||
typedef void (* GimpInitStatusFunc) (const gchar *text1,
|
||||
|
|
|
@ -42,8 +42,6 @@
|
|||
#include "gimplist.h"
|
||||
#include "gimpparasitelist.h"
|
||||
|
||||
#include "path.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
|
@ -61,7 +59,6 @@ gimp_image_duplicate (GimpImage *gimage)
|
|||
GimpDrawable *new_floating_sel_drawable = NULL;
|
||||
GimpDrawable *floating_sel_drawable = NULL;
|
||||
GimpParasiteList *parasites;
|
||||
PathList *paths;
|
||||
gint count;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
||||
return new_gimage;
|
||||
|
|
|
@ -60,8 +60,6 @@
|
|||
|
||||
#include "vectors/gimpvectors.h"
|
||||
|
||||
#include "path.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
|
@ -474,8 +472,6 @@ gimp_image_init (GimpImage *gimage)
|
|||
|
||||
gimage->parasites = gimp_parasite_list_new ();
|
||||
|
||||
gimage->paths = NULL;
|
||||
|
||||
gimage->qmask_state = FALSE;
|
||||
gimage->qmask_inverted = FALSE;
|
||||
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));
|
||||
|
||||
/* FIXME paths */
|
||||
|
||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimage->undo_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 *
|
||||
gimp_image_get_layers (const GimpImage *gimage)
|
||||
|
@ -2092,23 +2086,6 @@ gimp_image_get_vectors (const GimpImage *gimage)
|
|||
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 *
|
||||
gimp_image_active_drawable (const GimpImage *gimage)
|
||||
{
|
||||
|
|
|
@ -140,8 +140,6 @@ struct _GimpImage
|
|||
|
||||
GimpParasiteList *parasites; /* Plug-in parasite data */
|
||||
|
||||
PathList *paths; /* Paths data for this image */
|
||||
|
||||
gboolean visible[MAX_CHANNELS]; /* visible 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_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);
|
||||
GimpLayer * gimp_image_get_active_layer (const GimpImage *gimage);
|
||||
GimpChannel * gimp_image_get_active_channel (const GimpImage *gimage);
|
||||
|
|
|
@ -41,13 +41,119 @@
|
|||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
#include "pixmaps/wilber2.xpm"
|
||||
|
||||
|
||||
#define ANIMATION_STEPS 16
|
||||
#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 void about_dialog_destroy (GtkObject *object,
|
||||
gpointer data);
|
||||
|
@ -68,7 +174,7 @@ static void about_dialog_tool_drop (GtkWidget *widget,
|
|||
static gboolean about_dialog_timer (gpointer data);
|
||||
|
||||
|
||||
extern gboolean double_speed;
|
||||
static gboolean double_speed = FALSE;
|
||||
|
||||
static GtkWidget *about_dialog = NULL;
|
||||
static GtkWidget *logo_area = NULL;
|
||||
|
|
|
@ -83,7 +83,6 @@
|
|||
#include "file-new-dialog.h"
|
||||
#include "layers-commands.h"
|
||||
#include "module-browser.h"
|
||||
#include "paths-dialog.h"
|
||||
#include "preferences-dialog.h"
|
||||
#include "templates-commands.h"
|
||||
#include "tips-dialog.h"
|
||||
|
@ -123,8 +122,6 @@ static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
|
|||
GimpContext *context);
|
||||
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
static void dialogs_set_path_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
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,
|
||||
GimpImage *gimage,
|
||||
GimpContainerView *view);
|
||||
static void dialogs_path_view_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GtkWidget *view);
|
||||
static void dialogs_image_editor_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpImageEditor *editor);
|
||||
|
@ -740,32 +734,6 @@ dialogs_vectors_list_view_new (GimpDialogFactory *factory,
|
|||
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 *
|
||||
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
||||
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
|
||||
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||
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);
|
||||
}
|
||||
|
||||
static void
|
||||
dialogs_path_view_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
paths_dialog_update (gimage);
|
||||
}
|
||||
|
||||
static void
|
||||
dialogs_image_editor_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
|
|
|
@ -165,8 +165,6 @@ static const GimpDialogFactoryEntry dock_entries[] =
|
|||
0, FALSE, FALSE, FALSE, TRUE },
|
||||
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
||||
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,
|
||||
0, FALSE, FALSE, FALSE, TRUE },
|
||||
{ "gimp-selection-editor", dialogs_selection_editor_new,
|
||||
|
|
|
@ -43,8 +43,6 @@ dialogs_sources = \
|
|||
palette-import-dialog.h \
|
||||
palette-select.c \
|
||||
palette-select.h \
|
||||
paths-dialog.c \
|
||||
paths-dialog.h \
|
||||
pattern-select.c \
|
||||
pattern-select.h \
|
||||
preferences-dialog.c \
|
||||
|
|
|
@ -41,13 +41,119 @@
|
|||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
#include "pixmaps/wilber2.xpm"
|
||||
|
||||
|
||||
#define ANIMATION_STEPS 16
|
||||
#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 void about_dialog_destroy (GtkObject *object,
|
||||
gpointer data);
|
||||
|
@ -68,7 +174,7 @@ static void about_dialog_tool_drop (GtkWidget *widget,
|
|||
static gboolean about_dialog_timer (gpointer data);
|
||||
|
||||
|
||||
extern gboolean double_speed;
|
||||
static gboolean double_speed = FALSE;
|
||||
|
||||
static GtkWidget *about_dialog = NULL;
|
||||
static GtkWidget *logo_area = NULL;
|
||||
|
|
|
@ -83,7 +83,6 @@
|
|||
#include "file-new-dialog.h"
|
||||
#include "layers-commands.h"
|
||||
#include "module-browser.h"
|
||||
#include "paths-dialog.h"
|
||||
#include "preferences-dialog.h"
|
||||
#include "templates-commands.h"
|
||||
#include "tips-dialog.h"
|
||||
|
@ -123,8 +122,6 @@ static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
|
|||
GimpContext *context);
|
||||
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
static void dialogs_set_path_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
static void dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||
GimpContext *context);
|
||||
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,
|
||||
GimpImage *gimage,
|
||||
GimpContainerView *view);
|
||||
static void dialogs_path_view_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GtkWidget *view);
|
||||
static void dialogs_image_editor_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpImageEditor *editor);
|
||||
|
@ -740,32 +734,6 @@ dialogs_vectors_list_view_new (GimpDialogFactory *factory,
|
|||
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 *
|
||||
dialogs_indexed_palette_new (GimpDialogFactory *factory,
|
||||
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
|
||||
dialogs_set_image_editor_context_func (GimpDockable *dockable,
|
||||
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);
|
||||
}
|
||||
|
||||
static void
|
||||
dialogs_path_view_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
paths_dialog_update (gimage);
|
||||
}
|
||||
|
||||
static void
|
||||
dialogs_image_editor_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
|
|
|
@ -104,7 +104,6 @@ GimpItemFactoryEntry dialogs_menu_entries[] =
|
|||
MENU_SEPARATOR ("/Add Tab/---"),
|
||||
|
||||
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,
|
||||
dialogs_remove_tab_cmd_callback, 0,
|
||||
|
|
|
@ -165,8 +165,6 @@ static const GimpDialogFactoryEntry dock_entries[] =
|
|||
0, FALSE, FALSE, FALSE, TRUE },
|
||||
{ "gimp-vectors-list", dialogs_vectors_list_view_new,
|
||||
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,
|
||||
0, FALSE, FALSE, FALSE, TRUE },
|
||||
{ "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 "pixmaps/wilber2.xpm"
|
||||
|
||||
|
||||
/* local function prototypes */
|
||||
|
||||
static void gui_threads_enter (Gimp *gimp);
|
||||
static void gui_threads_leave (Gimp *gimp);
|
||||
static void gui_set_busy (Gimp *gimp);
|
||||
static void gui_unset_busy (Gimp *gimp);
|
||||
static void gui_message (Gimp *gimp,
|
||||
const gchar *message);
|
||||
static GimpObject * gui_display_new (GimpImage *gimage,
|
||||
guint scale);
|
||||
static void gui_threads_enter (Gimp *gimp);
|
||||
static void gui_threads_leave (Gimp *gimp);
|
||||
static void gui_set_busy (Gimp *gimp);
|
||||
static void gui_unset_busy (Gimp *gimp);
|
||||
static void gui_message (Gimp *gimp,
|
||||
const gchar *message);
|
||||
static GimpObject * gui_display_new (GimpImage *gimage,
|
||||
guint scale);
|
||||
|
||||
static void gui_themes_dir_foreach_func (GimpDatafileData *file_data);
|
||||
static gint gui_rotate_the_shield_harmonics (GtkWidget *widget,
|
||||
GdkEvent *eevent,
|
||||
gpointer data);
|
||||
|
||||
static gboolean gui_exit_callback (Gimp *gimp,
|
||||
gboolean kill_it);
|
||||
static gboolean gui_exit_finish_callback (Gimp *gimp,
|
||||
gboolean kill_it);
|
||||
static void gui_really_quit_callback (GtkWidget *button,
|
||||
gboolean quit,
|
||||
gpointer data);
|
||||
static void gui_show_tooltips_notify (GObject *config,
|
||||
GParamSpec *param_spec,
|
||||
Gimp *gimp);
|
||||
static void gui_display_changed (GimpContext *context,
|
||||
GimpDisplay *display,
|
||||
Gimp *gimp);
|
||||
static void gui_image_disconnect (GimpImage *gimage,
|
||||
Gimp *gimp);
|
||||
static void gui_themes_dir_foreach_func (GimpDatafileData *file_data);
|
||||
static gboolean gui_exit_callback (Gimp *gimp,
|
||||
gboolean kill_it);
|
||||
static gboolean gui_exit_finish_callback (Gimp *gimp,
|
||||
gboolean kill_it);
|
||||
static void gui_really_quit_callback (GtkWidget *button,
|
||||
gboolean quit,
|
||||
gpointer data);
|
||||
static void gui_show_tooltips_notify (GObject *config,
|
||||
GParamSpec *param_spec,
|
||||
Gimp *gimp);
|
||||
static void gui_display_changed (GimpContext *context,
|
||||
GimpDisplay *display,
|
||||
Gimp *gimp);
|
||||
static void gui_image_disconnect (GimpImage *gimage,
|
||||
Gimp *gimp);
|
||||
|
||||
|
||||
/* private variables */
|
||||
|
@ -102,7 +96,6 @@ static GHashTable *themes_hash = NULL;
|
|||
|
||||
static GimpItemFactory *toolbox_item_factory = NULL;
|
||||
static GimpItemFactory *image_item_factory = NULL;
|
||||
static GimpItemFactory *paths_item_factory = NULL;
|
||||
|
||||
|
||||
/* public functions */
|
||||
|
@ -304,12 +297,6 @@ gui_restore (Gimp *gimp,
|
|||
gimp,
|
||||
TRUE);
|
||||
|
||||
paths_item_factory = gimp_menu_factory_menu_new (global_menu_factory,
|
||||
"<Paths>",
|
||||
GTK_TYPE_MENU,
|
||||
gimp,
|
||||
FALSE);
|
||||
|
||||
gimp_devices_restore (gimp);
|
||||
|
||||
if (GIMP_GUI_CONFIG (gimp->config)->restore_session || restore_session)
|
||||
|
@ -438,8 +425,6 @@ gui_message (Gimp *gimp,
|
|||
}
|
||||
}
|
||||
|
||||
gboolean double_speed = FALSE;
|
||||
|
||||
static GimpObject *
|
||||
gui_display_new (GimpImage *gimage,
|
||||
guint scale)
|
||||
|
@ -457,11 +442,6 @@ gui_display_new (GimpImage *gimage,
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -483,54 +463,6 @@ gui_themes_dir_foreach_func (GimpDatafileData *file_data)
|
|||
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
|
||||
gui_exit_callback (Gimp *gimp,
|
||||
gboolean kill_it)
|
||||
|
@ -588,9 +520,6 @@ gui_exit_finish_callback (Gimp *gimp,
|
|||
g_object_unref (image_item_factory);
|
||||
image_item_factory = NULL;
|
||||
|
||||
g_object_unref (paths_item_factory);
|
||||
paths_item_factory = NULL;
|
||||
|
||||
menus_exit (gimp);
|
||||
render_exit (gimp);
|
||||
|
||||
|
|
|
@ -53,7 +53,6 @@
|
|||
#include "menus.h"
|
||||
#include "palette-editor-menu.h"
|
||||
#include "palettes-menu.h"
|
||||
#include "paths-dialog.h"
|
||||
#include "patterns-menu.h"
|
||||
#include "qmask-menu.h"
|
||||
#include "templates-menu.h"
|
||||
|
@ -149,12 +148,6 @@ menus_init (Gimp *gimp)
|
|||
n_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,
|
||||
"<Dialogs>", "dialogs",
|
||||
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 "palette-editor-menu.h"
|
||||
#include "palettes-menu.h"
|
||||
#include "paths-dialog.h"
|
||||
#include "patterns-menu.h"
|
||||
#include "qmask-menu.h"
|
||||
#include "templates-menu.h"
|
||||
|
@ -149,12 +148,6 @@ menus_init (Gimp *gimp)
|
|||
n_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,
|
||||
"<Dialogs>", "dialogs",
|
||||
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 \
|
||||
gimpairbrushtool.c \
|
||||
gimpairbrushtool.h \
|
||||
gimpbezierselecttool.c \
|
||||
gimpbezierselecttool.h \
|
||||
gimpblendoptions.c \
|
||||
gimpblendoptions.h \
|
||||
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 "gimpbezierselecttool.h"
|
||||
#include "gimpiscissorstool.h"
|
||||
#include "gimpeditselectiontool.h"
|
||||
#include "gimpselectionoptions.h"
|
||||
|
|
|
@ -63,8 +63,6 @@
|
|||
#include "gimptransformtool-undo.h"
|
||||
#include "tool_manager.h"
|
||||
|
||||
#include "path_transform.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
|
@ -462,9 +460,11 @@ gimp_transform_tool_button_release (GimpTool *tool,
|
|||
}
|
||||
else
|
||||
{
|
||||
#if 0
|
||||
/* Only update the paths preview */
|
||||
path_transform_current_path (gdisp->gimage,
|
||||
tr_tool->transform, TRUE);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -480,9 +480,11 @@ gimp_transform_tool_button_release (GimpTool *tool,
|
|||
|
||||
gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
|
||||
|
||||
#if 0
|
||||
/* Update the paths preview */
|
||||
path_transform_current_path (gdisp->gimage,
|
||||
tr_tool->transform, TRUE);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -761,8 +763,10 @@ gimp_transform_tool_draw (GimpDrawTool *draw_tool)
|
|||
gimp_matrix3_duplicate (tr_tool->transform, tmp_matrix);
|
||||
}
|
||||
|
||||
#if 0
|
||||
path_transform_draw_current (GIMP_TOOL (draw_tool)->gdisp,
|
||||
draw_tool, tmp_matrix);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
#include "tool_manager.h"
|
||||
|
||||
#include "gimpairbrushtool.h"
|
||||
#include "gimpbezierselecttool.h"
|
||||
#include "gimpblendtool.h"
|
||||
#include "gimpbrightnesscontrasttool.h"
|
||||
#include "gimpbucketfilltool.h"
|
||||
|
@ -119,7 +118,6 @@ tools_init (Gimp *gimp)
|
|||
|
||||
/* selection tools */
|
||||
|
||||
gimp_bezier_select_tool_register,
|
||||
gimp_iscissors_tool_register,
|
||||
gimp_by_color_select_tool_register,
|
||||
gimp_fuzzy_select_tool_register,
|
||||
|
|
|
@ -657,7 +657,9 @@ static void
|
|||
gimp_vectors_real_stroke_add (GimpVectors *vectors,
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,12 +54,19 @@
|
|||
#include "xcf-read.h"
|
||||
#include "xcf-seek.h"
|
||||
|
||||
#include "path.h"
|
||||
#include "pathP.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,
|
||||
GimpImage *gimage);
|
||||
static gboolean xcf_load_layer_props (XcfInfo *info,
|
||||
|
@ -90,9 +97,9 @@ static gboolean xcf_load_tile_rle (XcfInfo *info,
|
|||
Tile *tile,
|
||||
gint data_length);
|
||||
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);
|
||||
static Path * xcf_load_old_path (XcfInfo *info,
|
||||
static gboolean xcf_load_old_path (XcfInfo *info,
|
||||
GimpImage *gimage);
|
||||
static PathPoint * xcf_load_old_path_point1 (XcfInfo *info,
|
||||
GimpCoords *coords);
|
||||
|
@ -408,11 +415,7 @@ xcf_load_image_props (XcfInfo *info,
|
|||
break;
|
||||
|
||||
case PROP_PATHS:
|
||||
{
|
||||
PathList *paths = xcf_load_old_paths (info, gimage);
|
||||
/* add to gimage */
|
||||
gimp_image_set_paths (gimage, paths);
|
||||
}
|
||||
xcf_load_old_paths (info, gimage);
|
||||
break;
|
||||
|
||||
case PROP_USER_UNIT:
|
||||
|
@ -1305,15 +1308,12 @@ xcf_load_parasite (XcfInfo *info)
|
|||
return p;
|
||||
}
|
||||
|
||||
static PathList *
|
||||
static gboolean
|
||||
xcf_load_old_paths (XcfInfo *info,
|
||||
GimpImage *gimage)
|
||||
{
|
||||
guint32 num_paths;
|
||||
guint32 last_selected_row;
|
||||
PathList *paths;
|
||||
GSList *bzp_list = NULL;
|
||||
|
||||
guint32 num_paths;
|
||||
guint32 last_selected_row;
|
||||
GimpVectors *active_vectors;
|
||||
|
||||
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);
|
||||
|
||||
while (num_paths-- > 0)
|
||||
{
|
||||
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);
|
||||
xcf_load_old_path (info, gimage);
|
||||
|
||||
active_vectors = (GimpVectors *)
|
||||
gimp_container_get_child_by_index (gimage->vectors, last_selected_row);
|
||||
|
@ -1337,24 +1330,22 @@ xcf_load_old_paths (XcfInfo *info,
|
|||
if (active_vectors)
|
||||
gimp_image_set_active_vectors (gimage, active_vectors);
|
||||
|
||||
return paths;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static Path *
|
||||
static gboolean
|
||||
xcf_load_old_path (XcfInfo *info,
|
||||
GimpImage *gimage)
|
||||
{
|
||||
Path *bzp;
|
||||
gchar *name;
|
||||
guint32 locked;
|
||||
guint8 state;
|
||||
guint32 closed;
|
||||
guint32 num_points;
|
||||
guint32 version; /* changed from num_paths */
|
||||
GimpTattoo tattoo = 0;
|
||||
GSList *pts_list = NULL;
|
||||
PathType ptype;
|
||||
|
||||
gchar *name;
|
||||
guint32 locked;
|
||||
guint8 state;
|
||||
guint32 closed;
|
||||
guint32 num_points;
|
||||
guint32 version; /* changed from num_paths */
|
||||
GimpTattoo tattoo = 0;
|
||||
GSList *pts_list = NULL;
|
||||
GSList *free_list = NULL;
|
||||
GimpVectors *vectors;
|
||||
GimpCoords *coords;
|
||||
GimpCoords *curr_coord;
|
||||
|
@ -1380,8 +1371,6 @@ xcf_load_old_path (XcfInfo *info,
|
|||
|
||||
if (version == 1)
|
||||
{
|
||||
ptype = BEZIER;
|
||||
|
||||
while (num_points-- > 0)
|
||||
{
|
||||
PathPoint *bpt;
|
||||
|
@ -1392,8 +1381,10 @@ xcf_load_old_path (XcfInfo *info,
|
|||
}
|
||||
else if (version == 2)
|
||||
{
|
||||
guint32 dummy;
|
||||
|
||||
/* 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)
|
||||
{
|
||||
|
@ -1405,8 +1396,10 @@ xcf_load_old_path (XcfInfo *info,
|
|||
}
|
||||
else if (version == 3)
|
||||
{
|
||||
guint32 dummy;
|
||||
|
||||
/* 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);
|
||||
|
||||
while (num_points-- > 0)
|
||||
|
@ -1424,14 +1417,13 @@ xcf_load_old_path (XcfInfo *info,
|
|||
|
||||
g_print ("\n");
|
||||
|
||||
bzp = path_new (gimage,
|
||||
ptype, pts_list, closed, (gint) state, locked, tattoo, name);
|
||||
|
||||
if (tattoo)
|
||||
GIMP_ITEM (vectors)->tattoo = tattoo;
|
||||
|
||||
curr_coord = coords;
|
||||
|
||||
free_list = pts_list;
|
||||
|
||||
while (num_coords > 0)
|
||||
{
|
||||
GimpStroke *stroke;
|
||||
|
@ -1478,11 +1470,13 @@ xcf_load_old_path (XcfInfo *info,
|
|||
}
|
||||
|
||||
g_free (coords);
|
||||
g_slist_foreach (free_list, (GFunc) g_free, NULL);
|
||||
g_slist_free (free_list);
|
||||
|
||||
gimp_image_add_vectors (gimage, vectors,
|
||||
gimp_container_num_children (gimage->vectors));
|
||||
|
||||
return bzp;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
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 *) &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->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);
|
||||
|
||||
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->y = y;
|
||||
|
|
|
@ -43,16 +43,18 @@
|
|||
#include "core/gimpparasitelist.h"
|
||||
#include "core/gimpunit.h"
|
||||
|
||||
#include "vectors/gimpanchor.h"
|
||||
#include "vectors/gimpstroke.h"
|
||||
#include "vectors/gimpvectors.h"
|
||||
|
||||
#include "xcf-private.h"
|
||||
#include "xcf-read.h"
|
||||
#include "xcf-seek.h"
|
||||
#include "xcf-write.h"
|
||||
|
||||
#include "path.h"
|
||||
#include "pathP.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
static gboolean xcf_save_image_props (XcfInfo *info,
|
||||
GimpImage *gimage,
|
||||
GError **error);
|
||||
|
@ -94,7 +96,7 @@ static void xcf_save_parasite (gchar *key,
|
|||
GimpParasite *parasite,
|
||||
XcfInfo *info);
|
||||
static gboolean xcf_save_old_paths (XcfInfo *info,
|
||||
PathList *paths,
|
||||
GimpImage *gimage,
|
||||
GError **error);
|
||||
|
||||
|
||||
|
@ -414,8 +416,8 @@ xcf_save_image_props (XcfInfo *info,
|
|||
xcf_check_error (xcf_save_prop (info, gimage, PROP_UNIT,
|
||||
error, gimage->unit));
|
||||
|
||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_PATHS,
|
||||
error, gimage->paths));
|
||||
if (gimp_container_num_children (gimage->vectors) > 0)
|
||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_PATHS, error));
|
||||
|
||||
if (gimage->unit >= _gimp_unit_get_number_of_built_in_units (gimage->gimp))
|
||||
xcf_check_error (xcf_save_prop (info, gimage, PROP_USER_UNIT,
|
||||
|
@ -852,34 +854,33 @@ xcf_save_prop (XcfInfo *info,
|
|||
break;
|
||||
case PROP_PATHS:
|
||||
{
|
||||
PathList *paths_list;
|
||||
guint32 base, length;
|
||||
glong pos;
|
||||
guint32 base, length;
|
||||
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);
|
||||
/* 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, 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));
|
||||
g_propagate_error (error, tmp_error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
xcf_check_error (xcf_seek_end (info, error));
|
||||
}
|
||||
break;
|
||||
case PROP_USER_UNIT:
|
||||
|
@ -1379,13 +1380,15 @@ xcf_save_parasite (gchar *key,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
xcf_save_old_paths (XcfInfo *info,
|
||||
PathList *paths,
|
||||
GError **error)
|
||||
xcf_save_old_paths (XcfInfo *info,
|
||||
GimpImage *gimage,
|
||||
GError **error)
|
||||
{
|
||||
guint32 num_paths;
|
||||
GSList *slist;
|
||||
GError *tmp_error = NULL;
|
||||
GimpVectors *active_vectors;
|
||||
guint32 num_paths;
|
||||
guint32 active_index = 0;
|
||||
GList *list;
|
||||
GError *tmp_error = NULL;
|
||||
|
||||
/* Write out the following:-
|
||||
*
|
||||
|
@ -1395,20 +1398,31 @@ xcf_save_old_paths (XcfInfo *info,
|
|||
* then each path:-
|
||||
*/
|
||||
|
||||
xcf_write_int32_check_error (info->fp,
|
||||
(guint32 *) &paths->last_selected_row, 1);
|
||||
num_paths = gimp_container_num_children (gimage->vectors);
|
||||
|
||||
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);
|
||||
|
||||
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;
|
||||
guint8 state = bzp->state;
|
||||
guint32 num_points;
|
||||
guint32 closed;
|
||||
guint32 version;
|
||||
GSList *points;
|
||||
GimpVectors *vectors = list->data;
|
||||
gchar *name;
|
||||
guint32 locked;
|
||||
guint8 state;
|
||||
guint32 num_points = 0;
|
||||
guint32 closed = FALSE;
|
||||
guint32 version;
|
||||
guint32 pathtype;
|
||||
guint32 tattoo;
|
||||
GList *strokes;
|
||||
|
||||
/*
|
||||
* name (string)
|
||||
|
@ -1416,39 +1430,106 @@ xcf_save_old_paths (XcfInfo *info,
|
|||
* state (gchar)
|
||||
* closed (gint)
|
||||
* number points (gint)
|
||||
* number paths (gint unused)
|
||||
* version (gint)
|
||||
* pathtype (gint)
|
||||
* tattoo (gint)
|
||||
* 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);
|
||||
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))
|
||||
for (strokes = vectors->strokes; strokes; strokes = g_list_next (strokes))
|
||||
{
|
||||
PathPoint *bpt = points->data;
|
||||
gfloat xfloat = bpt->x;
|
||||
gfloat yfloat = bpt->y;
|
||||
GimpStroke *stroke = strokes->data;
|
||||
gint n_anchors;
|
||||
|
||||
/* type (gint32)
|
||||
* x (float)
|
||||
* y (float)
|
||||
*/
|
||||
g_assert (stroke->closed || ! strokes->next);
|
||||
|
||||
xcf_write_int32_check_error (info->fp, &bpt->type, 1);
|
||||
xcf_write_float_check_error (info->fp, &xfloat, 1);
|
||||
xcf_write_float_check_error (info->fp, &yfloat, 1);
|
||||
n_anchors = g_list_length (stroke->anchors);
|
||||
|
||||
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/gimp-remote-1.3.1
|
||||
tips/Makefile
|
||||
pixmaps/Makefile
|
||||
cursors/Makefile
|
||||
themes/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