Lots o' changes for 0.99.17. See ChangeLog for details.

-Yosh
This commit is contained in:
Manish Singh 1998-01-04 00:43:51 +00:00
parent cce695a6ae
commit a4e97e61f9
161 changed files with 22867 additions and 4485 deletions

View File

@ -1,3 +1,28 @@
Sat Jan 3 16:48:02 PST 1998 Manish Singh <yosh@gimp.org>
* app/colormaps.c: check for NULL pointer access when not enough
colormaps for standard colormaps (gimp-joke-971219-0)
* app/fileops.c: fix for saving files in the wrong place
* app/fuzzy_select.c: now less aggressive (doesn't grab the whole
image with diagonal 1-pixel wide line) Too conservative now?
* app/text_tool.c: negative border-value disables autocropping
of text
* libgimp/gimplayer.c: gimp_layer_copy pdb called with correct args
* docs/Wilber.xcf.gz: added logo to docs dir :)
* Added DigitalSignature, FractalExplorer (not made by default),
facesaver (not made by default), and Stegano plugins
* Updated Encrypt_Decrypt, changing the dir name (no more
Encript_Decript)
* Updated plugins with their new registry versions
Thu Dec 25 23:04:00 PST 1997 Manish Singh <yosh@gimp.org>
* Updates from the plugin registry: Compose, Film, FITS, ps,

9
NOTES
View File

@ -1,8 +1,8 @@
Some notes on GIMP-0.99.16:
Some notes on GIMP-0.99.17:
* The AA, MathMap, GimpTcl, GAG, user_filter, rcm, and Gfig plugins are
included but not yet integrated into the build cause of instability or
other unresolved issues.
* The AA, MathMap, GimpTcl, GAG, user_filter, rcm, FractalExplorer, and Gfig
plugins are included but not yet integrated into the build cause of instability
or other unresolved issues.
Please read the file TODO-DIST to find more information about things
that were not included or that are (possibly) broken in this distribution.
@ -11,3 +11,4 @@ that were not included or that are (possibly) broken in this distribution.
-- Federico Mena <federico@nuclecu.unam.mx>
-- Christoph Hoegl <darkwing@bsddmail.franken.de>
-- Manish Singh <yosh@gimp.org>

4
README
View File

@ -1,12 +1,12 @@
The GIMP: the GNU Image Manipulation Program
--------------------------------------------
This is version 0.99.16 of the GIMP. For the most part it contains all
This is version 0.99.17 of the GIMP. For the most part it contains all
of the features that will be in version 1.0 of the GIMP. It does,
however, lack a) documentation, b) robustness and c) some of the
plug-ins found in the 0.54 version.
The main difference between v0.99.16 and much earlier versions is the
The main difference between v0.99.17 and much earlier versions is the
use of a tile based memory management for images. This allows the GIMP
to work with images much larger than physical memory in a usable
fashion. Before such memory management, the GIMP was nearly unusable

3
TODO
View File

@ -3,9 +3,6 @@ discovered.
* Fix srand/srandom and rand/random confusion in plugins
* Fix megawidget link ordering in deinterlace, emboss, hot, nlfilt,
sinus, and waves plugins
* configure: SunOS 4 SEEK_* and RAND_MAX defines
* configure: check for regex library presence

View File

@ -19,11 +19,17 @@
#include <math.h>
#include "appenv.h"
#include "app_procs.h"
#include "brushes.h"
#include "colormaps.h"
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "colormaps.h"
#include "gradient.h"
#include "palette.h"
#include "patterns.h"
#include "plug_in.h"
#include "temp_buf.h"
#include "tile_swap.h"
GdkVisual *g_visual = NULL;
@ -194,8 +200,23 @@ get_standard_colormaps ()
gtk_widget_set_default_colormap (gtk_preview_get_cmap ());
info = gtk_preview_get_info ();
g_visual = info->visual;
if (g_visual->depth == 8 && info->reserved_pixels == NULL) {
g_print("GIMP cannot get enough colormaps to boot.\n");
g_print("Try exiting other color intensive applications.\n");
swapping_free ();
brushes_free ();
patterns_free ();
palettes_free ();
gradients_free ();
palette_free ();
procedural_db_free ();
plug_in_kill ();
tile_swap_exit ();
gtk_exit(0);
}
g_cmap = info->cmap;
color_pixel_vals = info->color_pixels;
gray_pixel_vals = info->gray_pixels;

View File

@ -543,7 +543,8 @@ file_save_callback (GtkWidget *w,
file_save_as_callback (w, client_data);
}
else
file_save (gdisplay->gimage->ID, gimage_filename (gdisplay->gimage), gimage_filename(gdisplay->gimage));
file_save (gdisplay->gimage->ID, gimage_filename (gdisplay->gimage),
prune_filename (gimage_filename(gdisplay->gimage)));
}
}
@ -788,7 +789,7 @@ file_save (int image_ID,
gimage_clean_all (gimage);
/* set the image title */
gimage_set_filename (gimage, prune_filename (filename));
gimage_set_filename (gimage, filename);
}
g_free (return_vals);

View File

@ -227,7 +227,7 @@ find_contiguous_region_helper (PixelRegion *mask, PixelRegion *src,
antialias, threshold, x, &start, &end))
return;
for (i = start; i < end; i++)
for (i = start + 1; i < end; i++)
{
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y - 1, col);
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y + 1, col);

View File

@ -1511,6 +1511,7 @@ text_render (GImage *gimage,
unsigned char color[MAX_CHANNELS];
char *str;
int nstrs;
int crop;
int line_width, line_height;
int pixmap_width, pixmap_height;
int text_width, text_height;
@ -1530,6 +1531,10 @@ text_render (GImage *gimage,
else
antialias = 1;
/* Dont crop the text if border is negative */
crop = (border >= 0);
if (!crop) border = 0;
/* load the font in */
font = gdk_font_load (fontname);
if (!font)
@ -1627,7 +1632,7 @@ text_render (GImage *gimage,
}
/* Crop the mask buffer */
newmask = crop_buffer (mask, border);
newmask = crop ? crop_buffer (mask, border) : mask;
if (newmask != mask)
tile_manager_destroy (mask);
@ -2000,7 +2005,7 @@ text_tool_invoker (Argument *args)
if (success)
{
int_value = args[5].value.pdb_int;
if (int_value >= 0)
if (int_value >= -1)
border = int_value;
else
success = FALSE;

View File

@ -227,7 +227,7 @@ find_contiguous_region_helper (PixelRegion *mask, PixelRegion *src,
antialias, threshold, x, &start, &end))
return;
for (i = start; i < end; i++)
for (i = start + 1; i < end; i++)
{
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y - 1, col);
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y + 1, col);

View File

@ -227,7 +227,7 @@ find_contiguous_region_helper (PixelRegion *mask, PixelRegion *src,
antialias, threshold, x, &start, &end))
return;
for (i = start; i < end; i++)
for (i = start + 1; i < end; i++)
{
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y - 1, col);
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y + 1, col);

View File

@ -227,7 +227,7 @@ find_contiguous_region_helper (PixelRegion *mask, PixelRegion *src,
antialias, threshold, x, &start, &end))
return;
for (i = start; i < end; i++)
for (i = start + 1; i < end; i++)
{
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y - 1, col);
find_contiguous_region_helper (mask, src, has_alpha, antialias, threshold, i, y + 1, col);

View File

@ -1511,6 +1511,7 @@ text_render (GImage *gimage,
unsigned char color[MAX_CHANNELS];
char *str;
int nstrs;
int crop;
int line_width, line_height;
int pixmap_width, pixmap_height;
int text_width, text_height;
@ -1530,6 +1531,10 @@ text_render (GImage *gimage,
else
antialias = 1;
/* Dont crop the text if border is negative */
crop = (border >= 0);
if (!crop) border = 0;
/* load the font in */
font = gdk_font_load (fontname);
if (!font)
@ -1627,7 +1632,7 @@ text_render (GImage *gimage,
}
/* Crop the mask buffer */
newmask = crop_buffer (mask, border);
newmask = crop ? crop_buffer (mask, border) : mask;
if (newmask != mask)
tile_manager_destroy (mask);
@ -2000,7 +2005,7 @@ text_tool_invoker (Argument *args)
if (success)
{
int_value = args[5].value.pdb_int;
if (int_value >= 0)
if (int_value >= -1)
border = int_value;
else
success = FALSE;

View File

@ -1511,6 +1511,7 @@ text_render (GImage *gimage,
unsigned char color[MAX_CHANNELS];
char *str;
int nstrs;
int crop;
int line_width, line_height;
int pixmap_width, pixmap_height;
int text_width, text_height;
@ -1530,6 +1531,10 @@ text_render (GImage *gimage,
else
antialias = 1;
/* Dont crop the text if border is negative */
crop = (border >= 0);
if (!crop) border = 0;
/* load the font in */
font = gdk_font_load (fontname);
if (!font)
@ -1627,7 +1632,7 @@ text_render (GImage *gimage,
}
/* Crop the mask buffer */
newmask = crop_buffer (mask, border);
newmask = crop ? crop_buffer (mask, border) : mask;
if (newmask != mask)
tile_manager_destroy (mask);
@ -2000,7 +2005,7 @@ text_tool_invoker (Argument *args)
if (success)
{
int_value = args[5].value.pdb_int;
if (int_value >= 0)
if (int_value >= -1)
border = int_value;
else
success = FALSE;

View File

@ -7,10 +7,10 @@ GIMP_MAJOR_VERSION_NUMBER=0
dnl $Format: "GIMP_MINOR_VERSION_NUMBER=$ReleaseMinorVersion$" $
GIMP_MINOR_VERSION_NUMBER=99
dnl $Format: "GIMP_MICRO_VERSION_NUMBER=$ReleaseMicroVersion$" $
GIMP_MICRO_VERSION_NUMBER=16
GIMP_MICRO_VERSION_NUMBER=17
dnl $Format: "AM_INIT_AUTOMAKE(gimp, $ReleaseVersion$)" $
AM_INIT_AUTOMAKE(gimp, 0.99.16)
AM_INIT_AUTOMAKE(gimp, 0.99.17)
dnl Specify a header configuration file
AM_CONFIG_HEADER(config.h)
@ -68,10 +68,10 @@ AC_DEFUN(AC_GIMP_CHECK,
LDFLAGS="$saved_ldflags $X_LDFLAGS $X_LIBS"
dnl Dont cache this as it depends on CFLAGS, LDFLAGS, etc
AC_MSG_CHECKING([for glib and gtk])
AC_MSG_CHECKING([for glib and gtk >= 0.99.1])
AC_TRY_COMPILE(
[#include <gtk/gtk.h>],
[gtk_button_new ();],
[gtk_pixmap_unref ();],
gtk_found=yes,
gtk_found=no)
AC_MSG_RESULT($gtk_found)
@ -344,7 +344,7 @@ plug-ins/gag-0.3/Makefile
plug-ins/Anamorphose/Makefile
plug-ins/CentralReflection/Makefile
plug-ins/Curtain/Makefile
plug-ins/Encript_Decript/Makefile
plug-ins/Encrypt_Decrypt/Makefile
plug-ins/Julia/Makefile
plug-ins/Mandelbrot/Makefile
plug-ins/MapObject/Makefile
@ -353,11 +353,8 @@ plug-ins/libgck/Makefile
plug-ins/libgck/gck/Makefile
plug-ins/blur/Makefile
plug-ins/gfig/Makefile
plug-ins/gfig/gfig-examples/Makefile
plug-ins/flame/Makefile
plug-ins/gimptcl/Makefile
plug-ins/gimptcl/frags/Makefile
plug-ins/gimptcl/misc/Makefile
plug-ins/gimptcl/scripts/Makefile
plug-ins/fuse/Makefile
plug-ins/mathmap/Makefile
@ -366,7 +363,6 @@ plug-ins/refract/Makefile
plug-ins/struc/Makefile
plug-ins/twist/Makefile
plug-ins/user_filter/Makefile
plug-ins/user_filter/doc/Makefile
plug-ins/warp/Makefile
plug-ins/zealouscrop/Makefile
plug-ins/xwd/Makefile
@ -421,6 +417,10 @@ plug-ins/colorify/Makefile
plug-ins/papertile/Makefile
plug-ins/illusion/Makefile
plug-ins/fractaltrace/Makefile
plug-ins/DigitalSignature/Makefile
plug-ins/FractalExplorer/Makefile
plug-ins/stegano/Makefile
plug-ins/fs/Makefile
app/Makefile
docs/Makefile
)

BIN
docs/Wilber.xcf.gz Normal file

Binary file not shown.

15
docs/Wilber.xcf.gz.README Normal file
View File

@ -0,0 +1,15 @@
Wilber.xcf.gz.README
-----------------------------------------------------------------------------
This is Wilber, the Gimp Mascot.
Gimp is a image manipulation program for unix computers, see
http://www.gimp.org for more detais.
The use of Wilber.xcf.gz is free, though it would be kind of you to mention
the original author (Tuomas Kuosmanen <tigert@gimp.org>) somewhere.
Enjoy.
Tuomas / tigert

View File

@ -460,6 +460,38 @@ HRZ saving handles all image types except those with alpha channels.--@strong{GI
@end defun
@emph{Albert Cahalan}
@defun file_icon_load run_mode, filename, raw_filename
Loads files of Windows ICO file format--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{filename} (PDB_STRING)--The name of the file to load
@item @emph{raw_filename} (PDB_STRING)--The name entered
@end itemize
@strong{Outputs}
@itemize @bullet
@item @emph{image} (PDB_IMAGE)--Output image
@end itemize
@end defun
@emph{Lance Dillon}
@defun file_icon_save run_mode, image, drawable, filename, raw_filename
Saves files in Windows ICO file format--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image
@item @emph{drawable} (PDB_DRAWABLE)--Drawable to save
@item @emph{filename} (PDB_STRING)--The name of the file to save the image in
@item @emph{raw_filename} (PDB_STRING)--The name entered
@end itemize
@end defun
@emph{Lance Dillon}
@defun file_jpeg_load run_mode, filename, raw_filename
FIXME: write help for jpeg_load--@strong{GIMP Plug-In}
@ -495,24 +527,6 @@ FIXME: write help for jpeg_save--@strong{GIMP Plug-In}
@end defun
@emph{Spencer Kimball & Peter Mattis}
@defun file_mpeg_load run_mode, filename, raw_filename
FIXME: write help for mpeg_load--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{filename} (PDB_STRING)--The name of the file to load
@item @emph{raw_filename} (PDB_STRING)--The name entered
@end itemize
@strong{Outputs}
@itemize @bullet
@item @emph{image} (PDB_IMAGE)--Output image
@end itemize
@end defun
@emph{Adam D. Moss}
@defun file_pat_load run_mode, filename, raw_filename
FIXME: write help--@strong{GIMP Plug-In}
@ -714,7 +728,7 @@ load file of PostScript/PDF file format--@strong{GIMP Plug-In}
@item @emph{image} (PDB_IMAGE)--Output image
@end itemize
@end defun
@emph{Peter Kirchgessner}
@emph{Peter Kirchgessner <pkirchg@@aol.com>}
@defun file_ps_load_setargs resolution, width, height, check_bbox, pages, coloring, TextAlphaBits, GraphicsAlphaBits
set additional parameters for procedure file_ps_load--@strong{GIMP Plug-In}
@ -731,9 +745,9 @@ set additional parameters for procedure file_ps_load--@strong{GIMP Plug-In}
@item @emph{GraphicsAlphaBits} (PDB_INT32)--1, 2, or 4
@end itemize
@end defun
@emph{Peter Kirchgessner}
@emph{Peter Kirchgessner <pkirchg@@aol.com>}
@defun file_ps_save run_mode, image, drawable, filename, raw_filename, width, height, x_offset, y_offset, unit, keep_ratio, rotation
@defun file_ps_save run_mode, image, drawable, filename, raw_filename, width, height, x_offset, y_offset, unit, keep_ratio, rotation, eps_flag, preview
PostScript saving handles all image types except those with alpha channels.--@strong{GIMP Plug-In}
@strong{Inputs}
@ -747,12 +761,14 @@ PostScript saving handles all image types except those with alpha channels.--@st
@item @emph{height} (PDB_FLOAT)--Height of image in PostScript file
@item @emph{x_offset} (PDB_FLOAT)--X-offset to image from lower left corner
@item @emph{y_offset} (PDB_FLOAT)--Y-offset to image from lower left corner
@item @emph{unit} (PDB_INT32)--0: inches, 1: millimeters
@item @emph{unit} (PDB_INT32)--Unit for width/height/offset. 0: inches, 1: millimeters
@item @emph{keep_ratio} (PDB_INT32)--0: use width/height, 1: keep aspect ratio
@item @emph{rotation} (PDB_INT32)--0, 90, 180, 270
@item @emph{eps_flag} (PDB_INT32)--0: PostScript, 1: Encapsulated PostScript
@item @emph{preview} (PDB_INT32)--0: no preview, >0: max. size of preview
@end itemize
@end defun
@emph{Peter Kirchgessner}
@emph{Peter Kirchgessner <pkirchg@@aol.com>}
@defun file_psd_load run_mode, filename, raw_filename
FIXME: write help for psd_load--@strong{GIMP Plug-In}
@ -941,38 +957,6 @@ You need to have GNU Wget installed.--@strong{GIMP Plug-In}
@end defun
@emph{Spencer Kimball & Peter Mattis}
@defun file_xd_load run_mode, filename, raw_filename
--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{filename} (PDB_STRING)--The name of the file to load
@item @emph{raw_filename} (PDB_STRING)--The name entered
@end itemize
@strong{Outputs}
@itemize @bullet
@item @emph{image} (PDB_IMAGE)--Output image
@end itemize
@end defun
@emph{Josh MacDonald}
@defun file_xd_save run_mode, image, drawable, filename, raw_filename
--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image
@item @emph{drawable} (PDB_DRAWABLE)--Drawable to save
@item @emph{filename} (PDB_STRING)--The name of the file to save the image in
@item @emph{raw_filename} (PDB_STRING)--The name of the file to save the image in
@end itemize
@end defun
@emph{Josh MacDonald}
@defun file_xpm_load run_mode, filename, raw_filename
FIXME: write help for xpm_load--@strong{GIMP Plug-In}
@ -991,7 +975,7 @@ FIXME: write help for xpm_load--@strong{GIMP Plug-In}
@end defun
@emph{Spencer Kimball & Peter Mattis & Ray Lehtiniemi}
@defun file_xpm_save run_mode, image, drawable, filename, raw_filename
@defun file_xpm_save run_mode, image, drawable, filename, raw_filename, alpha_threshold
FIXME: write help for xpm--@strong{GIMP Plug-In}
@strong{Inputs}
@ -1001,6 +985,7 @@ FIXME: write help for xpm--@strong{GIMP Plug-In}
@item @emph{drawable} (PDB_DRAWABLE)--Drawable to save
@item @emph{filename} (PDB_STRING)--The name of the file to save the image in
@item @emph{raw_filename} (PDB_STRING)--The name of the file to save the image in
@item @emph{alpha_threshold} (PDB_FLOAT)--Alpha cutoff threshold
@end itemize
@end defun
@emph{Spencer Kimball & Peter Mattis & Ray Lehtiniemi}
@ -4547,7 +4532,7 @@ Emboss or Bumpmap the given drawable, specifying the angle and elevation for the
@end defun
@emph{Eric L. Hernes, John Schlag}
@defun plug_in_encript run_mode, image, drawable, password, warning
@defun plug_in_encrypt run_mode, image, drawable, password, warning, compatibility, remember
--@strong{GIMP Plug-In}
@strong{Inputs}
@ -4555,8 +4540,10 @@ Emboss or Bumpmap the given drawable, specifying the angle and elevation for the
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image (unused)
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{password} (PDB_INT8)--Numeric password (used to encript and decript)
@item @emph{password} (PDB_STRING)--Password (used to encrypt and decrypt)
@item @emph{warning} (PDB_INT8)--Disable warning message toggle (only in RUN_INTERACTIVE)
@item @emph{compatibility} (PDB_INT8)--Use version 1.0x compatibility mode
@item @emph{remember} (PDB_INT8)--Remember the password after execution
@end itemize
@end defun
@emph{Daniel Cotting (cotting@@mygale.org, http://www.mygale.org/~cotting)}
@ -4619,7 +4606,7 @@ Compose several images to a roll film--@strong{GIMP Plug-In}
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image (only used as default image in interactive mode)
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable (not used)
@item @emph{film_height} (PDB_INT32)--Height of film
@item @emph{film_height} (PDB_INT32)--Height of film (0: fit to images)
@item @emph{film_color} (PDB_COLOR)--Color of the film
@item @emph{number_start} (PDB_INT32)--Start index for numbering
@item @emph{number_fontf} (PDB_STRING)--Font family for drawing numbers
@ -4681,6 +4668,36 @@ transform image with the Mandelbrot Fractal--@strong{GIMP Plug-In}
@end defun
@emph{Hirotsuna Mizuno <s1041150@@u-aizu.ac.jp>}
@defun plug_in_fractalexplorer run_mode, image, drawable, fractaltype, xmin, xmax, ymin, ymax, iter, cx, cy, colormode, redstretch, greenstretch, bluestretch, redmode, greenmode, bluemode, redinvert, greeninvert, blueinvert
No help yet.--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{fractaltype} (PDB_INT8)--0: Mandelbrot; 1: Julia; 2: Barnsley 1; 3: Barnsley 2; 4: Barnsley 3; 5: Spider; 6: ManOWar; 7: Lambda; 8: Sierpinski
@item @emph{xmin} (PDB_FLOAT)--Xmin fractal image delimiter
@item @emph{xmax} (PDB_FLOAT)--Xmax fractal image delimiter
@item @emph{ymin} (PDB_FLOAT)--Ymin fractal image delimiter
@item @emph{ymax} (PDB_FLOAT)--Ymax fractal image delimiter
@item @emph{iter} (PDB_FLOAT)--Iteration value
@item @emph{cx} (PDB_FLOAT)--Cx value ( only Julia)
@item @emph{cy} (PDB_FLOAT)--Cy value ( only Julia)
@item @emph{colormode} (PDB_INT8)--0: Apply colormap as specified by the parameters below; 1: Apply active gradient to final image
@item @emph{redstretch} (PDB_FLOAT)--Red stretching factor
@item @emph{greenstretch} (PDB_FLOAT)--Green stretching factor
@item @emph{bluestretch} (PDB_FLOAT)--Blue stretching factor
@item @emph{redmode} (PDB_INT8)--Red application mode (0:SIN;1:COS;2:NONE)
@item @emph{greenmode} (PDB_INT8)--Green application mode (0:SIN;1:COS;2:NONE)
@item @emph{bluemode} (PDB_INT8)--Blue application mode (0:SIN;1:COS;2:NONE)
@item @emph{redinvert} (PDB_INT8)--Red inversion mode (1: enabled; 0: disabled)
@item @emph{greeninvert} (PDB_INT8)--Green inversion mode (1: enabled; 0: disabled)
@item @emph{blueinvert} (PDB_INT8)--Green inversion mode (1: enabled; 0: disabled)
@end itemize
@end defun
@emph{Daniel Cotting (cotting@@mygale.org, www.mygale.org/~cotting)}
@defun plug_in_fuse run_mode, image, drawable
uhm, image dissociation--@strong{GIMP Plug-In}
@ -4723,6 +4740,19 @@ Applies a gaussian blur to the drawable, with specified radius of affect. The s
@end defun
@emph{Spencer Kimball & Peter Mattis}
@defun plug_in_gfig run_mode, image, drawable, dummy
More here later--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image (unused)
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{dummy} (PDB_INT32)--Dummy
@end itemize
@end defun
@emph{Andy Thomas}
@defun plug_in_gflare run_mode, image, drawable, gflare_name, xcenter, ycenter, radius, rotation, hue, vangle, vlength, use_asupsample, asupsample_max_depth, asupsample_threshold
This plug-in produces a lense flare effect using custom gradients. In interactive call, the user can edit his/her own favorite lense flare (GFlare) and render it. Edited gflare is saved automatically to the directory in gflare-path, if it is defined in gimprc. In non-interactive call, the user can only render one of GFlare which has been stored in gflare-path already.--@strong{GIMP Plug-In}
@ -5286,7 +5316,7 @@ This function randomly ``blurs'' the specified drawable, using either a 3x3 blur
@end defun
@emph{Miles O'Neal <meo@@rru.com> http://www.rru.com/~meo/}
@defun plug_in_refract run_mode, image, drawable, lensmap, depth, dist, na, nb, wrap, newl, xofs, yofs
@defun plug_in_refract run_mode, image, drawable, lensmap, thick, dist, na, nb, edge, newl, xofs, yofs
Distorts the image by refracting it through a height field 'lens' with a specified index of refraction.--@strong{GIMP Plug-In}
@strong{Inputs}
@ -5295,11 +5325,11 @@ Distorts the image by refracting it through a height field 'lens' with a specifi
@item @emph{image} (PDB_IMAGE)--Input image
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{lensmap} (PDB_DRAWABLE)--Lens map drawable
@item @emph{depth} (PDB_INT32)--Lens depth
@item @emph{thick} (PDB_INT32)--Lens thickness
@item @emph{dist} (PDB_INT32)--Lens distance from image
@item @emph{na} (PDB_FLOAT)--Index of Refraction A
@item @emph{nb} (PDB_FLOAT)--Index of Refraction B
@item @emph{wrap} (PDB_INT32)--Wrap (0), Background (1)
@item @emph{edge} (PDB_INT32)--Background (0), Outside (1), Wrap (2)
@item @emph{newl} (PDB_INT32)--New layer?
@item @emph{xofs} (PDB_INT32)--X offset
@item @emph{yofs} (PDB_INT32)--Y offset
@ -5383,6 +5413,25 @@ Shifts the pixels of the specified drawable. Each row will be displaced a random
@end defun
@emph{Spencer Kimball and Peter Mattis, ported by Brian Degenhardt and Federico Mena Quintero}
@defun plug_in_signature run_mode, image, drawable, signature[50], e-mail[30], homepage[50], date[20], mode, licence, contents
--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image (unused)
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{signature[50]} (PDB_STRING)--Signature (Name of author, company etc.)
@item @emph{e-mail[30]} (PDB_STRING)--E-mail address
@item @emph{homepage[50]} (PDB_STRING)--Address of the homepage
@item @emph{date[20]} (PDB_STRING)--Date of creation
@item @emph{mode} (PDB_INT8)--FALSE: Write signature; TRUE: Read signature
@item @emph{licence} (PDB_INT8)--FALSE: Freely distributable; TRUE: Restricted distribution
@item @emph{contents} (PDB_INT8)--TRUE: Adult only contents
@end itemize
@end defun
@emph{Daniel Cotting (cotting@@mygale.org, http://www.mygale.org/~cotting)}
@defun plug_in_sinus run_mode, image, drawable, xscale, yscale, complex, seed, tiling, perturb, colors, alpha1, alpha2, blend, blend_power
FIX ME: sinus help--@strong{GIMP Plug-In}
@ -5482,6 +5531,20 @@ Spreads the pixels of the specified drawable. Pixels are randomly moved to anot
@end defun
@emph{Spencer Kimball and Peter Mattis, ported by Brian Degenhardt and Federico Mena Quintero}
@defun plug_in_stegano run_mode, image, drawable, mode, filename[128]
--@strong{GIMP Plug-In}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Input image (unused)
@item @emph{drawable} (PDB_DRAWABLE)--Input drawable
@item @emph{mode} (PDB_INT8)--FALSE: Hide file in image; TRUE: Get hidden file
@item @emph{filename[128]} (PDB_STRING)--Name of the file to hide in an image (only of importance if mode=FALSE
@end itemize
@end defun
@emph{Daniel Cotting (cotting@@mygale.org, http://www.mygale.org/~cotting)}
@defun plug_in_stereogram run_mode, image, heightmap, type, pat
Based on the Stereogram FAQ--@strong{GIMP Plug-In}
@ -6066,21 +6129,6 @@ Chalk scribbled logos--@strong{Temporary Procedure}
@end defun
@emph{Manish Singh <msingh@@uclink4.berkeley.edu>}
@defun script-fu-chalk-test-logo run_mode, value, value, value, color, color
Chalk scribbled logos--@strong{Temporary Procedure}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{value} (PDB_STRING)--Text String
@item @emph{value} (PDB_STRING)--Font Size (in pixels)
@item @emph{value} (PDB_STRING)--Font
@item @emph{color} (PDB_COLOR)--Background Color
@item @emph{color} (PDB_COLOR)--Chalk Color
@end itemize
@end defun
@emph{Manish Singh <msingh@@uclink4.berkeley.edu>}
@defun script-fu-chrome-logo run_mode, value, value, value, color
Somewhat simplistic, but cool chromed logos--@strong{Temporary Procedure}
@ -6148,6 +6196,46 @@ Render the specified text along the perimeter of a circle--@strong{Temporary Pro
@end defun
@emph{Tim Newsome <drz@@froody.bloke.com>}
@defun script-fu-colorcycling-anim run_mode, image, drawable, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value, value
Creates an animation with the help of the alienmap plug-in--@strong{Temporary Procedure}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{image} (PDB_IMAGE)--Image
@item @emph{drawable} (PDB_DRAWABLE)--Drawable
@item @emph{value} (PDB_STRING)--Number of frames
@item @emph{value} (PDB_STRING)--Start: red intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--Start: green intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--Start: blue intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--End: red intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--End: green intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--End: blue intensity factor (max. 128)
@item @emph{value} (PDB_STRING)--Red color mode (sin:0/cos:1/none:2)
@item @emph{value} (PDB_STRING)--Green color mode (sin:0/cos:1/none:2)
@item @emph{value} (PDB_STRING)--Blue color mode (sin:0/cos:1/none:2)
@item @emph{value} (PDB_STRING)--Red inversion before transformation
@item @emph{value} (PDB_STRING)--Green inversion before transformation
@item @emph{value} (PDB_STRING)--Blue inversion before transformation
@item @emph{value} (PDB_STRING)--Start: red phase displacement (RAD)
@item @emph{value} (PDB_STRING)--Start: green phase displacement (RAD)
@item @emph{value} (PDB_STRING)--Start: blue phase displacement (RAD)
@item @emph{value} (PDB_STRING)--End: red phase displacement (RAD)
@item @emph{value} (PDB_STRING)--End: green phase displacement (RAD)
@item @emph{value} (PDB_STRING)--End: blue phase displacement (RAD)
@item @emph{value} (PDB_STRING)--Start: red frequency (> 0)
@item @emph{value} (PDB_STRING)--Start: green frequency (> 0)
@item @emph{value} (PDB_STRING)--Start: blue frequency (> 0)
@item @emph{value} (PDB_STRING)--End: red frequency (> 0)
@item @emph{value} (PDB_STRING)--End: green frequency (> 0)
@item @emph{value} (PDB_STRING)--End: blue frequency (> 0)
@item @emph{value} (PDB_STRING)--Red inversion after transformation
@item @emph{value} (PDB_STRING)--Green inversion after transformation
@item @emph{value} (PDB_STRING)--Blue inversion after transformation
@end itemize
@end defun
@emph{Daniel Cotting (cotting@@mygale.org)}
@defun script-fu-cool-metal-logo run_mode, value, value, value, color, toggle
Metallic logos with reflections and perspective shadows--@strong{Temporary Procedure}
@ -6327,38 +6415,6 @@ Draph the graph of H/S/V values on the drawable--@strong{Temporary Procedure}
@end defun
@emph{Shuji Narazaki (narazaki@@InetQ.or.jp)}
@defun script-fu-kanji-circle run_mode, value, value, value, value, value, value, toggle
Kanji Circle (version 0.3)--@strong{Temporary Procedure}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{value} (PDB_STRING)--Kanji Text
@item @emph{value} (PDB_STRING)--Radius
@item @emph{value} (PDB_STRING)--Start-angle
@item @emph{value} (PDB_STRING)--Fill-angle
@item @emph{value} (PDB_STRING)--Font name
@item @emph{value} (PDB_STRING)--Font Size
@item @emph{toggle} (PDB_INT32)--Antialias
@end itemize
@end defun
@emph{Shuji Narazaki <narazaki@@InetQ.or.jp>}
@defun script-fu-kanji-neon run_mode, color, value, value, value, value
Kanji Neon Text Cyan (0.3)--@strong{Temporary Procedure}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{color} (PDB_COLOR)--Glow Color
@item @emph{value} (PDB_STRING)--Tube Hue
@item @emph{value} (PDB_STRING)--Text (ill-displayed)
@item @emph{value} (PDB_STRING)--Font Size (in pixels)
@item @emph{value} (PDB_STRING)--Font (string)
@end itemize
@end defun
@emph{Shuji Narazaki <narazaki@@InetQ.or.jp>}
@defun script-fu-labels-gimp-org run_mode, value, value, value, value, value, value, color, color, color, toggle, toggle, value, value, value, value, value
Tube Button Label Header for gimp.org--@strong{Temporary Procedure}
@ -6532,19 +6588,6 @@ Add a perspective shadow--@strong{Temporary Procedure}
@end defun
@emph{Sven Neumann (neumanns@@uni-duesseldorf.de)}
@defun script-fu-pie-chart run_mode, value, value, value
Pie chart--@strong{Temporary Procedure}
@strong{Inputs}
@itemize @bullet
@item @emph{run_mode} (PDB_INT32)--Interactive, non-interactive
@item @emph{value} (PDB_STRING)--Width
@item @emph{value} (PDB_STRING)--Value/color list
@item @emph{value} (PDB_STRING)--Start angle
@end itemize
@end defun
@emph{Federico Mena Quintero}
@defun script-fu-predator run_mode, image, drawable, value, toggle, value, toggle, toggle
Fills the current selection with test--@strong{Temporary Procedure}

View File

@ -43,6 +43,7 @@ gimp_layer_copy (gint32 layer_ID)
return_vals = gimp_run_procedure ("gimp_layer_copy",
&nreturn_vals,
PARAM_LAYER, layer_ID,
PARAM_INT32, 0,
PARAM_END);
layer_ID = -1;

View File

@ -43,6 +43,7 @@ gimp_layer_copy (gint32 layer_ID)
return_vals = gimp_run_procedure ("gimp_layer_copy",
&nreturn_vals,
PARAM_LAYER, layer_ID,
PARAM_INT32, 0,
PARAM_END);
layer_ID = -1;

View File

@ -1156,8 +1156,8 @@ alienmap_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
guchar *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
@ -1199,7 +1199,7 @@ alienmap_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_width*logo_height-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {

View File

@ -16,25 +16,44 @@
-------------------------------------------
INSTALLATION
-------------------------------------------
To install it, you have to edit the
Makefile (change install-path).
Afterwards run make. This will compile
and install the plug-in in the right
directory. Once the new code is installed,
you can run the GIMP and enjoy the new
functions and effects it provides.
To install it, you have to edit the Make-
file (change install-path). Afterwards run
'make'. This will compile and install the
plug-in in the right directory. Once the
new code is installed, you can run the GIMP
and enjoy the new functions and effects it
provides.
-------------------------------------------
-------------------------------------------
COLOR-CYCLING SCRIPT
-------------------------------------------
This version of the alienmap plug-in inclu-
des a script for color cycling animations.
It is recommended to start the alienmap
plug-in, to fiddle about with the parame-
ters until you have found optimal start va-
lues. Then put these values in the appro-
priate edit fields in the animation dialog.
Now you can change the values in the alien-
map plug-in to find interesting end values.
After you have inserted these new values in
the corresponding fields of the animation
script, you can start the calculation of
the animation. The script will create a new
picture with a layer for each animation
frame. With each new frame the start values
will gradually turn into the specified end
values, creating an amazing effect of color
cycling.
-------------------------------------------
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
If you find that the plug-in is still
If you find that the plug-in binary is
too big, you can compress the executables
with the gzexe program (if it is avaiable
on your system). To do so, change to the
@ -53,7 +72,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------
@ -61,9 +80,9 @@
FEEDBACK
------------------------------------------
I'm interested in any feedback, comments,
bug-reports, suggestions etc. If you
have anything you would like to tell
me, you can write to cotting@mygale.org.
bug-reports, suggestions etc. If you have
anything you would like to tell me, you
can write to cotting@mygale.org.
Also have a look at the GIMP-section of
my homepage at www.mygale.org/~cotting.
------------------------------------------

View File

@ -16,25 +16,44 @@
-------------------------------------------
INSTALLATION
-------------------------------------------
To install it, you have to edit the
Makefile (change install-path).
Afterwards run make. This will compile
and install the plug-in in the right
directory. Once the new code is installed,
you can run the GIMP and enjoy the new
functions and effects it provides.
To install it, you have to edit the Make-
file (change install-path). Afterwards run
'make'. This will compile and install the
plug-in in the right directory. Once the
new code is installed, you can run the GIMP
and enjoy the new functions and effects it
provides.
-------------------------------------------
-------------------------------------------
COLOR-CYCLING SCRIPT
-------------------------------------------
This version of the alienmap plug-in inclu-
des a script for color cycling animations.
It is recommended to start the alienmap
plug-in, to fiddle about with the parame-
ters until you have found optimal start va-
lues. Then put these values in the appro-
priate edit fields in the animation dialog.
Now you can change the values in the alien-
map plug-in to find interesting end values.
After you have inserted these new values in
the corresponding fields of the animation
script, you can start the calculation of
the animation. The script will create a new
picture with a layer for each animation
frame. With each new frame the start values
will gradually turn into the specified end
values, creating an amazing effect of color
cycling.
-------------------------------------------
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
If you find that the plug-in is still
If you find that the plug-in binary is
too big, you can compress the executables
with the gzexe program (if it is avaiable
on your system). To do so, change to the
@ -53,7 +72,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------
@ -61,9 +80,9 @@
FEEDBACK
------------------------------------------
I'm interested in any feedback, comments,
bug-reports, suggestions etc. If you
have anything you would like to tell
me, you can write to cotting@mygale.org.
bug-reports, suggestions etc. If you have
anything you would like to tell me, you
can write to cotting@mygale.org.
Also have a look at the GIMP-section of
my homepage at www.mygale.org/~cotting.
------------------------------------------

View File

@ -1,14 +1,10 @@
/**********************************************************************
* AlienMap (Co-)sine color transformation plug-in (Version 1.00)
* AlienMap (Co-)sine color transformation plug-in (Version 1.03)
* Daniel Cotting (cotting@mygale.org)
**********************************************************************
* Official Homepage: http://www.mygale.org/~cotting
**********************************************************************
* Homepages under construction: http://www.chez.com/cotting
* http://www.cyberbrain.com/cotting
* You won't be able to see anything yet, as I don't really have the
* time to build up these two sites :-(
* Have a look at www.mygale.org/~cotting instead!
* Official homepages: http://www.mygale.org/~cotting
* http://cotting.citeweb.net
* http://village.cyberbrain.com/cotting
**********************************************************************
*/
@ -47,7 +43,7 @@
#define PREVIEW_SIZE 128
#define SCALE_WIDTH 200
#define ENTRY_WIDTH 60
#define ENTRY_WIDTH 45
#define SINUS 0
#define COSINUS 1
@ -61,6 +57,19 @@ typedef struct {
gint redmode;
gint greenmode;
gint bluemode;
gint redinvert;
gint greeninvert;
gint blueinvert;
gdouble redphase;
gdouble greenphase;
gdouble bluephase;
gdouble redfrequency;
gdouble greenfrequency;
gdouble bluefrequency;
gint redinvert2;
gint greeninvert2;
gint blueinvert2;
} alienmap_vals_t;
typedef struct {
@ -86,9 +95,9 @@ static void alienmap_render_row (const guchar *src_row,
guchar *dest_row,
gint row,
gint row_width,
gint bytes, double, double, double);
gint bytes, double, double, double , double, double, double, double, double, double);
static void alienmap_get_pixel(int x, int y, guchar *pixel);
void transform (short int *, short int *, short int *,double, double, double);
void transform (short int *, short int *, short int *,double, double, double ,double, double, double,double, double, double);
static void build_preview_source_image(void);
@ -96,15 +105,16 @@ static void build_preview_source_image(void);
static gint alienmap_dialog(void);
static void dialog_update_preview(void);
static void dialog_create_value(char *title, GtkTable *table, int row, gdouble *value,
int left, int right);
int left, int right, const char *desc);
static void dialog_scale_update(GtkAdjustment *adjustment, gdouble *value);
static void dialog_entry_update(GtkWidget *widget, gdouble *value);
static void dialog_close_callback(GtkWidget *widget, gpointer data);
static void dialog_ok_callback(GtkWidget *widget, gpointer data);
static void dialog_animation_callback(GtkWidget *widget, gpointer data);
static void dialog_cancel_callback(GtkWidget *widget, gpointer data);
static void alienmap_toggle_update (GtkWidget *widget,
gpointer data);
GtkWidget * alienmap_logo_dialog(void);
GtkWidget * alienmap_logo_dialog(void);
@ -114,6 +124,14 @@ GtkWidget * alienmap_logo_dialog(void);
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkTooltips *tips;
GdkColor tips_fg,tips_bg;
int ready=0;
static GParam *ExternalParam=NULL;
static int ExternalInt;
gint32 image_ID;
GPlugInInfo PLUG_IN_INFO =
{
@ -131,7 +149,7 @@ static alienmap_interface_t wint = {
}; /* wint */
static alienmap_vals_t wvals = {
128,128,128,COSINUS,SINUS,SINUS,
128,128,128,COSINUS,SINUS,SINUS,0,0,0,0,0,0,1,1,1,0,0,0,
}; /* wvals */
static GDrawable *drawable;
@ -155,25 +173,46 @@ gint do_greennone;
gint do_bluesinus;
gint do_bluecosinus;
gint do_bluenone;
gint do_redinvert;
gint do_greeninvert;
gint do_blueinvert;
gint do_redinvert2;
gint do_greeninvert2;
gint do_blueinvert2;
/***** Functions *****/
MAIN ();
MAIN ()
static void
query ()
{
static GParamDef args[] =
{
{ PARAM_INT32, "run_mode", "Interactive, non-interactive" },
{ PARAM_IMAGE, "image", "Input image" },
{ PARAM_DRAWABLE, "drawable", "Input drawable" },
{ PARAM_INT8, "redstretch", "Red component stretching factor (0-128)" },
{ PARAM_INT8, "greenstretch", "Green component stretching factor (0-128)" },
{ PARAM_INT8, "bluestretch", "Blue component stretching factor (0-128)" },
{ PARAM_INT32, "run_mode", "Interactive, non-interactive" },
{ PARAM_IMAGE, "image", "Input image" },
{ PARAM_DRAWABLE, "drawable", "Input drawable" },
{ PARAM_FLOAT, "redstretch", "Red component stretching factor (0-128)" },
{ PARAM_FLOAT, "greenstretch", "Green component stretching factor (0-128)" },
{ PARAM_FLOAT, "bluestretch", "Blue component stretching factor (0-128)" },
{ PARAM_INT8, "redmode", "Red application mode (0:SIN;1:COS;2:NONE)" },
{ PARAM_INT8, "greenmode", "Green application mode (0:SIN;1:COS;2:NONE)" },
{ PARAM_INT8, "bluemode", "Blue application mode (0:SIN;1:COS;2:NONE)" },
{ PARAM_INT8, "redinvert", "Red inversion before transformation (true or false)" },
{ PARAM_INT8, "greeninvert", "Green inversion before transformation (true or false)" },
{ PARAM_INT8, "blueinvert", "Blue inversion before transformation (true or false)" },
{ PARAM_FLOAT, "redphase", "Red component phase displacement [-PI;PI]" },
{ PARAM_FLOAT, "greenphase", "Green component phase displacement [-PI;PI]" },
{ PARAM_FLOAT, "bluephase", "Blue component phase displacement [-PI;PI]" },
{ PARAM_FLOAT, "redfrequency", "Red component frequency" },
{ PARAM_FLOAT, "greenfrequency", "Green component frequency" },
{ PARAM_FLOAT, "bluefrequency", "Blue component frequency" },
{ PARAM_INT8, "redinvert2", "Red inversion after transformation (true or false)" },
{ PARAM_INT8, "greeninvert2", "Green inversion after transformation (true or false)" },
{ PARAM_INT8, "blueinvert2", "Blue inversion after transformation (true or false)" },
};
static GParamDef *return_vals = NULL;
static int nargs = sizeof (args) / sizeof (args[0]);
@ -184,7 +223,7 @@ query ()
"No help yet. Just try it and you'll see!",
"Daniel Cotting (cotting@mygale.org, http://www.mygale.org/~cotting)",
"Daniel Cotting (cotting@mygale.org, http://www.mygale.org/~cotting)",
"1th May 1997",
"December 1997",
"<Image>/Filters/Image/Alien-Map",
"RGB*",
PROC_PLUG_IN,
@ -197,20 +236,37 @@ query ()
void
transform (short int *r,
short int *g,
short int *b, double redstretch, double greenstretch, double bluestretch)
short int *b, double redstretch, double greenstretch, double bluestretch,
double redphase, double greenphase, double bluephase,
double redfrequency, double greenfrequency, double bluefrequency
)
{
int red, green, blue;
float pi=3.1415926;
double pi=atan(1)*4;
red = *r;
green = *g;
blue = *b;
if (wvals.redinvert) {
red = 255-red;
}
if (wvals.greeninvert) {
green = 255-green;
}
if (wvals.blueinvert) {
blue = 255-blue;
}
switch (wvals.redmode)
{
case SINUS:
red = (int) redstretch*(1.0+sin((red/128.0-1)*pi));
red = (int) redstretch*(1.0+sin((red/128.0-1)*pi*redfrequency+redphase));
break;
case COSINUS:
red = (int) redstretch*(1.0+cos((red/128.0-1)*pi));
red = (int) redstretch*(1.0+cos((red/128.0-1)*pi*redfrequency+redphase));
break;
case NONE:
red = (int) (redstretch *(red / 128.0));
break;
default:
break;
@ -219,10 +275,13 @@ transform (short int *r,
switch (wvals.greenmode)
{
case SINUS:
green = (int) greenstretch*(1.0+sin((green/128.0-1)*pi));
green = (int) greenstretch*(1.0+sin((green/128.0-1)*pi*greenfrequency+greenphase));
break;
case COSINUS:
green = (int) greenstretch*(1.0+cos((green/128.0-1)*pi));
green = (int) greenstretch*(1.0+cos((green/128.0-1)*pi*greenfrequency+greenphase));
break;
case NONE:
green = (int) (greenstretch *(green / 128.0));
break;
default:
break;
@ -231,14 +290,36 @@ transform (short int *r,
switch (wvals.bluemode)
{
case SINUS:
blue = (int) bluestretch*(1.0+sin((blue/128.0-1)*pi));
blue = (int) bluestretch*(1.0+sin((blue/128.0-1)*pi*bluefrequency+bluephase));
break;
case COSINUS:
blue = (int) bluestretch*(1.0+cos((blue/128.0-1)*pi));
blue = (int) bluestretch*(1.0+cos((blue/128.0-1)*pi*bluefrequency+bluephase));
break;
case NONE:
blue = (int) (bluestretch *(blue / 128.0));
break;
default:
break;
}
if (red== 256) {
red= 255;}
if (green== 256) {
green= 255;}
if (blue== 256)
{blue= 255;}
if (wvals.redinvert2) {
red = 255-red;
}
if (wvals.greeninvert2) {
green = 255-green;
}
if (wvals.blueinvert2) {
blue = 255-blue;
}
*r = red;
*g = green;
*b = blue;
@ -253,8 +334,6 @@ run (char *name,
GParam **return_vals)
{
static GParam values[1];
/* GDrawable *drawable; */
/* gint32 image_ID; */
GRunModeType run_mode;
double xhsiz, yhsiz;
int pwidth, pheight;
@ -273,7 +352,7 @@ run (char *name,
/* Get the specified drawable */
drawable = gimp_drawable_get (param[2].data.d_drawable);
/* image_ID = param[1].data.d_image; */
image_ID = param[1].data.d_image;
tile_width = gimp_tile_width();
tile_height = gimp_tile_height();
@ -332,17 +411,29 @@ run (char *name,
case RUN_NONINTERACTIVE:
/* Make sure all the arguments are present */
if (nparams != 9)
if (nparams != 21)
status = STATUS_CALLING_ERROR;
if (status == STATUS_SUCCESS)
wvals.redstretch = param[3].data.d_int8;
wvals.greenstretch = param[4].data.d_int8;
wvals.bluestretch = param[5].data.d_int8;
wvals.redstretch = param[3].data.d_float;
wvals.greenstretch = param[4].data.d_float;
wvals.bluestretch = param[5].data.d_float;
wvals.redmode = param[6].data.d_int8;
wvals.greenmode = param[7].data.d_int8;
wvals.bluemode = param[8].data.d_int8;
wvals.redinvert = param[9].data.d_int8;
wvals.greeninvert = param[10].data.d_int8;
wvals.blueinvert = param[11].data.d_int8;
wvals.redphase = param[12].data.d_float;
wvals.greenphase = param[13].data.d_float;
wvals.bluephase = param[14].data.d_float;
wvals.redfrequency = param[15].data.d_float;
wvals.greenfrequency= param[16].data.d_float;
wvals.bluefrequency = param[17].data.d_float;
wvals.redinvert2 = param[18].data.d_int8;
wvals.greeninvert2 = param[19].data.d_int8;
wvals.blueinvert2 = param[20].data.d_int8;
break;
@ -386,7 +477,6 @@ run (char *name,
}
else
{
/* gimp_message("This filter only applies on RGB-images"); */
status = STATUS_EXECUTION_ERROR;
}
}
@ -446,7 +536,10 @@ alienmap_render_row (const guchar *src_row,
guchar *dest_row,
gint row,
gint row_width,
gint bytes, double redstretch, double greenstretch, double bluestretch)
gint bytes, double redstretch, double greenstretch, double bluestretch,
double redphase, double greenphase, double bluephase,
double redfrequency, double greenfrequency, double bluefrequency
)
@ -462,7 +555,8 @@ alienmap_render_row (const guchar *src_row,
v2 = (short int)src_row[col*bytes +1];
v3 = (short int)src_row[col*bytes +2];
transform(&v1, &v2, &v3, redstretch, greenstretch, bluestretch);
transform(&v1, &v2, &v3, redstretch, greenstretch, bluestretch,redphase, greenphase,bluephase,
redfrequency, greenfrequency, bluefrequency);
dest_row[col*bytes] = (int)v1;
dest_row[col*bytes +1] = (int)v2;
@ -491,6 +585,8 @@ alienmap (GDrawable *drawable)
gint row;
gint x1, y1, x2, y2;
double redstretch,greenstretch,bluestretch;
double redphase, greenphase, bluephase;
double redfrequency, greenfrequency,bluefrequency;
/* Get the input area. This is the bounding box of the selection in
* the image (or the entire image if there is no selection). Only
@ -520,6 +616,12 @@ alienmap (GDrawable *drawable)
redstretch = wvals.redstretch;
greenstretch = wvals.greenstretch;
bluestretch = wvals.bluestretch;
redphase = wvals.redphase;
greenphase = wvals.greenphase;
bluephase = wvals.bluephase;
redfrequency = wvals.redfrequency;
greenfrequency = wvals.greenfrequency;
bluefrequency = wvals.bluefrequency;
for (row = y1; row < y2; row++)
@ -531,7 +633,9 @@ alienmap (GDrawable *drawable)
row,
(x2 - x1),
bytes,
redstretch, greenstretch, bluestretch);
redstretch, greenstretch, bluestretch,
redphase, greenphase, bluephase,
redfrequency, greenfrequency, bluefrequency);
/* store the dest */
gimp_pixel_rgn_set_row (&destPR, dest_row, x1, row, (x2 - x1));
@ -606,6 +710,79 @@ alienmap_close_callback(GtkWidget *widget, gpointer data)
gtk_main_quit();
}
static void
dialog_animation_callback(GtkWidget *widget, gpointer data)
{
char r_stretch[20], g_stretch[20], b_stretch[20];
char r_mode[10], g_mode[10], b_mode[10];
char r_invert[10], g_invert[10], b_invert[10];
char r_invert2[10], g_invert2[10], b_invert2[10];
char r_phase[20], g_phase[20], b_phase[20];
char r_freq[20], g_freq[20], b_freq[20];
sprintf(r_stretch,"%f", wvals.redstretch);
sprintf(g_stretch,"%f", wvals.greenstretch);
sprintf(b_stretch,"%f", wvals.bluestretch);
sprintf(r_mode,"%i", wvals.redmode);
sprintf(g_mode,"%i", wvals.greenmode);
sprintf(b_mode,"%i", wvals.bluemode);
sprintf(r_invert,"%s", (wvals.redinvert) ? "TRUE" : "FALSE");
sprintf(g_invert,"%s", (wvals.greeninvert) ? "TRUE" : "FALSE");
sprintf(b_invert,"%s", (wvals.blueinvert) ? "TRUE" : "FALSE");
sprintf(r_phase,"%f", wvals.redphase);
sprintf(g_phase,"%f", wvals.greenphase);
sprintf(b_phase,"%f", wvals.bluephase);
sprintf(r_freq,"%f", wvals.redfrequency);
sprintf(g_freq,"%f", wvals.greenfrequency);
sprintf(b_freq,"%f", wvals.bluefrequency);
sprintf(r_invert2,"%s", (wvals.redinvert2) ? "TRUE" : "FALSE");
sprintf(g_invert2,"%s", (wvals.greeninvert2) ? "TRUE" : "FALSE");
sprintf(b_invert2,"%s", (wvals.blueinvert2) ? "TRUE" : "FALSE");
gtk_main_quit();
ExternalParam = gimp_run_procedure("script-fu-colorcycling-anim",&ExternalInt,
PARAM_INT32, 0,
PARAM_IMAGE, image_ID,
PARAM_DRAWABLE, drawable->id,
PARAM_STRING, "10",
PARAM_STRING, r_stretch,
PARAM_STRING, g_stretch,
PARAM_STRING, b_stretch,
PARAM_STRING, r_stretch,
PARAM_STRING, g_stretch,
PARAM_STRING, b_stretch,
PARAM_STRING, r_mode,
PARAM_STRING, g_mode,
PARAM_STRING, b_mode,
PARAM_STRING, r_invert,
PARAM_STRING, g_invert,
PARAM_STRING, b_invert,
PARAM_STRING, r_phase,
PARAM_STRING, g_phase,
PARAM_STRING, b_phase,
PARAM_STRING, r_phase,
PARAM_STRING, g_phase,
PARAM_STRING, b_phase,
PARAM_STRING, r_freq,
PARAM_STRING, g_freq,
PARAM_STRING, b_freq,
PARAM_STRING, r_freq,
PARAM_STRING, g_freq,
PARAM_STRING, b_freq,
PARAM_STRING, r_invert2,
PARAM_STRING, g_invert2,
PARAM_STRING, b_invert2,
PARAM_END);
gtk_main_quit();
}
static void
@ -615,6 +792,14 @@ alienmap_about_callback(GtkWidget *widget, gpointer data)
alienmap_logo_dialog();
}
static void
set_tooltip (GtkTooltips *tooltips, GtkWidget *widget, const char *desc)
{
if (desc && desc[0])
gtk_tooltips_set_tips (tooltips, widget, (char *) desc);
}
/*****/
static gint
@ -628,6 +813,7 @@ alienmap_dialog(void)
GtkWidget *table, *table2, *table3;
GtkWidget *button;
gint argc;
double pi=atan(1)*4.0;
gchar **argv;
guchar *color_cube;
GSList *redmode_group = NULL;
@ -642,12 +828,17 @@ alienmap_dialog(void)
do_bluesinus = (wvals.bluemode == SINUS);
do_bluecosinus = (wvals.bluemode == COSINUS);
do_bluenone = (wvals.bluemode == NONE);
/*
printf("Waiting... (pid %d)\n", getpid());
kill(getpid(), SIGSTOP);
*/
argc = 1;
do_redinvert = (wvals.redinvert != 0);
do_greeninvert = (wvals.greeninvert != 0);
do_blueinvert = (wvals.blueinvert != 0);
do_redinvert2 = (wvals.redinvert2 != 0);
do_greeninvert2 = (wvals.greeninvert2 != 0);
do_blueinvert2 = (wvals.blueinvert2 != 0);
argc = 1;
argv = g_new(gchar *, 1);
argv[0] = g_strdup("alienmap");
@ -670,55 +861,147 @@ alienmap_dialog(void)
(GtkSignalFunc) dialog_close_callback,
NULL);
top_table = gtk_table_new(4, 4, FALSE);
top_table = gtk_table_new(10, 10, FALSE);
gtk_container_border_width(GTK_CONTAINER(top_table), 6);
gtk_table_set_row_spacings(GTK_TABLE(top_table), 4);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), top_table, FALSE, FALSE, 0);
gtk_widget_show(top_table);
/* use black as foreground: */
tips = gtk_tooltips_new ();
tips_fg.red = 0;
tips_fg.green = 0;
tips_fg.blue = 0;
/* postit yellow (khaki) as background: */
gdk_color_alloc (gtk_widget_get_colormap (top_table), &tips_fg);
tips_bg.red = 61669;
tips_bg.green = 59113;
tips_bg.blue = 35979;
gdk_color_alloc (gtk_widget_get_colormap (top_table), &tips_bg);
gtk_tooltips_set_colors (tips,&tips_bg,&tips_fg);
/* Preview */
frame = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
gtk_table_attach(GTK_TABLE(top_table), frame, 0, 1, 0, 1, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(top_table), frame, 0, 1, 0, 1, 0, 0, 5, 0);
gtk_widget_show(frame);
wint.preview = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size(GTK_PREVIEW(wint.preview), preview_width, preview_height);
gtk_container_add(GTK_CONTAINER(frame), wint.preview);
gtk_widget_show(wint.preview);
/* Controls */
frame = gtk_frame_new ("Color intensity");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_container_border_width(GTK_CONTAINER(frame), 0);
gtk_table_attach (GTK_TABLE (top_table), frame, 0, 4, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
table = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table), 0);
gtk_table_attach(GTK_TABLE(top_table), table, 0, 4, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table, FALSE, FALSE, 0);
gtk_widget_show(table);
dialog_create_value("R", GTK_TABLE(table), 0, &wvals.redstretch,0,128);
dialog_create_value("R", GTK_TABLE(table), 0, &wvals.redstretch,0,128.00000000000, "Change intensity of the red channel");
table2 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table2), 0);
gtk_table_attach(GTK_TABLE(top_table), table2, 0, 4, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table2, FALSE, FALSE, 0);
gtk_widget_show(table2);
dialog_create_value("G", GTK_TABLE(table2), 0, &wvals.greenstretch,0,128);
dialog_create_value("G", GTK_TABLE(table2), 0, &wvals.greenstretch,0,128.0000000000000, "Change intensity of the green channel");
table3 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table3), 0);
gtk_table_attach(GTK_TABLE(top_table), table3, 0, 4, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table3, FALSE, FALSE, 0);
gtk_widget_show(table3);
dialog_create_value("B", GTK_TABLE(table3), 0, &wvals.bluestretch,0,128);
dialog_create_value("B", GTK_TABLE(table3), 0, &wvals.bluestretch,0,128.00000000000000, "Change intensity of the blue channel");
gtk_widget_show(toggle_vbox);
gtk_widget_show(frame);
frame = gtk_frame_new ("Phase displacement");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_container_border_width(GTK_CONTAINER(frame), 0);
gtk_table_attach (GTK_TABLE (top_table), frame, 0, 4, 4, 5, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
table = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table, FALSE, FALSE, 0);
gtk_widget_show(table);
gtk_widget_show(toggle_vbox);
gtk_widget_show(frame);
dialog_create_value("R", GTK_TABLE(table), 0, &wvals.redphase,-pi,pi, "Change phase displacement of function for red channel");
table2 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table2), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table2, FALSE, FALSE, 0);
gtk_widget_show(table2);
dialog_create_value("G", GTK_TABLE(table2), 0, &wvals.greenphase,-pi,pi, "Change phase displacement of function for green channel");
table3 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table3), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table3, FALSE, FALSE, 0);
gtk_widget_show(table3);
dialog_create_value("B", GTK_TABLE(table3), 0, &wvals.bluephase,-pi,pi, "Change phase displacement of function for blue channel");
frame = gtk_frame_new ("Frequency");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_container_border_width(GTK_CONTAINER(frame), 0);
gtk_table_attach (GTK_TABLE (top_table), frame, 0, 4, 7, 8, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
table = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table, FALSE, FALSE, 0);
gtk_widget_show(table);
gtk_widget_show(toggle_vbox);
gtk_widget_show(frame);
dialog_create_value("R", GTK_TABLE(table), 0, &wvals.redfrequency,0,10, "Change frequency of function for red channel");
table2 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table2), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table2, FALSE, FALSE, 0);
gtk_widget_show(table2);
dialog_create_value("G", GTK_TABLE(table2), 0, &wvals.greenfrequency,0,10, "Change frequency of function for green channel");
table3 = gtk_table_new(1, 3, FALSE);
gtk_container_border_width(GTK_CONTAINER(table3), 0);
gtk_box_pack_start (GTK_BOX (toggle_vbox), table3, FALSE, FALSE, 0);
gtk_widget_show(table3);
dialog_create_value("B", GTK_TABLE(table3), 0, &wvals.bluefrequency,0,10, "Change frequency of function for blue channel");
/* Redmode toggle box */
frame = gtk_frame_new ("Red:");
frame = gtk_frame_new ("Red");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_table_attach (GTK_TABLE (top_table), frame, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);
toggle_vbox = gtk_vbox_new (FALSE, 5);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5);
gtk_table_attach (GTK_TABLE (top_table), frame, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
toggle = gtk_radio_button_new_with_label (redmode_group, "Sine");
@ -729,6 +1012,8 @@ alienmap_dialog(void)
&do_redsinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_redsinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use sine-function for red component");
toggle = gtk_radio_button_new_with_label (redmode_group, "Cosine");
redmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -738,6 +1023,7 @@ alienmap_dialog(void)
&do_redcosinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_redcosinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use cosine-function for red component");
toggle = gtk_radio_button_new_with_label (redmode_group, "None");
redmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -747,17 +1033,36 @@ alienmap_dialog(void)
&do_rednone);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_rednone);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Red channel: use linear mapping instead of any trigonometrical function");
toggle = gtk_check_button_new_with_label("Inversion 1");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.redinvert);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.redinvert);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option, higher color values will be swapped with lower ones (and vice versa) before color transformation is applied.");
toggle = gtk_check_button_new_with_label("Inversion 2");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.redinvert2);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.redinvert2);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option, higher color values will be swapped with lower ones (and vice versa) after color transformation is applied.");
gtk_widget_show (toggle_vbox);
gtk_widget_show (frame);
/* Greenmode toggle box */
frame = gtk_frame_new ("Green:");
frame = gtk_frame_new ("Green");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_table_attach (GTK_TABLE (top_table), frame, 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);
toggle_vbox = gtk_vbox_new (FALSE, 5);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5);
gtk_table_attach (GTK_TABLE (top_table), frame, 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
toggle = gtk_radio_button_new_with_label (greenmode_group, "Sine");
@ -768,6 +1073,7 @@ alienmap_dialog(void)
&do_greensinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_greensinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use sine-function for green component");
toggle = gtk_radio_button_new_with_label (greenmode_group, "Cosine");
greenmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -777,6 +1083,7 @@ alienmap_dialog(void)
&do_greencosinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_greencosinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use cosine-function for green component");
toggle = gtk_radio_button_new_with_label (greenmode_group, "None");
greenmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -786,17 +1093,37 @@ alienmap_dialog(void)
&do_greennone);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_greennone);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Green channel: use linear mapping instead of any trigonometrical function");
toggle = gtk_check_button_new_with_label("Inversion 1");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.greeninvert);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.greeninvert);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option higher color values will be swapped with lower ones (and vice versa) before color transformation is applied.");
toggle = gtk_check_button_new_with_label("Inversion 2");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.greeninvert2);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.greeninvert2);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option higher color values will be swapped with lower ones (and vice versa) after color transformation is applied.");
gtk_widget_show (toggle_vbox);
gtk_widget_show (frame);
/* Bluemode toggle box */
frame = gtk_frame_new ("Blue:");
frame = gtk_frame_new ("Blue");
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
gtk_table_attach (GTK_TABLE (top_table), frame, 3, 4, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);
toggle_vbox = gtk_vbox_new (FALSE, 5);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 5);
gtk_table_attach (GTK_TABLE (top_table), frame, 3, 4, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0);
toggle_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0);
gtk_container_add (GTK_CONTAINER (frame), toggle_vbox);
toggle = gtk_radio_button_new_with_label (bluemode_group, "Sine");
@ -807,6 +1134,7 @@ alienmap_dialog(void)
&do_bluesinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_bluesinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use sine-function for blue component");
toggle = gtk_radio_button_new_with_label (bluemode_group, "Cosine");
bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -816,6 +1144,7 @@ alienmap_dialog(void)
&do_bluecosinus);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_bluecosinus);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Use cosine-function for blue component");
toggle = gtk_radio_button_new_with_label (bluemode_group, "None");
bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle));
@ -825,10 +1154,28 @@ alienmap_dialog(void)
&do_bluenone);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_bluenone);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"Blue channel: use linear mapping instead of any trigonometrical function");
toggle = gtk_check_button_new_with_label("Inversion 1");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.blueinvert);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.blueinvert);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option higher color values will be swapped with lower ones (and vice versa) before color transformation is applied.");
toggle = gtk_check_button_new_with_label("Inversion 2");
gtk_box_pack_start(GTK_BOX(toggle_vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT(toggle), "toggled",
(GtkSignalFunc) alienmap_toggle_update,
&wvals.blueinvert2);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(toggle), wvals.blueinvert2);
gtk_widget_show(toggle);
set_tooltip(tips, toggle, "If you enable this option higher color values will be swapped with lower ones (and vice versa) after color transformation is applied.");
gtk_widget_show (toggle_vbox);
gtk_widget_show (frame);
/* gtk_widget_show (table); */
/* Buttons */
@ -844,7 +1191,18 @@ gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0);
gtk_widget_grab_default(button);
gtk_widget_show(button);
set_tooltip(tips,button,"Accept settings and apply filter on image");
button = gtk_button_new_with_label("Animation");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc) dialog_animation_callback,
dialog);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0);
gtk_widget_show(button);
set_tooltip(tips,button,"Create an animation with the color-cycling script and then exit this dialog box.");
button = gtk_button_new_with_label("Cancel");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
@ -852,6 +1210,7 @@ gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6);
dialog);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0);
gtk_widget_show(button);
set_tooltip(tips,button,"Reject any changes and close plug-in");
button = gtk_button_new_with_label("About...");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
@ -860,10 +1219,13 @@ gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show(button);
set_tooltip(tips,button,"Show information about this plug-in and the author");
/* Done */
gtk_widget_show(dialog);
ready=1;
dialog_update_preview();
gtk_main();
@ -890,10 +1252,12 @@ dialog_update_preview(void)
int px, py;
int x, y;
double redstretch, greenstretch, bluestretch;
double redphase, greenphase, bluephase;
double redfrequency, greenfrequency, bluefrequency;
short int r,g,b;
double scale_x, scale_y;
guchar *p_ul, *i, *p;
if (ready==0) return;
left = sel_x1;
right = sel_x2 - 1;
bottom = sel_y2 - 1;
@ -904,6 +1268,14 @@ dialog_update_preview(void)
redstretch = wvals.redstretch;
greenstretch = wvals.greenstretch;
bluestretch = wvals.bluestretch;
redphase = wvals.redphase;
greenphase = wvals.greenphase;
bluephase = wvals.bluephase;
redfrequency = wvals.redfrequency;
greenfrequency = wvals.greenfrequency;
bluefrequency = wvals.bluefrequency;
scale_x = (double) (preview_width - 1) / (right - left);
scale_y = (double) (preview_height - 1) / (bottom - top);
@ -920,14 +1292,16 @@ dialog_update_preview(void)
r = *i++;
g = *i++;
b = *i;
transform(&r,&g,&b,redstretch, greenstretch, bluestretch);
transform(&r,&g,&b,redstretch, greenstretch, bluestretch
, redphase, greenphase, bluephase,
redfrequency, greenfrequency, bluefrequency);
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1; /*dx; */
px += 1;
} /* for */
py +=1; /* dy; */
py +=1;
} /* for */
p = wint.wimage;
@ -945,7 +1319,7 @@ dialog_update_preview(void)
static void
dialog_create_value(char *title, GtkTable *table, int row, gdouble *value,
int left, int right)
int left, int right, const char *desc)
{
GtkWidget *label;
GtkWidget *scale;
@ -960,8 +1334,8 @@ dialog_create_value(char *title, GtkTable *table, int row, gdouble *value,
scale_data = gtk_adjustment_new(*value, left, right,
(right - left) / 128,
(right - left) / 128,
(right - left) / 1000,
(right - left) / 1000,
0);
gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed",
@ -975,6 +1349,7 @@ dialog_create_value(char *title, GtkTable *table, int row, gdouble *value,
gtk_scale_set_digits(GTK_SCALE(scale), 3);
gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS);
gtk_widget_show(scale);
set_tooltip(tips,scale,desc);
entry = gtk_entry_new();
gtk_object_set_user_data(GTK_OBJECT(entry), scale_data);
@ -987,6 +1362,8 @@ dialog_create_value(char *title, GtkTable *table, int row, gdouble *value,
value);
gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, 4, 0);
gtk_widget_show(entry);
set_tooltip(tips,entry,desc);
} /* dialog_create_value */
/*****/
@ -1095,6 +1472,7 @@ alienmap_toggle_update (GtkWidget *widget,
wvals.bluemode = COSINUS;
else if (do_bluenone)
wvals.bluemode = NONE;
dialog_update_preview();
}
@ -1111,8 +1489,8 @@ alienmap_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
unsigned char *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
@ -1130,6 +1508,7 @@ alienmap_logo_dialog()
xbutton, TRUE, TRUE, 0);
gtk_widget_grab_default(xbutton);
gtk_widget_show(xbutton);
set_tooltip(tips,xbutton,"This closes the information box");
xframe = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(xframe), GTK_SHADOW_ETCHED_IN);
@ -1153,7 +1532,7 @@ alienmap_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_width*logo_height-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {
@ -1176,8 +1555,8 @@ alienmap_logo_dialog()
"CH-3066 Stettlen (Switzerland)\n\n"
"cotting@mygale.org\n"
"http://www.mygale.org/~cotting\n\n"
"AlienMap Plug-In for the GIMP\n"
"Version 1.00\n";
"AlienMap Plug-In for the GIMP\n"
"Version 1.03\n";
xlabel = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0);
gtk_widget_show(xlabel);

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,9 @@
/**********************************************************************
* Conical Anamorphose Distortion Plug-In (Version 1.02)
* Conical Anamorphose Distortion Plug-In (Version 1.03)
* Daniel Cotting (cotting@mygale.org)
**********************************************************************
* Official homepages: http://www.mygale.org/~cotting
* http://cotting.citeweb.net
* http://village.cyberbrain.com/cotting
**********************************************************************
*/
@ -641,8 +642,8 @@ anamorphose_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
guchar *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
@ -684,7 +685,7 @@ anamorphose_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_width*logo_height-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {
@ -708,7 +709,7 @@ anamorphose_logo_dialog()
"cotting@mygale.org\n"
"http://www.mygale.org/~cotting\n\n"
"Conical Anamorphose\nPlug-In for the GIMP\n"
"Version 1.02\n";
"Version 1.03\n";
xlabel = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0);
gtk_widget_show(xlabel);

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.03 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.03 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,9 @@
/**********************************************************************
* CentralReflection Distortion Plug-In (Version 1.02)
* CentralReflection Distortion Plug-In (Version 1.04)
* Daniel Cotting (cotting@mygale.org)
**********************************************************************
* Official homepages: http://www.mygale.org/~cotting
* http://cotting.citeweb.net
* http://village.cyberbrain.com/cotting
**********************************************************************
*/
@ -237,7 +238,7 @@ drawCentralReflection(GDrawable *drawable)
dx = (gfloat)col - a;
for(row = 0; row < regionheight; row++) {
pixelpos = (col+row*regionwidth)*bytes;
dy = -((gfloat)row - b);
dy = -((gfloat)row - b);
abstand=(sqrt(dx*dx+dy*dy));
succeeded=1;
verhaltniss=radius/abstand;
@ -587,8 +588,8 @@ CentralReflection_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
guchar *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
@ -630,7 +631,7 @@ CentralReflection_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_width*logo_height-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {
@ -654,7 +655,7 @@ CentralReflection_logo_dialog()
"cotting@mygale.org\n"
"http://www.mygale.org/~cotting\n\n"
"Central-Reflection\n Plug-In for the GIMP\n"
"Version 1.02\n";
"Version 1.04\n";
xlabel = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0);
gtk_widget_show(xlabel);

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.04 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.04 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

File diff suppressed because one or more lines are too long

View File

@ -1,14 +1,10 @@
/**********************************************************************
* Curtain Plug-In (Version 1.01)
* Curtain Plug-In (Version 1.03)
* Daniel Cotting (cotting@mygale.org)
**********************************************************************
* Official Homepage: http://www.mygale.org/~cotting
**********************************************************************
* Homepages under construction: http://www.chez.com/cotting
* http://www.cyberbrain.com/cotting
* You won't be able to see anything yet, as I don't really have the
* time to build up these two sites :-(
* Have a look at www.mygale.org/~cotting instead!
* Official homepages: http://www.mygale.org/~cotting
* http://cotting.citeweb.net
* http://village.cyberbrain.com/cotting
**********************************************************************
*/
@ -228,9 +224,11 @@ drawCurtain(GDrawable *drawable)
ix=(int)x;
iy=(int)y;
/* Flags horiz and vert inversed by mistake! */
/* Corrected this with a small hack in the next lines. */
/* (one more inversion) */
/*
Flags horiz and vert inversed by mistake!
Corrected this with a small hack in the next lines.
(one more inversion)
*/
if ((((int)((float)ix/2.0))*2==ix) && (wvals.vert)) {
pos = ((gint)(regionheight-1-iy)*regionwidth) * bytes;
@ -424,8 +422,8 @@ curtain_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
guchar *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
@ -467,7 +465,7 @@ curtain_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_height*logo_width-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {
@ -491,7 +489,7 @@ curtain_logo_dialog()
"cotting@mygale.org\n"
"http://www.mygale.org/~cotting\n\n"
"Curtain Plug-In for the GIMP\n"
"Version 1.01\n";
"Version 1.03\n";
xlabel = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0);
gtk_widget_show(xlabel);

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.03 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -29,11 +29,9 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 1.03 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
Makefile.in
Makefile
.deps
_libs
DigitalSignature

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
-------------------------------------------
GIMP-Plug-In
GIMP-Plug-In (Digital Signature)
-------------------------------------------
Written by Daniel Cotting
Bahnhofstrasse 31
@ -29,16 +29,11 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
on your system). To do so, change to the
plug-in directory of the GIMP...
If you find that the plug-in is too big,
you can compress the executables with the
gzexe program (if it is avaiable on your
system). To do so, change to the plug-in
directory of the GIMP...
cd /usr/local/lib/gimp/VERSION/plug-ins
@ -53,7 +48,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -0,0 +1,43 @@
## Process this file with automake to produce Makefile.in
pluginlibdir = $(gimpplugindir)/plug-ins
pluginlib_PROGRAMS = DigitalSignature
DigitalSignature_SOURCES = \
DigitalSignature.c logo.h
INCLUDES = \
$(X_CFLAGS) \
-I$(top_srcdir) \
-I$(includedir)
LDADD = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la \
$(X_LIBS) \
-lc
DEPS = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la
DigitalSignature_DEPENDENCIES = $(DEPS)
.PHONY: files
files:
@files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
echo $$p; \
done
@for subdir in $(SUBDIRS); do \
files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \
for file in $$files; do \
echo $$subdir/$$file; \
done; \
done

View File

@ -0,0 +1,70 @@
-------------------------------------------
GIMP-Plug-In (Digital Signature)
-------------------------------------------
Written by Daniel Cotting
Bahnhofstrasse 31
CH-3066 Stettlen (Switzerland)
cotting@mygale.org
www.mygale.org/~cotting
-------------------------------------------
Some code is taken out of other plug-ins
written by other authors.
-------------------------------------------
-------------------------------------------
INSTALLATION
-------------------------------------------
To install it, you have to edit the
Makefile (change install-path).
Afterwards run make. This will compile
and install the plug-in in the right
directory. Once the new code is installed,
you can run the GIMP and enjoy the new
functions and effects it provides.
-------------------------------------------
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
If you find that the plug-in is too big,
you can compress the executables with the
gzexe program (if it is avaiable on your
system). To do so, change to the plug-in
directory of the GIMP...
cd /usr/local/lib/gimp/VERSION/plug-ins
...and execute the command...
gzexe PLUGIN_NAME
...and remember to remove the uncompres-
sed binary, which has been renamed to
PLUGIN_NAME~, by running the command:
rm PLUGIN_NAME~
This will result in a code size of about
20 kB, which isn't too much IMHO.
------------------------------------------
------------------------------------------
FEEDBACK
------------------------------------------
I'm interested in any feedback, comments,
bug-reports, suggestions etc. If you
have anything you would like to tell
me, you can write to cotting@mygale.org.
Also have a look at the GIMP-section of
my homepage at www.mygale.org/~cotting.
------------------------------------------
Thank you and happy GIMPing!
Daniel Cotting
------------------------------------------

View File

@ -0,0 +1,788 @@
/* GIMP header image file format (Indexed): //logo.h */
static unsigned int logo_width = 200;
static unsigned int logo_height = 72;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) \
pixel[0] = palette_data[data[0]*3+2]; \
pixel[1] = palette_data[data[0]*3+1]; \
pixel[2] = palette_data[data[0]*3+0]; \
data--;
static unsigned char
palette_data[] = { 4,2,2,4,110,178,32,4,122,4,36,
86,15,3,66,4,58,127,36,8,186,4,34,122,17,2,
34,4,19,66,12,4,162,90,2,69,88,2,48,7,20,
2,25,2,103,8,14,48,4,58,186,90,3,154,82,2,
129,55,2,34,17,2,18,17,34,191,94,2,101,57,2,
70,7,32,154,12,22,157,17,3,50,4,88,150,96,3,
186,86,2,138,87,2,86,212,214,210,4,19,98,52,2,
154,15,11,2,4,132,216,7,18,125,12,6,82,37,12,
18,4,88,189,86,14,48,128,2,157,32,4,138,4,60,
155,4,48,126,60,2,218,7,10,52,13,12,66,129,2,
50,56,2,52,52,14,98,4,47,157,6,20,87,48,2,
24,58,2,101,120,2,141,52,5,170,4,113,215,127,2,
73,4,90,210,4,52,112,36,18,194,59,2,85,42,2,
10,107,2,173,95,2,114,31,3,52,4,79,160,84,3,
189,14,10,40,30,2,69,96,2,58,113,2,126,9,37,
231,17,33,170,28,14,2,4,30,146,68,10,37,132,2,
82,23,4,7,4,10,122,4,36,108,32,2,37,7,27,
2,4,98,175,84,10,146,4,101,191,4,14,146,8,29,
86,4,2,170,8,60,230,84,10,162,72,2,39,102,2,
142,4,142,221,4,49,143,68,12,170,4,124,213,15,4,
74,114,2,69,112,2,158,32,3,23,8,50,190,111,2,
104,6,40,154,96,2,210,6,28,104,60,2,138,61,2,
25,68,2,114,58,2,125,39,2,114,73,2,69,16,4,
58,4,88,177,56,14,26,138,2,173,4,68,176,71,2,
55,76,2,210,4,78,130,17,3,42,6,27,69,112,2,
49,12,26,178,47,13,159,18,11,10,13,11,74,141,2,
58,52,18,234,4,82,186,4,126,198,4,103,213,4,62,
206,4,72,226,12,46,210,72,12,222,12,26,146,20,34,
210,4,113,197,4,131,229,4,48,170,4,76,170,7,43,
95,52,30,218,15,11,170,52,14,202,12,14,86,4,40,
174,108,14,202,156,2,186,60,12,130,5,40,129,73,13,
189,12,42,138,44,14,202,4,59,143,4,124,229,4,69,
191,4,69,157,4,60,114,4,43,110,14,14,58,20,26,
157,28,26,210,4,87,162,4,91,202,4,110,226,4,98,
226,4,101,202,17,14,186,28,18,18,60,2,234,28,10,
114,4,30,114,8,10,162,12,54,186,20,26,130,100,10,
170,40,18,154,4,22,114,28,26,234,4,22,58,4,66,
226,4,54,202,12,42,202,4,38,98,4,145,234,4,76,
146,4,94,148,4,138,213,4,94,186,4,54,126,4,54,
154,4,118,211,4,106,178,4,106,188,4,54,142,4,94,
170,4,70,202,4,118,197,4,54,173,4,82,178,72,4,
172,36,10,138,76,14,162,4,98,210,4,118,226,112,2,
114,24,19,8,30,2,85,84,6,226,141,2,73,28,30,
10,28,46,186,112,4,206,36,10,90,36,2,174,108,2,
58,41,3,130,44,10,194,9,33,130,92,2,162,51,2,
42,12,32,162,81,3,146,44,11,26,28,6,146,44,2,
178,30,12,10,60,10,178,64,2,146,28,10,178,92,10,
210,5,41,146,40,2,102,96,2,125,100,2,88,74,2,
157,142,2,159,26,10,55,143,2,50,73,2,102,134,2,
142,73,2,84,127,2,126,142,2,82,156,2,178,28,10,
158,28,26,114,84,14,202,12,4,10,5,20,74,17,2,
26,92,2,194,7,19,106};
static unsigned char header_data[] = { 71,99,218,218,99,11,71,218,71,71,
218,99,99,99,71,99,218,99,99,99,99,218,71,218,99,218,218,99,99,218,
218,99,99,218,99,218,99,58,218,99,99,99,58,218,99,99,99,58,99,58,
99,58,11,58,99,58,58,11,99,58,99,58,99,99,99,218,99,218,99,58,
99,71,99,218,71,12,12,12,12,12,12,12,12,12,92,19,19,19,92,92,
92,92,19,108,19,19,19,19,19,19,53,53,53,53,101,19,19,53,53,19,
19,19,12,92,92,12,12,12,71,71,218,99,218,218,71,71,12,12,218,99,
58,58,58,99,99,99,58,99,99,99,11,58,11,58,58,99,58,99,99,99,
58,99,99,99,99,58,99,99,99,99,99,218,99,99,11,99,99,99,11,99,
99,218,218,218,99,218,99,99,218,218,99,99,218,99,218,218,99,99,218,11,
218,71,99,218,99,218,218,99,71,8,218,99,218,218,99,99,99,99,99,99,
218,218,99,99,218,99,218,99,218,71,99,99,99,218,99,99,218,99,99,99,
218,218,99,99,99,99,58,99,58,30,99,99,99,99,99,99,58,99,99,58,
99,58,99,58,99,99,58,58,58,99,58,58,99,218,218,71,99,99,71,71,
71,123,12,118,71,71,12,71,123,12,12,19,19,19,53,19,19,53,53,19,
19,53,101,63,20,63,20,63,53,53,53,101,53,53,53,19,53,53,53,19,
92,12,12,12,71,12,12,12,12,12,92,71,218,218,71,218,71,71,71,71,
99,218,58,58,58,99,99,99,99,58,58,58,99,58,99,58,58,99,58,58,
99,99,58,99,99,99,99,58,99,58,30,99,99,99,218,99,58,99,99,58,
11,99,99,218,99,218,218,99,99,218,71,99,218,99,99,218,99,99,218,99,
11,218,99,218,99,11,218,99,99,8,71,71,71,99,218,71,218,99,71,218,
11,99,218,218,99,218,99,218,99,99,99,99,218,99,99,99,99,99,218,99,
99,99,99,99,99,11,99,99,99,99,99,99,58,99,58,99,58,99,58,58,
99,11,58,58,99,58,99,99,58,58,218,99,123,71,71,71,123,71,71,218,
99,99,218,71,12,12,12,12,92,19,19,53,19,53,53,53,53,19,53,53,
53,53,19,53,19,53,53,53,53,53,63,63,101,63,63,20,53,19,53,53,
53,19,92,92,12,12,12,71,71,71,71,12,12,71,71,12,12,12,12,12,
12,218,218,99,58,58,99,58,99,58,99,58,99,99,58,218,58,99,58,99,
99,99,99,11,58,99,99,58,99,99,58,58,99,99,99,99,99,99,99,99,
99,58,218,99,218,99,99,99,218,99,99,218,99,11,218,99,218,218,99,99,
218,99,218,11,99,71,99,218,71,8,99,99,218,99,99,99,218,99,99,218,
218,99,11,99,99,218,99,218,99,218,218,99,58,99,99,99,58,11,99,99,
58,99,99,58,58,58,58,99,99,99,99,218,58,99,99,99,58,58,99,99,
58,58,99,58,99,58,99,99,58,58,99,218,71,71,218,218,218,58,58,58,
218,99,71,123,12,12,12,19,19,108,108,108,92,92,92,12,71,12,12,92,
19,53,53,53,101,53,53,19,53,101,53,20,53,79,79,0,34,79,20,63,
53,53,53,19,19,19,12,12,12,71,71,71,71,71,71,123,71,12,12,12,
12,12,71,71,218,58,99,58,218,58,218,99,58,99,58,99,99,218,58,58,
58,99,58,58,99,99,58,99,58,99,99,218,58,58,99,99,99,99,99,99,
58,11,99,99,218,218,218,99,218,99,99,218,218,99,218,99,99,218,218,99,
218,99,71,218,99,218,99,99,99,8,218,218,99,218,99,218,99,218,218,99,
11,218,218,218,218,99,71,99,218,99,99,99,218,58,99,99,99,99,218,30,
58,99,58,99,58,11,58,99,58,99,58,58,58,99,58,58,99,99,58,58,
58,99,58,99,58,58,99,58,218,99,99,218,58,99,58,58,58,58,58,218,
71,12,12,71,71,12,12,12,12,71,71,118,71,71,118,71,71,12,223,19,
19,53,53,53,53,63,229,20,79,20,34,0,20,101,101,63,20,101,101,53,
108,53,53,53,53,53,101,19,92,12,12,12,12,71,71,218,218,218,71,71,
118,12,71,71,218,218,58,58,58,58,58,58,218,58,58,58,99,99,218,99,
58,58,99,99,58,99,58,99,58,58,58,99,99,99,58,99,99,99,58,58,
99,58,58,99,99,99,99,99,99,99,218,99,99,218,99,218,218,99,99,218,
99,58,99,99,218,99,218,218,218,8,99,218,99,218,99,218,11,99,218,99,
99,99,99,99,218,99,58,99,99,99,58,99,218,99,99,99,99,99,58,99,
58,218,99,99,99,58,218,58,58,58,99,99,58,99,218,58,99,99,58,218,
58,99,58,99,99,99,58,99,58,58,58,58,99,58,58,58,58,218,218,12,
71,71,71,12,12,71,71,12,71,12,71,71,71,71,12,92,19,53,53,53,
101,63,79,34,251,0,0,63,20,53,19,53,53,53,53,19,19,53,19,19,
19,108,19,19,19,19,19,19,53,53,108,12,12,12,71,71,218,58,58,58,
99,218,71,71,71,12,218,99,99,58,58,58,58,218,58,58,58,58,58,99,
99,58,58,99,58,218,58,99,99,99,99,58,99,128,99,58,99,99,11,99,
99,58,11,58,99,99,99,218,58,11,99,58,99,218,99,99,218,99,99,99,
218,71,99,99,218,99,11,99,218,8,218,99,218,99,218,99,99,218,99,218,
58,218,58,218,99,99,218,99,58,99,99,99,99,78,11,58,99,58,99,99,
99,58,58,99,58,11,58,58,218,99,99,58,58,58,99,58,58,58,99,99,
58,58,58,58,58,58,99,58,99,99,99,58,58,58,58,58,218,71,118,12,
71,71,71,71,71,12,71,71,71,71,71,12,92,19,19,53,53,63,20,251,
0,79,79,0,79,34,34,79,0,63,229,20,63,101,53,101,19,53,19,92,
12,71,12,92,12,12,12,12,12,92,19,92,92,71,12,118,71,218,99,58,
58,58,58,58,218,123,71,218,58,58,58,99,58,58,58,218,58,218,58,58,
218,58,99,58,58,58,99,99,58,99,58,99,218,99,99,99,58,58,58,11,
58,58,99,58,99,99,30,99,99,99,58,218,218,30,99,218,99,99,99,218,
99,99,218,218,99,99,218,71,99,8,99,99,71,99,218,218,99,218,99,218,
99,218,99,58,11,58,99,99,11,58,99,58,99,99,99,99,58,58,99,99,
58,99,99,99,99,58,99,78,58,58,99,99,218,78,58,218,58,99,212,58,
99,58,58,58,218,58,58,58,58,58,58,58,58,58,218,71,12,12,71,71,
123,218,218,58,99,71,123,71,71,12,19,19,19,53,53,19,19,53,63,53,
101,101,101,63,101,101,20,20,79,0,0,79,79,34,251,79,79,251,101,53,
19,92,12,71,71,71,218,12,218,12,71,71,71,71,71,12,71,71,123,71,
58,58,58,58,58,58,58,99,99,58,58,58,99,58,58,58,99,58,99,58,
99,58,58,99,58,58,58,58,99,58,99,58,99,58,99,58,99,99,58,58,
99,99,99,58,99,58,58,58,99,99,99,30,128,58,99,99,99,99,99,58,
218,99,99,218,218,99,99,218,71,8,71,218,99,99,99,99,218,99,99,99,
99,30,58,11,58,58,99,58,58,58,58,30,58,58,99,99,99,58,99,58,
99,58,99,58,58,58,218,99,58,99,58,58,58,218,99,58,58,58,58,58,
58,99,99,99,58,99,99,58,58,212,99,58,58,218,71,71,218,218,99,58,
58,58,58,218,123,71,71,12,108,19,19,108,19,19,223,92,19,92,12,12,
19,19,19,19,53,53,63,63,229,0,34,34,79,0,79,0,75,34,0,34,
79,20,53,19,92,12,71,71,71,218,71,123,71,123,71,71,71,71,71,71,
71,218,58,58,58,58,58,58,58,99,58,58,58,58,58,58,58,58,99,58,
58,99,99,58,99,58,58,58,58,58,58,99,58,99,58,99,58,58,99,99,
58,58,99,99,58,58,218,58,58,99,58,99,11,58,58,99,58,218,99,99,
99,99,218,99,99,218,99,99,99,8,99,218,99,218,99,99,99,99,58,58,
11,58,99,58,58,30,58,11,58,11,58,99,99,58,99,58,58,58,99,58,
58,99,58,99,99,58,58,99,58,99,58,99,58,99,212,58,58,58,58,58,
58,58,58,58,58,58,58,58,58,58,212,58,218,218,218,99,58,58,58,58,
58,99,71,71,71,12,71,71,12,12,12,71,71,123,71,218,71,71,71,92,
19,108,63,79,229,126,0,79,0,0,34,34,34,126,34,251,79,0,126,34,
79,0,79,20,63,19,19,12,71,71,71,218,71,99,71,71,71,71,71,71,
71,71,218,58,58,58,212,58,58,58,58,58,58,58,58,58,58,58,58,58,
58,58,99,58,58,99,58,58,99,99,128,218,58,58,99,58,99,58,58,99,
218,58,58,218,99,99,99,99,99,99,58,99,99,58,30,218,99,99,99,99,
99,99,218,99,99,99,218,218,99,8,218,99,99,99,58,99,99,99,99,99,
58,58,218,99,99,99,58,99,58,58,58,99,58,99,58,99,99,99,58,58,
99,99,58,58,58,58,58,58,99,99,58,99,99,58,58,58,58,99,58,58,
99,58,99,58,78,212,99,212,99,58,58,99,58,58,78,78,246,99,212,58,
99,71,123,71,71,71,71,71,218,218,71,123,218,218,218,118,12,19,63,63,
0,0,0,34,34,0,34,79,79,79,0,34,79,79,20,101,53,101,53,19,
53,53,101,101,53,53,19,19,19,92,218,218,218,218,218,212,78,58,218,218,
71,71,71,11,58,246,58,78,246,58,58,58,99,99,58,58,99,58,212,58,
99,58,99,58,58,99,58,58,58,58,58,212,218,58,58,99,58,58,99,58,
99,99,99,58,58,99,99,99,58,99,58,58,99,99,99,58,58,99,99,99,
99,99,99,11,58,99,99,99,218,8,99,99,218,99,99,218,99,218,58,58,
11,78,58,99,58,99,58,99,58,11,58,99,58,99,58,58,58,99,99,58,
99,99,99,58,58,58,58,58,58,58,58,58,58,58,58,212,99,58,212,99,
58,58,78,58,78,58,58,58,58,58,58,58,58,58,246,58,246,58,58,71,
218,71,71,71,218,71,71,71,71,218,218,71,71,92,92,53,63,126,79,0,
0,79,0,79,34,79,0,126,79,79,79,79,79,229,229,101,53,108,92,71,
71,71,71,71,71,12,12,19,108,19,92,71,71,71,71,218,212,246,78,58,
58,218,218,71,71,58,58,212,212,78,212,78,78,58,58,58,58,58,99,58,
78,58,58,99,58,58,58,58,58,58,58,58,99,58,99,58,58,212,99,58,
58,99,58,99,58,99,99,58,58,99,99,58,58,58,58,11,78,99,99,99,
99,58,99,58,71,99,99,99,99,8,99,99,99,218,99,58,99,30,58,11,
58,11,58,58,99,58,58,99,58,99,58,99,99,58,99,58,99,58,58,99,
58,58,58,58,58,78,58,99,58,99,58,58,58,58,99,58,212,99,58,58,
58,78,78,78,58,58,58,58,58,212,58,78,58,78,78,78,58,99,218,218,
71,218,218,71,58,99,58,99,71,71,71,12,19,20,79,251,0,251,79,251,
79,63,126,79,79,79,79,229,79,79,79,126,126,79,79,63,20,53,53,92,
12,12,218,71,71,218,218,218,71,218,71,71,71,218,71,218,218,58,246,246,
78,212,78,58,218,218,58,58,58,246,78,212,78,212,58,58,58,58,58,212,
78,78,78,58,58,99,58,58,58,58,58,58,58,58,58,218,99,99,58,99,
58,58,218,99,58,58,99,58,99,99,58,99,99,99,58,99,99,58,58,58,
218,99,11,58,99,99,99,218,99,8,99,30,218,58,11,99,99,58,99,58,
99,58,58,99,218,99,218,58,99,99,58,58,58,58,99,58,99,99,58,99,
58,58,58,78,78,58,58,58,58,58,99,246,78,78,58,58,58,58,58,78,
78,212,78,246,246,58,58,58,212,58,212,246,78,246,58,212,218,218,218,218,
218,58,246,58,246,58,218,218,123,12,19,19,53,53,101,53,63,101,63,63,
63,63,63,63,63,101,63,53,63,53,53,53,53,108,19,19,19,19,108,19,
92,92,12,12,71,71,218,99,99,218,218,218,218,218,71,71,71,218,218,246,
78,78,246,78,78,78,58,58,58,78,78,78,78,246,58,58,58,58,58,78,
212,78,78,58,58,58,58,99,58,58,58,58,58,58,99,58,58,58,58,58,
58,99,58,58,99,58,58,58,58,58,58,99,58,58,58,58,58,99,99,99,
58,99,58,99,99,58,99,99,99,8,99,99,30,58,58,58,58,58,58,99,
58,11,99,58,99,58,58,58,58,58,58,99,58,58,58,58,58,58,99,58,
99,58,78,58,58,58,99,58,58,78,246,78,58,78,58,58,58,58,78,212,
246,78,246,78,78,99,212,246,78,246,58,246,246,78,246,218,218,218,58,58,
246,78,78,246,58,218,218,71,12,12,108,92,108,19,108,53,63,63,63,53,
53,53,19,223,92,92,49,118,118,118,118,118,118,118,71,118,118,12,12,12,
92,71,71,123,218,99,11,58,58,58,58,78,58,99,99,123,71,218,218,218,
246,246,78,212,78,212,78,246,78,78,58,78,246,78,246,78,58,58,58,58,
99,78,246,78,246,99,58,58,58,58,58,78,78,78,78,99,58,99,58,99,
78,58,58,99,58,218,218,58,58,99,58,58,58,218,99,58,58,58,58,11,
58,99,99,99,58,99,99,218,58,8,99,99,58,99,58,11,58,11,58,58,
99,58,99,58,99,58,99,58,58,218,58,58,58,99,58,99,58,58,58,99,
78,58,58,58,99,58,58,78,78,58,246,78,246,99,58,58,58,212,78,78,
246,58,246,58,78,78,78,58,246,78,78,58,246,58,58,58,212,58,246,78,
212,246,58,58,71,71,71,71,12,92,92,92,108,53,53,53,19,19,223,223,
49,223,92,49,49,223,92,49,118,118,118,71,118,112,118,11,11,112,71,112,
71,71,11,11,11,99,99,58,58,78,78,78,246,78,246,58,99,71,218,71,
218,78,78,246,78,246,58,246,78,246,212,58,246,58,246,78,212,78,246,58,
58,58,78,246,246,78,78,99,58,58,58,212,78,58,78,58,58,58,58,58,
78,58,78,99,58,58,99,58,58,58,58,99,58,58,99,218,58,99,58,58,
58,58,99,58,99,99,58,99,99,8,99,99,58,58,58,99,58,99,99,58,
99,58,58,58,58,58,58,218,99,58,99,58,58,58,58,58,99,58,58,78,
58,78,78,78,78,58,78,58,78,78,78,212,78,58,78,58,78,212,78,246,
78,246,78,78,212,246,246,78,246,212,246,246,78,246,58,246,78,246,58,246,
246,58,99,218,218,218,71,12,92,19,19,19,19,19,223,223,49,223,49,118,
49,112,30,30,237,103,208,208,245,208,245,208,245,245,245,103,208,103,22,237,
30,30,11,11,11,11,71,71,11,99,58,78,78,246,58,246,246,246,58,99,
99,218,212,78,246,78,246,78,246,58,78,58,246,78,58,246,78,212,78,246,
58,212,58,78,78,212,78,78,58,58,99,78,78,78,78,78,58,58,99,58,
58,78,78,78,58,58,99,58,99,58,58,99,58,218,58,58,99,58,58,218,
99,58,99,99,58,99,30,99,99,8,58,99,58,99,58,58,58,99,58,99,
58,218,218,58,99,58,99,58,58,58,78,99,78,58,99,58,58,78,58,78,
78,58,78,78,58,78,78,246,246,212,78,78,78,58,78,246,78,246,58,246,
212,78,58,78,78,58,246,78,78,78,58,246,78,246,78,58,246,78,78,78,
58,218,99,11,71,12,92,92,92,223,223,223,223,223,49,118,112,22,237,208,
72,245,55,243,245,72,72,72,65,208,236,208,208,245,72,55,243,55,55,243,
245,245,245,103,237,237,30,11,11,112,71,11,99,58,78,246,246,246,246,78,
58,218,58,58,246,78,212,78,246,78,246,78,212,78,78,212,78,246,78,78,
58,78,78,78,78,78,246,246,246,58,58,78,58,246,78,212,78,78,99,58,
58,78,58,58,58,58,58,99,58,58,58,58,78,58,58,99,99,58,58,58,
99,218,58,99,99,99,58,99,58,8,99,99,99,58,11,58,58,58,99,58,
58,58,58,58,58,58,58,99,99,78,78,58,58,78,58,58,99,78,78,78,
78,78,78,78,78,78,212,246,246,246,246,78,78,246,246,58,246,78,246,78,
78,78,212,246,246,246,78,78,212,246,246,246,58,246,246,78,246,246,78,58,
218,99,71,12,12,92,92,82,223,49,223,118,112,22,208,72,72,208,65,22,
22,112,11,112,112,112,112,112,118,118,118,112,112,112,30,244,244,30,237,65,
236,72,55,55,243,243,208,208,237,237,11,71,11,11,71,11,99,58,246,246,
246,78,78,246,58,246,78,246,58,246,58,246,58,246,246,78,78,78,212,78,
212,246,212,78,246,246,58,78,78,246,99,246,246,58,246,58,78,78,78,58,
78,78,78,78,78,78,58,58,58,99,58,58,78,99,58,58,58,218,99,99,
58,58,99,58,99,58,58,99,99,8,58,58,99,58,99,218,99,58,99,99,
99,58,99,58,99,58,58,58,58,78,58,58,58,58,58,58,58,78,212,78,
78,58,246,78,58,246,246,246,246,246,246,246,78,58,246,78,246,58,246,58,
246,78,78,78,58,246,212,78,78,78,58,246,78,212,246,58,78,212,58,99,
218,71,12,92,19,223,49,49,118,62,30,22,208,208,103,30,244,112,244,118,
112,23,49,49,49,49,49,49,49,49,82,82,223,82,49,118,23,118,118,112,
11,30,237,22,65,245,55,243,245,245,103,237,237,11,71,11,71,71,218,58,
246,246,78,246,78,212,78,246,246,78,246,246,78,78,212,78,212,78,246,78,
78,58,246,78,58,246,78,212,78,246,78,78,78,78,78,212,246,246,246,78,
58,78,78,78,58,78,78,58,58,58,58,58,99,58,58,58,58,58,99,58,
58,58,58,58,58,99,99,58,58,8,99,99,58,58,58,99,99,99,99,58,
58,99,78,58,78,99,58,58,99,78,78,78,58,78,58,58,78,246,78,212,
78,78,58,78,246,246,246,246,246,246,58,78,78,246,58,246,78,246,78,246,
78,212,78,212,212,246,78,78,246,246,78,212,58,99,212,246,246,58,99,218,
118,12,92,223,223,49,49,11,237,208,208,103,244,23,118,112,118,112,49,49,
19,82,82,82,223,49,66,49,49,82,223,223,101,19,223,82,223,82,223,82,
82,49,23,112,11,244,30,65,72,55,55,245,208,22,237,112,11,118,71,218,
218,58,58,78,246,78,212,78,78,212,99,78,212,246,78,246,78,246,78,212,
246,246,78,246,246,78,246,78,246,58,246,78,58,78,246,246,246,246,212,246,
78,78,78,78,78,58,78,78,99,58,78,78,78,99,58,58,99,58,99,99,
58,99,99,99,99,58,99,58,99,8,99,99,99,58,58,99,58,58,99,58,
58,58,78,78,58,58,58,58,58,58,78,78,78,78,78,58,246,246,246,246,
246,78,78,212,246,246,246,246,246,246,78,212,78,246,78,212,78,246,58,246,
78,246,78,58,58,212,246,58,78,246,246,58,58,58,58,246,58,218,71,12,
223,223,49,49,49,30,65,72,72,30,112,118,118,112,118,49,223,223,223,49,
244,244,244,244,23,23,23,23,70,66,49,70,49,70,70,118,23,23,23,23,
49,223,19,82,223,223,23,11,244,237,208,72,55,55,208,103,30,11,11,49,
71,71,99,58,246,78,246,246,58,246,58,58,246,212,78,246,58,246,78,58,
58,212,78,78,212,78,212,78,78,78,212,78,78,78,246,212,246,246,246,212,
246,58,78,78,78,78,58,78,78,99,58,58,78,58,58,58,99,58,58,58,
58,58,58,58,99,58,99,58,99,8,99,58,58,218,58,58,58,99,58,58,
58,99,58,58,99,58,78,78,78,78,78,78,78,58,246,246,246,212,246,246,
212,246,78,246,246,246,246,246,212,246,246,78,246,58,212,246,78,78,78,246,
58,246,212,99,58,246,78,246,246,58,58,58,58,78,246,58,99,118,12,92,
223,223,223,11,22,72,208,244,49,112,112,118,49,82,223,49,244,244,242,62,
23,62,23,23,244,244,244,244,244,244,62,30,244,244,244,244,23,112,210,23,
62,244,244,23,223,82,53,82,49,112,30,30,65,72,55,245,208,237,30,112,
71,49,118,71,99,78,78,78,246,246,58,99,58,246,212,78,246,58,246,212,
99,58,212,246,78,246,78,246,212,246,78,246,246,212,246,246,246,212,246,246,
246,246,78,78,246,246,78,78,78,78,58,58,78,58,58,58,58,58,99,99,
99,78,99,58,99,99,58,99,58,8,58,99,58,99,99,58,58,99,58,58,
58,58,58,58,78,58,78,78,58,78,58,246,78,78,78,212,246,246,212,246,
246,246,246,246,246,246,246,246,246,246,246,58,246,58,99,212,246,212,78,78,
78,99,58,58,78,246,58,78,246,58,58,58,58,212,58,218,71,12,49,49,
49,112,22,72,65,112,49,112,112,112,223,19,118,62,244,62,62,23,23,244,
244,244,244,112,23,49,49,223,19,223,82,223,223,49,223,23,118,112,244,30,
62,62,62,62,23,62,23,223,82,8,82,71,30,244,22,72,55,245,103,237,
11,71,12,12,71,99,78,78,78,58,212,58,58,58,58,212,78,58,246,78,
58,58,58,212,78,246,58,78,78,212,212,246,246,246,212,246,246,246,246,246,
246,246,58,78,78,58,246,212,78,78,58,78,58,78,78,78,58,78,58,58,
218,58,58,99,58,99,99,99,58,8,218,99,58,58,58,99,58,58,99,78,
78,58,99,58,58,78,58,78,246,78,78,58,78,212,246,246,246,246,246,246,
246,246,246,212,246,212,246,246,246,212,78,246,58,58,58,246,78,78,212,246,
58,58,58,58,212,78,246,212,58,58,58,58,58,58,71,12,49,223,223,49,
30,208,72,30,49,49,112,49,223,223,23,22,244,62,23,23,62,22,112,118,
49,49,223,118,23,244,30,242,22,242,242,62,242,244,244,112,23,49,49,223,
23,112,30,244,62,112,210,23,23,49,82,8,223,244,237,30,208,55,243,245,
22,30,71,118,12,71,99,78,78,246,212,58,58,58,58,246,246,246,78,246,
58,58,58,78,212,78,246,246,246,58,58,212,246,246,246,246,246,246,246,246,
246,78,246,58,246,246,246,78,212,78,78,78,58,78,58,78,58,58,99,58,
58,58,99,58,58,58,58,58,58,8,58,99,58,58,58,58,99,58,78,78,
58,58,78,58,58,78,78,58,78,78,78,78,78,246,212,246,246,246,246,246,
246,246,246,246,246,246,212,246,246,246,78,58,58,58,58,246,78,78,246,99,
212,58,212,58,212,78,78,58,58,218,58,212,58,99,71,49,223,49,49,30,
55,72,112,49,244,11,49,82,112,242,242,62,23,62,244,112,118,223,82,118,
30,236,29,225,231,33,248,42,42,42,219,2,42,219,110,107,231,29,65,244,
112,223,223,49,112,30,30,23,23,23,23,49,82,101,49,30,30,242,72,243,
208,103,30,71,118,12,71,99,78,78,78,58,58,58,58,58,78,58,246,78,
58,58,99,58,246,58,246,58,246,58,99,58,212,246,246,212,246,246,246,246,
246,246,246,246,212,246,246,246,246,78,58,78,78,78,78,78,58,78,78,78,
58,78,99,99,99,58,58,99,99,8,99,58,99,99,58,58,58,58,78,78,
78,78,58,58,58,78,78,78,78,78,246,246,58,246,246,246,246,246,246,246,
246,246,212,246,99,58,246,246,246,246,212,58,58,58,99,212,78,212,212,58,
78,58,58,58,246,246,78,58,71,218,58,58,11,71,118,223,49,23,103,243,
22,49,118,30,118,82,49,30,242,62,70,62,244,118,223,82,112,65,93,205,
217,42,80,147,98,4,26,8,8,8,8,121,8,8,26,4,98,210,111,219,
29,29,65,112,223,82,23,30,244,62,62,62,62,49,82,82,112,30,30,65,
243,245,103,30,71,118,12,71,218,212,246,58,58,212,212,58,58,246,212,78,
58,58,212,58,58,246,78,246,58,58,58,58,246,212,246,246,246,246,246,246,
246,212,246,246,246,246,212,246,246,212,78,246,212,78,58,78,78,78,58,78,
78,78,58,58,58,58,99,58,58,8,58,58,58,58,58,58,58,58,237,78,
58,78,78,58,78,78,212,78,246,78,78,246,246,246,246,246,246,246,246,246,
246,246,246,58,58,58,246,246,246,246,58,58,99,58,58,246,246,78,99,78,
246,78,58,58,58,58,58,218,12,99,58,99,71,92,49,223,118,22,41,65,
223,23,30,118,19,23,22,242,23,23,30,112,223,19,112,29,222,232,87,80,
98,26,121,8,20,253,20,20,20,20,101,20,20,20,253,253,20,8,121,26,
4,14,2,231,29,30,49,82,112,30,244,62,23,210,118,82,101,223,30,244,
65,55,243,103,237,71,118,71,71,99,58,58,58,58,218,58,58,58,246,212,
58,58,212,78,99,58,246,246,78,58,58,58,58,246,246,246,246,246,246,246,
246,246,246,212,246,246,246,246,246,246,246,78,78,78,78,78,58,78,58,78,
78,58,58,58,78,99,58,58,99,8,99,58,58,99,99,58,58,58,58,237,
78,78,58,78,78,246,78,246,78,246,78,246,246,246,246,246,246,246,246,246,
246,246,58,58,58,58,246,246,246,58,99,78,246,212,99,246,212,58,78,246,
58,246,58,58,58,212,218,12,118,58,58,71,12,49,19,49,237,41,65,49,
118,112,223,82,244,236,62,66,62,30,82,8,112,93,68,6,137,88,162,253,
253,20,253,19,223,23,244,244,54,242,54,242,244,62,112,49,223,20,20,20,
20,253,26,98,14,33,29,244,82,101,112,22,62,62,62,23,49,53,82,30,
112,22,243,243,208,11,71,118,12,218,99,58,58,58,12,71,58,58,58,58,
99,58,58,246,246,58,58,246,246,58,58,58,99,58,246,246,246,246,78,58,
246,212,246,246,246,246,246,212,246,246,78,78,78,78,58,78,78,78,78,58,
78,58,78,237,78,58,99,99,78,8,58,99,58,58,78,78,78,78,78,78,
58,78,78,58,78,246,78,212,246,246,246,246,246,246,246,246,246,103,246,246,
246,246,58,58,58,99,212,246,246,58,212,78,246,58,58,58,58,58,212,78,
78,78,58,58,58,58,123,49,218,99,11,118,223,223,82,237,41,208,23,118,
237,223,82,244,18,210,23,23,112,19,223,103,64,6,148,147,26,253,20,8,
66,23,54,111,219,219,137,24,76,24,163,25,137,42,204,42,151,109,244,223,
20,20,20,20,8,4,111,231,236,23,82,12,237,62,62,23,62,223,253,223,
237,244,22,41,245,103,11,112,118,71,218,58,58,99,92,92,128,58,58,58,
58,58,58,212,78,58,58,212,58,58,58,78,78,58,212,246,246,246,58,58,
212,246,212,246,246,246,246,246,246,212,246,78,246,246,78,78,78,78,78,58,
78,58,58,78,99,58,58,58,99,8,99,58,58,58,58,78,78,58,78,78,
78,78,78,78,78,58,246,246,246,246,246,246,246,246,103,246,246,246,246,246,
246,78,58,58,58,58,58,212,58,58,78,212,78,78,99,58,58,212,78,246,
212,212,58,58,58,218,92,12,218,99,71,12,223,82,118,243,55,23,223,30,
223,19,244,93,54,49,23,112,82,82,245,153,138,234,162,8,253,101,49,30,
111,125,24,201,142,16,159,142,43,95,197,156,193,193,51,141,224,25,248,231,
65,118,20,20,20,20,121,210,231,55,244,82,49,30,244,62,62,244,223,20,
118,237,112,208,243,245,237,71,118,49,71,58,58,218,92,92,12,58,58,99,
58,58,212,78,212,212,58,58,58,58,58,212,78,58,58,246,246,246,99,58,
99,246,246,246,246,246,246,246,246,246,212,246,58,78,78,78,78,78,58,78,
78,58,78,78,58,78,58,99,58,8,99,99,58,58,58,78,78,58,78,58,
78,78,78,246,78,78,78,246,246,246,246,246,246,246,246,103,246,246,246,246,
246,58,58,58,58,58,58,58,58,58,78,78,246,78,58,58,58,212,78,58,
58,78,58,58,58,12,92,12,99,218,118,19,82,223,22,116,237,49,112,112,
101,112,93,109,70,112,118,82,223,55,136,185,44,26,253,253,82,62,107,163,
117,16,114,159,161,106,98,46,26,26,26,26,26,4,32,81,44,142,43,234,
10,56,236,23,20,20,20,8,4,219,225,237,19,82,11,244,62,54,62,223,
20,112,30,244,72,239,103,237,71,12,12,71,58,71,92,92,12,128,58,58,
58,58,246,78,246,58,58,58,99,58,58,246,78,78,58,246,246,58,58,58,
58,212,246,212,246,246,246,246,246,246,78,78,246,58,246,58,78,246,78,58,
78,58,78,78,58,58,58,58,58,8,58,58,58,58,78,237,58,78,78,78,
78,78,78,58,246,246,212,246,246,246,246,246,246,246,246,246,246,246,246,246,
78,58,58,58,58,58,99,58,58,246,246,246,58,246,58,58,58,78,246,218,
11,58,58,58,58,12,92,71,218,11,49,223,101,23,239,93,23,118,244,223,
223,65,29,70,70,112,82,82,72,233,135,152,121,253,20,49,242,179,176,39,
198,156,32,47,26,26,69,113,26,47,9,47,162,113,26,121,113,252,152,159,
43,234,217,238,30,253,20,251,8,4,107,17,30,82,223,22,62,62,54,244,
82,19,237,112,244,41,245,30,112,71,92,71,99,71,12,92,92,71,78,58,
58,246,246,58,78,212,58,58,58,58,58,78,246,58,99,58,212,58,58,58,
58,78,246,246,246,246,246,246,246,246,246,246,78,78,78,78,246,58,78,78,
58,58,58,99,58,99,58,58,58,8,58,99,99,58,58,78,78,58,78,58,
78,58,78,78,78,78,78,246,246,246,246,246,246,246,246,246,78,246,246,246,
58,58,78,58,78,58,58,99,58,78,58,246,246,58,58,58,212,58,58,12,
71,58,58,58,99,92,92,71,218,71,223,8,19,22,150,30,49,11,23,101,
30,93,54,49,112,49,20,30,254,181,95,26,253,253,49,65,163,166,206,202,
52,26,8,121,4,161,43,114,139,131,57,200,195,188,192,88,26,26,121,98,
197,67,234,145,230,22,82,20,20,8,98,107,100,112,253,112,103,244,54,62,
49,20,49,237,118,208,243,103,11,11,12,92,92,92,92,12,49,12,58,58,
78,58,246,78,246,78,212,99,58,58,78,246,58,78,58,58,58,99,58,58,
58,99,246,246,246,246,246,246,246,246,246,246,246,78,246,78,246,78,58,78,
78,58,78,78,78,58,58,99,58,8,99,58,58,58,99,78,58,78,78,78,
78,78,78,78,78,246,246,246,246,246,246,246,246,246,246,246,58,212,58,246,
99,212,58,99,78,99,58,58,78,246,58,58,58,78,78,58,78,78,99,71,
12,71,58,58,12,12,12,71,11,12,223,101,49,243,100,118,223,112,82,19,
93,225,113,23,244,101,223,41,129,199,52,253,20,223,242,124,39,57,117,122,
121,121,47,44,195,35,94,196,165,189,189,189,27,84,200,139,67,186,26,121,
240,106,159,234,175,68,242,20,20,20,8,210,238,93,223,19,237,244,23,54,
62,19,101,244,112,30,243,208,237,11,12,92,49,223,12,12,92,12,58,78,
246,78,58,246,78,212,78,78,58,58,212,58,58,58,78,99,58,58,99,58,
58,58,246,246,246,246,246,246,246,246,246,246,78,246,58,78,58,78,78,78,
78,78,237,78,58,58,58,58,58,8,99,58,99,58,78,78,78,58,78,78,
78,78,78,78,78,58,246,246,246,246,103,246,246,246,246,218,58,58,78,78,
58,99,71,12,58,78,58,78,58,78,123,12,78,78,58,212,78,78,123,92,
12,12,99,99,12,92,92,71,11,118,82,101,112,116,236,82,112,112,82,118,
100,110,66,23,49,101,244,215,73,43,69,253,101,23,219,59,97,202,52,8,
8,4,120,97,187,139,27,143,46,113,26,26,46,88,60,27,131,200,192,47,
82,66,81,159,234,170,68,118,20,251,20,26,2,64,244,101,118,22,23,62,
62,49,20,118,244,23,208,245,30,11,71,12,92,12,12,49,12,12,71,58,
246,246,78,246,78,246,58,78,58,78,212,218,12,246,78,99,58,78,78,11,
12,58,58,246,246,103,246,246,58,246,246,246,246,78,246,78,78,78,58,78,
78,58,58,58,78,58,58,99,58,8,99,58,58,58,99,78,58,78,78,78,
78,212,78,246,246,78,99,58,246,246,246,246,246,246,71,12,99,58,58,99,
58,58,53,251,71,78,78,78,78,246,19,19,71,246,246,78,212,246,12,92,
12,12,12,12,92,12,12,71,218,118,19,101,244,239,65,223,244,11,53,112,
222,235,66,112,223,20,72,45,90,221,8,253,19,242,214,97,57,152,26,8,
26,188,57,187,139,186,8,8,8,8,121,121,8,8,26,4,44,131,94,67,
162,82,113,44,159,76,220,29,82,0,20,8,98,238,245,82,82,237,23,62,
54,112,20,223,237,49,22,245,237,11,71,49,12,92,12,12,12,12,71,78,
246,58,246,58,246,78,246,58,246,212,58,19,101,218,78,78,99,58,58,53,
101,71,58,246,246,246,78,71,92,58,246,246,212,246,78,58,58,78,78,58,
78,78,78,78,58,58,58,58,58,8,99,99,58,99,58,78,78,58,99,58,
78,78,58,246,78,58,71,92,218,246,246,246,103,246,12,92,92,58,58,58,
58,218,63,53,19,246,246,78,78,212,53,92,92,212,246,78,78,58,92,218,
12,12,92,92,92,12,12,71,11,118,101,101,22,116,242,223,237,11,8,30,
17,62,70,112,8,53,72,172,134,143,8,20,223,109,102,57,97,81,121,82,
252,114,35,157,165,26,253,8,8,46,182,4,26,26,8,8,113,160,190,35,
186,66,121,106,117,152,232,68,49,79,20,8,26,42,17,223,53,22,112,244,
54,244,8,82,30,118,30,245,30,11,99,12,12,92,123,12,12,12,71,78,
246,78,246,78,58,246,246,58,246,58,12,53,53,12,78,78,78,99,12,63,
63,92,78,78,246,246,78,229,229,12,246,246,246,212,78,71,71,58,78,78,
58,78,78,58,58,58,212,58,58,8,99,58,58,58,58,78,78,58,99,218,
99,58,246,78,78,58,12,92,12,78,246,246,246,218,92,92,19,71,58,58,
58,12,38,92,53,71,246,58,246,218,108,92,92,218,246,212,78,58,12,218,
12,12,12,92,12,92,12,71,71,118,82,8,103,116,242,82,244,11,82,30,
222,210,223,23,8,101,55,172,183,186,8,253,223,110,102,157,97,161,8,8,
127,67,190,140,189,26,8,8,69,127,120,5,52,26,26,8,121,9,84,187,
43,113,82,98,142,152,89,119,244,20,0,253,121,219,64,23,101,30,30,23,
54,244,82,101,30,112,112,72,237,71,30,12,12,92,118,12,12,12,71,58,
246,246,58,246,58,212,78,246,58,246,108,63,53,19,78,78,78,58,53,101,
53,108,78,246,246,246,108,79,20,53,246,246,246,78,99,92,92,12,99,78,
78,58,58,218,218,218,99,58,58,8,99,99,58,58,58,99,99,218,71,11,
99,99,78,246,212,71,218,71,92,71,246,246,246,71,92,92,19,19,58,58,
58,92,53,92,92,108,58,246,246,71,92,92,92,92,212,246,246,58,123,48,
12,12,12,92,92,12,12,12,99,118,19,101,237,116,65,49,30,112,82,244,
222,235,26,118,82,101,65,136,183,7,8,8,82,242,21,157,57,192,69,8,
26,7,191,157,190,60,9,8,26,52,84,131,60,4,121,8,26,113,67,94,
142,113,82,98,43,152,10,119,244,251,0,253,121,111,64,23,101,244,22,49,
62,62,82,101,112,23,112,103,30,71,11,12,12,118,12,12,118,12,71,78,
78,246,78,58,218,58,78,246,246,12,53,101,53,19,58,78,58,12,63,63,
53,63,218,246,246,71,79,20,63,101,218,246,246,218,12,19,108,12,99,58,
99,71,218,71,71,218,71,218,71,8,99,58,99,99,58,58,11,218,71,218,
71,71,218,58,58,99,218,99,71,92,218,78,246,92,92,12,223,53,71,58,
58,19,19,92,92,19,12,78,78,12,92,92,92,92,71,78,78,218,123,241,
48,12,12,92,49,12,118,12,71,49,223,101,11,116,65,66,112,11,82,112,
100,54,66,66,223,20,244,105,90,159,8,8,8,244,10,167,187,202,98,8,
121,47,192,169,190,35,195,188,188,195,57,84,106,47,8,8,8,122,195,140,
95,66,82,98,142,221,175,119,244,251,251,20,8,219,64,112,101,30,242,118,
23,62,19,20,11,118,112,22,11,11,99,12,12,12,12,71,12,118,71,58,
246,58,246,99,12,99,212,78,58,19,53,53,101,53,58,78,218,53,101,53,
53,63,218,246,246,63,0,101,19,53,12,78,58,12,108,92,19,108,92,71,
71,12,71,71,123,71,71,123,71,8,99,99,58,58,58,11,58,11,99,218,
99,11,99,99,218,99,218,99,71,12,12,99,99,92,92,92,12,19,53,71,
99,38,53,12,12,92,19,218,212,92,92,92,48,12,108,128,246,218,123,48,
128,123,12,12,12,12,12,118,71,71,223,8,112,41,55,49,49,244,223,49,
93,231,70,82,223,20,82,116,181,158,252,8,20,223,242,214,57,157,156,46,
8,66,26,147,44,198,86,196,86,198,44,52,4,8,8,8,46,60,97,194,
52,82,82,180,159,177,232,64,66,79,20,8,26,231,100,49,8,237,62,23,
62,244,82,82,30,223,11,237,112,11,11,12,12,71,12,12,118,12,71,218,
246,78,58,218,92,99,246,212,92,53,79,79,53,53,218,58,19,63,38,126,
53,101,92,58,19,251,63,223,19,19,92,71,12,223,92,223,223,92,19,92,
12,71,123,71,71,71,71,71,71,8,11,58,11,58,99,58,99,58,99,58,
58,218,218,218,99,218,11,99,99,71,92,92,12,49,92,71,99,12,53,53,
92,20,53,123,48,12,92,19,218,19,92,12,241,48,92,92,58,218,92,241,
128,212,71,12,118,12,12,71,71,112,223,19,82,55,116,112,49,244,223,19,
208,238,235,66,223,253,82,22,250,73,95,113,8,82,49,111,102,207,132,188,
252,69,8,121,162,4,47,52,127,4,4,26,26,8,8,46,186,86,169,95,
66,8,4,95,192,87,45,236,101,251,253,8,70,222,236,223,223,237,244,23,
54,244,82,82,237,118,11,244,71,11,99,71,118,12,12,12,12,12,12,58,
78,78,246,123,108,12,212,12,53,63,13,83,63,53,12,92,53,226,13,13,
53,53,53,226,75,63,12,71,92,19,19,92,92,92,19,12,12,12,92,12,
71,71,71,71,71,12,71,71,71,8,99,99,58,99,99,58,58,99,58,58,
11,218,71,71,11,218,99,99,58,218,12,19,92,92,92,99,78,58,92,101,
75,251,53,12,123,48,92,108,101,63,92,12,241,241,92,92,108,92,108,128,
212,246,58,12,12,12,49,12,12,118,12,49,19,237,116,22,49,118,244,82,
112,17,231,70,223,82,20,82,93,45,133,7,46,8,8,49,50,224,168,207,
142,60,127,46,8,26,8,8,8,8,8,8,121,26,47,192,166,169,7,113,
66,113,7,156,36,217,28,23,251,251,20,26,111,222,30,8,49,22,112,62,
242,112,101,112,30,49,244,11,112,11,99,71,12,12,118,12,12,12,71,246,
246,78,212,92,108,92,218,53,38,13,0,0,63,101,20,63,101,75,83,83,
63,101,229,79,126,92,58,78,12,19,92,92,19,92,12,71,71,118,71,71,
218,12,71,71,71,71,71,218,99,8,218,99,218,58,58,218,99,99,58,99,
58,58,99,99,218,99,218,99,58,58,99,92,92,92,19,58,78,78,99,108,
0,34,38,123,123,48,123,92,53,108,92,12,241,241,241,123,92,19,19,123,
241,212,246,99,12,71,12,71,12,71,118,223,82,118,245,100,112,49,30,118,
223,237,238,111,113,223,19,20,49,93,144,184,44,113,8,253,19,210,173,141,
168,57,196,142,60,52,122,182,113,113,122,3,60,159,130,86,43,122,26,223,
47,106,95,76,89,68,244,20,251,20,8,210,238,72,223,19,30,112,23,62,
244,223,20,118,112,112,244,118,11,99,99,218,71,218,71,12,12,71,58,58,
78,246,246,92,63,53,53,101,83,0,83,83,53,63,63,53,20,83,0,0,
53,53,79,0,226,78,58,78,12,108,92,19,92,71,58,58,99,71,71,123,
71,218,218,71,218,218,99,218,99,8,99,99,218,218,99,99,99,99,58,99,
99,58,99,11,71,99,99,58,58,58,58,71,92,92,19,78,78,58,78,218,
53,63,101,123,123,48,48,123,92,19,92,92,241,241,241,241,92,92,92,12,
241,212,78,78,123,118,12,12,12,12,112,92,49,223,30,247,65,49,23,112,
82,23,72,231,14,26,82,19,101,49,17,146,102,154,147,69,8,82,49,23,
249,104,158,39,206,169,86,130,202,142,202,114,39,117,76,88,4,66,66,113,
7,95,234,175,68,22,101,20,251,8,4,107,100,112,101,112,30,23,112,62,
49,101,49,244,118,112,112,118,11,78,99,99,99,58,71,12,92,99,246,78,
246,58,218,108,108,53,63,229,0,83,34,13,53,53,101,38,13,0,0,13,
53,101,63,101,99,78,58,78,71,19,19,92,71,58,99,58,11,218,218,71,
99,99,99,99,218,58,99,218,218,8,71,218,99,99,218,58,99,99,99,99,
99,58,99,58,99,218,11,58,58,99,58,58,71,92,92,58,78,78,78,78,
118,19,53,123,48,128,128,48,123,12,92,92,48,128,212,48,241,12,12,92,
241,128,246,246,246,71,12,12,12,71,71,118,49,223,49,208,116,22,49,23,
11,223,223,72,225,235,113,82,82,101,49,65,68,164,201,7,162,26,8,121,
66,223,23,216,14,36,177,152,154,152,80,255,98,66,66,223,66,4,32,152,
152,163,228,222,112,251,20,20,8,113,219,222,22,82,23,22,62,112,54,244,
101,82,112,112,23,118,112,11,11,78,58,58,246,99,71,71,99,58,246,212,
58,58,123,108,108,53,20,13,101,19,34,13,53,53,53,0,75,38,0,34,
63,53,53,71,58,78,58,78,11,92,92,71,58,58,58,58,99,218,11,99,
11,58,218,218,99,99,218,99,99,8,99,71,99,99,99,99,99,218,58,99,
218,58,99,99,99,58,58,78,58,99,58,58,58,71,12,78,78,78,78,78,
58,12,19,12,48,218,246,218,48,12,92,92,241,48,58,212,48,241,12,92,
48,241,212,58,212,212,123,118,12,71,118,118,12,223,49,118,55,239,244,223,
112,112,82,118,236,225,14,4,26,82,101,19,112,93,153,21,224,174,88,162,
26,26,121,82,66,66,66,66,66,66,26,82,66,26,113,127,32,44,51,87,
248,222,236,223,20,20,20,8,70,111,17,237,223,49,237,30,62,54,30,118,
253,49,112,118,23,118,118,11,99,58,58,58,212,99,71,218,246,78,78,58,
58,58,108,108,63,38,13,92,58,12,13,251,53,63,251,79,12,71,34,34,
251,53,19,58,78,78,78,58,58,71,71,58,99,99,58,99,58,11,58,99,
99,99,99,218,218,99,218,218,99,8,71,99,218,218,218,99,218,99,99,99,
99,71,58,99,99,99,99,58,58,99,58,58,78,58,99,78,58,78,58,78,
78,78,99,218,128,58,58,78,128,48,12,92,123,241,78,246,58,48,241,218,
12,128,212,212,58,58,212,218,71,12,71,12,118,12,223,49,11,243,55,244,
49,112,244,223,49,236,17,111,4,121,82,82,8,223,244,29,153,61,148,234,
152,32,147,52,4,4,113,26,113,26,98,98,147,255,7,193,24,163,217,238,
110,112,101,20,20,253,8,70,107,222,22,223,223,244,244,244,244,242,112,82,
223,118,23,23,49,118,71,11,58,58,58,246,246,58,99,78,58,212,212,78,
58,99,53,53,38,83,19,58,246,19,34,79,251,34,34,71,58,71,79,13,
83,63,218,58,58,99,58,78,58,99,78,58,99,99,99,58,58,99,99,58,
218,11,218,99,11,218,11,99,71,8,71,218,218,11,71,99,218,99,99,99,
99,218,11,99,58,58,58,58,11,58,99,218,58,58,78,78,78,78,58,58,
78,78,78,78,58,78,78,78,58,58,48,123,48,48,128,78,246,78,128,241,
241,241,128,212,58,58,58,58,218,12,118,71,71,112,118,223,49,11,245,55,
30,49,112,244,223,19,30,93,107,111,4,26,101,101,8,101,112,242,93,203,
6,170,21,74,51,51,104,24,234,76,24,104,76,124,232,56,225,18,30,223,
20,20,20,20,8,66,235,231,236,112,223,118,30,112,112,54,244,112,82,49,
112,23,118,118,12,11,99,99,246,58,58,58,78,58,246,246,78,78,212,78,
58,12,53,229,34,40,78,78,58,38,0,13,13,79,71,58,58,71,13,0,
38,71,58,99,58,99,58,99,78,58,58,99,99,99,71,99,58,99,218,99,
71,99,218,99,99,71,218,99,71,8,71,71,71,123,218,218,11,218,218,218,
218,99,218,218,99,99,99,99,58,99,99,99,99,99,58,78,78,58,58,99,
99,78,78,246,78,212,78,78,58,78,128,48,48,241,48,246,78,58,246,128,
128,128,128,128,212,78,212,78,58,218,71,71,12,12,118,118,49,49,112,208,
41,22,49,112,244,23,19,49,22,93,219,14,4,8,82,101,20,101,223,49,
30,65,18,29,17,203,228,230,56,96,91,225,225,236,242,112,49,82,20,20,
20,20,82,113,210,107,29,22,118,223,112,30,244,244,62,112,23,82,223,49,
118,118,49,49,118,71,99,246,58,58,212,246,246,78,212,58,246,246,78,58,
218,53,209,126,40,78,78,78,218,0,34,34,79,71,78,99,58,71,251,229,
12,58,99,99,99,58,58,58,58,99,99,99,99,218,99,58,99,99,99,218,
99,218,11,218,218,11,218,71,71,8,71,123,71,71,218,123,71,99,11,99,
218,11,99,71,218,99,58,99,99,58,218,218,99,99,58,58,58,58,99,58,
58,99,58,246,246,246,78,58,58,58,78,58,48,48,241,78,246,78,78,58,
58,241,241,241,212,58,246,78,246,58,218,71,71,71,118,118,118,49,49,112,
103,243,236,112,49,244,112,49,223,118,65,93,107,14,98,113,82,8,101,253,
101,20,101,82,82,223,118,118,49,49,49,82,82,101,101,20,20,253,253,121,
26,70,235,110,29,103,118,223,223,11,244,244,54,242,244,49,19,223,49,118,
118,49,12,71,11,99,212,246,78,78,78,78,212,246,78,58,78,212,78,58,
12,38,213,71,78,58,58,78,40,83,79,20,99,58,99,58,99,12,92,71,
78,58,99,99,99,99,99,99,99,99,218,218,99,218,218,99,218,218,11,218,
11,218,218,71,218,218,71,123,71,8,71,71,12,71,71,218,218,218,71,71,
218,218,218,218,71,218,218,99,99,218,99,99,99,99,99,99,58,99,58,99,
99,99,99,58,78,78,78,78,58,99,58,58,58,128,48,128,78,78,58,78,
212,212,212,241,128,58,246,246,58,246,58,218,218,118,71,71,118,12,118,49,
23,237,245,55,208,23,118,23,112,223,223,118,244,236,18,110,14,210,4,66,
121,8,82,20,82,101,101,251,20,20,20,101,8,20,8,8,26,26,210,235,
109,110,65,30,118,223,49,244,244,244,244,242,65,30,223,82,49,118,118,49,
92,49,118,71,11,78,246,78,58,246,212,246,78,78,246,78,246,78,212,218,
53,92,99,78,58,58,58,246,53,0,53,99,99,58,99,58,99,71,218,58,
99,58,99,218,58,99,58,78,99,99,11,99,71,99,99,218,99,99,218,71,
123,218,71,218,12,71,71,71,71,8,71,71,71,71,71,118,71,71,218,99,
71,71,71,123,71,71,218,99,99,218,218,71,11,218,99,99,58,99,58,99,
99,99,218,58,58,78,78,78,58,99,99,58,58,58,58,128,246,78,58,58,
58,58,246,128,128,58,212,246,78,78,78,58,58,218,71,71,11,118,118,49,
12,23,11,103,243,72,237,23,23,112,23,223,19,223,112,22,109,18,29,111,
111,210,210,70,4,26,26,26,26,26,26,4,4,70,98,235,2,18,29,65,
54,23,223,49,23,244,244,112,244,54,22,244,118,82,223,223,118,92,49,49,
223,71,11,99,99,78,246,58,246,78,58,212,78,78,58,58,246,78,58,218,
71,78,58,58,99,58,58,99,19,77,58,58,58,218,99,58,58,58,58,58,
218,99,11,218,58,99,218,58,218,218,71,218,218,71,99,71,218,71,71,218,
71,123,71,71,71,71,71,71,12,8,118,118,71,71,118,71,71,71,118,12,
71,123,71,71,71,71,71,71,218,99,99,99,218,218,71,218,99,99,58,99,
99,218,99,218,58,58,246,78,78,99,99,99,99,58,246,78,58,246,58,58,
58,58,58,78,78,58,58,58,246,212,99,58,58,58,218,99,71,118,11,118,
49,49,49,23,11,208,55,245,22,112,23,23,23,23,49,49,49,223,112,30,
22,236,18,18,18,29,18,18,18,18,107,236,29,236,236,22,30,23,223,223,
223,118,118,112,244,112,244,242,242,30,23,223,82,223,49,49,49,223,49,12,
71,71,99,58,246,212,58,58,58,78,78,78,58,58,58,58,78,212,246,78,
78,58,58,11,99,58,78,78,99,58,58,99,218,99,58,99,58,58,58,218,
99,71,218,99,218,58,99,218,218,71,218,123,71,99,71,218,71,71,71,12,
71,71,12,12,12,12,12,12,12,8,12,12,12,12,12,12,118,118,71,71,
71,218,71,123,71,71,71,71,123,71,218,11,218,71,218,123,218,99,218,58,
99,99,11,218,71,99,99,58,78,58,99,99,71,99,58,78,246,246,246,58,
58,218,58,99,78,78,246,78,78,246,58,58,58,212,58,58,99,71,71,118,
71,118,118,23,49,112,112,103,72,72,65,244,112,23,118,118,70,223,223,223,
223,49,118,23,118,112,112,244,112,112,23,23,23,49,49,223,223,49,23,118,
244,244,112,62,244,109,22,30,49,223,223,82,49,223,49,223,223,118,118,71,
99,99,99,78,78,246,58,58,78,78,58,58,58,99,78,246,78,78,78,78,
99,99,99,58,99,58,78,78,58,99,99,11,218,99,99,58,58,11,99,218,
218,218,71,99,218,218,11,218,123,71,218,71,71,218,71,71,123,71,118,12,
71,12,12,12,12,12,12,12,12,8,12,12,12,12,12,12,71,71,71,118,
71,118,71,71,118,12,71,71,71,71,99,218,123,71,218,71,218,71,99,99,
99,218,218,71,218,218,99,58,58,58,58,218,99,218,218,99,58,99,78,58,
58,99,99,99,58,58,78,246,246,78,78,78,58,99,58,58,99,58,99,71,
11,71,12,23,118,118,118,23,112,30,103,208,208,65,242,112,118,23,23,118,
118,118,49,112,23,112,11,112,112,112,118,49,49,49,49,112,23,23,112,244,
244,22,22,22,242,112,49,223,223,66,223,49,223,49,223,49,12,71,71,99,
99,58,212,212,246,58,78,78,58,58,99,99,99,58,78,78,78,78,58,58,
99,99,99,58,58,58,58,58,99,218,71,218,99,99,218,58,99,99,71,218,
71,71,218,99,71,99,123,71,118,118,123,71,71,123,71,71,12,12,118,12,
12,12,12,12,12,12,71,12,71,8,12,92,12,92,71,12,118,118,12,12,
118,71,71,12,71,71,118,12,12,71,118,218,71,71,71,12,71,12,218,218,
99,99,218,218,71,71,71,218,99,99,99,99,71,71,218,71,99,58,58,58,
58,58,99,11,99,99,99,58,246,78,246,78,58,99,99,99,58,58,99,99,
99,11,71,112,112,118,118,92,118,23,118,112,30,237,103,65,65,22,30,54,
244,244,23,112,244,112,244,112,244,23,244,23,112,62,244,244,30,242,22,242,
22,30,23,49,49,19,82,223,223,49,49,49,223,49,12,11,11,218,99,58,
58,78,78,78,246,78,78,99,99,58,99,58,58,78,78,78,58,99,218,218,
71,99,99,99,58,99,58,99,71,123,71,218,99,99,218,99,218,71,12,71,
71,218,71,71,218,71,71,71,71,71,12,71,71,71,118,12,12,12,71,71,
12,12,12,12,118,12,12,92,12,8,12,12,71,12,12,12,12,12,71,12,
118,12,12,12,118,12,71,12,12,71,71,71,71,123,71,12,12,71,71,218,
218,218,11,71,123,71,71,218,71,99,99,58,99,99,71,218,218,99,218,58,
58,58,58,99,218,71,99,218,58,58,58,246,212,58,58,99,99,58,99,58,
58,58,58,218,71,71,112,71,118,118,49,23,118,118,49,112,112,30,237,22,
22,22,103,22,22,22,22,22,30,242,22,22,22,103,22,22,30,112,112,23,
49,49,49,82,223,66,49,49,49,49,223,12,118,71,218,99,99,58,99,58,
78,246,78,246,58,58,99,99,218,218,99,99,99,58,58,58,99,218,71,218,
99,99,58,58,58,99,218,123,71,71,218,218,99,99,99,123,71,71,71,92,
71,71,218,218,71,12,12,12,118,71,12,118,71,71,71,12,12,12,12,12,
12,12,118,118,12,12,12,12,12,8,92,92,92,12,12,12,12,12,12,12,
92,12,12,12,71,12,118,12,12,12,12,12,71,71,71,12,12,71,118,71,
71,123,71,71,71,118,71,71,71,123,71,218,218,99,218,71,12,71,71,218,
218,58,58,99,58,71,71,218,218,218,99,58,58,58,58,58,99,99,99,218,
218,99,58,58,99,99,99,11,11,11,23,112,118,112,49,118,118,118,23,118,
49,118,23,112,112,112,112,244,112,112,118,112,118,49,49,223,49,223,223,49,
223,223,49,49,223,49,223,223,118,118,71,11,218,99,218,99,218,78,58,58,
58,58,58,218,218,218,218,218,58,99,58,58,58,58,218,99,71,71,123,71,
218,99,58,99,99,71,71,12,12,71,71,71,218,218,218,71,118,71,71,12,
123,71,12,71,71,12,12,12,118,71,12,12,12,118,118,12,71,118,12,118,
12,12,12,12,12,92,12,12,92,8,92,92,12,12,92,12,92,12,12,12,
12,12,118,12,12,12,12,12,12,12,118,12,12,71,118,71,12,12,71,118,
71,71,71,123,218,118,12,71,71,71,71,99,99,218,218,71,71,71,71,71,
99,218,99,58,99,218,218,71,71,71,218,71,58,99,58,58,99,58,218,99,
99,218,99,99,58,58,58,99,58,99,218,11,71,112,11,112,118,23,118,23,
49,118,118,92,49,92,49,92,49,92,49,223,223,49,223,49,49,49,49,82,
49,49,49,223,118,118,71,71,11,71,99,218,218,99,58,58,58,58,58,58,
58,218,218,218,71,218,218,99,99,99,99,58,218,218,71,123,71,71,218,11,
99,99,218,218,71,71,12,71,12,218,218,218,71,218,118,12,71,118,71,71,
71,71,71,71,118,71,12,12,12,71,12,12,12,12,12,12,12,49,12,12,
12,92,12,49,12,92,12,12,92,8,92,92,92,92,92,12,92,12,12,92,
12,92,12,92,12,71,71,12,12,12,12,71,12,118,71,118,71,118,12,12,
12,12,71,71,218,71,71,118,118,12,12,118,71,218,71,218,123,12,12,12,
12,71,71,99,99,99,218,71,71,71,71,123,71,218,218,58,99,99,58,218,
99,218,218,11,99,218,99,218,218,58,58,58,99,218,71,11,71,71,118,11,
112,71,112,118,112,12,118,118,118,118,118,118,118,118,118,118,223,223,49,49,
118,118,118,71,71,71,218,71,218,71,99,99,99,218,58,58,58,218,218,218,
218,71,71,218,123,71,218,99,58,218,218,99,71,118,12,71,71,71,218,218,
218,99,71,118,12,12,12,71,71,123,71,71,71,12,118,12,92,71,118,71,
12,12,71,12,12,92,12,12,12,118,12,12,12,12,12,92,12,12,12,92,
71,92,12,92,92,92,92,92,12,8,92,92,92,92,92,92,92,92,92,12,
92,12,92,12,92,92,12,118,92,12,12,92,92,12,12,12,12,12,12,12,
12,12,71,118,12,118,71,71,12,12,12,12,118,71,218,71,218,71,118,12,
12,71,12,71,218,71,99,218,123,71,71,12,71,118,71,71,99,218,218,99,
218,99,218,218,218,71,123,71,218,218,218,218,99,99,99,58,99,99,99,218,
99,71,71,71,11,71,11,11,11,11,11,11,11,11,71,118,12,118,218,218,
71,218,71,71,218,71,99,71,99,99,99,58,218,99,218,218,71,71,71,71,
71,71,123,71,11,99,99,99,218,218,71,71,12,12,12,71,123,218,71,218,
71,118,71,12,118,12,12,71,71,218,118,12,12,12,92,12,71,118,71,71,
12,71,92,12,92,12,12,12,118,12,12,92,92,12,92,12,92,92,92,92,
92,92,92,92,12,92,92,92,92,8,92,92,92,12,92,92,92,92,92,92,
92,92,92,12,92,92,12,12,92,92,92,12,92,92,12,12,118,12,12,92,
92,12,12,12,71,71,71,118,12,118,12,12,12,71,12,71,71,71,71,12,
12,12,118,12,12,118,218,71,71,71,12,71,71,71,12,12,71,71,71,11,
218,99,218,218,218,218,71,71,71,71,71,71,71,71,218,218,218,218,99,218,
218,218,99,218,99,218,218,218,218,218,218,218,218,99,218,11,218,71,71,71,
71,123,71,123,71,218,99,218,218,11,218,99,71,71,71,71,71,71,71,92,
71,71,71,123,71,218,71,71,71,118,12,12,12,12,71,71,71,218,71,71,
12,12,12,12,12,12,12,71,71,71,12,12,12,12,12,12,12,12,118,12,
12,92,92,92,12,92,12,71,12,92,92,12,92,92,92,92,92,12,92,92,
92,92,92,92,92,92,92,92,92,8,92,19,92,92,92,92,92,223,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,12,92,12,118,12,12,
12,92,92,12,92,12,12,12,71,12,49,12,92,92,12,12,71,12,12,12,
12,71,12,12,12,12,71,12,71,71,218,218,71,118,12,12,12,71,12,12,
71,123,71,71,99,71,71,123,71,123,71,123,71,71,71,71,71,71,71,71,
71,218,218,218,71,71,218,71,218,71,218,71,71,123,71,123,71,123,71,123,
218,71,218,218,218,218,71,71,71,71,71,12,12,12,12,12,12,12,71,71,
71,123,218,218,71,71,12,12,12,71,12,12,12,12,71,71,71,12,118,12,
12,92,12,12,12,12,12,12,71,12,92,12,92,12,12,118,12,12,12,92,
92,92,92,92,92,12,92,92,12,92,92,92,92,19,12,92,92,92,92,92,
12,92,92,92,92,92,92,92,92,8,19,108,19,108,12,19,92,92,92,92,
92,92,92,92,92,19,92,92,92,92,92,92,92,92,92,92,92,92,12,92,
92,92,92,92,92,92,12,12,12,12,71,12,92,92,92,92,12,92,118,12,
12,12,12,12,92,12,12,12,71,12,71,71,71,12,12,12,12,12,12,92,
112,118,71,12,71,71,71,218,71,71,71,71,71,71,12,12,12,12,12,12,
12,118,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,
71,71,71,71,71,71,71,71,118,71,12,71,12,12,12,12,12,71,71,123,
71,71,71,92,12,12,12,12,92,92,71,12,12,12,12,71,12,12,92,12,
92,92,12,118,12,12,118,12,12,92,92,92,92,12,12,12,12,92,92,92,
92,12,92,12,92,12,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,12,19,19,108,92,8,92,92,19,92,108,92,19,92,92,92,
92,108,92,92,92,12,92,92,12,92,92,92,92,92,92,92,92,92,92,12,
12,92,92,92,92,223,12,92,12,12,12,12,12,92,92,12,92,12,12,12,
12,12,12,12,49,12,92,92,92,92,12,12,71,12,12,12,12,12,12,12,
92,92,118,92,12,12,118,12,12,12,12,12,12,71,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,118,118,12,118,12,12,12,12,12,12,12,12,12,12,12,12,71,12,
12,12,71,92,12,92,92,49,12,12,12,12,118,12,12,118,92,12,92,92,
12,12,12,12,123,12,92,92,92,92,92,92,12,92,12,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,92,92,19,92,92,108,
92,19,92,108,108,92,108,92,108,8,19,108,19,92,19,108,108,108,92,19,
92,92,19,92,108,108,92,108,108,92,92,92,92,92,92,19,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,12,92,92,92,92,92,
92,12,12,12,12,12,12,92,92,92,92,92,92,12,12,12,12,12,118,12,
12,12,12,92,12,12,12,12,71,12,12,12,12,71,71,12,12,71,118,118,
12,12,12,12,12,118,12,12,12,92,12,12,12,12,12,71,12,12,118,12,
12,71,12,12,12,12,12,92,118,118,12,12,12,12,71,12,12,12,49,12,
92,12,92,92,92,12,92,12,12,12,12,12,92,92,92,92,92,92,92,92,
12,12,71,92,92,92,12,92,223,92,92,92,12,92,92,92,92,92,12,19,
92,92,92,92,92,92,108,92,108,19,92,108,108,108,92,92,19,108,92,108,
19,92,19,92,108,92,108,19,19,8,19,108,19,108,108,19,92,19,108,19,
19,108,108,19,19,92,108,92,92,108,19,12,108,108,92,19,108,108,92,19,
92,92,92,92,92,92,108,19,92,92,92,92,12,92,92,92,92,92,92,92,
92,92,92,12,12,118,123,92,12,12,92,92,92,92,92,92,12,12,12,12,
12,92,12,12,92,12,92,92,92,92,92,92,12,12,12,12,12,12,12,71,
71,12,12,12,12,12,12,12,71,12,12,12,12,12,12,92,12,12,92,12,
92,12,12,49,12,92,12,12,12,12,12,71,12,12,12,12,92,12,92,12,
92,92,92,92,92,12,12,12,12,92,12,12,92,92,92,92,92,92,12,12,
12,92,92,92,92,19,108,92,92,92,92,92,92,92,92,19,92,108,108,92,
92,92,92,19,108,92,19,108,92,108,108,92,19,92,108,19,108,92,108,92,
19,108,108,92,108,108,19,92,108,8,19,19,19,19,19,108,19,19,108,92,
19,19,108,92,19,19,108,19,108,92,108,19,92,19,92,92,92,19,92,92,
92,92,92,92,92,92,19,108,92,19,19,92,92,92,92,92,92,92,223,92,
223,92,92,92,92,92,92,92,92,92,92,92,92,223,92,92,92,12,92,12,
12,12,12,12,92,12,12,92,12,92,92,92,92,92,92,92,92,92,92,92,
92,92,12,92,49,92,12,92,92,12,12,92,12,92,12,92,12,12,92,12,
12,12,12,12,12,12,12,92,92,92,12,92,92,92,92,92,92,92,92,92,
92,92,12,12,12,12,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,12,19,92,92,108,12,92,92,92,12,19,92,92,108,92,19,19,92,
92,92,92,92,108,19,92,19,19,92,92,108,108,92,108,92,19,19,19,108,
19,19,19,19,19,19,108,19,19,8,19,53,19,53,19,53,19,53,19,108,
19,108,19,108,108,108,19,108,19,108,19,108,108,108,108,19,108,19,108,19,
19,92,108,19,19,12,108,92,108,92,108,19,108,92,92,92,92,92,92,19,
92,19,108,92,19,92,92,92,92,92,92,92,92,92,92,92,108,108,19,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,12,92,92,92,12,92,19,92,92,92,92,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,108,19,92,92,223,92,92,92,92,92,92,
19,108,108,108,108,19,92,92,92,92,108,108,108,108,108,92,108,92,108,19,
92,19,108,108,19,108,108,108,108,108,19,19,19,19,19,19,108,108,53,19,
108,19,108,53,19,53,19,53,19,8,19,19,19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,108,19,108,19,
19,19,19,19,108,19,108,19,108,19,108,19,19,19,19,108,19,92,92,92,
19,19,108,19,108,19,19,92,92,92,92,92,92,92,92,19,19,108,19,108,
19,92,19,92,92,92,92,92,92,92,92,92,92,92,92,19,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,19,19,19,92,19,19,92,19,19,108,92,92,92,19,92,92,92,
92,92,92,92,92,19,19,19,19,108,19,108,92,92,92,92,92,92,19,19,
92,19,223,19,108,19,108,92,19,19,19,19,19,19,108,19,108,19,108,19,
19,19,19,19,19,19,19,19,19,108,19,108,19,108,19,19,19,19,19,19,
19,19,19,19,19,19,19,19,19,8};

File diff suppressed because one or more lines are too long

View File

@ -2,4 +2,4 @@ Makefile.in
Makefile
.deps
_libs
Encript_Decript
Encrypt_Decrypt

View File

@ -1,16 +1,19 @@
/**********************************************************************
* Encript_Decript Plug-In (Version 1.01, first public release)
ATTENTION: Plug-In Arguments Have Been Changed!!!!!
This version will not be fully backwards compatible
with the version 1.0x. Nevertheless it can encrypt and
decrypt version 1.0x images.
**********************************************************************/
/**********************************************************************
* Encrypt_Decrypt Plug-In (Version 2.02)
* Daniel Cotting (cotting@mygale.org)
**********************************************************************
* Official Homepage: http://www.mygale.org/~cotting
**********************************************************************
* Homepages under construction: http://www.chez.com/cotting
* http://www.cyberbrain.com/cotting
* You won't be able to see anything yet, as I don't really have the
* time to build up these two sites :-(
* Have a look at www.mygale.org/~cotting instead!
**********************************************************************
*/
* Official homepages: http://www.mygale.org/~cotting
* http://cotting.citeweb.net
* http://village.cyberbrain.com/cotting
*********************************************************************/
/* The GIMP -- an image manipulation program
@ -31,6 +34,11 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/**********************************************************************
* Include files
*********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
@ -39,39 +47,49 @@
#include "gtk/gtk.h"
#include "logo.h"
#define ENTRY_WIDTH 100
/**********************************************************************
* Define constants
*********************************************************************/
typedef struct {
gint password;
gint warningmessage;
} EncriptValues;
#define ENTRY_WIDTH 260
/* Large Prime */
#define MULT 1103515245l
typedef struct {
gint run;
} EncriptInterface;
/* Declare local functions.
*/
/**********************************************************************
* Declare some of the local functions
*********************************************************************/
static void query(void);
static void run(char *name, int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals);
static void drawEncript(GDrawable *drawable);
static gint encript_dialog(void);
static gint encript_warning_dialog(void);
static gint encript_enter_dialog(void);
static gint encript_no_last_val_dialog(void);
GtkWidget * encript_logo_dialog(void);
static void drawEncrypt(GDrawable *drawable);
static gint encrypt_dialog(void);
static gint encrypt_warning_dialog(void);
static gint encrypt_enter_dialog(void);
static gint encrypt_no_last_val_dialog(void);
GtkWidget * encrypt_logo_dialog(void);
/**********************************************************************
* Define types of structures
*********************************************************************/
typedef struct {
char password[128];
gint warningmessage;
gint compatibility;
gint remember;
} EncryptValues;
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkTooltips *tips;
GdkColor tips_fg,tips_bg;
typedef struct {
gint run;
} EncryptInterface;
/**********************************************************************
* Define structure and set their values
*********************************************************************/
GPlugInInfo PLUG_IN_INFO =
{
@ -81,18 +99,44 @@ GPlugInInfo PLUG_IN_INFO =
run, /* run_proc */
};
static EncriptValues wvals = {
0,1,
static EncryptValues wvals = {
"Enter password here.",1,0,0,
}; /* wvals */
static EncriptInterface bint =
static EncryptInterface bint =
{
FALSE /* run */
};
/**********************************************************************
* Declare global variables
*********************************************************************/
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkTooltips *tips;
GdkColor tips_fg,tips_bg;
/* This is initialized with the password or a part of the password. It is
used as the seed value in StandardRandom */
long Seed;
/* Table for R250 number generator */
long Table[250];
/* Increment table - speeds R250 up, but not really needed in this case */
unsigned char IncrementTable[250];
/* Two Index values into R250 table */
unsigned char Index1, Index2;
/**********************************************************************
* call MAIN()
*********************************************************************/
MAIN()
/**********************************************************************
* FUNCTION query
*********************************************************************/
static void
query(void)
{
@ -101,27 +145,33 @@ query(void)
{ PARAM_INT32, "run_mode", "Interactive, non-interactive" },
{ PARAM_IMAGE, "image", "Input image (unused)" },
{ PARAM_DRAWABLE, "drawable", "Input drawable" },
{ PARAM_INT8, "password", "Numeric password (used to encript and decript)" },
{ PARAM_STRING, "password", "Password (used to encrypt and decrypt)" },
{ PARAM_INT8, "warning", "Disable warning message toggle (only in RUN_INTERACTIVE)" },
{ PARAM_INT8, "compatibility", "Use version 1.0x compatibility mode" },
{ PARAM_INT8, "remember", "Remember the password after execution" },
};
static GParamDef *return_vals = NULL;
static int nargs = sizeof(args)/ sizeof(args[0]);
static int nreturn_vals = 0;
gimp_install_procedure("plug_in_encript",
"Encript the image using a code, second call with same code decripts image.",
gimp_install_procedure("plug_in_encrypt",
"Encrypt the image using a code, second call with same code decrypts image.",
"",
"Daniel Cotting (cotting@mygale.org, http://www.mygale.org/~cotting)",
"Daniel Cotting (cotting@mygale.org, http://www.mygale.org/~cotting)",
"October, 1997",
"<Image>/Filters/Image/Encript & Decript",
"<Image>/Filters/Image/Encrypt & Decrypt",
"RGB*, GRAY*, INDEXED*",
PROC_PLUG_IN,
nargs, nreturn_vals,
args, return_vals);
}
/**********************************************************************
* FUNCTION run
*********************************************************************/
static void
run(char *name,
int nparams,
@ -136,6 +186,7 @@ run(char *name,
GStatusType status = STATUS_SUCCESS;
gchar **argv;
gint argc;
int iaa, expression;
run_mode = param[0].data.d_int32;
@ -150,60 +201,149 @@ run(char *name,
switch(run_mode) {
case RUN_INTERACTIVE:
/* Possibly retrieve data */
gimp_get_data("plug_in_encript", &wvals);
gimp_get_data("plug_in_encrypt", &wvals);
/* Get information from the dialog */
argc = 1;
argv = g_new(gchar *, 1);
argv[0] = g_strdup("apply_encript");
argv[0] = g_strdup("apply_encrypt");
gtk_init(&argc, &argv);
gtk_rc_parse(gimp_gtkrc());
do {
if (!encript_dialog())
if (!encrypt_dialog())
return;
} while ((wvals.password==0) && (succeeded=encript_enter_dialog()));
expression=((!strcmp(wvals.password,"Enter password here.") ||
(wvals.compatibility&&(atoi(wvals.password)==0)))
&& (succeeded=encrypt_enter_dialog()));
} while (expression);
if (!succeeded)
return;
if (wvals.warningmessage)
if (!encript_warning_dialog())
if (!encrypt_warning_dialog())
return;
break;
case RUN_NONINTERACTIVE:
/* Make sure all the arguments are present */
if (nparams != 5)
if (nparams != 7)
status = STATUS_CALLING_ERROR;
if (status == STATUS_SUCCESS)
wvals.password = param[3].data.d_int8;
if (status == STATUS_SUCCESS) {
strcpy(wvals.password,param[3].data.d_string);
wvals.warningmessage = param[4].data.d_int8;
wvals.compatibility = param[5].data.d_int8;
wvals.remember = param[6].data.d_int8;
}
break;
case RUN_WITH_LAST_VALS:
/* Possibly retrieve data */
gimp_get_data("plug_in_encript", &wvals);
encript_no_last_val_dialog();
return;
gimp_get_data("plug_in_encrypt", &wvals);
argc = 1;
argv = g_new(gchar *, 1);
argv[0] = g_strdup("apply_encrypt");
gtk_init(&argc, &argv);
gtk_rc_parse(gimp_gtkrc());
if (!wvals.remember) {
encrypt_no_last_val_dialog();
return;
}
break;
default:
break;
}
if (status == STATUS_SUCCESS) {
gimp_tile_cache_ntiles(2 *(drawable->width / gimp_tile_width() + 1));
gimp_progress_init("Encripting Image. Please wait...");
drawEncript(drawable);
/* Delete active Password */
wvals.password=0;
gimp_progress_init("Encrypting image. Please wait...");
drawEncrypt(drawable);
if (!wvals.remember){
/* Delete active Password */
for (iaa=0; iaa<128; iaa++) wvals.password[iaa] = 0;
}
if(run_mode != RUN_NONINTERACTIVE)
gimp_displays_flush();
if(run_mode == RUN_INTERACTIVE)
gimp_set_data("plug_in_encript", &wvals, sizeof(EncriptValues));
gimp_set_data("plug_in_encrypt", &wvals, sizeof(EncryptValues));
values[0].data.d_status = status;
gimp_drawable_detach(drawable);
}
}
/**********************************************************************
* FUNCTIONS for the random number generator
*********************************************************************/
/* Code provided by Pascal Schuppli, Worb (Switzerland)
Fast high security encryption based on two 'random' number generators
Sets up the increment table and the two index pointers */
void InitGenerator() {
int i;
for (i=0; i<249; i++) IncrementTable[i] = i+1;
IncrementTable[249] = 0;
Index1 = 0;
Index2 = 103;
}
/* StandardRandom is used to initialize the R250 random number table. It is
neither fast nor very good. */
long StandardRandom() {
unsigned long lo, hi, ll, lh, hh, hl;
lo = Seed & 0xFFFF;
hi = Seed >> 16;
Seed = Seed * MULT + 12345;
ll = lo*(MULT & 0xFFFF);
lh = lo*(MULT >> 16);
hl = hi*(MULT & 0xFFFF);
hh = hi*(MULT >> 16);
return ((ll + 12345) >> 16) + lh + hl + (hh << 16);
}
/* Fill R250 table. Use two seeds (64 bit encoding)
This is where most of the processing power goes when trying to break an
encrypted file. Because StandardRandom is not very fast, and because it is
called 500 times, this takes the CPU a couple thousand cycles. The table
needed to decrypt a file thus can't be constructed without serious delays,
which is the whole point of high security encryption. */
void FillTable(long FirstSeed, long SecondSeed) {
int i;
/* Construct table with first seed */
Seed = FirstSeed;
for (i=0; i<250; i++)
Table[i] = StandardRandom();
/* Xor second seed into table. Not sure whether this makes the random numbers
better or worse, but it takes time */
Seed = SecondSeed;
for (i=0; i<250; i++)
Table[i] ^= StandardRandom();
}
/* Returns a four-byte random number generated by 'xoring' two table entries */
unsigned long R250Random() {
unsigned long ret;
ret = (Table[Index1] ^= Table[Index2]);
Index1 = IncrementTable[Index1];
Index2 = IncrementTable[Index2];
return ret;
}
/**********************************************************************
* FUNCTION drawEncrypt
*********************************************************************/
static void
drawEncript(GDrawable *drawable)
drawEncrypt(GDrawable *drawable)
{
char Password[128];
/* Take some primes to start with */
long s1 = 17, s2 = 23;
GPixelRgn srcPR, destPR;
gint width, height;
gint bytes;
@ -216,7 +356,33 @@ drawEncript(GDrawable *drawable)
gfloat a, b, x, y;
glong pixelpos, pos;
guchar bgr_red, bgr_blue, bgr_green;
if (!wvals.compatibility){
for (i=0; i<128; i++) Password[i] = 1;
strcpy(Password, wvals.password);
InitGenerator();
/* The hash algorithm should make sure that the hash codes it generates
differ so that code breakers cannot concentrate on a certain range of
seeds to speed up the process of breaking the code.
Hash up keyword, -> create two four-byte seeds */
for (i=0; i<strlen(Password); i++) {
s1 ^= *(long *)&Password[i];
s1 <<= 1;
}
for (i=strlen(Password)-1; i>=0; i--) {
s2 ^= *(long *)&Password[i];
s2 <<= 3;
}
/* Generate table with hash value */
FillTable(s1, s2);
}
gimp_palette_get_background(&bgr_red, &bgr_green, &bgr_blue);
gimp_drawable_mask_bounds(drawable->id, &x1, &y1, &x2, &y2);
@ -235,9 +401,10 @@ drawEncript(GDrawable *drawable)
src = g_malloc((x2-x1)*(y2-y1)*bytes);
dest = g_malloc((x2-x1)*(y2-y1)*bytes);
gimp_pixel_rgn_get_rect(&srcPR, src, x1, y1, regionwidth, regionheight);
password=wvals.password;
srand(password);
if (wvals.compatibility) {
password=atoi(wvals.password);
srand(password);
}
for(col = 0; col < regionwidth; col++) {
dx = (gfloat)col - a;
for(row = 0; row < regionheight; row++) {
@ -249,7 +416,12 @@ drawEncript(GDrawable *drawable)
iy=(int)y;
pos = ((gint)(iy)*regionwidth + (gint)(ix)) * bytes;
for(i = 0; i < bytes; i++) {
dest[pixelpos+i] = src[pos+i] ^(int)(rand()*255)^(int)(rand()*255); }
if (!wvals.compatibility) {
dest[pixelpos+i] = src[pos+i]^R250Random();
} else {
dest[pixelpos+i] = src[pos+i] ^(int)(rand()*255)^(int)(rand()*255);
}
}
}
if(((gint)(regionwidth-col) % 5) == 0)
gimp_progress_update((gdouble)col/(gdouble)regionwidth);
@ -264,32 +436,42 @@ drawEncript(GDrawable *drawable)
gimp_drawable_update(drawable->id, x1, y1,(x2 - x1),(y2 - y1));
}
/**********************************************************************
* FUNCTIONS: callbacks
*********************************************************************/
static void
encript_close_callback(GtkWidget *widget, gpointer data)
encrypt_close_callback(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
static void
encript_ok_callback(GtkWidget *widget, gpointer data)
encrypt_ok_callback(GtkWidget *widget, gpointer data)
{
bint.run = TRUE;
gtk_widget_destroy(GTK_WIDGET (data));
}
static void
encript_logo_ok_callback(GtkWidget *widget, gpointer data)
encrypt_logo_ok_callback(GtkWidget *widget, gpointer data)
{
gtk_widget_set_sensitive (maindlg, TRUE);
gtk_widget_destroy(logodlg);
}
static void
encript_about_callback(GtkWidget *widget, gpointer data)
encrypt_about_callback(GtkWidget *widget, gpointer data)
{
gtk_widget_set_sensitive (maindlg, FALSE);
encript_logo_dialog();
encrypt_logo_dialog();
}
static void
encrypt_entry_callback(GtkWidget *widget, gpointer data)
{
strcpy(wvals.password,gtk_entry_get_text(GTK_ENTRY(widget)));
}
static void
@ -306,11 +488,9 @@ toggle_update (GtkWidget *widget,
*toggle_val = FALSE;
}
static void
encript_entry_callback(GtkWidget *widget, gpointer data)
{
wvals.password = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
}
/**********************************************************************
* FUNCTION set_tooltip
*********************************************************************/
static void
set_tooltip (GtkTooltips *tooltips, GtkWidget *widget, const char *desc)
@ -319,8 +499,12 @@ set_tooltip (GtkTooltips *tooltips, GtkWidget *widget, const char *desc)
gtk_tooltips_set_tips (tooltips, widget, (char *) desc);
}
/**********************************************************************
* FUNCTIONS: encrypt_dialog
*********************************************************************/
static gint
encript_dialog()
encrypt_dialog()
{
GtkWidget *dlg;
GtkWidget *label;
@ -330,17 +514,18 @@ encript_dialog()
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
gchar buffer[12];
gchar buffer[128];
bint.run=FALSE;
dlg = maindlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(dlg), "Encript&Decript (cotting@mygale.org)");
gtk_window_set_title(GTK_WINDOW(dlg), "Encrypt & Decrypt <cotting@mygale.org>");
gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect(GTK_OBJECT(dlg), "destroy",
(GtkSignalFunc)encript_close_callback,
(GtkSignalFunc)encrypt_close_callback,
NULL);
frame = gtk_frame_new("Parameter Settings");
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
gtk_container_border_width(GTK_CONTAINER(frame), 10);
@ -349,19 +534,38 @@ encript_dialog()
gtk_container_border_width(GTK_CONTAINER(vbox), 10);
gtk_container_add(GTK_CONTAINER(frame), vbox);
/* use black as foreground: */
tips = gtk_tooltips_new ();
tips_fg.red = 0;
tips_fg.green = 0;
tips_fg.blue = 0;
/* postit yellow (khaki) as background: */
gdk_color_alloc (gtk_widget_get_colormap (frame), &tips_fg);
tips_bg.red = 61669;
tips_bg.green = 59113;
tips_bg.blue = 35979;
gdk_color_alloc (gtk_widget_get_colormap (frame), &tips_bg);
gtk_tooltips_set_colors (tips,&tips_bg,&tips_fg);
/* use black as foreground: */
tips = gtk_tooltips_new ();
tips_fg.red = 0;
tips_fg.green = 0;
tips_fg.blue = 0;
/* postit yellow (khaki) as background: */
gdk_color_alloc (gtk_widget_get_colormap (frame), &tips_fg);
tips_bg.red = 61669;
tips_bg.green = 59113;
tips_bg.blue = 35979;
gdk_color_alloc (gtk_widget_get_colormap (frame), &tips_bg);
gtk_tooltips_set_colors (tips,&tips_bg,&tips_fg);
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
label = gtk_label_new("Password: ");
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
gtk_widget_show(label);
entry = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, FALSE, 0);
gtk_widget_set_usize(entry, ENTRY_WIDTH, 0);
sprintf(buffer, "%s", wvals.password);
gtk_entry_set_text(GTK_ENTRY(entry), buffer);
gtk_signal_connect(GTK_OBJECT(entry), "changed",
(GtkSignalFunc)encrypt_entry_callback,
NULL);
gtk_widget_show(entry);
set_tooltip(tips,entry,"Here, you can specify your password. To decrypt your image, just enter the value you used for the encryption. Unless you use version 1.0x compatibility (numeric passwords), the password can contain any characters.");
gtk_widget_show(hbox);
toggle = gtk_check_button_new_with_label ("Show warning message");
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
@ -370,27 +574,25 @@ encript_dialog()
&wvals.warningmessage);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), wvals.warningmessage);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"If this option is enabled, a warning message will be displayed every time you encript/decript an image. Make sure to read these warnings at least once.");
set_tooltip(tips,toggle,"If this option is enabled, a warning message will be displayed every time you encrypt/decrypt an image. Make sure to read these warnings at least once.");
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
toggle = gtk_check_button_new_with_label ("Enable version 1.0x compatibility");
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
(GtkSignalFunc) toggle_update,
&wvals.compatibility);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), wvals.compatibility);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"If this option is enabled, the encryption/decryption will be compatible with the version 1.0x plug-in.");
label = gtk_label_new("Numeric password (Integer): ");
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
gtk_widget_show(label);
entry = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
gtk_widget_set_usize(entry, ENTRY_WIDTH, 0);
sprintf(buffer, "%i", wvals.password);
gtk_entry_set_text(GTK_ENTRY(entry), buffer);
gtk_signal_connect(GTK_OBJECT(entry), "changed",
(GtkSignalFunc)encript_entry_callback,
NULL);
gtk_widget_show(entry);
set_tooltip(tips,entry,"Here, you can specify your numeric password. To decript your image, just enter the value you used for the encription.");
gtk_widget_show(hbox);
toggle = gtk_check_button_new_with_label ("Remember password");
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
(GtkSignalFunc) toggle_update,
&wvals.remember);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), wvals.remember);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"If this option is enabled, the password will be remembered for a further encryption/decryption.");
gtk_widget_show(vbox);
gtk_widget_show(frame);
@ -398,14 +600,14 @@ encript_dialog()
button = gtk_button_new_with_label("OK");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)encript_ok_callback,
(GtkSignalFunc)encrypt_ok_callback,
dlg);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_grab_default(button);
gtk_widget_show(button);
set_tooltip(tips,button,"Close the dialog box and encript/decript your image with the specified password.");
set_tooltip(tips,button,"Close the dialog box and encrypt/decrypt your image with the specified password.");
button = gtk_button_new_with_label("Cancel");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
@ -420,7 +622,7 @@ encript_dialog()
button = gtk_button_new_with_label("About...");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)encript_about_callback,button);
(GtkSignalFunc)encrypt_about_callback,button);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show(button);
@ -434,8 +636,12 @@ encript_dialog()
return bint.run;
}
/**********************************************************************
* FUNCTION encrypt_warning_dialog
*********************************************************************/
static gint
encript_warning_dialog()
encrypt_warning_dialog()
{
GtkWidget *dlg;
GtkWidget *label;
@ -450,19 +656,19 @@ encript_warning_dialog()
gtk_window_set_title(GTK_WINDOW(dlg), "Warning");
gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect(GTK_OBJECT(dlg), "destroy",
(GtkSignalFunc)encript_close_callback,
(GtkSignalFunc)encrypt_close_callback,
NULL);
button = gtk_button_new_with_label("OK");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)encript_ok_callback,
(GtkSignalFunc)encrypt_ok_callback,
dlg);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_grab_default(button);
gtk_widget_show(button);
set_tooltip(tips,button,"Proceed with the encription/decription.");
set_tooltip(tips,button,"Proceed with the encryption/decryption.");
button = gtk_button_new_with_label("Cancel");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
@ -472,7 +678,7 @@ encript_warning_dialog()
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show(button);
set_tooltip(tips,button,"Cancel the encription/decription.");
set_tooltip(tips,button,"Cancel the encryption/decryption.");
frame = gtk_frame_new("Please note:");
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
@ -485,21 +691,35 @@ encript_warning_dialog()
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
label = gtk_label_new("This plug-in uses a numeric password to encript your image.\n\n"
if (wvals.compatibility) {
label = gtk_label_new("Version 1.0x compatibility mode:\n\n"
"This plug-in uses a numeric password to encrypt your image.\n\n"
"Although it has been tested thoroughly, the author cannot be\n"
"sure that it will work properly in all circumstances. Therefore\n"
"the author doesn't want to take any responsibility in case of\n"
"data loss or any other damage, this plug-in could occasion.\n\n"
"data loss or any other damage this plug-in could cause.\n\n"
"*******USE IT AT YOUR OWN RISK (AND ENJOY IT)!*******\n\n"
"The plug-in could fail in the following situations, because of\n"
"a possibly different implementation of the random number\n"
"generator: - Encript a picture and decript it on a different\n"
"plattform. OR - Decript a picture that was encripted on a\n"
"generator: - Encrypt a picture and decrypt it on a different\n"
"plattform. OR - Decrypt a picture that was encrypted on a\n"
"computer with a different OS-version or a different math-lib.\n\n"
"Remember to save your image in a non-destructive format!\n"
"For indexed images GIF could be a good choice, for RGB\n"
"use BMP/TIFF/TGA etc. Never use a JPEG-compression!\n\n");
"use BMP/TIFF/TGA etc. Never use a JPEG-compression!\n");
} else {
label = gtk_label_new("This plug-in uses a password to encrypt your image.\n\n"
"Although it has been tested thoroughly, the author cannot be\n"
"sure that it will work properly in all circumstances. Therefore\n"
"the author doesn't want to take any responsibility in case of\n"
"data loss or any other damage this plug-in could cause.\n\n"
"*******USE IT AT YOUR OWN RISK (AND ENJOY IT)!*******\n\n"
"Remember to save your image in a non-destructive format!\n"
"For indexed images GIF could be a good choice, for RGB\n"
"use BMP/TIFF/TGA etc. Never use a JPEG-compression!\n");
}
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
gtk_widget_show(label);
@ -510,7 +730,7 @@ encript_warning_dialog()
&wvals.warningmessage);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), wvals.warningmessage);
gtk_widget_show (toggle);
set_tooltip(tips,toggle,"If you want this message to be displayed every time you encript/decript an image, then check this box.");
set_tooltip(tips,toggle,"If you want this message to be displayed every time you encrypt/decrypt an image, then check this box.");
gtk_widget_show(hbox);
@ -524,8 +744,13 @@ encript_warning_dialog()
return bint.run;
}
/**********************************************************************
* FUNCTION encrypt_enter_dialog
*********************************************************************/
static gint
encript_enter_dialog()
encrypt_enter_dialog()
{
GtkWidget *dlg;
GtkWidget *label;
@ -538,13 +763,13 @@ encript_enter_dialog()
gtk_window_set_title(GTK_WINDOW(dlg), "Warning");
gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect(GTK_OBJECT(dlg), "destroy",
(GtkSignalFunc)encript_close_callback,
(GtkSignalFunc)encrypt_close_callback,
NULL);
button = gtk_button_new_with_label("OK");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)encript_ok_callback,
(GtkSignalFunc)encrypt_ok_callback,
dlg);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
@ -560,7 +785,7 @@ encript_enter_dialog()
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show(button);
set_tooltip(tips,button,"Cancel process of encription/decription.");
set_tooltip(tips,button,"Cancel process of encryption/decryption.");
frame = gtk_frame_new("Password needed:");
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
@ -574,9 +799,12 @@ encript_enter_dialog()
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
label = gtk_label_new("You have not entered a valid non-zero password.\n\n"
label = gtk_label_new("You have not entered a valid, personalized password.\n"
"If you want to use the version 1.0x compatibility\n"
"mode, make sure that the password consists only of\n"
"numerical characters (0-9).\n\n"
"Choose OK to repeat your password selection.\n"
"Choose CANCEL to abort the encription.\n");
"Choose CANCEL to abort the encryption.\n");
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
gtk_widget_show(label);
@ -592,8 +820,13 @@ encript_enter_dialog()
return bint.run;
}
/**********************************************************************
* FUNCTION encrypt_no_last_val_dialog
*********************************************************************/
static gint
encript_no_last_val_dialog()
encrypt_no_last_val_dialog()
{
GtkWidget *dlg;
GtkWidget *label;
@ -606,13 +839,13 @@ encript_no_last_val_dialog()
gtk_window_set_title(GTK_WINDOW(dlg), "Error");
gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect(GTK_OBJECT(dlg), "destroy",
(GtkSignalFunc)encript_close_callback,
(GtkSignalFunc)encrypt_close_callback,
NULL);
button = gtk_button_new_with_label("OK");
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)encript_ok_callback,
(GtkSignalFunc)encrypt_ok_callback,
dlg);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area),
button, TRUE, TRUE, 0);
@ -631,9 +864,11 @@ encript_no_last_val_dialog()
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
label = gtk_label_new("For security reasons, the password is not saved\n"
"for later use. That's why this plug-in cannot be\n"
"executed with the last values.\n");
label = gtk_label_new("For security reasons, the last password has not\n"
"been saved for further use. Thus the plug-in cannot\n"
"be executed in non-interactive mode. If you want to\n"
"be able to do this, enable the option 'remember password'\n"
"in the dialog box of the plug-in.\n");
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
gtk_widget_show(label);
@ -649,11 +884,12 @@ encript_no_last_val_dialog()
return bint.run;
}
/**********************************************************************
* FUNCTION encrypt_logo_dialog
*********************************************************************/
GtkWidget *
encript_logo_dialog()
encrypt_logo_dialog()
{
GtkWidget *xdlg;
GtkWidget *xlabel;
@ -664,20 +900,20 @@ encript_logo_dialog()
GtkWidget *xvbox;
GtkWidget *xhbox;
char *text;
gchar *temp,*temp2;
char *datapointer;
guchar *temp,*temp2;
guchar *datapointer;
gint y,x;
xdlg = logodlg = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(xdlg), "About");
gtk_window_position(GTK_WINDOW(xdlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect(GTK_OBJECT(xdlg), "destroy",
(GtkSignalFunc)encript_close_callback,
(GtkSignalFunc)encrypt_close_callback,
NULL);
xbutton = gtk_button_new_with_label("OK");
GTK_WIDGET_SET_FLAGS(xbutton, GTK_CAN_DEFAULT);
gtk_signal_connect(GTK_OBJECT(xbutton), "clicked",
(GtkSignalFunc)encript_logo_ok_callback,
(GtkSignalFunc)encrypt_logo_ok_callback,
xdlg);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->action_area),
xbutton, TRUE, TRUE, 0);
@ -707,7 +943,7 @@ encript_logo_dialog()
xpreview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height);
temp = g_malloc((logo_width+10)*3);
datapointer=header_data;
datapointer=header_data+logo_width*logo_height-1;
for (y = 0; y < logo_height; y++){
temp2=temp;
for (x = 0; x< logo_width; x++) {
@ -730,8 +966,8 @@ encript_logo_dialog()
"CH-3066 Stettlen (Switzerland)\n\n"
"cotting@mygale.org\n"
"http://www.mygale.org/~cotting\n\n"
"Encript & Decript\n Plug-In for the GIMP\n"
"Version 1.01\n";
"Encrypt & Decrypt\n Plug-In for the GIMP\n"
"Version 2.02\n";
xlabel = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0);
gtk_widget_show(xlabel);
@ -746,3 +982,5 @@ encript_logo_dialog()
gdk_flush();
return xdlg;
}

View File

@ -29,14 +29,12 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 2.02 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
with the gzexe program (if it is available
on your system). To do so, change to the
plug-in directory of the GIMP...
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -2,10 +2,10 @@
pluginlibdir = $(gimpplugindir)/plug-ins
pluginlib_PROGRAMS = Encript_Decript
pluginlib_PROGRAMS = Encrypt_Decrypt
Encript_Decript_SOURCES = \
Encript_Decript.c logo.h
Encrypt_Decrypt_SOURCES = \
Encrypt_Decrypt.c logo.h
INCLUDES = \
$(X_CFLAGS) \
@ -22,7 +22,7 @@ DEPS = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la
Encript_Decript_DEPENDENCIES = $(DEPS)
Encrypt_Decrypt_DEPENDENCIES = $(DEPS)
.PHONY: files

View File

@ -29,14 +29,12 @@
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
With this new release 1.01 the size of
With this new release 2.02 the size of
the logo in the about box has been reduced
in order to make smaller binaries. In
general the compiled plug-in will be
about 25-30% of the size of version 1.00.
in order to make smaller binaries.
If you find that the plug-in is still
too big, you can compress the executables
with the gzexe program (if it is avaiable
with the gzexe program (if it is available
on your system). To do so, change to the
plug-in directory of the GIMP...
@ -53,7 +51,7 @@
rm PLUGIN_NAME~
This will result in a code size of about
35 to 40 kB, which isn't too much IMHO.
20 kB, which isn't too much IMHO.
------------------------------------------

View File

@ -0,0 +1,788 @@
/* GIMP header image file format (Indexed): //logo.h */
static unsigned int logo_width = 200;
static unsigned int logo_height = 72;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) \
pixel[0] = palette_data[data[0]*3+2]; \
pixel[1] = palette_data[data[0]*3+1]; \
pixel[2] = palette_data[data[0]*3+0]; \
data--;
static unsigned char
palette_data[] = { 4,2,2,4,110,178,32,4,122,4,36,
86,15,3,66,4,58,127,36,8,186,4,34,122,17,2,
34,4,19,66,12,4,162,90,2,69,88,2,48,7,20,
2,25,2,103,8,14,48,4,58,186,90,3,154,82,2,
129,55,2,34,17,2,18,17,34,191,94,2,101,57,2,
70,7,32,154,12,22,157,17,3,50,4,88,150,96,3,
186,86,2,138,87,2,86,212,214,210,4,19,98,52,2,
154,15,11,2,4,132,216,7,18,125,12,6,82,37,12,
18,4,88,189,86,14,48,128,2,157,32,4,138,4,60,
155,4,48,126,60,2,218,7,10,52,13,12,66,129,2,
50,56,2,52,52,14,98,4,47,157,6,20,87,48,2,
24,58,2,101,120,2,141,52,5,170,4,113,215,127,2,
73,4,90,210,4,52,112,36,18,194,59,2,85,42,2,
10,107,2,173,95,2,114,31,3,52,4,79,160,84,3,
189,14,10,40,30,2,69,96,2,58,113,2,126,9,37,
231,17,33,170,28,14,2,4,30,146,68,10,37,132,2,
82,23,4,7,4,10,122,4,36,108,32,2,37,7,27,
2,4,98,175,84,10,146,4,101,191,4,14,146,8,29,
86,4,2,170,8,60,230,84,10,162,72,2,39,102,2,
142,4,142,221,4,49,143,68,12,170,4,124,213,15,4,
74,114,2,69,112,2,158,32,3,23,8,50,190,111,2,
104,6,40,154,96,2,210,6,28,104,60,2,138,61,2,
25,68,2,114,58,2,125,39,2,114,73,2,69,16,4,
58,4,88,177,56,14,26,138,2,173,4,68,176,71,2,
55,76,2,210,4,78,130,17,3,42,6,27,69,112,2,
49,12,26,178,47,13,159,18,11,10,13,11,74,141,2,
58,52,18,234,4,82,186,4,126,198,4,103,213,4,62,
206,4,72,226,12,46,210,72,12,222,12,26,146,20,34,
210,4,113,197,4,131,229,4,48,170,4,76,170,7,43,
95,52,30,218,15,11,170,52,14,202,12,14,86,4,40,
174,108,14,202,156,2,186,60,12,130,5,40,129,73,13,
189,12,42,138,44,14,202,4,59,143,4,124,229,4,69,
191,4,69,157,4,60,114,4,43,110,14,14,58,20,26,
157,28,26,210,4,87,162,4,91,202,4,110,226,4,98,
226,4,101,202,17,14,186,28,18,18,60,2,234,28,10,
114,4,30,114,8,10,162,12,54,186,20,26,130,100,10,
170,40,18,154,4,22,114,28,26,234,4,22,58,4,66,
226,4,54,202,12,42,202,4,38,98,4,145,234,4,76,
146,4,94,148,4,138,213,4,94,186,4,54,126,4,54,
154,4,118,211,4,106,178,4,106,188,4,54,142,4,94,
170,4,70,202,4,118,197,4,54,173,4,82,178,72,4,
172,36,10,138,76,14,162,4,98,210,4,118,226,112,2,
114,24,19,8,30,2,85,84,6,226,141,2,73,28,30,
10,28,46,186,112,4,206,36,10,90,36,2,174,108,2,
58,41,3,130,44,10,194,9,33,130,92,2,162,51,2,
42,12,32,162,81,3,146,44,11,26,28,6,146,44,2,
178,30,12,10,60,10,178,64,2,146,28,10,178,92,10,
210,5,41,146,40,2,102,96,2,125,100,2,88,74,2,
157,142,2,159,26,10,55,143,2,50,73,2,102,134,2,
142,73,2,84,127,2,126,142,2,82,156,2,178,28,10,
158,28,26,114,84,14,202,12,4,10,5,20,74,17,2,
26,92,2,194,7,19,106};
static unsigned char header_data[] = { 71,99,218,218,99,11,71,218,71,71,
218,99,99,99,71,99,218,99,99,99,99,218,71,218,99,218,218,99,99,218,
218,99,99,218,99,218,99,58,218,99,99,99,58,218,99,99,99,58,99,58,
99,58,11,58,99,58,58,11,99,58,99,58,99,99,99,218,99,218,99,58,
99,71,99,218,71,12,12,12,12,12,12,12,12,12,92,19,19,19,92,92,
92,92,19,108,19,19,19,19,19,19,53,53,53,53,101,19,19,53,53,19,
19,19,12,92,92,12,12,12,71,71,218,99,218,218,71,71,12,12,218,99,
58,58,58,99,99,99,58,99,99,99,11,58,11,58,58,99,58,99,99,99,
58,99,99,99,99,58,99,99,99,99,99,218,99,99,11,99,99,99,11,99,
99,218,218,218,99,218,99,99,218,218,99,99,218,99,218,218,99,99,218,11,
218,71,99,218,99,218,218,99,71,8,218,99,218,218,99,99,99,99,99,99,
218,218,99,99,218,99,218,99,218,71,99,99,99,218,99,99,218,99,99,99,
218,218,99,99,99,99,58,99,58,30,99,99,99,99,99,99,58,99,99,58,
99,58,99,58,99,99,58,58,58,99,58,58,99,218,218,71,99,99,71,71,
71,123,12,118,71,71,12,71,123,12,12,19,19,19,53,19,19,53,53,19,
19,53,101,63,20,63,20,63,53,53,53,101,53,53,53,19,53,53,53,19,
92,12,12,12,71,12,12,12,12,12,92,71,218,218,71,218,71,71,71,71,
99,218,58,58,58,99,99,99,99,58,58,58,99,58,99,58,58,99,58,58,
99,99,58,99,99,99,99,58,99,58,30,99,99,99,218,99,58,99,99,58,
11,99,99,218,99,218,218,99,99,218,71,99,218,99,99,218,99,99,218,99,
11,218,99,218,99,11,218,99,99,8,71,71,71,99,218,71,218,99,71,218,
11,99,218,218,99,218,99,218,99,99,99,99,218,99,99,99,99,99,218,99,
99,99,99,99,99,11,99,99,99,99,99,99,58,99,58,99,58,99,58,58,
99,11,58,58,99,58,99,99,58,58,218,99,123,71,71,71,123,71,71,218,
99,99,218,71,12,12,12,12,92,19,19,53,19,53,53,53,53,19,53,53,
53,53,19,53,19,53,53,53,53,53,63,63,101,63,63,20,53,19,53,53,
53,19,92,92,12,12,12,71,71,71,71,12,12,71,71,12,12,12,12,12,
12,218,218,99,58,58,99,58,99,58,99,58,99,99,58,218,58,99,58,99,
99,99,99,11,58,99,99,58,99,99,58,58,99,99,99,99,99,99,99,99,
99,58,218,99,218,99,99,99,218,99,99,218,99,11,218,99,218,218,99,99,
218,99,218,11,99,71,99,218,71,8,99,99,218,99,99,99,218,99,99,218,
218,99,11,99,99,218,99,218,99,218,218,99,58,99,99,99,58,11,99,99,
58,99,99,58,58,58,58,99,99,99,99,218,58,99,99,99,58,58,99,99,
58,58,99,58,99,58,99,99,58,58,99,218,71,71,218,218,218,58,58,58,
218,99,71,123,12,12,12,19,19,108,108,108,92,92,92,12,71,12,12,92,
19,53,53,53,101,53,53,19,53,101,53,20,53,79,79,0,34,79,20,63,
53,53,53,19,19,19,12,12,12,71,71,71,71,71,71,123,71,12,12,12,
12,12,71,71,218,58,99,58,218,58,218,99,58,99,58,99,99,218,58,58,
58,99,58,58,99,99,58,99,58,99,99,218,58,58,99,99,99,99,99,99,
58,11,99,99,218,218,218,99,218,99,99,218,218,99,218,99,99,218,218,99,
218,99,71,218,99,218,99,99,99,8,218,218,99,218,99,218,99,218,218,99,
11,218,218,218,218,99,71,99,218,99,99,99,218,58,99,99,99,99,218,30,
58,99,58,99,58,11,58,99,58,99,58,58,58,99,58,58,99,99,58,58,
58,99,58,99,58,58,99,58,218,99,99,218,58,99,58,58,58,58,58,218,
71,12,12,71,71,12,12,12,12,71,71,118,71,71,118,71,71,12,223,19,
19,53,53,53,53,63,229,20,79,20,34,0,20,101,101,63,20,101,101,53,
108,53,53,53,53,53,101,19,92,12,12,12,12,71,71,218,218,218,71,71,
118,12,71,71,218,218,58,58,58,58,58,58,218,58,58,58,99,99,218,99,
58,58,99,99,58,99,58,99,58,58,58,99,99,99,58,99,99,99,58,58,
99,58,58,99,99,99,99,99,99,99,218,99,99,218,99,218,218,99,99,218,
99,58,99,99,218,99,218,218,218,8,99,218,99,218,99,218,11,99,218,99,
99,99,99,99,218,99,58,99,99,99,58,99,218,99,99,99,99,99,58,99,
58,218,99,99,99,58,218,58,58,58,99,99,58,99,218,58,99,99,58,218,
58,99,58,99,99,99,58,99,58,58,58,58,99,58,58,58,58,218,218,12,
71,71,71,12,12,71,71,12,71,12,71,71,71,71,12,92,19,53,53,53,
101,63,79,34,251,0,0,63,20,53,19,53,53,53,53,19,19,53,19,19,
19,108,19,19,19,19,19,19,53,53,108,12,12,12,71,71,218,58,58,58,
99,218,71,71,71,12,218,99,99,58,58,58,58,218,58,58,58,58,58,99,
99,58,58,99,58,218,58,99,99,99,99,58,99,128,99,58,99,99,11,99,
99,58,11,58,99,99,99,218,58,11,99,58,99,218,99,99,218,99,99,99,
218,71,99,99,218,99,11,99,218,8,218,99,218,99,218,99,99,218,99,218,
58,218,58,218,99,99,218,99,58,99,99,99,99,78,11,58,99,58,99,99,
99,58,58,99,58,11,58,58,218,99,99,58,58,58,99,58,58,58,99,99,
58,58,58,58,58,58,99,58,99,99,99,58,58,58,58,58,218,71,118,12,
71,71,71,71,71,12,71,71,71,71,71,12,92,19,19,53,53,63,20,251,
0,79,79,0,79,34,34,79,0,63,229,20,63,101,53,101,19,53,19,92,
12,71,12,92,12,12,12,12,12,92,19,92,92,71,12,118,71,218,99,58,
58,58,58,58,218,123,71,218,58,58,58,99,58,58,58,218,58,218,58,58,
218,58,99,58,58,58,99,99,58,99,58,99,218,99,99,99,58,58,58,11,
58,58,99,58,99,99,30,99,99,99,58,218,218,30,99,218,99,99,99,218,
99,99,218,218,99,99,218,71,99,8,99,99,71,99,218,218,99,218,99,218,
99,218,99,58,11,58,99,99,11,58,99,58,99,99,99,99,58,58,99,99,
58,99,99,99,99,58,99,78,58,58,99,99,218,78,58,218,58,99,212,58,
99,58,58,58,218,58,58,58,58,58,58,58,58,58,218,71,12,12,71,71,
123,218,218,58,99,71,123,71,71,12,19,19,19,53,53,19,19,53,63,53,
101,101,101,63,101,101,20,20,79,0,0,79,79,34,251,79,79,251,101,53,
19,92,12,71,71,71,218,12,218,12,71,71,71,71,71,12,71,71,123,71,
58,58,58,58,58,58,58,99,99,58,58,58,99,58,58,58,99,58,99,58,
99,58,58,99,58,58,58,58,99,58,99,58,99,58,99,58,99,99,58,58,
99,99,99,58,99,58,58,58,99,99,99,30,128,58,99,99,99,99,99,58,
218,99,99,218,218,99,99,218,71,8,71,218,99,99,99,99,218,99,99,99,
99,30,58,11,58,58,99,58,58,58,58,30,58,58,99,99,99,58,99,58,
99,58,99,58,58,58,218,99,58,99,58,58,58,218,99,58,58,58,58,58,
58,99,99,99,58,99,99,58,58,212,99,58,58,218,71,71,218,218,99,58,
58,58,58,218,123,71,71,12,108,19,19,108,19,19,223,92,19,92,12,12,
19,19,19,19,53,53,63,63,229,0,34,34,79,0,79,0,75,34,0,34,
79,20,53,19,92,12,71,71,71,218,71,123,71,123,71,71,71,71,71,71,
71,218,58,58,58,58,58,58,58,99,58,58,58,58,58,58,58,58,99,58,
58,99,99,58,99,58,58,58,58,58,58,99,58,99,58,99,58,58,99,99,
58,58,99,99,58,58,218,58,58,99,58,99,11,58,58,99,58,218,99,99,
99,99,218,99,99,218,99,99,99,8,99,218,99,218,99,99,99,99,58,58,
11,58,99,58,58,30,58,11,58,11,58,99,99,58,99,58,58,58,99,58,
58,99,58,99,99,58,58,99,58,99,58,99,58,99,212,58,58,58,58,58,
58,58,58,58,58,58,58,58,58,58,212,58,218,218,218,99,58,58,58,58,
58,99,71,71,71,12,71,71,12,12,12,71,71,123,71,218,71,71,71,92,
19,108,63,79,229,126,0,79,0,0,34,34,34,126,34,251,79,0,126,34,
79,0,79,20,63,19,19,12,71,71,71,218,71,99,71,71,71,71,71,71,
71,71,218,58,58,58,212,58,58,58,58,58,58,58,58,58,58,58,58,58,
58,58,99,58,58,99,58,58,99,99,128,218,58,58,99,58,99,58,58,99,
218,58,58,218,99,99,99,99,99,99,58,99,99,58,30,218,99,99,99,99,
99,99,218,99,99,99,218,218,99,8,218,99,99,99,58,99,99,99,99,99,
58,58,218,99,99,99,58,99,58,58,58,99,58,99,58,99,99,99,58,58,
99,99,58,58,58,58,58,58,99,99,58,99,99,58,58,58,58,99,58,58,
99,58,99,58,78,212,99,212,99,58,58,99,58,58,78,78,246,99,212,58,
99,71,123,71,71,71,71,71,218,218,71,123,218,218,218,118,12,19,63,63,
0,0,0,34,34,0,34,79,79,79,0,34,79,79,20,101,53,101,53,19,
53,53,101,101,53,53,19,19,19,92,218,218,218,218,218,212,78,58,218,218,
71,71,71,11,58,246,58,78,246,58,58,58,99,99,58,58,99,58,212,58,
99,58,99,58,58,99,58,58,58,58,58,212,218,58,58,99,58,58,99,58,
99,99,99,58,58,99,99,99,58,99,58,58,99,99,99,58,58,99,99,99,
99,99,99,11,58,99,99,99,218,8,99,99,218,99,99,218,99,218,58,58,
11,78,58,99,58,99,58,99,58,11,58,99,58,99,58,58,58,99,99,58,
99,99,99,58,58,58,58,58,58,58,58,58,58,58,58,212,99,58,212,99,
58,58,78,58,78,58,58,58,58,58,58,58,58,58,246,58,246,58,58,71,
218,71,71,71,218,71,71,71,71,218,218,71,71,92,92,53,63,126,79,0,
0,79,0,79,34,79,0,126,79,79,79,79,79,229,229,101,53,108,92,71,
71,71,71,71,71,12,12,19,108,19,92,71,71,71,71,218,212,246,78,58,
58,218,218,71,71,58,58,212,212,78,212,78,78,58,58,58,58,58,99,58,
78,58,58,99,58,58,58,58,58,58,58,58,99,58,99,58,58,212,99,58,
58,99,58,99,58,99,99,58,58,99,99,58,58,58,58,11,78,99,99,99,
99,58,99,58,71,99,99,99,99,8,99,99,99,218,99,58,99,30,58,11,
58,11,58,58,99,58,58,99,58,99,58,99,99,58,99,58,99,58,58,99,
58,58,58,58,58,78,58,99,58,99,58,58,58,58,99,58,212,99,58,58,
58,78,78,78,58,58,58,58,58,212,58,78,58,78,78,78,58,99,218,218,
71,218,218,71,58,99,58,99,71,71,71,12,19,20,79,251,0,251,79,251,
79,63,126,79,79,79,79,229,79,79,79,126,126,79,79,63,20,53,53,92,
12,12,218,71,71,218,218,218,71,218,71,71,71,218,71,218,218,58,246,246,
78,212,78,58,218,218,58,58,58,246,78,212,78,212,58,58,58,58,58,212,
78,78,78,58,58,99,58,58,58,58,58,58,58,58,58,218,99,99,58,99,
58,58,218,99,58,58,99,58,99,99,58,99,99,99,58,99,99,58,58,58,
218,99,11,58,99,99,99,218,99,8,99,30,218,58,11,99,99,58,99,58,
99,58,58,99,218,99,218,58,99,99,58,58,58,58,99,58,99,99,58,99,
58,58,58,78,78,58,58,58,58,58,99,246,78,78,58,58,58,58,58,78,
78,212,78,246,246,58,58,58,212,58,212,246,78,246,58,212,218,218,218,218,
218,58,246,58,246,58,218,218,123,12,19,19,53,53,101,53,63,101,63,63,
63,63,63,63,63,101,63,53,63,53,53,53,53,108,19,19,19,19,108,19,
92,92,12,12,71,71,218,99,99,218,218,218,218,218,71,71,71,218,218,246,
78,78,246,78,78,78,58,58,58,78,78,78,78,246,58,58,58,58,58,78,
212,78,78,58,58,58,58,99,58,58,58,58,58,58,99,58,58,58,58,58,
58,99,58,58,99,58,58,58,58,58,58,99,58,58,58,58,58,99,99,99,
58,99,58,99,99,58,99,99,99,8,99,99,30,58,58,58,58,58,58,99,
58,11,99,58,99,58,58,58,58,58,58,99,58,58,58,58,58,58,99,58,
99,58,78,58,58,58,99,58,58,78,246,78,58,78,58,58,58,58,78,212,
246,78,246,78,78,99,212,246,78,246,58,246,246,78,246,218,218,218,58,58,
246,78,78,246,58,218,218,71,12,12,108,92,108,19,108,53,63,63,63,53,
53,53,19,223,92,92,49,118,118,118,118,118,118,118,71,118,118,12,12,12,
92,71,71,123,218,99,11,58,58,58,58,78,58,99,99,123,71,218,218,218,
246,246,78,212,78,212,78,246,78,78,58,78,246,78,246,78,58,58,58,58,
99,78,246,78,246,99,58,58,58,58,58,78,78,78,78,99,58,99,58,99,
78,58,58,99,58,218,218,58,58,99,58,58,58,218,99,58,58,58,58,11,
58,99,99,99,58,99,99,218,58,8,99,99,58,99,58,11,58,11,58,58,
99,58,99,58,99,58,99,58,58,218,58,58,58,99,58,99,58,58,58,99,
78,58,58,58,99,58,58,78,78,58,246,78,246,99,58,58,58,212,78,78,
246,58,246,58,78,78,78,58,246,78,78,58,246,58,58,58,212,58,246,78,
212,246,58,58,71,71,71,71,12,92,92,92,108,53,53,53,19,19,223,223,
49,223,92,49,49,223,92,49,118,118,118,71,118,112,118,11,11,112,71,112,
71,71,11,11,11,99,99,58,58,78,78,78,246,78,246,58,99,71,218,71,
218,78,78,246,78,246,58,246,78,246,212,58,246,58,246,78,212,78,246,58,
58,58,78,246,246,78,78,99,58,58,58,212,78,58,78,58,58,58,58,58,
78,58,78,99,58,58,99,58,58,58,58,99,58,58,99,218,58,99,58,58,
58,58,99,58,99,99,58,99,99,8,99,99,58,58,58,99,58,99,99,58,
99,58,58,58,58,58,58,218,99,58,99,58,58,58,58,58,99,58,58,78,
58,78,78,78,78,58,78,58,78,78,78,212,78,58,78,58,78,212,78,246,
78,246,78,78,212,246,246,78,246,212,246,246,78,246,58,246,78,246,58,246,
246,58,99,218,218,218,71,12,92,19,19,19,19,19,223,223,49,223,49,118,
49,112,30,30,237,103,208,208,245,208,245,208,245,245,245,103,208,103,22,237,
30,30,11,11,11,11,71,71,11,99,58,78,78,246,58,246,246,246,58,99,
99,218,212,78,246,78,246,78,246,58,78,58,246,78,58,246,78,212,78,246,
58,212,58,78,78,212,78,78,58,58,99,78,78,78,78,78,58,58,99,58,
58,78,78,78,58,58,99,58,99,58,58,99,58,218,58,58,99,58,58,218,
99,58,99,99,58,99,30,99,99,8,58,99,58,99,58,58,58,99,58,99,
58,218,218,58,99,58,99,58,58,58,78,99,78,58,99,58,58,78,58,78,
78,58,78,78,58,78,78,246,246,212,78,78,78,58,78,246,78,246,58,246,
212,78,58,78,78,58,246,78,78,78,58,246,78,246,78,58,246,78,78,78,
58,218,99,11,71,12,92,92,92,223,223,223,223,223,49,118,112,22,237,208,
72,245,55,243,245,72,72,72,65,208,236,208,208,245,72,55,243,55,55,243,
245,245,245,103,237,237,30,11,11,112,71,11,99,58,78,246,246,246,246,78,
58,218,58,58,246,78,212,78,246,78,246,78,212,78,78,212,78,246,78,78,
58,78,78,78,78,78,246,246,246,58,58,78,58,246,78,212,78,78,99,58,
58,78,58,58,58,58,58,99,58,58,58,58,78,58,58,99,99,58,58,58,
99,218,58,99,99,99,58,99,58,8,99,99,99,58,11,58,58,58,99,58,
58,58,58,58,58,58,58,99,99,78,78,58,58,78,58,58,99,78,78,78,
78,78,78,78,78,78,212,246,246,246,246,78,78,246,246,58,246,78,246,78,
78,78,212,246,246,246,78,78,212,246,246,246,58,246,246,78,246,246,78,58,
218,99,71,12,12,92,92,82,223,49,223,118,112,22,208,72,72,208,65,22,
22,112,11,112,112,112,112,112,118,118,118,112,112,112,30,244,244,30,237,65,
236,72,55,55,243,243,208,208,237,237,11,71,11,11,71,11,99,58,246,246,
246,78,78,246,58,246,78,246,58,246,58,246,58,246,246,78,78,78,212,78,
212,246,212,78,246,246,58,78,78,246,99,246,246,58,246,58,78,78,78,58,
78,78,78,78,78,78,58,58,58,99,58,58,78,99,58,58,58,218,99,99,
58,58,99,58,99,58,58,99,99,8,58,58,99,58,99,218,99,58,99,99,
99,58,99,58,99,58,58,58,58,78,58,58,58,58,58,58,58,78,212,78,
78,58,246,78,58,246,246,246,246,246,246,246,78,58,246,78,246,58,246,58,
246,78,78,78,58,246,212,78,78,78,58,246,78,212,246,58,78,212,58,99,
218,71,12,92,19,223,49,49,118,62,30,22,208,208,103,30,244,112,244,118,
112,23,49,49,49,49,49,49,49,49,82,82,223,82,49,118,23,118,118,112,
11,30,237,22,65,245,55,243,245,245,103,237,237,11,71,11,71,71,218,58,
246,246,78,246,78,212,78,246,246,78,246,246,78,78,212,78,212,78,246,78,
78,58,246,78,58,246,78,212,78,246,78,78,78,78,78,212,246,246,246,78,
58,78,78,78,58,78,78,58,58,58,58,58,99,58,58,58,58,58,99,58,
58,58,58,58,58,99,99,58,58,8,99,99,58,58,58,99,99,99,99,58,
58,99,78,58,78,99,58,58,99,78,78,78,58,78,58,58,78,246,78,212,
78,78,58,78,246,246,246,246,246,246,58,78,78,246,58,246,78,246,78,246,
78,212,78,212,212,246,78,78,246,246,78,212,58,99,212,246,246,58,99,218,
118,12,92,223,223,49,49,11,237,208,208,103,244,23,118,112,118,112,49,49,
19,82,82,82,223,49,66,49,49,82,223,223,101,19,223,82,223,82,223,82,
82,49,23,112,11,244,30,65,72,55,55,245,208,22,237,112,11,118,71,218,
218,58,58,78,246,78,212,78,78,212,99,78,212,246,78,246,78,246,78,212,
246,246,78,246,246,78,246,78,246,58,246,78,58,78,246,246,246,246,212,246,
78,78,78,78,78,58,78,78,99,58,78,78,78,99,58,58,99,58,99,99,
58,99,99,99,99,58,99,58,99,8,99,99,99,58,58,99,58,58,99,58,
58,58,78,78,58,58,58,58,58,58,78,78,78,78,78,58,246,246,246,246,
246,78,78,212,246,246,246,246,246,246,78,212,78,246,78,212,78,246,58,246,
78,246,78,58,58,212,246,58,78,246,246,58,58,58,58,246,58,218,71,12,
223,223,49,49,49,30,65,72,72,30,112,118,118,112,118,49,223,223,223,49,
244,244,244,244,23,23,23,23,70,66,49,70,49,70,70,118,23,23,23,23,
49,223,19,82,223,223,23,11,244,237,208,72,55,55,208,103,30,11,11,49,
71,71,99,58,246,78,246,246,58,246,58,58,246,212,78,246,58,246,78,58,
58,212,78,78,212,78,212,78,78,78,212,78,78,78,246,212,246,246,246,212,
246,58,78,78,78,78,58,78,78,99,58,58,78,58,58,58,99,58,58,58,
58,58,58,58,99,58,99,58,99,8,99,58,58,218,58,58,58,99,58,58,
58,99,58,58,99,58,78,78,78,78,78,78,78,58,246,246,246,212,246,246,
212,246,78,246,246,246,246,246,212,246,246,78,246,58,212,246,78,78,78,246,
58,246,212,99,58,246,78,246,246,58,58,58,58,78,246,58,99,118,12,92,
223,223,223,11,22,72,208,244,49,112,112,118,49,82,223,49,244,244,242,62,
23,62,23,23,244,244,244,244,244,244,62,30,244,244,244,244,23,112,210,23,
62,244,244,23,223,82,53,82,49,112,30,30,65,72,55,245,208,237,30,112,
71,49,118,71,99,78,78,78,246,246,58,99,58,246,212,78,246,58,246,212,
99,58,212,246,78,246,78,246,212,246,78,246,246,212,246,246,246,212,246,246,
246,246,78,78,246,246,78,78,78,78,58,58,78,58,58,58,58,58,99,99,
99,78,99,58,99,99,58,99,58,8,58,99,58,99,99,58,58,99,58,58,
58,58,58,58,78,58,78,78,58,78,58,246,78,78,78,212,246,246,212,246,
246,246,246,246,246,246,246,246,246,246,246,58,246,58,99,212,246,212,78,78,
78,99,58,58,78,246,58,78,246,58,58,58,58,212,58,218,71,12,49,49,
49,112,22,72,65,112,49,112,112,112,223,19,118,62,244,62,62,23,23,244,
244,244,244,112,23,49,49,223,19,223,82,223,223,49,223,23,118,112,244,30,
62,62,62,62,23,62,23,223,82,8,82,71,30,244,22,72,55,245,103,237,
11,71,12,12,71,99,78,78,78,58,212,58,58,58,58,212,78,58,246,78,
58,58,58,212,78,246,58,78,78,212,212,246,246,246,212,246,246,246,246,246,
246,246,58,78,78,58,246,212,78,78,58,78,58,78,78,78,58,78,58,58,
218,58,58,99,58,99,99,99,58,8,218,99,58,58,58,99,58,58,99,78,
78,58,99,58,58,78,58,78,246,78,78,58,78,212,246,246,246,246,246,246,
246,246,246,212,246,212,246,246,246,212,78,246,58,58,58,246,78,78,212,246,
58,58,58,58,212,78,246,212,58,58,58,58,58,58,71,12,49,223,223,49,
30,208,72,30,49,49,112,49,223,223,23,22,244,62,23,23,62,22,112,118,
49,49,223,118,23,244,30,242,22,242,242,62,242,244,244,112,23,49,49,223,
23,112,30,244,62,112,210,23,23,49,82,8,223,244,237,30,208,55,243,245,
22,30,71,118,12,71,99,78,78,246,212,58,58,58,58,246,246,246,78,246,
58,58,58,78,212,78,246,246,246,58,58,212,246,246,246,246,246,246,246,246,
246,78,246,58,246,246,246,78,212,78,78,78,58,78,58,78,58,58,99,58,
58,58,99,58,58,58,58,58,58,8,58,99,58,58,58,58,99,58,78,78,
58,58,78,58,58,78,78,58,78,78,78,78,78,246,212,246,246,246,246,246,
246,246,246,246,246,246,212,246,246,246,78,58,58,58,58,246,78,78,246,99,
212,58,212,58,212,78,78,58,58,218,58,212,58,99,71,49,223,49,49,30,
55,72,112,49,244,11,49,82,112,242,242,62,23,62,244,112,118,223,82,118,
30,236,29,225,231,33,248,42,42,42,219,2,42,219,110,107,231,29,65,244,
112,223,223,49,112,30,30,23,23,23,23,49,82,101,49,30,30,242,72,243,
208,103,30,71,118,12,71,99,78,78,78,58,58,58,58,58,78,58,246,78,
58,58,99,58,246,58,246,58,246,58,99,58,212,246,246,212,246,246,246,246,
246,246,246,246,212,246,246,246,246,78,58,78,78,78,78,78,58,78,78,78,
58,78,99,99,99,58,58,99,99,8,99,58,99,99,58,58,58,58,78,78,
78,78,58,58,58,78,78,78,78,78,246,246,58,246,246,246,246,246,246,246,
246,246,212,246,99,58,246,246,246,246,212,58,58,58,99,212,78,212,212,58,
78,58,58,58,246,246,78,58,71,218,58,58,11,71,118,223,49,23,103,243,
22,49,118,30,118,82,49,30,242,62,70,62,244,118,223,82,112,65,93,205,
217,42,80,147,98,4,26,8,8,8,8,121,8,8,26,4,98,210,111,219,
29,29,65,112,223,82,23,30,244,62,62,62,62,49,82,82,112,30,30,65,
243,245,103,30,71,118,12,71,218,212,246,58,58,212,212,58,58,246,212,78,
58,58,212,58,58,246,78,246,58,58,58,58,246,212,246,246,246,246,246,246,
246,212,246,246,246,246,212,246,246,212,78,246,212,78,58,78,78,78,58,78,
78,78,58,58,58,58,99,58,58,8,58,58,58,58,58,58,58,58,237,78,
58,78,78,58,78,78,212,78,246,78,78,246,246,246,246,246,246,246,246,246,
246,246,246,58,58,58,246,246,246,246,58,58,99,58,58,246,246,78,99,78,
246,78,58,58,58,58,58,218,12,99,58,99,71,92,49,223,118,22,41,65,
223,23,30,118,19,23,22,242,23,23,30,112,223,19,112,29,222,232,87,80,
98,26,121,8,20,253,20,20,20,20,101,20,20,20,253,253,20,8,121,26,
4,14,2,231,29,30,49,82,112,30,244,62,23,210,118,82,101,223,30,244,
65,55,243,103,237,71,118,71,71,99,58,58,58,58,218,58,58,58,246,212,
58,58,212,78,99,58,246,246,78,58,58,58,58,246,246,246,246,246,246,246,
246,246,246,212,246,246,246,246,246,246,246,78,78,78,78,78,58,78,58,78,
78,58,58,58,78,99,58,58,99,8,99,58,58,99,99,58,58,58,58,237,
78,78,58,78,78,246,78,246,78,246,78,246,246,246,246,246,246,246,246,246,
246,246,58,58,58,58,246,246,246,58,99,78,246,212,99,246,212,58,78,246,
58,246,58,58,58,212,218,12,118,58,58,71,12,49,19,49,237,41,65,49,
118,112,223,82,244,236,62,66,62,30,82,8,112,93,68,6,137,88,162,253,
253,20,253,19,223,23,244,244,54,242,54,242,244,62,112,49,223,20,20,20,
20,253,26,98,14,33,29,244,82,101,112,22,62,62,62,23,49,53,82,30,
112,22,243,243,208,11,71,118,12,218,99,58,58,58,12,71,58,58,58,58,
99,58,58,246,246,58,58,246,246,58,58,58,99,58,246,246,246,246,78,58,
246,212,246,246,246,246,246,212,246,246,78,78,78,78,58,78,78,78,78,58,
78,58,78,237,78,58,99,99,78,8,58,99,58,58,78,78,78,78,78,78,
58,78,78,58,78,246,78,212,246,246,246,246,246,246,246,246,246,103,246,246,
246,246,58,58,58,99,212,246,246,58,212,78,246,58,58,58,58,58,212,78,
78,78,58,58,58,58,123,49,218,99,11,118,223,223,82,237,41,208,23,118,
237,223,82,244,18,210,23,23,112,19,223,103,64,6,148,147,26,253,20,8,
66,23,54,111,219,219,137,24,76,24,163,25,137,42,204,42,151,109,244,223,
20,20,20,20,8,4,111,231,236,23,82,12,237,62,62,23,62,223,253,223,
237,244,22,41,245,103,11,112,118,71,218,58,58,99,92,92,128,58,58,58,
58,58,58,212,78,58,58,212,58,58,58,78,78,58,212,246,246,246,58,58,
212,246,212,246,246,246,246,246,246,212,246,78,246,246,78,78,78,78,78,58,
78,58,58,78,99,58,58,58,99,8,99,58,58,58,58,78,78,58,78,78,
78,78,78,78,78,58,246,246,246,246,246,246,246,246,103,246,246,246,246,246,
246,78,58,58,58,58,58,212,58,58,78,212,78,78,99,58,58,212,78,246,
212,212,58,58,58,218,92,12,218,99,71,12,223,82,118,243,55,23,223,30,
223,19,244,93,54,49,23,112,82,82,245,153,138,234,162,8,253,101,49,30,
111,125,24,201,142,16,159,142,43,95,197,156,193,193,51,141,224,25,248,231,
65,118,20,20,20,20,121,210,231,55,244,82,49,30,244,62,62,244,223,20,
118,237,112,208,243,245,237,71,118,49,71,58,58,218,92,92,12,58,58,99,
58,58,212,78,212,212,58,58,58,58,58,212,78,58,58,246,246,246,99,58,
99,246,246,246,246,246,246,246,246,246,212,246,58,78,78,78,78,78,58,78,
78,58,78,78,58,78,58,99,58,8,99,99,58,58,58,78,78,58,78,58,
78,78,78,246,78,78,78,246,246,246,246,246,246,246,246,103,246,246,246,246,
246,58,58,58,58,58,58,58,58,58,78,78,246,78,58,58,58,212,78,58,
58,78,58,58,58,12,92,12,99,218,118,19,82,223,22,116,237,49,112,112,
101,112,93,109,70,112,118,82,223,55,136,185,44,26,253,253,82,62,107,163,
117,16,114,159,161,106,98,46,26,26,26,26,26,4,32,81,44,142,43,234,
10,56,236,23,20,20,20,8,4,219,225,237,19,82,11,244,62,54,62,223,
20,112,30,244,72,239,103,237,71,12,12,71,58,71,92,92,12,128,58,58,
58,58,246,78,246,58,58,58,99,58,58,246,78,78,58,246,246,58,58,58,
58,212,246,212,246,246,246,246,246,246,78,78,246,58,246,58,78,246,78,58,
78,58,78,78,58,58,58,58,58,8,58,58,58,58,78,237,58,78,78,78,
78,78,78,58,246,246,212,246,246,246,246,246,246,246,246,246,246,246,246,246,
78,58,58,58,58,58,99,58,58,246,246,246,58,246,58,58,58,78,246,218,
11,58,58,58,58,12,92,71,218,11,49,223,101,23,239,93,23,118,244,223,
223,65,29,70,70,112,82,82,72,233,135,152,121,253,20,49,242,179,176,39,
198,156,32,47,26,26,69,113,26,47,9,47,162,113,26,121,113,252,152,159,
43,234,217,238,30,253,20,251,8,4,107,17,30,82,223,22,62,62,54,244,
82,19,237,112,244,41,245,30,112,71,92,71,99,71,12,92,92,71,78,58,
58,246,246,58,78,212,58,58,58,58,58,78,246,58,99,58,212,58,58,58,
58,78,246,246,246,246,246,246,246,246,246,246,78,78,78,78,246,58,78,78,
58,58,58,99,58,99,58,58,58,8,58,99,99,58,58,78,78,58,78,58,
78,58,78,78,78,78,78,246,246,246,246,246,246,246,246,246,78,246,246,246,
58,58,78,58,78,58,58,99,58,78,58,246,246,58,58,58,212,58,58,12,
71,58,58,58,99,92,92,71,218,71,223,8,19,22,150,30,49,11,23,101,
30,93,54,49,112,49,20,30,254,181,95,26,253,253,49,65,163,166,206,202,
52,26,8,121,4,161,43,114,139,131,57,200,195,188,192,88,26,26,121,98,
197,67,234,145,230,22,82,20,20,8,98,107,100,112,253,112,103,244,54,62,
49,20,49,237,118,208,243,103,11,11,12,92,92,92,92,12,49,12,58,58,
78,58,246,78,246,78,212,99,58,58,78,246,58,78,58,58,58,99,58,58,
58,99,246,246,246,246,246,246,246,246,246,246,246,78,246,78,246,78,58,78,
78,58,78,78,78,58,58,99,58,8,99,58,58,58,99,78,58,78,78,78,
78,78,78,78,78,246,246,246,246,246,246,246,246,246,246,246,58,212,58,246,
99,212,58,99,78,99,58,58,78,246,58,58,58,78,78,58,78,78,99,71,
12,71,58,58,12,12,12,71,11,12,223,101,49,243,100,118,223,112,82,19,
93,225,113,23,244,101,223,41,129,199,52,253,20,223,242,124,39,57,117,122,
121,121,47,44,195,35,94,196,165,189,189,189,27,84,200,139,67,186,26,121,
240,106,159,234,175,68,242,20,20,20,8,210,238,93,223,19,237,244,23,54,
62,19,101,244,112,30,243,208,237,11,12,92,49,223,12,12,92,12,58,78,
246,78,58,246,78,212,78,78,58,58,212,58,58,58,78,99,58,58,99,58,
58,58,246,246,246,246,246,246,246,246,246,246,78,246,58,78,58,78,78,78,
78,78,237,78,58,58,58,58,58,8,99,58,99,58,78,78,78,58,78,78,
78,78,78,78,78,58,246,246,246,246,103,246,246,246,246,218,58,58,78,78,
58,99,71,12,58,78,58,78,58,78,123,12,78,78,58,212,78,78,123,92,
12,12,99,99,12,92,92,71,11,118,82,101,112,116,236,82,112,112,82,118,
100,110,66,23,49,101,244,215,73,43,69,253,101,23,219,59,97,202,52,8,
8,4,120,97,187,139,27,143,46,113,26,26,46,88,60,27,131,200,192,47,
82,66,81,159,234,170,68,118,20,251,20,26,2,64,244,101,118,22,23,62,
62,49,20,118,244,23,208,245,30,11,71,12,92,12,12,49,12,12,71,58,
246,246,78,246,78,246,58,78,58,78,212,218,12,246,78,99,58,78,78,11,
12,58,58,246,246,103,246,246,58,246,246,246,246,78,246,78,78,78,58,78,
78,58,58,58,78,58,58,99,58,8,99,58,58,58,99,78,58,78,78,78,
78,212,78,246,246,78,99,58,246,246,246,246,246,246,71,12,99,58,58,99,
58,58,53,251,71,78,78,78,78,246,19,19,71,246,246,78,212,246,12,92,
12,12,12,12,92,12,12,71,218,118,19,101,244,239,65,223,244,11,53,112,
222,235,66,112,223,20,72,45,90,221,8,253,19,242,214,97,57,152,26,8,
26,188,57,187,139,186,8,8,8,8,121,121,8,8,26,4,44,131,94,67,
162,82,113,44,159,76,220,29,82,0,20,8,98,238,245,82,82,237,23,62,
54,112,20,223,237,49,22,245,237,11,71,49,12,92,12,12,12,12,71,78,
246,58,246,58,246,78,246,58,246,212,58,19,101,218,78,78,99,58,58,53,
101,71,58,246,246,246,78,71,92,58,246,246,212,246,78,58,58,78,78,58,
78,78,78,78,58,58,58,58,58,8,99,99,58,99,58,78,78,58,99,58,
78,78,58,246,78,58,71,92,218,246,246,246,103,246,12,92,92,58,58,58,
58,218,63,53,19,246,246,78,78,212,53,92,92,212,246,78,78,58,92,218,
12,12,92,92,92,12,12,71,11,118,101,101,22,116,242,223,237,11,8,30,
17,62,70,112,8,53,72,172,134,143,8,20,223,109,102,57,97,81,121,82,
252,114,35,157,165,26,253,8,8,46,182,4,26,26,8,8,113,160,190,35,
186,66,121,106,117,152,232,68,49,79,20,8,26,42,17,223,53,22,112,244,
54,244,8,82,30,118,30,245,30,11,99,12,12,92,123,12,12,12,71,78,
246,78,246,78,58,246,246,58,246,58,12,53,53,12,78,78,78,99,12,63,
63,92,78,78,246,246,78,229,229,12,246,246,246,212,78,71,71,58,78,78,
58,78,78,58,58,58,212,58,58,8,99,58,58,58,58,78,78,58,99,218,
99,58,246,78,78,58,12,92,12,78,246,246,246,218,92,92,19,71,58,58,
58,12,38,92,53,71,246,58,246,218,108,92,92,218,246,212,78,58,12,218,
12,12,12,92,12,92,12,71,71,118,82,8,103,116,242,82,244,11,82,30,
222,210,223,23,8,101,55,172,183,186,8,253,223,110,102,157,97,161,8,8,
127,67,190,140,189,26,8,8,69,127,120,5,52,26,26,8,121,9,84,187,
43,113,82,98,142,152,89,119,244,20,0,253,121,219,64,23,101,30,30,23,
54,244,82,101,30,112,112,72,237,71,30,12,12,92,118,12,12,12,71,58,
246,246,58,246,58,212,78,246,58,246,108,63,53,19,78,78,78,58,53,101,
53,108,78,246,246,246,108,79,20,53,246,246,246,78,99,92,92,12,99,78,
78,58,58,218,218,218,99,58,58,8,99,99,58,58,58,99,99,218,71,11,
99,99,78,246,212,71,218,71,92,71,246,246,246,71,92,92,19,19,58,58,
58,92,53,92,92,108,58,246,246,71,92,92,92,92,212,246,246,58,123,48,
12,12,12,92,92,12,12,12,99,118,19,101,237,116,65,49,30,112,82,244,
222,235,26,118,82,101,65,136,183,7,8,8,82,242,21,157,57,192,69,8,
26,7,191,157,190,60,9,8,26,52,84,131,60,4,121,8,26,113,67,94,
142,113,82,98,43,152,10,119,244,251,0,253,121,111,64,23,101,244,22,49,
62,62,82,101,112,23,112,103,30,71,11,12,12,118,12,12,118,12,71,78,
78,246,78,58,218,58,78,246,246,12,53,101,53,19,58,78,58,12,63,63,
53,63,218,246,246,71,79,20,63,101,218,246,246,218,12,19,108,12,99,58,
99,71,218,71,71,218,71,218,71,8,99,58,99,99,58,58,11,218,71,218,
71,71,218,58,58,99,218,99,71,92,218,78,246,92,92,12,223,53,71,58,
58,19,19,92,92,19,12,78,78,12,92,92,92,92,71,78,78,218,123,241,
48,12,12,92,49,12,118,12,71,49,223,101,11,116,65,66,112,11,82,112,
100,54,66,66,223,20,244,105,90,159,8,8,8,244,10,167,187,202,98,8,
121,47,192,169,190,35,195,188,188,195,57,84,106,47,8,8,8,122,195,140,
95,66,82,98,142,221,175,119,244,251,251,20,8,219,64,112,101,30,242,118,
23,62,19,20,11,118,112,22,11,11,99,12,12,12,12,71,12,118,71,58,
246,58,246,99,12,99,212,78,58,19,53,53,101,53,58,78,218,53,101,53,
53,63,218,246,246,63,0,101,19,53,12,78,58,12,108,92,19,108,92,71,
71,12,71,71,123,71,71,123,71,8,99,99,58,58,58,11,58,11,99,218,
99,11,99,99,218,99,218,99,71,12,12,99,99,92,92,92,12,19,53,71,
99,38,53,12,12,92,19,218,212,92,92,92,48,12,108,128,246,218,123,48,
128,123,12,12,12,12,12,118,71,71,223,8,112,41,55,49,49,244,223,49,
93,231,70,82,223,20,82,116,181,158,252,8,20,223,242,214,57,157,156,46,
8,66,26,147,44,198,86,196,86,198,44,52,4,8,8,8,46,60,97,194,
52,82,82,180,159,177,232,64,66,79,20,8,26,231,100,49,8,237,62,23,
62,244,82,82,30,223,11,237,112,11,11,12,12,71,12,12,118,12,71,218,
246,78,58,218,92,99,246,212,92,53,79,79,53,53,218,58,19,63,38,126,
53,101,92,58,19,251,63,223,19,19,92,71,12,223,92,223,223,92,19,92,
12,71,123,71,71,71,71,71,71,8,11,58,11,58,99,58,99,58,99,58,
58,218,218,218,99,218,11,99,99,71,92,92,12,49,92,71,99,12,53,53,
92,20,53,123,48,12,92,19,218,19,92,12,241,48,92,92,58,218,92,241,
128,212,71,12,118,12,12,71,71,112,223,19,82,55,116,112,49,244,223,19,
208,238,235,66,223,253,82,22,250,73,95,113,8,82,49,111,102,207,132,188,
252,69,8,121,162,4,47,52,127,4,4,26,26,8,8,46,186,86,169,95,
66,8,4,95,192,87,45,236,101,251,253,8,70,222,236,223,223,237,244,23,
54,244,82,82,237,118,11,244,71,11,99,71,118,12,12,12,12,12,12,58,
78,78,246,123,108,12,212,12,53,63,13,83,63,53,12,92,53,226,13,13,
53,53,53,226,75,63,12,71,92,19,19,92,92,92,19,12,12,12,92,12,
71,71,71,71,71,12,71,71,71,8,99,99,58,99,99,58,58,99,58,58,
11,218,71,71,11,218,99,99,58,218,12,19,92,92,92,99,78,58,92,101,
75,251,53,12,123,48,92,108,101,63,92,12,241,241,92,92,108,92,108,128,
212,246,58,12,12,12,49,12,12,118,12,49,19,237,116,22,49,118,244,82,
112,17,231,70,223,82,20,82,93,45,133,7,46,8,8,49,50,224,168,207,
142,60,127,46,8,26,8,8,8,8,8,8,121,26,47,192,166,169,7,113,
66,113,7,156,36,217,28,23,251,251,20,26,111,222,30,8,49,22,112,62,
242,112,101,112,30,49,244,11,112,11,99,71,12,12,118,12,12,12,71,246,
246,78,212,92,108,92,218,53,38,13,0,0,63,101,20,63,101,75,83,83,
63,101,229,79,126,92,58,78,12,19,92,92,19,92,12,71,71,118,71,71,
218,12,71,71,71,71,71,218,99,8,218,99,218,58,58,218,99,99,58,99,
58,58,99,99,218,99,218,99,58,58,99,92,92,92,19,58,78,78,99,108,
0,34,38,123,123,48,123,92,53,108,92,12,241,241,241,123,92,19,19,123,
241,212,246,99,12,71,12,71,12,71,118,223,82,118,245,100,112,49,30,118,
223,237,238,111,113,223,19,20,49,93,144,184,44,113,8,253,19,210,173,141,
168,57,196,142,60,52,122,182,113,113,122,3,60,159,130,86,43,122,26,223,
47,106,95,76,89,68,244,20,251,20,8,210,238,72,223,19,30,112,23,62,
244,223,20,118,112,112,244,118,11,99,99,218,71,218,71,12,12,71,58,58,
78,246,246,92,63,53,53,101,83,0,83,83,53,63,63,53,20,83,0,0,
53,53,79,0,226,78,58,78,12,108,92,19,92,71,58,58,99,71,71,123,
71,218,218,71,218,218,99,218,99,8,99,99,218,218,99,99,99,99,58,99,
99,58,99,11,71,99,99,58,58,58,58,71,92,92,19,78,78,58,78,218,
53,63,101,123,123,48,48,123,92,19,92,92,241,241,241,241,92,92,92,12,
241,212,78,78,123,118,12,12,12,12,112,92,49,223,30,247,65,49,23,112,
82,23,72,231,14,26,82,19,101,49,17,146,102,154,147,69,8,82,49,23,
249,104,158,39,206,169,86,130,202,142,202,114,39,117,76,88,4,66,66,113,
7,95,234,175,68,22,101,20,251,8,4,107,100,112,101,112,30,23,112,62,
49,101,49,244,118,112,112,118,11,78,99,99,99,58,71,12,92,99,246,78,
246,58,218,108,108,53,63,229,0,83,34,13,53,53,101,38,13,0,0,13,
53,101,63,101,99,78,58,78,71,19,19,92,71,58,99,58,11,218,218,71,
99,99,99,99,218,58,99,218,218,8,71,218,99,99,218,58,99,99,99,99,
99,58,99,58,99,218,11,58,58,99,58,58,71,92,92,58,78,78,78,78,
118,19,53,123,48,128,128,48,123,12,92,92,48,128,212,48,241,12,12,92,
241,128,246,246,246,71,12,12,12,71,71,118,49,223,49,208,116,22,49,23,
11,223,223,72,225,235,113,82,82,101,49,65,68,164,201,7,162,26,8,121,
66,223,23,216,14,36,177,152,154,152,80,255,98,66,66,223,66,4,32,152,
152,163,228,222,112,251,20,20,8,113,219,222,22,82,23,22,62,112,54,244,
101,82,112,112,23,118,112,11,11,78,58,58,246,99,71,71,99,58,246,212,
58,58,123,108,108,53,20,13,101,19,34,13,53,53,53,0,75,38,0,34,
63,53,53,71,58,78,58,78,11,92,92,71,58,58,58,58,99,218,11,99,
11,58,218,218,99,99,218,99,99,8,99,71,99,99,99,99,99,218,58,99,
218,58,99,99,99,58,58,78,58,99,58,58,58,71,12,78,78,78,78,78,
58,12,19,12,48,218,246,218,48,12,92,92,241,48,58,212,48,241,12,92,
48,241,212,58,212,212,123,118,12,71,118,118,12,223,49,118,55,239,244,223,
112,112,82,118,236,225,14,4,26,82,101,19,112,93,153,21,224,174,88,162,
26,26,121,82,66,66,66,66,66,66,26,82,66,26,113,127,32,44,51,87,
248,222,236,223,20,20,20,8,70,111,17,237,223,49,237,30,62,54,30,118,
253,49,112,118,23,118,118,11,99,58,58,58,212,99,71,218,246,78,78,58,
58,58,108,108,63,38,13,92,58,12,13,251,53,63,251,79,12,71,34,34,
251,53,19,58,78,78,78,58,58,71,71,58,99,99,58,99,58,11,58,99,
99,99,99,218,218,99,218,218,99,8,71,99,218,218,218,99,218,99,99,99,
99,71,58,99,99,99,99,58,58,99,58,58,78,58,99,78,58,78,58,78,
78,78,99,218,128,58,58,78,128,48,12,92,123,241,78,246,58,48,241,218,
12,128,212,212,58,58,212,218,71,12,71,12,118,12,223,49,11,243,55,244,
49,112,244,223,49,236,17,111,4,121,82,82,8,223,244,29,153,61,148,234,
152,32,147,52,4,4,113,26,113,26,98,98,147,255,7,193,24,163,217,238,
110,112,101,20,20,253,8,70,107,222,22,223,223,244,244,244,244,242,112,82,
223,118,23,23,49,118,71,11,58,58,58,246,246,58,99,78,58,212,212,78,
58,99,53,53,38,83,19,58,246,19,34,79,251,34,34,71,58,71,79,13,
83,63,218,58,58,99,58,78,58,99,78,58,99,99,99,58,58,99,99,58,
218,11,218,99,11,218,11,99,71,8,71,218,218,11,71,99,218,99,99,99,
99,218,11,99,58,58,58,58,11,58,99,218,58,58,78,78,78,78,58,58,
78,78,78,78,58,78,78,78,58,58,48,123,48,48,128,78,246,78,128,241,
241,241,128,212,58,58,58,58,218,12,118,71,71,112,118,223,49,11,245,55,
30,49,112,244,223,19,30,93,107,111,4,26,101,101,8,101,112,242,93,203,
6,170,21,74,51,51,104,24,234,76,24,104,76,124,232,56,225,18,30,223,
20,20,20,20,8,66,235,231,236,112,223,118,30,112,112,54,244,112,82,49,
112,23,118,118,12,11,99,99,246,58,58,58,78,58,246,246,78,78,212,78,
58,12,53,229,34,40,78,78,58,38,0,13,13,79,71,58,58,71,13,0,
38,71,58,99,58,99,58,99,78,58,58,99,99,99,71,99,58,99,218,99,
71,99,218,99,99,71,218,99,71,8,71,71,71,123,218,218,11,218,218,218,
218,99,218,218,99,99,99,99,58,99,99,99,99,99,58,78,78,58,58,99,
99,78,78,246,78,212,78,78,58,78,128,48,48,241,48,246,78,58,246,128,
128,128,128,128,212,78,212,78,58,218,71,71,12,12,118,118,49,49,112,208,
41,22,49,112,244,23,19,49,22,93,219,14,4,8,82,101,20,101,223,49,
30,65,18,29,17,203,228,230,56,96,91,225,225,236,242,112,49,82,20,20,
20,20,82,113,210,107,29,22,118,223,112,30,244,244,62,112,23,82,223,49,
118,118,49,49,118,71,99,246,58,58,212,246,246,78,212,58,246,246,78,58,
218,53,209,126,40,78,78,78,218,0,34,34,79,71,78,99,58,71,251,229,
12,58,99,99,99,58,58,58,58,99,99,99,99,218,99,58,99,99,99,218,
99,218,11,218,218,11,218,71,71,8,71,123,71,71,218,123,71,99,11,99,
218,11,99,71,218,99,58,99,99,58,218,218,99,99,58,58,58,58,99,58,
58,99,58,246,246,246,78,58,58,58,78,58,48,48,241,78,246,78,78,58,
58,241,241,241,212,58,246,78,246,58,218,71,71,71,118,118,118,49,49,112,
103,243,236,112,49,244,112,49,223,118,65,93,107,14,98,113,82,8,101,253,
101,20,101,82,82,223,118,118,49,49,49,82,82,101,101,20,20,253,253,121,
26,70,235,110,29,103,118,223,223,11,244,244,54,242,244,49,19,223,49,118,
118,49,12,71,11,99,212,246,78,78,78,78,212,246,78,58,78,212,78,58,
12,38,213,71,78,58,58,78,40,83,79,20,99,58,99,58,99,12,92,71,
78,58,99,99,99,99,99,99,99,99,218,218,99,218,218,99,218,218,11,218,
11,218,218,71,218,218,71,123,71,8,71,71,12,71,71,218,218,218,71,71,
218,218,218,218,71,218,218,99,99,218,99,99,99,99,99,99,58,99,58,99,
99,99,99,58,78,78,78,78,58,99,58,58,58,128,48,128,78,78,58,78,
212,212,212,241,128,58,246,246,58,246,58,218,218,118,71,71,118,12,118,49,
23,237,245,55,208,23,118,23,112,223,223,118,244,236,18,110,14,210,4,66,
121,8,82,20,82,101,101,251,20,20,20,101,8,20,8,8,26,26,210,235,
109,110,65,30,118,223,49,244,244,244,244,242,65,30,223,82,49,118,118,49,
92,49,118,71,11,78,246,78,58,246,212,246,78,78,246,78,246,78,212,218,
53,92,99,78,58,58,58,246,53,0,53,99,99,58,99,58,99,71,218,58,
99,58,99,218,58,99,58,78,99,99,11,99,71,99,99,218,99,99,218,71,
123,218,71,218,12,71,71,71,71,8,71,71,71,71,71,118,71,71,218,99,
71,71,71,123,71,71,218,99,99,218,218,71,11,218,99,99,58,99,58,99,
99,99,218,58,58,78,78,78,58,99,99,58,58,58,58,128,246,78,58,58,
58,58,246,128,128,58,212,246,78,78,78,58,58,218,71,71,11,118,118,49,
12,23,11,103,243,72,237,23,23,112,23,223,19,223,112,22,109,18,29,111,
111,210,210,70,4,26,26,26,26,26,26,4,4,70,98,235,2,18,29,65,
54,23,223,49,23,244,244,112,244,54,22,244,118,82,223,223,118,92,49,49,
223,71,11,99,99,78,246,58,246,78,58,212,78,78,58,58,246,78,58,218,
71,78,58,58,99,58,58,99,19,77,58,58,58,218,99,58,58,58,58,58,
218,99,11,218,58,99,218,58,218,218,71,218,218,71,99,71,218,71,71,218,
71,123,71,71,71,71,71,71,12,8,118,118,71,71,118,71,71,71,118,12,
71,123,71,71,71,71,71,71,218,99,99,99,218,218,71,218,99,99,58,99,
99,218,99,218,58,58,246,78,78,99,99,99,99,58,246,78,58,246,58,58,
58,58,58,78,78,58,58,58,246,212,99,58,58,58,218,99,71,118,11,118,
49,49,49,23,11,208,55,245,22,112,23,23,23,23,49,49,49,223,112,30,
22,236,18,18,18,29,18,18,18,18,107,236,29,236,236,22,30,23,223,223,
223,118,118,112,244,112,244,242,242,30,23,223,82,223,49,49,49,223,49,12,
71,71,99,58,246,212,58,58,58,78,78,78,58,58,58,58,78,212,246,78,
78,58,58,11,99,58,78,78,99,58,58,99,218,99,58,99,58,58,58,218,
99,71,218,99,218,58,99,218,218,71,218,123,71,99,71,218,71,71,71,12,
71,71,12,12,12,12,12,12,12,8,12,12,12,12,12,12,118,118,71,71,
71,218,71,123,71,71,71,71,123,71,218,11,218,71,218,123,218,99,218,58,
99,99,11,218,71,99,99,58,78,58,99,99,71,99,58,78,246,246,246,58,
58,218,58,99,78,78,246,78,78,246,58,58,58,212,58,58,99,71,71,118,
71,118,118,23,49,112,112,103,72,72,65,244,112,23,118,118,70,223,223,223,
223,49,118,23,118,112,112,244,112,112,23,23,23,49,49,223,223,49,23,118,
244,244,112,62,244,109,22,30,49,223,223,82,49,223,49,223,223,118,118,71,
99,99,99,78,78,246,58,58,78,78,58,58,58,99,78,246,78,78,78,78,
99,99,99,58,99,58,78,78,58,99,99,11,218,99,99,58,58,11,99,218,
218,218,71,99,218,218,11,218,123,71,218,71,71,218,71,71,123,71,118,12,
71,12,12,12,12,12,12,12,12,8,12,12,12,12,12,12,71,71,71,118,
71,118,71,71,118,12,71,71,71,71,99,218,123,71,218,71,218,71,99,99,
99,218,218,71,218,218,99,58,58,58,58,218,99,218,218,99,58,99,78,58,
58,99,99,99,58,58,78,246,246,78,78,78,58,99,58,58,99,58,99,71,
11,71,12,23,118,118,118,23,112,30,103,208,208,65,242,112,118,23,23,118,
118,118,49,112,23,112,11,112,112,112,118,49,49,49,49,112,23,23,112,244,
244,22,22,22,242,112,49,223,223,66,223,49,223,49,223,49,12,71,71,99,
99,58,212,212,246,58,78,78,58,58,99,99,99,58,78,78,78,78,58,58,
99,99,99,58,58,58,58,58,99,218,71,218,99,99,218,58,99,99,71,218,
71,71,218,99,71,99,123,71,118,118,123,71,71,123,71,71,12,12,118,12,
12,12,12,12,12,12,71,12,71,8,12,92,12,92,71,12,118,118,12,12,
118,71,71,12,71,71,118,12,12,71,118,218,71,71,71,12,71,12,218,218,
99,99,218,218,71,71,71,218,99,99,99,99,71,71,218,71,99,58,58,58,
58,58,99,11,99,99,99,58,246,78,246,78,58,99,99,99,58,58,99,99,
99,11,71,112,112,118,118,92,118,23,118,112,30,237,103,65,65,22,30,54,
244,244,23,112,244,112,244,112,244,23,244,23,112,62,244,244,30,242,22,242,
22,30,23,49,49,19,82,223,223,49,49,49,223,49,12,11,11,218,99,58,
58,78,78,78,246,78,78,99,99,58,99,58,58,78,78,78,58,99,218,218,
71,99,99,99,58,99,58,99,71,123,71,218,99,99,218,99,218,71,12,71,
71,218,71,71,218,71,71,71,71,71,12,71,71,71,118,12,12,12,71,71,
12,12,12,12,118,12,12,92,12,8,12,12,71,12,12,12,12,12,71,12,
118,12,12,12,118,12,71,12,12,71,71,71,71,123,71,12,12,71,71,218,
218,218,11,71,123,71,71,218,71,99,99,58,99,99,71,218,218,99,218,58,
58,58,58,99,218,71,99,218,58,58,58,246,212,58,58,99,99,58,99,58,
58,58,58,218,71,71,112,71,118,118,49,23,118,118,49,112,112,30,237,22,
22,22,103,22,22,22,22,22,30,242,22,22,22,103,22,22,30,112,112,23,
49,49,49,82,223,66,49,49,49,49,223,12,118,71,218,99,99,58,99,58,
78,246,78,246,58,58,99,99,218,218,99,99,99,58,58,58,99,218,71,218,
99,99,58,58,58,99,218,123,71,71,218,218,99,99,99,123,71,71,71,92,
71,71,218,218,71,12,12,12,118,71,12,118,71,71,71,12,12,12,12,12,
12,12,118,118,12,12,12,12,12,8,92,92,92,12,12,12,12,12,12,12,
92,12,12,12,71,12,118,12,12,12,12,12,71,71,71,12,12,71,118,71,
71,123,71,71,71,118,71,71,71,123,71,218,218,99,218,71,12,71,71,218,
218,58,58,99,58,71,71,218,218,218,99,58,58,58,58,58,99,99,99,218,
218,99,58,58,99,99,99,11,11,11,23,112,118,112,49,118,118,118,23,118,
49,118,23,112,112,112,112,244,112,112,118,112,118,49,49,223,49,223,223,49,
223,223,49,49,223,49,223,223,118,118,71,11,218,99,218,99,218,78,58,58,
58,58,58,218,218,218,218,218,58,99,58,58,58,58,218,99,71,71,123,71,
218,99,58,99,99,71,71,12,12,71,71,71,218,218,218,71,118,71,71,12,
123,71,12,71,71,12,12,12,118,71,12,12,12,118,118,12,71,118,12,118,
12,12,12,12,12,92,12,12,92,8,92,92,12,12,92,12,92,12,12,12,
12,12,118,12,12,12,12,12,12,12,118,12,12,71,118,71,12,12,71,118,
71,71,71,123,218,118,12,71,71,71,71,99,99,218,218,71,71,71,71,71,
99,218,99,58,99,218,218,71,71,71,218,71,58,99,58,58,99,58,218,99,
99,218,99,99,58,58,58,99,58,99,218,11,71,112,11,112,118,23,118,23,
49,118,118,92,49,92,49,92,49,92,49,223,223,49,223,49,49,49,49,82,
49,49,49,223,118,118,71,71,11,71,99,218,218,99,58,58,58,58,58,58,
58,218,218,218,71,218,218,99,99,99,99,58,218,218,71,123,71,71,218,11,
99,99,218,218,71,71,12,71,12,218,218,218,71,218,118,12,71,118,71,71,
71,71,71,71,118,71,12,12,12,71,12,12,12,12,12,12,12,49,12,12,
12,92,12,49,12,92,12,12,92,8,92,92,92,92,92,12,92,12,12,92,
12,92,12,92,12,71,71,12,12,12,12,71,12,118,71,118,71,118,12,12,
12,12,71,71,218,71,71,118,118,12,12,118,71,218,71,218,123,12,12,12,
12,71,71,99,99,99,218,71,71,71,71,123,71,218,218,58,99,99,58,218,
99,218,218,11,99,218,99,218,218,58,58,58,99,218,71,11,71,71,118,11,
112,71,112,118,112,12,118,118,118,118,118,118,118,118,118,118,223,223,49,49,
118,118,118,71,71,71,218,71,218,71,99,99,99,218,58,58,58,218,218,218,
218,71,71,218,123,71,218,99,58,218,218,99,71,118,12,71,71,71,218,218,
218,99,71,118,12,12,12,71,71,123,71,71,71,12,118,12,92,71,118,71,
12,12,71,12,12,92,12,12,12,118,12,12,12,12,12,92,12,12,12,92,
71,92,12,92,92,92,92,92,12,8,92,92,92,92,92,92,92,92,92,12,
92,12,92,12,92,92,12,118,92,12,12,92,92,12,12,12,12,12,12,12,
12,12,71,118,12,118,71,71,12,12,12,12,118,71,218,71,218,71,118,12,
12,71,12,71,218,71,99,218,123,71,71,12,71,118,71,71,99,218,218,99,
218,99,218,218,218,71,123,71,218,218,218,218,99,99,99,58,99,99,99,218,
99,71,71,71,11,71,11,11,11,11,11,11,11,11,71,118,12,118,218,218,
71,218,71,71,218,71,99,71,99,99,99,58,218,99,218,218,71,71,71,71,
71,71,123,71,11,99,99,99,218,218,71,71,12,12,12,71,123,218,71,218,
71,118,71,12,118,12,12,71,71,218,118,12,12,12,92,12,71,118,71,71,
12,71,92,12,92,12,12,12,118,12,12,92,92,12,92,12,92,92,92,92,
92,92,92,92,12,92,92,92,92,8,92,92,92,12,92,92,92,92,92,92,
92,92,92,12,92,92,12,12,92,92,92,12,92,92,12,12,118,12,12,92,
92,12,12,12,71,71,71,118,12,118,12,12,12,71,12,71,71,71,71,12,
12,12,118,12,12,118,218,71,71,71,12,71,71,71,12,12,71,71,71,11,
218,99,218,218,218,218,71,71,71,71,71,71,71,71,218,218,218,218,99,218,
218,218,99,218,99,218,218,218,218,218,218,218,218,99,218,11,218,71,71,71,
71,123,71,123,71,218,99,218,218,11,218,99,71,71,71,71,71,71,71,92,
71,71,71,123,71,218,71,71,71,118,12,12,12,12,71,71,71,218,71,71,
12,12,12,12,12,12,12,71,71,71,12,12,12,12,12,12,12,12,118,12,
12,92,92,92,12,92,12,71,12,92,92,12,92,92,92,92,92,12,92,92,
92,92,92,92,92,92,92,92,92,8,92,19,92,92,92,92,92,223,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,12,92,12,118,12,12,
12,92,92,12,92,12,12,12,71,12,49,12,92,92,12,12,71,12,12,12,
12,71,12,12,12,12,71,12,71,71,218,218,71,118,12,12,12,71,12,12,
71,123,71,71,99,71,71,123,71,123,71,123,71,71,71,71,71,71,71,71,
71,218,218,218,71,71,218,71,218,71,218,71,71,123,71,123,71,123,71,123,
218,71,218,218,218,218,71,71,71,71,71,12,12,12,12,12,12,12,71,71,
71,123,218,218,71,71,12,12,12,71,12,12,12,12,71,71,71,12,118,12,
12,92,12,12,12,12,12,12,71,12,92,12,92,12,12,118,12,12,12,92,
92,92,92,92,92,12,92,92,12,92,92,92,92,19,12,92,92,92,92,92,
12,92,92,92,92,92,92,92,92,8,19,108,19,108,12,19,92,92,92,92,
92,92,92,92,92,19,92,92,92,92,92,92,92,92,92,92,92,92,12,92,
92,92,92,92,92,92,12,12,12,12,71,12,92,92,92,92,12,92,118,12,
12,12,12,12,92,12,12,12,71,12,71,71,71,12,12,12,12,12,12,92,
112,118,71,12,71,71,71,218,71,71,71,71,71,71,12,12,12,12,12,12,
12,118,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,
71,71,71,71,71,71,71,71,118,71,12,71,12,12,12,12,12,71,71,123,
71,71,71,92,12,12,12,12,92,92,71,12,12,12,12,71,12,12,92,12,
92,92,12,118,12,12,118,12,12,92,92,92,92,12,12,12,12,92,92,92,
92,12,92,12,92,12,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,12,19,19,108,92,8,92,92,19,92,108,92,19,92,92,92,
92,108,92,92,92,12,92,92,12,92,92,92,92,92,92,92,92,92,92,12,
12,92,92,92,92,223,12,92,12,12,12,12,12,92,92,12,92,12,12,12,
12,12,12,12,49,12,92,92,92,92,12,12,71,12,12,12,12,12,12,12,
92,92,118,92,12,12,118,12,12,12,12,12,12,71,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,118,118,12,118,12,12,12,12,12,12,12,12,12,12,12,12,71,12,
12,12,71,92,12,92,92,49,12,12,12,12,118,12,12,118,92,12,92,92,
12,12,12,12,123,12,92,92,92,92,92,92,12,92,12,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,92,92,19,92,92,108,
92,19,92,108,108,92,108,92,108,8,19,108,19,92,19,108,108,108,92,19,
92,92,19,92,108,108,92,108,108,92,92,92,92,92,92,19,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,12,92,12,92,92,92,92,92,
92,12,12,12,12,12,12,92,92,92,92,92,92,12,12,12,12,12,118,12,
12,12,12,92,12,12,12,12,71,12,12,12,12,71,71,12,12,71,118,118,
12,12,12,12,12,118,12,12,12,92,12,12,12,12,12,71,12,12,118,12,
12,71,12,12,12,12,12,92,118,118,12,12,12,12,71,12,12,12,49,12,
92,12,92,92,92,12,92,12,12,12,12,12,92,92,92,92,92,92,92,92,
12,12,71,92,92,92,12,92,223,92,92,92,12,92,92,92,92,92,12,19,
92,92,92,92,92,92,108,92,108,19,92,108,108,108,92,92,19,108,92,108,
19,92,19,92,108,92,108,19,19,8,19,108,19,108,108,19,92,19,108,19,
19,108,108,19,19,92,108,92,92,108,19,12,108,108,92,19,108,108,92,19,
92,92,92,92,92,92,108,19,92,92,92,92,12,92,92,92,92,92,92,92,
92,92,92,12,12,118,123,92,12,12,92,92,92,92,92,92,12,12,12,12,
12,92,12,12,92,12,92,92,92,92,92,92,12,12,12,12,12,12,12,71,
71,12,12,12,12,12,12,12,71,12,12,12,12,12,12,92,12,12,92,12,
92,12,12,49,12,92,12,12,12,12,12,71,12,12,12,12,92,12,92,12,
92,92,92,92,92,12,12,12,12,92,12,12,92,92,92,92,92,92,12,12,
12,92,92,92,92,19,108,92,92,92,92,92,92,92,92,19,92,108,108,92,
92,92,92,19,108,92,19,108,92,108,108,92,19,92,108,19,108,92,108,92,
19,108,108,92,108,108,19,92,108,8,19,19,19,19,19,108,19,19,108,92,
19,19,108,92,19,19,108,19,108,92,108,19,92,19,92,92,92,19,92,92,
92,92,92,92,92,92,19,108,92,19,19,92,92,92,92,92,92,92,223,92,
223,92,92,92,92,92,92,92,92,92,92,92,92,223,92,92,92,12,92,12,
12,12,12,12,92,12,12,92,12,92,92,92,92,92,92,92,92,92,92,92,
92,92,12,92,49,92,12,92,92,12,12,92,12,92,12,92,12,12,92,12,
12,12,12,12,12,12,12,92,92,92,12,92,92,92,92,92,92,92,92,92,
92,92,12,12,12,12,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,12,19,92,92,108,12,92,92,92,12,19,92,92,108,92,19,19,92,
92,92,92,92,108,19,92,19,19,92,92,108,108,92,108,92,19,19,19,108,
19,19,19,19,19,19,108,19,19,8,19,53,19,53,19,53,19,53,19,108,
19,108,19,108,108,108,19,108,19,108,19,108,108,108,108,19,108,19,108,19,
19,92,108,19,19,12,108,92,108,92,108,19,108,92,92,92,92,92,92,19,
92,19,108,92,19,92,92,92,92,92,92,92,92,92,92,92,108,108,19,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,92,12,92,92,92,12,92,19,92,92,92,92,92,92,92,92,92,
92,92,92,92,92,92,92,92,92,108,19,92,92,223,92,92,92,92,92,92,
19,108,108,108,108,19,92,92,92,92,108,108,108,108,108,92,108,92,108,19,
92,19,108,108,19,108,108,108,108,108,19,19,19,19,19,19,108,108,53,19,
108,19,108,53,19,53,19,53,19,8,19,19,19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,108,19,108,19,
19,19,19,19,108,19,108,19,108,19,108,19,19,19,19,108,19,92,92,92,
19,19,108,19,108,19,19,92,92,92,92,92,92,92,92,19,19,108,19,108,
19,92,19,92,92,92,92,92,92,92,92,92,92,92,92,19,92,92,92,92,
92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
92,92,92,19,19,19,92,19,19,92,19,19,108,92,92,92,19,92,92,92,
92,92,92,92,92,19,19,19,19,108,19,108,92,92,92,92,92,92,19,19,
92,19,223,19,108,19,108,92,19,19,19,19,19,19,108,19,108,19,108,19,
19,19,19,19,19,19,19,19,19,108,19,108,19,108,19,19,19,19,19,19,
19,19,19,19,19,19,19,19,19,8};

View File

@ -0,0 +1,5 @@
Makefile.in
Makefile
.deps
_libs
FractalExplorer

View File

@ -0,0 +1,362 @@
/**********************************************************************
FUNCTION: dialog_close_callback
*********************************************************************/
void
dialog_close_callback(GtkWidget * widget, gpointer data)
{
gtk_main_quit();
} /* dialog_close_callback */
/**********************************************************************
FUNCTION: dialog_save_callback
*********************************************************************/
void
dialog_save_callback(GtkWidget * widget, gpointer data)
{
create_file_selection();
} /* dialog_save_callback */
/**********************************************************************
FUNCTION: dialog_savelanguage_callback
*********************************************************************/
void
dialog_savelanguage_callback(GtkWidget * widget, gpointer data)
{
FILE * fp;
char * filname=NULL;
filname =g_malloc(100);
sprintf (filname, "%s%s", getenv("HOME"), "/.fractalexplorerrc");
lng=wvals.language;
fp = fopen (filname, "w");
if (fp) {
if (lng==0) fputs("FX-LANG:En\n",fp);
if (lng==1) fputs("FX-LANG:Fr\n",fp);
if (lng==2) fputs("FX-LANG:De\n",fp);
fclose(fp);
}
} /* dialog_savelanguage_callback */
/**********************************************************************
FUNCTION: load_button_press
*********************************************************************/
void
load_button_press(GtkWidget * widget,
gpointer data)
{
create_load_file_selection();
}
/**********************************************************************
FUNCTION: dialog_ok_callback
*********************************************************************/
void
dialog_ok_callback(GtkWidget * widget, gpointer data)
{
wint.run = TRUE;
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_ok_callback */
/**********************************************************************
FUNCTION: dialog_reset_callback
*********************************************************************/
void
dialog_reset_callback(GtkWidget * widget, gpointer data)
{
wvals.xmin = standardvals.xmin;
wvals.xmax = standardvals.xmax;
wvals.ymin = standardvals.ymin;
wvals.ymax = standardvals.ymax;
wvals.iter = standardvals.iter;
wvals.cx = standardvals.cx;
wvals.cy = standardvals.cy;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_redraw_callback
*********************************************************************/
void
dialog_redraw_callback(GtkWidget * widget, gpointer data)
{
int alwaysprev = wvals.alwayspreview;
wvals.alwayspreview = TRUE;
set_cmap_preview();
dialog_update_preview();
wvals.alwayspreview = alwaysprev;
}
/**********************************************************************
FUNCTION: dialog_cancel_callback
*********************************************************************/
void
dialog_cancel_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_cancel_callback */
/**********************************************************************
FUNCTION: dialog_undo_zoom_callback
*********************************************************************/
void
dialog_undo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex > 1) {
zooms[zoomindex] = wvals;
zoomindex--;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_undo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_redo_zoom_callback
*********************************************************************/
void
dialog_redo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex < zoommax) {
zoomindex++;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_redo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_step_in_callback
*********************************************************************/
void
dialog_step_in_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin+=1.0/6.0*xdifferenz;
wvals.ymin+=1.0/6.0*ydifferenz;
wvals.xmax-=1.0/6.0*xdifferenz;
wvals.ymax-=1.0/6.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_in_callback */
/**********************************************************************
FUNCTION: dialog_step_out_callback
*********************************************************************/
void
dialog_step_out_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin-=1.0/4.0*xdifferenz;
wvals.ymin-=1.0/4.0*ydifferenz;
wvals.xmax+=1.0/4.0*xdifferenz;
wvals.ymax+=1.0/4.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_out_callback */
/**********************************************************************
FUNCTION: explorer_logo_ok_callback
*********************************************************************/
void
explorer_logo_ok_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, TRUE);
gtk_widget_destroy(logodlg);
}
/**********************************************************************
FUNCTION: explorer_about_callback
*********************************************************************/
void
explorer_about_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, FALSE);
explorer_logo_dialog();
}
/**********************************************************************
FUNCTION: explorer_toggle_update
*********************************************************************/
void
explorer_toggle_update(GtkWidget * widget,
gpointer data)
{
int *toggle_val;
toggle_val = (int *) data;
if (GTK_TOGGLE_BUTTON(widget)->active)
*toggle_val = TRUE;
else
*toggle_val = FALSE;
if (do_redsinus)
wvals.redmode = SINUS;
else if (do_redcosinus)
wvals.redmode = COSINUS;
else if (do_rednone)
wvals.redmode = NONE;
if (do_greensinus)
wvals.greenmode = SINUS;
else if (do_greencosinus)
wvals.greenmode = COSINUS;
else if (do_greennone)
wvals.greenmode = NONE;
if (do_bluesinus)
wvals.bluemode = SINUS;
else if (do_bluecosinus)
wvals.bluemode = COSINUS;
else if (do_bluenone)
wvals.bluemode = NONE;
if (do_colormode1)
wvals.colormode = 0;
else if (do_colormode2)
wvals.colormode = 1;
if (do_english)
wvals.language = 0;
else if (do_french)
wvals.language = 1;
else if (do_german)
wvals.language = 2;
if (do_type0)
wvals.fractaltype = 0;
else if (do_type1)
wvals.fractaltype = 1;
else if (do_type2)
wvals.fractaltype = 2;
else if (do_type3)
wvals.fractaltype = 3;
else if (do_type4)
wvals.fractaltype = 4;
else if (do_type5)
wvals.fractaltype = 5;
else if (do_type6)
wvals.fractaltype = 6;
else if (do_type7)
wvals.fractaltype = 7;
else if (do_type8)
wvals.fractaltype = 8;
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_scale_update
*********************************************************************/
void
dialog_scale_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[256];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%0.15f", *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
dialog_update_preview();
}
} /* dialog_scale_update */
/**********************************************************************
FUNCTION: dialog_scale_int_update
*********************************************************************/
void
dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[256];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%i", (int) *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_scale_int_update */
/**********************************************************************
FUNCTION: dialog_entry_update
*********************************************************************/
void
dialog_entry_update(GtkWidget * widget, gdouble * value)
{
GtkAdjustment *adjustment;
gdouble new_value;
new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (*value != new_value) {
adjustment = gtk_object_get_user_data(GTK_OBJECT(widget));
if ((new_value >= adjustment->lower) &&
(new_value <= adjustment->upper)) {
*value = new_value;
adjustment->value = new_value;
gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed");
dialog_update_preview();
}
}
} /* dialog_entry_update */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,304 @@
/**********************************************************************
FUNCTION: preview_button_press_event
*********************************************************************/
gint
preview_button_press_event(GtkWidget * widget, GdkEventButton * event)
{
double left,
right,
bottom,
top,
dx,
dy;
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
if (event->button == 1) {
x_press = event->x;
y_press = event->y;
left = sel_x1;
right = sel_x2 - 1;
bottom = sel_y2 - 1;
top = sel_y1;
dx = (right - left) / (preview_width - 1);
dy = (bottom - top) / (preview_height - 1);
xbild = preview_width;
ybild = preview_height;
xdiff = (xmax - xmin) / xbild;
ydiff = (ymax - ymin) / ybild;
py = y_press;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) x_press);
px = x_press;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
}
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_motion_notify_event
*********************************************************************/
gint
preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = xpos = event->x;
oldypos = ypos = event->y;
if ((xpos >= 0.0) && (ypos >= 0.0)
&& (xpos < preview_width) && (ypos < preview_height)) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
} else {
oldypos = -1;
oldxpos = -1;
}
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_leave_notify_event
*********************************************************************/
gint
preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = -1;
oldypos = -1;
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
MyCursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_enter_notify_event
*********************************************************************/
gint
preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event)
{
MyCursor = gdk_cursor_new(GDK_TCROSS);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_button_release_event
*********************************************************************/
gint
preview_button_release_event(GtkWidget * widget, GdkEventButton * event)
{
double l_xmin,
l_xmax,
l_ymin,
l_ymax;
if (event->button == 1) {
x_release = event->x;
y_release = event->y;
if ((x_press >= 0.0) && (y_press >= 0.0)
&& (x_release >= 0.0) && (y_release >= 0.0)
&& (x_press < preview_width) && (y_press < preview_height)
&& (x_release < preview_width) && (y_release < preview_height)) {
l_xmin = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_press / preview_width);
l_xmax = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_release / preview_width);
l_ymin = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_press / preview_height);
l_ymax = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_release / preview_height);
zooms[zoomindex] = wvals;
zoomindex++;
if (zoomindex > 99)
zoomindex = 99;
zoommax = zoomindex;
wvals.xmin = l_xmin;
wvals.xmax = l_xmax;
wvals.ymin = l_ymin;
wvals.ymax = l_ymax;
dialog_change_scale();
dialog_update_preview();
oldypos = oldxpos = -1;
}
}
return (TRUE);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,357 @@
/**********************************************************************
Magic numbers
*********************************************************************/
#define PREVIEW_SIZE 128
#define SCALE_WIDTH 200
#define ENTRY_WIDTH 60
#define MAX_LOAD_LINE 256
#define GR_WIDTH 325
#define SINUS 0
#define COSINUS 1
#define NONE 2
#define FRACTAL_HEADER "Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>\n"
#define fractalexplorer_HEADER "Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>\n"
/**********************************************************************
Types
*********************************************************************/
typedef struct {
gint fractaltype;
gdouble xmin;
gdouble xmax;
gdouble ymin;
gdouble ymax;
gdouble iter;
gdouble cx;
gdouble cy;
gint colormode;
gdouble redstretch;
gdouble greenstretch;
gdouble bluestretch;
gint redmode;
gint greenmode;
gint bluemode;
gint redinvert;
gint greeninvert;
gint blueinvert;
gint alwayspreview;
gint language;
} explorer_vals_t;
typedef struct {
GtkWidget *preview;
guchar *wimage;
gint run;
} explorer_interface_t;
typedef int clrmap[256][3];
typedef struct {
GtkWidget *text;
GtkAdjustment *data;
} scaledata;
typedef struct _DialogElements DialogElements;
struct _DialogElements {
GtkWidget *type_mandelbrot;
GtkWidget *type_julia;
GtkWidget *type_barnsley1;
GtkWidget *type_barnsley2;
GtkWidget *type_barnsley3;
GtkWidget *type_spider;
GtkWidget *type_manowar;
GtkWidget *type_lambda;
GtkWidget *type_sierpinski;
scaledata xmin;
scaledata xmax;
scaledata ymin;
scaledata ymax;
scaledata iter;
scaledata cx;
scaledata cy;
scaledata red;
scaledata green;
scaledata blue;
GtkWidget *redmodecos;
GtkWidget *redmodesin;
GtkWidget *redmodenone;
GtkWidget *greenmodecos;
GtkWidget *greenmodesin;
GtkWidget *greenmodenone;
GtkWidget *bluemodecos;
GtkWidget *bluemodesin;
GtkWidget *bluemodenone;
GtkWidget *redinvert;
GtkWidget *greeninvert;
GtkWidget *blueinvert;
GtkWidget *colormode0;
GtkWidget *colormode1;
};
typedef struct DFigObj {
gchar * name; /* Trailing name of file */
gchar * filename; /* Filename itself */
gchar * draw_name;/* Name of the drawing */
explorer_vals_t opts; /* Options enforced when fig saved */
GtkWidget *list_item;
GtkWidget *label_widget;
GtkWidget *pixmap_widget;
gint obj_status;
} fractalexplorerOBJ;
typedef struct GigObj {
gchar * name; /* Trailing name of file */
gchar * filename; /* Filename itself */
gchar * draw_name;/* Name of the drawing */
gint typus;
GtkWidget *list_item;
GtkWidget *label_widget;
GtkWidget *pixmap_widget;
gint obj_status;
} gradientOBJ;
typedef struct _fractalexplorerListOptions {
GtkWidget *query_box;
GtkWidget *name_entry;
GtkWidget *list_entry;
fractalexplorerOBJ * obj;
gint created;
} fractalexplorerListOptions;
/* States of the object */
#define fractalexplorer_OK 0x0
#define fractalexplorer_MODIFIED 0x1
#define fractalexplorer_READONLY 0x2
#define gradient_GRADIENTEDITOR 0x2
static fractalexplorerOBJ *current_obj;
static fractalexplorerOBJ *pic_obj;
static GtkWidget *delete_dialog = NULL;
/**********************************************************************
Declare local functions
*********************************************************************/
/* Gimp interface functions */
static void query(void);
static void run(char *name, int nparams, GParam * param, int *nreturn_vals,
GParam ** return_vals);
/* Dialog and fractal functions */
void explorer(GDrawable * drawable);
void explorer_render_row(const guchar * src_row, guchar * dest_row, gint row,
gint row_width, gint bytes);
void transform(short int *, short int *, short int *, double, double, double);
gint explorer_dialog(void);
void dialog_update_preview(void);
/* Functions for dialog widgets */
void dialog_create_value(char *title, GtkTable * table, int row, gdouble * value,
int left, int right, const char *desc, scaledata * scalevalues);
void dialog_scale_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_create_int_value(char *title, GtkTable * table, int row, gdouble * value,
int left, int right, const char *desc, scaledata * scalevalues);
void dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_entry_update(GtkWidget * widget, gdouble * value);
void dialog_close_callback(GtkWidget * widget, gpointer data);
void dialog_ok_callback(GtkWidget * widget, gpointer data);
void dialog_cancel_callback(GtkWidget * widget, gpointer data);
void dialog_step_out_callback(GtkWidget * widget, gpointer data);
void dialog_step_in_callback(GtkWidget * widget, gpointer data);
void dialog_undo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_redo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_redraw_callback(GtkWidget * widget, gpointer data);
void dialog_reset_callback(GtkWidget * widget, gpointer data);
GtkWidget *explorer_logo_dialog();
GtkWidget *explorer_load_dialog();
void explorer_toggle_update(GtkWidget * widget, gpointer data);
void set_tooltip(GtkTooltips * tooltips, GtkWidget * widget, const char *desc);
void dialog_change_scale(void);
void set_cmap_preview(void);
void make_color_map(void);
void create_file_selection();
void create_load_file_selection();
void explorer_load();
void load_button_press(GtkWidget * widget, gpointer data);
/* Preview events */
gint preview_button_press_event(GtkWidget * widget, GdkEventButton * event);
gint preview_button_release_event(GtkWidget * widget, GdkEventButton * event);
gint preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event);
static gint list_button_press(GtkWidget *widget,GdkEventButton *event,gpointer data);
static gint new_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static gint fractalexplorer_delete_fractalexplorer_callback(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static gint delete_button_press_ok(GtkWidget *widget,gpointer data);
static gint rescan_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static void fractalexplorer_list_ok_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_list_cancel_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_dialog_edit_list (GtkWidget *lwidget,fractalexplorerOBJ *obj,gint created);
static GtkWidget *new_fractalexplorer_obj(gchar * name);
static void fractalexplorer_rescan_cancel_callback (GtkWidget *w, gpointer client_data);
void clear_list_items(GtkList *list);
gint fractalexplorer_list_pos(fractalexplorerOBJ *fractalexplorer);
gint fractalexplorer_list_insert (fractalexplorerOBJ *fractalexplorer);
GtkWidget* fractalexplorer_list_item_new_with_label_and_pixmap (fractalexplorerOBJ *obj, gchar *label, GtkWidget *pix_widget);
GtkWidget* fractalexplorer_new_pixmap(GtkWidget *list, char **pixdata);
static GtkWidget *fractalexplorer_list_add(fractalexplorerOBJ *obj);
void list_button_update(fractalexplorerOBJ *obj);
fractalexplorerOBJ *fractalexplorer_new(void);
void build_list_items(GtkWidget *list);
/*
static void fractalexplorer_op_menu_popup(gint button, guint32 activate_time,fractalexplorerOBJ *obj);
*/
void plug_in_parse_fractalexplorer_path();
void fractalexplorer_free(fractalexplorerOBJ * fractalexplorer);
void fractalexplorer_free_everything(fractalexplorerOBJ * fractalexplorer);
void fractalexplorer_list_free_all ();
fractalexplorerOBJ *fractalexplorer_load (gchar *filename, gchar *name);
static void fractalexplorer_rescan_file_selection_ok(GtkWidget *w, GtkFileSelection *fs, gpointer data);
void fractalexplorer_list_load_all(GList *plist);
static GtkWidget *add_objects_list ();
static GtkWidget *add_gradients_list ();
static void fractalexplorer_rescan_ok_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_rescan_add_entry_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_rescan_list (void);
/*
static void fractalexplorer_op_menu_create(GtkWidget *window);
*/
/**********************************************************************
Global variables
*********************************************************************/
double xmin = -2,
xmax = 1,
ymin = -1.5,
ymax = 1.5;
double xbild,
ybild,
xdiff,
ydiff;
double x_press = -1.0,
y_press = -1.0;
double x_release = -1.0,
y_release = -1.0;
float cx = -0.75;
float cy = -0.2;
GDrawable *drawable;
gint tile_width,
tile_height;
gint img_width,
img_height,
img_bpp;
gint sel_x1,
sel_y1,
sel_x2,
sel_y2;
gint sel_width,
sel_height;
gint preview_width,
preview_height;
GTile *the_tile = NULL;
double cen_x,
cen_y;
double xpos,
ypos,
oldxpos = -1,
oldypos = -1;
gint do_redsinus,
do_redcosinus,
do_rednone;
gint do_greensinus,
do_greencosinus,
do_greennone;
gint do_bluesinus,
do_bluecosinus,
do_bluenone;
gint do_redinvert,
do_greeninvert,
do_blueinvert;
gint do_colormode1 = FALSE,
do_colormode2 = FALSE;
gint do_type0 = FALSE,
do_type1 = FALSE,
do_type2 = FALSE,
do_type3 = FALSE,
do_type4 = FALSE,
do_type5 = FALSE,
do_type6 = FALSE,
do_type7 = FALSE,
do_type8 = FALSE,
do_english = TRUE,
do_french = FALSE,
do_german = FALSE;
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkWidget *loaddlg;
GtkWidget *cmap_preview;
GtkWidget *cmap_preview_long;
GtkWidget *cmap_preview_long2;
GtkWidget *delete_frame_to_freeze;
GtkWidget *fractalexplorer_gtk_list;
GtkWidget *save_menu_item;
GtkWidget *fractalexplorer_op_menu;
GtkTooltips *tips;
GdkColor tips_fg,
tips_bg;
GdkCursor *MyCursor;
int ready_now = FALSE;
explorer_vals_t zooms[100];
DialogElements *elements = NULL;
int zoomindex = 1;
int zoommax = 1;
gdouble *gg;
int line_no;
gchar *filename;
clrmap colormap;
GList *fractalexplorer_path_list = NULL;
GList *fractalexplorer_list = NULL;
GList *gradient_list = NULL;
gchar *tpath = NULL;
fractalexplorerOBJ *fractalexplorer_obj_for_menu;
static GList *rescan_list = NULL;
int lng=LNG_GERMAN;
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
explorer_interface_t wint =
{
NULL, /* preview */
NULL, /* wimage */
FALSE /* run */
}; /* wint */
static explorer_vals_t wvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* wvals */
static explorer_vals_t standardvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* standardvals */

View File

@ -0,0 +1,89 @@
-------------------------------------------
GIMP-Plug-In
-------------------------------------------
Written by Daniel Cotting
Bahnhofstrasse 31
CH-3066 Stettlen (Switzerland)
cotting@mygale.org
www.mygale.org/~cotting
-------------------------------------------
Some code is taken out of other plug-ins
written by other authors.
-------------------------------------------
-------------------------------------------
INSTALLATION
-------------------------------------------
To install it, you have to edit the
Makefile (change install-path).
Afterwards run make. This will compile
and install the plug-in in the right
directory. Once the new code is installed,
you can run the GIMP and enjoy the new
functions and effects it provides.
Note that this plug-in has some sample
files which must be installed in one of
the following directories:
~/.gimp/fractalexplorer
/usr/local/share/gimp/0.99.XX/fractalexplorer
You can find the sample files in the
subdirectory fractalexplorer-examples
of this distribution.
You will have to add the following lines
to your gimprc file (usually
/usr/local/ share/gimp/0.99.XX/gimprc):
# fractalexplorer directory
(fractalexplorer-path "${gimp_data_dir}/fractalexplorer:${gimp_dir}/fractalexplorer")
-------------------------------------------
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
If you find that the plug-in is too big,
you can compress the executables with the
gzexe program (if it is avaiable on your
system). To do so, change to the plug-in
directory of the GIMP...
cd /usr/local/lib/gimp/VERSION/plug-ins
...and execute the command...
gzexe PLUGIN_NAME
...and remember to remove the uncompres-
sed binary, which has been renamed to
PLUGIN_NAME~, by running the command:
rm PLUGIN_NAME~
This will result in a code size of about
50 kB, which isn't too much IMHO.
------------------------------------------
------------------------------------------
FEEDBACK
------------------------------------------
I'm interested in any feedback, comments,
bug-reports, suggestions etc. If you
have anything you would like to tell
me, you can write to cotting@mygale.org.
Also have a look at the GIMP-section of
my homepage at www.mygale.org/~cotting.
------------------------------------------
Thank you and happy GIMPing!
Daniel Cotting
------------------------------------------

View File

@ -0,0 +1,566 @@
static char * msg[4][104] =
{
/* English messages */
{
"OK",
"Cancel",
"Delete fractal",
"Are you sure you want to delete",
"\"%s\" from the list and from disk?",
"Delete",
"Error opening: %s",
"File '%s' Not a FractalExplorer file",
"File '%s' corrupt file - Line %d Option section incorrect",
"Internal error - list item has null object!",
"Unknown event\n",
"Edit fractal name",
"Fractal name:",
"New fractal",
"%s [copy]",
"Save",
"Save as...",
"Copy",
"Load",
"No fractalexplorer-path in gimprc:\n"
"You need to add an entry like\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"to your ~/.gimprc/gimprc file\n",
"fractalexplorer-path miss-configured - \nPath `%.100s' not found\n",
"Entry %.100s is not a directory\n",
"error reading fractalexplorer directory \"%s\"",
"My first fractal",
"Choose fractal by double-clicking on it",
"Rescan",
"Select directory and rescan collection",
"New",
"Create a new fractal for editing",
"Rename",
"Rename fractal in list",
"Delete currently selected fractal",
"Choose gradient by double-clicking on it",
"Add FractalExplorer path",
"Rescan for fractals",
"Add dir",
"Parameters",
"Parameters",
"Change the first (minimal) x-coordinate delimitation",
"Change the second (maximal) x-coordinate delimitation",
"Change the first (minimal) y-coordinate delimitation",
"Change the second (maximal) y-coordinate delimitation",
"Change the iteration value. The higher it is, the more details will be calculated, which will take more time.",
"Change the CX value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Change the CY value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Reset parameters to default values",
"Load a fractal from file",
"Save active fractal to file",
"Fractal type",
"Options",
"Reset to default values",
"Preview options",
"Realtime preview",
"If you enable this option the preview will be redrawn automatically.",
"Redraw",
"Redraw preview",
"Zoom options",
"Undo zoom",
"Undo last zoom",
"Redo zoom",
"Redo last zoom",
"Step in",
"Step out",
"Colors",
"Color density",
"Red",
"Green",
"Blue",
"Change the intensity of the red channel",
"Change the intensity of the green channel",
"Change the intensity of the blue channel",
"Color function",
"Sine",
"Cosine",
"None",
"Use sine-function for this color component",
"Use cosine-function for this color component",
"Use linear mapping instead of any trigonometrical function for this color channel",
"Inversion",
"If you enable this option higher color values will be swapped with lower ones and vice versa.",
"Color mode",
"As specified above",
"Create a color-map with the options you specified above (color density/function). The result is visible in the preview image",
"Apply active gradient to final image",
"Create a color-map using a gradient from the gradient editor.",
"Gradients",
"Fractals",
"Accept settings and start the calculation of the fractal",
"Discard any changes and close dialog box",
"About",
"Show information about the plug-in and the author",
"This will close the information box",
"Error opening '%.100s' could not save",
"Failed to write file\n",
"Save: No filename given",
"Save: Can't save to a directory",
"Load fractal parameters",
"Click here to load your file.",
"Click here to cancel load procedure.",
"Save fractal parameters",
"Click here to save your file.",
"Click here to cancel save procedure.",
"Save settings",
"This saves the currently selected language to the configuration file",
},
/* Messages en français */
{
"Accepter",
"Annuler",
"Effacer fractal",
"Etes-vous sur de vouloir effacer le fichier",
"\"%s\" de la liste est du disque?",
"Effacer",
"Erreur lors de l'ouverture du fichier: %s",
"Le fichier '%s' ne correspond pas au format FractalExplorer!",
"Le fichier '%s' est corrompu - Ligne %d incorrecte.",
"Erreur interne - l'élément de la liste contient un objet NULL!",
"Evénement inconnu.\n",
"Changer le nom du fractal",
"Nom du fractal:",
"Nouveau fractal",
"%s [copie]",
"Enregistrer",
"Enregistrer sous...",
"Copier",
"Charger",
"Aucun répertoire FractalExplorer inscrit dans gimprc:\n"
"Vous devez aujouter une ligne telle que\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"dans votre fichier ~/.gimprc/gimprc\n",
"fractalexplorer-path n'est pas configuré correctement - \nDossier `%.100s' introuvable.\n",
"L'entrée %.100s n'est pas un répertoire.\n",
"Erreur lors de la lecture du répertoire \"%s\".",
"Mon premier fractal",
"Choisissez un fractal en double-cliquant sur celui-ci",
"Rafraîchir",
"Choix du répertoire et rechargement de la collection.",
"Nouveau",
"Créer nouveau fractal.",
"Renommer",
"Renommer le fractal contenu dans la liste.",
"Efface le fractal actuellement selectioné dans la liste.",
"Choisissez un dégradé de couleurs avec un double-click",
"Ajouter un dossier FractalExplorer.",
"Rechargement de nouveaux fractals.",
"Ajout de répertoires",
"Paramètres",
"Paramètres",
"Change la première delimitation de l'axe x (delimitation minimale de x).",
"Change la deuxième delimitation de l'axe x (delimitation maximale de x).",
"Change la première delimitation de l'axe y (delimitation minimale de y).",
"Change la deuxième delimitation de l'axe y (delimitation maximale de y).",
"Change la valeur d'iteration. Une valeur plus haute rend l'image plus detailée, mais utilise plus de temps de calcul.",
"Change la valeur CX (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Change la valeur CY (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Remets tous les paramètres à leur valeur par défaut.",
"Charge un fractal à partir d'un fichier.",
"Enregistre un fractal dans un fichier.",
"Type de fractal",
"Configuration",
"Valeurs par défaut",
"Prévisualisation",
"En temps réel",
"Si vous activez cette option, la fenêtre de prévisualisation sera automatiquement rafraîchie après chaque changement d'option.",
"Actualiser",
"Actualise et redessine la prévisualisation.",
"Options de zoom",
"Annuler zoom",
"Ceci annule le dernier zoom.",
"Refaire zoom",
"Ceci annule la dernière annulation du zoom.",
"Se rapprocher",
"S'éloigner",
"Couleurs",
"Densité des valeurs RVB d'une couleur",
"Rouge",
"Vert",
"Bleu",
"Change l'intensité du canal rouge.",
"Change l'intensité du canal vert.",
"Change l'intensité du canal bleu.",
"Fonctions appliqués aux canaux RVB",
"Sinus",
"Cosinus",
"Aucun",
"Utilise la fonction trigonométrique 'sinus' pour le calcul de cette composante de couleur.",
"Utilise la fonction trigonométrique 'cosinus' pour le calcul de cette composante de couleur.",
"Utilise une fonction linéaire au lieu d'une fonction trigonométrique pour ce canal.",
"Inversion",
"En activant cette option, vous assignez de grandes valeurs de couleurs aux couleurs ayant reçu des valeurs petites et vice versa.",
"Mode de couleur",
"Comme specifié ci-dessus",
"Crée une palette de couleur en utilisant les options que vous avez choisies ci-dessus (densité/fonction). Le résultat est visible dans l'image de prévisualisation.",
"Applique le dégradé de couleur actif",
"Crée une palette en utilisant le dégradé de couleur du 'Gradient Editor'.",
"Dégradés",
"Fractals",
"Accepte les options et démarre la calculation du fractal.",
"Rejette tout changement et ferme la boîte de dialogue.",
"Info...",
"Affiche des informations concernant l'auteur et le plug-in.",
"Ceci fermera la boîte de dialogue d'info.",
"Erreur lors de l'ouverture de '%.100s'. Sauvegarde echouée.",
"Ecriture du fichier impossible.\n",
"Enregistrement: Aucun fichier specifié.",
"Enregistrement: Impossible de sauvegarder dans un répertoire.",
"Chargement des paramètres d'un fractal",
"Cliquez ici afin de charger un fichier FractalExplorer.",
"Cliquez ici pour interrompre la procédure de chargement.",
"Enregistrement des paramètres d'un fractal",
"Cliquez ici pour charger votre fichier.",
"Cliquez ici pour imterropre la procédure d'enregistrement.",
"Enregistrer langue",
"Ceci enregistre la langue actuelle dans le fichier de configuration.",
},
/* Deutsche Mitteilungen */
{
"Weiter",
"Abbrechen",
"Fraktal löschen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen möchten?",
"Löschen",
"Fehler beim Öffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist beschädigt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"Ändere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie müssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einfügen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"Wählen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"Löscht das gerade gewählte Fraktal der Liste.",
"Wählen Sie einen Farbverlauf durch Doppelklick aus",
"Füge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzufügen.",
"Fraktal-Optionen",
"Parameter",
"Ändert die erste (minimale) Begrenzung der x-Koordinate.",
"Ändert die zweite (maximale) Begrenzung der x-Koordinate.",
"Ändert die erste (minimale) Begrenzung der y-Koordinate.",
"Ändert die zweite (maximale) Begrenzung der y-Koordinate.",
"Ändert die Iterations-Variable. Je höher sie ist, um so genauer und detailierter wird das Bild sein. Eine grössere Berechenzeit ist allerdings in Kauf zu nehmen.",
"Ändert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Ändert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zurücksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckgängig",
"Macht den letzten Zoom-Vorgang wieder rückgängig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensität",
"Rot",
"Gruen",
"Blau",
"Ändert die Intensität des roten Kanals.",
"Ändert die Intensität des gruenen Kanals.",
"Ändert die Intensität des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion für diese Farbkomponente.",
"Verwende Cosinus-Funktion für diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch höhere ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensität/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverläufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche Änderungen und schliesse das Fenster.",
"Über...",
"Zeige Informationen über den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim Öffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
/* Schwedische Mitteilungen
========================
Hier koenntest Du die schwedischen Texte einfuegen, d.h. die deutschen ueberschreiben.
*/
{
"Weiter",
"Abbrechen",
"Fraktal löschen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen möchten?",
"Löschen",
"Fehler beim Öffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist beschädigt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"Ändere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie müssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einfügen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"Wählen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"Löscht das gerade gewählte Fraktal der Liste.",
"Wählen Sie einen Farbverlauf durch Doppelklick aus",
"Füge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzufügen.",
"Fraktal-Optionen",
"Parameter",
"Ändert die erste (minimale) Begrenzung der x-Koordinate.",
"Ändert die zweite (maximale) Begrenzung der x-Koordinate.",
"Ändert die erste (minimale) Begrenzung der y-Koordinate.",
"Ändert die zweite (maximale) Begrenzung der y-Koordinate.",
"Ändert die Iterations-Variable. Je höher sie ist, um so genauer und detailierter wird das Bild sein. Eine grössere Berechenzeit ist allerdings in Kauf zu nehmen.",
"Ändert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Ändert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zurücksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckgängig",
"Macht den letzten Zoom-Vorgang wieder rückgängig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensität",
"Rot",
"Gruen",
"Blau",
"Ändert die Intensität des roten Kanals.",
"Ändert die Intensität des gruenen Kanals.",
"Ändert die Intensität des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion für diese Farbkomponente.",
"Verwende Cosinus-Funktion für diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch höhere ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensität/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverläufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche Änderungen und schliesse das Fenster.",
"Über...",
"Zeige Informationen über den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim Öffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
};
enum {
MSG_OK,
MSG_CANCEL,
MSG_DELFRAC,
MSG_DELSURE,
MSG_DELSURE2,
MSG_DEL,
MSG_OPENERROR,
MSG_WRONGFILETYPE,
MSG_CORRUPTFILE,
MSG_NULLLIST,
MSG_UNKNOWN_EVENT,
MSG_EDIT_FRACNAME,
MSG_FRACNAME,
MSG_NEWFRAC,
MSG_COPYNAME,
MSG_SAVE,
MSG_SAVEAS,
MSG_COPY,
MSG_LOAD,
MSG_MISSING_GIMPRC,
MSG_WRONGPATH,
MSG_NOTDIR,
MSG_DIRREADERROR,
MSG_FIRSTFRACTAL,
MSG_CHOOSE_FRACTAL,
MSG_RESCAN,
MSG_RESCAN_COMMENT,
MSG_NEW,
MSG_NEW_COMMENT,
MSG_RENAME,
MSG_RENAME_COMMENT,
MSG_DELETE_COMMENT,
MSG_CHOOSE_GRADIENT,
MSG_ADDPATH,
MSG_RESCANTITLE1,
MSG_ADDDIR,
MSG_FRACTALOPTIONS,
MSG_PARAMETERS,
MSG_XMIN,
MSG_XMAX,
MSG_YMIN,
MSG_YMAX,
MSG_ITER,
MSG_CX,
MSG_CY,
MSG_RESET_PARAM_COMMENT,
MSG_LOADCOMMENT,
MSG_SAVECOMMENT,
MSG_FRACTALTYPE,
MSG_GENERALOPTIONS,
MSG_RESET,
MSG_PREVIEW,
MSG_REALTIMEPREVIEW,
MSG_REDRAWCOMMENT,
MSG_REDRAW,
MSG_REDRAWPREVIEW,
MSG_ZOOMOPTS,
MSG_UNDOZOOM,
MSG_UNDOCOMMENT,
MSG_REDOZOOM,
MSG_REDOCOMMENT,
MSG_STEPIN,
MSG_STEPOUT,
MSG_COLOROPTS,
MSG_COLORDENSITY,
MSG_RED,
MSG_GREEN,
MSG_BLUE,
MSG_REDINTENSITY,
MSG_GREENINTENSITY,
MSG_BLUEINTENSITY,
MSG_COLORFUNCTION,
MSG_SINE,
MSG_COSINE,
MSG_NONE,
MSG_SINECOMMENT,
MSG_COSINECOMMENT,
MSG_NONECOMMENT,
MSG_INVERSION,
MSG_INVERSIONCOMMENT,
MSG_COLORMODE,
MSG_ASSPECIFIED,
MSG_ASSPECIFIEDCOMMENT,
MSG_APPLYGRADIENT,
MSG_APPLYGRADIENTCOMMENT,
MSG_GRADIENTPRESETS,
MSG_FRACTALPRESETS,
MSG_STARTCALC,
MSG_MAINDLGCANCEL,
MSG_ABOUT,
MSG_ABOUTCOMMENT,
MSG_ABOUTBOXOKCOMMENT,
MSG_SAVEERROR,
MSG_WRITEFAILURE,
MSG_NOFILENAME,
MSG_NOSAVETODIR,
MSG_LOADWINTITLE,
MSG_LOADBUTTONCOMMENT,
MSG_CANCELLOAD,
MSG_SAVEWINTITLE,
MSG_SAVEBUTTONCOMMENT,
MSG_CANCELSAVE,
MSG_SAVELANGUAGE,
MSG_SAVELANGUAGE_COMMENT
};
enum {
LNG_ENGLISH,
LNG_FRENCH,
LNG_GERMAN,
LNG_ITALIAN,
LNG_SPANISH
};

View File

@ -0,0 +1,50 @@
## Process this file with automake to produce Makefile.in
pluginlibdir = $(gimpplugindir)/plug-ins
pluginlib_PROGRAMS = FractalExplorer
FractalExplorer_SOURCES = \
FractalExplorer.c \
Dialogs.h \
Callbacks.h \
Events.h \
FractalExplorer.h \
Languages.h \
logo.h \
pix_data.h
INCLUDES = \
$(X_CFLAGS) \
-I$(top_srcdir) \
-I$(includedir)
LDADD = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la \
$(X_LIBS) \
-lc
DEPS = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la
FractalExplorer_DEPENDENCIES = $(DEPS)
.PHONY: files
files:
@files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
echo $$p; \
done
@for subdir in $(SUBDIRS); do \
files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \
for file in $$files; do \
echo $$subdir/$$file; \
done; \
done

View File

@ -0,0 +1,89 @@
-------------------------------------------
GIMP-Plug-In
-------------------------------------------
Written by Daniel Cotting
Bahnhofstrasse 31
CH-3066 Stettlen (Switzerland)
cotting@mygale.org
www.mygale.org/~cotting
-------------------------------------------
Some code is taken out of other plug-ins
written by other authors.
-------------------------------------------
-------------------------------------------
INSTALLATION
-------------------------------------------
To install it, you have to edit the
Makefile (change install-path).
Afterwards run make. This will compile
and install the plug-in in the right
directory. Once the new code is installed,
you can run the GIMP and enjoy the new
functions and effects it provides.
Note that this plug-in has some sample
files which must be installed in one of
the following directories:
~/.gimp/fractalexplorer
/usr/local/share/gimp/0.99.XX/fractalexplorer
You can find the sample files in the
subdirectory fractalexplorer-examples
of this distribution.
You will have to add the following lines
to your gimprc file (usually
/usr/local/ share/gimp/0.99.XX/gimprc):
# fractalexplorer directory
(fractalexplorer-path "${gimp_data_dir}/fractalexplorer:${gimp_dir}/fractalexplorer")
-------------------------------------------
-------------------------------------------
REDUCE CODE SIZE
-------------------------------------------
If you find that the plug-in is too big,
you can compress the executables with the
gzexe program (if it is avaiable on your
system). To do so, change to the plug-in
directory of the GIMP...
cd /usr/local/lib/gimp/VERSION/plug-ins
...and execute the command...
gzexe PLUGIN_NAME
...and remember to remove the uncompres-
sed binary, which has been renamed to
PLUGIN_NAME~, by running the command:
rm PLUGIN_NAME~
This will result in a code size of about
50 kB, which isn't too much IMHO.
------------------------------------------
------------------------------------------
FEEDBACK
------------------------------------------
I'm interested in any feedback, comments,
bug-reports, suggestions etc. If you
have anything you would like to tell
me, you can write to cotting@mygale.org.
Also have a look at the GIMP-section of
my homepage at www.mygale.org/~cotting.
------------------------------------------
Thank you and happy GIMPing!
Daniel Cotting
------------------------------------------

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 5
xmin: -0.664136886596680
xmax: -0.663678705692291
ymin: -0.378479450941086
ymax: -0.378030359745026
iter: 214.723999023437500
cx: 0.184000000357628
cy: -0.200000002980232
redstretch: 89.130996704101562
greenstretch: 70.365997314453125
bluestretch: 58.000000000000000
redmode: 0
greenmode: 0
bluemode: 2
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.443357914686203
xmax: -0.443357914686203
ymin: 0.085399866104126
ymax: 0.085484646260738
iter: 50.000000000000000
cx: -0.847000002861023
cy: -0.184000000357628
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.125070333480835
xmax: -0.120749041438103
ymin: -0.537724196910858
ymax: -0.532733201980591
iter: 49.080001831054688
cx: 0.453999996185303
cy: 0.000000000000000
redstretch: 123.000000000000000
greenstretch: 128.000000000000000
bluestretch: 78.000000000000000
redmode: 1
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: 0.257157027721405
xmax: 0.257280886173248
ymin: 0.153874531388283
ymax: 0.154003381729126
iter: 49.080001831054688
cx: -0.750000000000000
cy: -0.356000006198883
redstretch: 123.978996276855469
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.104991987347603
xmax: -0.104991905391216
ymin: 0.250050097703934
ymax: 0.250050216913223
iter: 202.453994750976562
cx: 0.356000006198883
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -1.255496978759766
xmax: -1.249950170516968
ymin: -0.347052335739136
ymax: -0.338468551635742
iter: 50.000000000000000
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 113.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 1
bluemode: 2
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: 0.353848785161972
xmax: 0.356627285480499
ymin: 0.458385974168777
ymax: 0.460633248090744
iter: 147.238998413085938
cx: 0.000000000000000
cy: 0.000000000000000
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 1
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.125281319022179
xmax: -0.116631627082825
ymin: 0.375891804695129
ymax: 0.384632647037506
iter: 67.485000610351562
cx: 0.405000001192093
cy: -0.200000002980232
redstretch: 124.000000000000000
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 0
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 2
xmin: -0.508517742156982
xmax: -0.475813776254654
ymin: -0.025438375771046
ymax: 0.025984741747379
iter: 177.914001464843750
cx: -1.018000006675720
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 1
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.968750000000000
xmax: 0.437500000000000
ymin: -0.703125000000000
ymax: 0.843750000000000
iter: 50.000000000000000
cx: -0.012000000104308
cy: 0.000000000000000
redstretch: 87.000000000000000
greenstretch: 128.000000000000000
bluestretch: 0.000000000000000
redmode: 0
greenmode: 2
bluemode: 1
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 1
xmin: -0.476808547973633
xmax: -0.223514556884766
ymin: -0.017941474914551
ymax: 0.114898681640625
iter: 50.000000000000000
cx: -1.337000012397766
cy: 0.086000002920628
redstretch: 127.330001831054688
greenstretch: 90.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 2
bluemode: 2
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.345402956008911
xmax: -0.252956151962280
ymin: -0.274888515472412
ymax: -0.204696178436279
iter: 30.674999237060547
cx: 0.356000006198883
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 67.000000000000000
bluestretch: 98.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 1
xmin: 0.068130433559418
xmax: 0.116958513855934
ymin: 0.512302279472351
ymax: 0.534968316555023
iter: 202.453994750976562
cx: 0.356000006198883
cy: 0.428999990224838
redstretch: 128.000000000000000
greenstretch: 113.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.350769042968750
xmax: -0.080402374267578
ymin: -0.264384269714355
ymax: -0.041095733642578
iter: 50.000000000000000
cx: -0.184000000357628
cy: 0.000000000000000
redstretch: 29.000000000000000
greenstretch: 80.000000000000000
bluestretch: 7.000000000000000
redmode: 0
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -1.285429239273071
xmax: -1.283814907073975
ymin: 0.428520709276199
ymax: 0.432528734207153
iter: 50.000000000000000
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 89.130996704101562
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 2
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -0.078803382813931
xmax: -0.077717751264572
ymin: -0.880311131477356
ymax: -0.879459798336029
iter: 503.066986083984375
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 120.627998352050781
bluestretch: 128.000000000000000
redmode: 1
greenmode: 2
bluemode: 0
redinvert: 1
greeninvert: 0
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.235851287841797
xmax: -0.060367584228516
ymin: 0.091303825378418
ymax: 0.220178604125977
iter: 55.215000152587891
cx: 0.356000006198883
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 127.330001831054688
redmode: 1
greenmode: 2
bluemode: 2
redinvert: 0
greeninvert: 1
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.146484375000000
xmax: 0.064453125000000
ymin: 0.154907226562500
ymax: 0.358154296875000
iter: 50.000000000000000
cx: 0.356000006198883
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -1.408687233924866
xmax: -1.408686757087708
ymin: -0.135643482208252
ymax: -0.135642752051353
iter: 104.293998718261719
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 113.000000000000000
bluestretch: 128.000000000000000
redmode: 1
greenmode: 0
bluemode: 1
redinvert: 1
greeninvert: 1
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.078369140625000
xmax: 0.158203125000000
ymin: -0.485778808593750
ymax: -0.197387695312500
iter: 134.968994140625000
cx: 0.109999999403954
cy: 0.037000000476837
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 1
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.935546875000000
xmax: 0.226562500000000
ymin: 0.034790039062500
ymax: 0.995361328125000
iter: 67.485000610351562
cx: 0.428999990224838
cy: 0.232999995350838
redstretch: 128.000000000000000
greenstretch: 120.627998352050781
bluestretch: 93.000000000000000
redmode: 2
greenmode: 2
bluemode: 1
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.251464843750000
xmax: -0.097656250000000
ymin: -0.626953125000000
ymax: -0.503356933593750
iter: 55.215000152587891
cx: 0.503000020980835
cy: -0.012000000104308
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 1
bluemode: 0
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 7
xmin: 0.011789147742093
xmax: 0.012022980488837
ymin: 0.040065050125122
ymax: 0.040298193693161
iter: 92.025001525878906
cx: -1.092000007629395
cy: 0.232999995350838
redstretch: 124.000000000000000
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 1
greenmode: 0
bluemode: 0
redinvert: 1
greeninvert: 1
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.720550119876862
xmax: -0.736553728580475
ymin: 0.128735020756721
ymax: 0.068184189498425
iter: 49.080001831054688
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 119.958000183105469
greenstretch: 85.779998779296875
bluestretch: 6.031000137329102
redmode: 0
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -0.562806546688080
xmax: -0.561547160148621
ymin: -0.643333077430725
ymax: -0.642277657985687
iter: 122.698997497558594
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 113.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 2
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.038584709167480
xmax: 0.094075202941895
ymin: -0.689266920089722
ymax: -0.584711074829102
iter: 98.160003662109375
cx: 0.405000001192093
cy: 0.037000000476837
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 1
bluemode: 2
redinvert: 0
greeninvert: 1
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 7
xmin: -0.014160156250000
xmax: 1.014160156250000
ymin: -0.261108398437500
ymax: 0.252685546875000
iter: 42.944999694824219
cx: -1.386999964714050
cy: -0.257999986410141
redstretch: 124.000000000000000
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 0
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 1
colormode: 1
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 1
xmin: -0.573436737060547
xmax: -0.399868011474609
ymin: -0.177640914916992
ymax: -0.024647712707520
iter: 607.361999511718750
cx: -0.723999977111816
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 0
bluemode: 1
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: -0.430790066719055
xmax: -0.421469658613205
ymin: 0.017559077590704
ymax: 0.025114785879850
iter: 67.485000610351562
cx: -0.086000002920628
cy: -0.012000000104308
redstretch: 128.000000000000000
greenstretch: 37.000000000000000
bluestretch: 93.000000000000000
redmode: 2
greenmode: 2
bluemode: 1
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 2
xmin: 0.064453125000000
xmax: 0.950683593750000
ymin: -0.389648437500000
ymax: 0.476440429687500
iter: 50.000000000000000
cx: -1.067000031471252
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 110.000000000000000
bluestretch: 2.000000000000000
redmode: 0
greenmode: 1
bluemode: 1
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 2
xmin: -0.937500000000000
xmax: 1.125000000000000
ymin: -0.609375000000000
ymax: 0.609375000000000
iter: 50.000000000000000
cx: -1.042999982833862
cy: -0.037000000476837
redstretch: 128.000000000000000
greenstretch: 22.000000000000000
bluestretch: 101.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -1.287102937698364
xmax: -1.287102580070496
ymin: 0.099825143814087
ymax: 0.099862203001976
iter: 50.000000000000000
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 109.905998229980469
bluestretch: 2.009999990463257
redmode: 1
greenmode: 0
bluemode: 0
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 3
xmin: 0.187500000000000
xmax: 0.984375000000000
ymin: 0.843750000000000
ymax: 1.734375000000000
iter: 50.000000000000000
cx: 0.773000001907349
cy: -0.723999977111816
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 0
bluemode: 1
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 5
xmin: -0.664136886596680
xmax: -0.663678705692291
ymin: -0.378479450941086
ymax: -0.378030359745026
iter: 214.723999023437500
cx: 0.184000000357628
cy: -0.200000002980232
redstretch: 89.130996704101562
greenstretch: 70.365997314453125
bluestretch: 58.000000000000000
redmode: 0
greenmode: 0
bluemode: 2
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.443357914686203
xmax: -0.443357914686203
ymin: 0.085399866104126
ymax: 0.085484646260738
iter: 50.000000000000000
cx: -0.847000002861023
cy: -0.184000000357628
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.125070333480835
xmax: -0.120749041438103
ymin: -0.537724196910858
ymax: -0.532733201980591
iter: 49.080001831054688
cx: 0.453999996185303
cy: 0.000000000000000
redstretch: 123.000000000000000
greenstretch: 128.000000000000000
bluestretch: 78.000000000000000
redmode: 1
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: 0.257157027721405
xmax: 0.257280886173248
ymin: 0.153874531388283
ymax: 0.154003381729126
iter: 49.080001831054688
cx: -0.750000000000000
cy: -0.356000006198883
redstretch: 123.978996276855469
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.104991987347603
xmax: -0.104991905391216
ymin: 0.250050097703934
ymax: 0.250050216913223
iter: 202.453994750976562
cx: 0.356000006198883
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 2
greenmode: 0
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 0
xmin: -1.255496978759766
xmax: -1.249950170516968
ymin: -0.347052335739136
ymax: -0.338468551635742
iter: 50.000000000000000
cx: -0.750000000000000
cy: -0.200000002980232
redstretch: 128.000000000000000
greenstretch: 113.000000000000000
bluestretch: 128.000000000000000
redmode: 0
greenmode: 1
bluemode: 2
redinvert: 1
greeninvert: 1
blueinvert: 0
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 6
xmin: 0.353848785161972
xmax: 0.356627285480499
ymin: 0.458385974168777
ymax: 0.460633248090744
iter: 147.238998413085938
cx: 0.000000000000000
cy: 0.000000000000000
redstretch: 128.000000000000000
greenstretch: 128.000000000000000
bluestretch: 128.000000000000000
redmode: 1
greenmode: 1
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 0
colormode: 1
#**********************************************************************
<EOF>
#**********************************************************************

View File

@ -0,0 +1,26 @@
Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>
#**********************************************************************
# This is a data file for the Fractal Explorer plug-in for the GIMP *
# Get the plug-in at http://www.mygale.org/~cotting *
#**********************************************************************
fractaltype: 4
xmin: -0.125281319022179
xmax: -0.116631627082825
ymin: 0.375891804695129
ymax: 0.384632647037506
iter: 67.485000610351562
cx: 0.405000001192093
cy: -0.200000002980232
redstretch: 124.000000000000000
greenstretch: 112.000000000000000
bluestretch: 60.000000000000000
redmode: 0
greenmode: 2
bluemode: 0
redinvert: 0
greeninvert: 0
blueinvert: 1
colormode: 0
#**********************************************************************
<EOF>
#**********************************************************************

Some files were not shown because too many files have changed in this diff Show More