From 3b229d42c0170fd4dcfd268571dd0adb45a00830 Mon Sep 17 00:00:00 2001 From: Manish Singh Date: Thu, 19 Feb 1998 01:25:08 +0000 Subject: [PATCH] Quickie plugin refcount cleanups. (not done yet) Removed Julia and Mandelbrot plugins. -Yosh --- configure.in | 2 - plug-ins/AlienMap/AlienMap.c | 1 + plug-ins/Anamorphose/Anamorphose.c | 1 + plug-ins/CML_explorer/CML_explorer.c | 5 +- .../CentralReflection/CentralReflection.c | 8 + plug-ins/Curtain/Curtain.c | 1 + plug-ins/DigitalSignature/DigitalSignature.c | 1 + plug-ins/Julia/.cvsignore | 6 - plug-ins/Julia/INSTALL | 75 - plug-ins/Julia/Julia.c | 1534 ---------------- plug-ins/Julia/Makefile.am | 43 - plug-ins/Julia/README | 75 - plug-ins/Julia/doc/doc | 75 - plug-ins/Julia/logo.h | 788 --------- plug-ins/Makefile.am | 2 - plug-ins/Mandelbrot/.cvsignore | 6 - plug-ins/Mandelbrot/INSTALL | 75 - plug-ins/Mandelbrot/Makefile.am | 43 - plug-ins/Mandelbrot/Mandelbrot.c | 1538 ----------------- plug-ins/Mandelbrot/README | 75 - plug-ins/Mandelbrot/doc/doc | 75 - plug-ins/Mandelbrot/logo.h | 788 --------- plug-ins/common/CML_explorer.c | 5 +- plug-ins/common/randomize.c | 3 +- plug-ins/randomize/randomize.c | 3 +- plug-ins/refract/refmain.c | 1 + plug-ins/warp/warp.c | 1 + 27 files changed, 26 insertions(+), 5204 deletions(-) delete mode 100644 plug-ins/Julia/.cvsignore delete mode 100644 plug-ins/Julia/INSTALL delete mode 100644 plug-ins/Julia/Julia.c delete mode 100644 plug-ins/Julia/Makefile.am delete mode 100644 plug-ins/Julia/README delete mode 100644 plug-ins/Julia/doc/doc delete mode 100644 plug-ins/Julia/logo.h delete mode 100644 plug-ins/Mandelbrot/.cvsignore delete mode 100644 plug-ins/Mandelbrot/INSTALL delete mode 100644 plug-ins/Mandelbrot/Makefile.am delete mode 100644 plug-ins/Mandelbrot/Mandelbrot.c delete mode 100644 plug-ins/Mandelbrot/README delete mode 100644 plug-ins/Mandelbrot/doc/doc delete mode 100644 plug-ins/Mandelbrot/logo.h diff --git a/configure.in b/configure.in index 76492ae22b..c662779f35 100644 --- a/configure.in +++ b/configure.in @@ -347,8 +347,6 @@ plug-ins/Anamorphose/Makefile plug-ins/CentralReflection/Makefile plug-ins/Curtain/Makefile plug-ins/Encrypt_Decrypt/Makefile -plug-ins/Julia/Makefile -plug-ins/Mandelbrot/Makefile plug-ins/MapObject/Makefile plug-ins/megawidget/Makefile plug-ins/libgck/Makefile diff --git a/plug-ins/AlienMap/AlienMap.c b/plug-ins/AlienMap/AlienMap.c index 58452b18c6..92272a5e09 100644 --- a/plug-ins/AlienMap/AlienMap.c +++ b/plug-ins/AlienMap/AlienMap.c @@ -909,6 +909,7 @@ gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 6); dialog_update_preview(); gtk_main(); + gtk_object_unref (GTK_OBJECT (tips)); gdk_flush(); if (the_tile != NULL) { gimp_tile_unref(the_tile, FALSE); diff --git a/plug-ins/Anamorphose/Anamorphose.c b/plug-ins/Anamorphose/Anamorphose.c index b8a8c32081..04bb0bb6b9 100644 --- a/plug-ins/Anamorphose/Anamorphose.c +++ b/plug-ins/Anamorphose/Anamorphose.c @@ -625,6 +625,7 @@ anamorphose_dialog(GDrawable *drawable) gtk_widget_show(dlg); gtk_main(); + gtk_object_unref (GTK_OBJECT (tips)); gdk_flush(); return bint.run; diff --git a/plug-ins/CML_explorer/CML_explorer.c b/plug-ins/CML_explorer/CML_explorer.c index 51cf092387..9db5353c97 100644 --- a/plug-ins/CML_explorer/CML_explorer.c +++ b/plug-ins/CML_explorer/CML_explorer.c @@ -1300,6 +1300,7 @@ DIALOG () GtkWidget *dlg; GtkWidget *hbox; GtkWidget *button; + GtkTooltips *tooltips; gchar **argv; gint argc; @@ -1489,7 +1490,6 @@ DIALOG () random_sensitives[3].logic = FALSE; { GtkWidget *button; - GtkTooltips *tooltips; button = gtkW_vbox_add_button (box, "Switch to \"from seed\" with the last seed", (GtkSignalFunc) CML_set_or_randomize_seed_callback, @@ -1605,6 +1605,9 @@ DIALOG () preview_update (); gtk_main (); + + gtk_object_unref (GTK_OBJECT (tooltips)); + gdk_flush (); return INTERFACE.run; diff --git a/plug-ins/CentralReflection/CentralReflection.c b/plug-ins/CentralReflection/CentralReflection.c index ba611b6913..47f9053962 100644 --- a/plug-ins/CentralReflection/CentralReflection.c +++ b/plug-ins/CentralReflection/CentralReflection.c @@ -28,6 +28,8 @@ #include #include +#include +#include #include "libgimp/gimp.h" #include "gtk/gtk.h" @@ -172,6 +174,9 @@ run(char *name, break; } + printf("creflect: waiting... (pid %d)\n", getpid()); + kill(getpid(), SIGSTOP); + gimp_tile_cache_ntiles(2 *(drawable->width / gimp_tile_width() + 1)); gimp_progress_init("Applying Central-Reflection. Please wait..."); drawCentralReflection(drawable); @@ -571,6 +576,9 @@ CentralReflection_dialog(GDrawable *drawable) gtk_widget_show(dlg); gtk_main(); + + gtk_object_unref(GTK_OBJECT(tips)); + gdk_flush(); return bint.run; diff --git a/plug-ins/Curtain/Curtain.c b/plug-ins/Curtain/Curtain.c index 1fa21b57e3..9f9170b540 100644 --- a/plug-ins/Curtain/Curtain.c +++ b/plug-ins/Curtain/Curtain.c @@ -403,6 +403,7 @@ curtain_dialog() gtk_widget_show(dlg); gtk_main(); + gtk_object_unref (GTK_OBJECT (tips)); gdk_flush(); return bint.run; diff --git a/plug-ins/DigitalSignature/DigitalSignature.c b/plug-ins/DigitalSignature/DigitalSignature.c index 955fc8a28c..f6427ae202 100644 --- a/plug-ins/DigitalSignature/DigitalSignature.c +++ b/plug-ins/DigitalSignature/DigitalSignature.c @@ -172,6 +172,7 @@ run(char *name, if (!signature_warning_dialog()) return; + gtk_object_unref (GTK_OBJECT (tips)); if (ending==100) {wvals.mode=1;} else {wvals.mode=0;} break; diff --git a/plug-ins/Julia/.cvsignore b/plug-ins/Julia/.cvsignore deleted file mode 100644 index 74d721813b..0000000000 --- a/plug-ins/Julia/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -.deps -_libs -.libs -Julia diff --git a/plug-ins/Julia/INSTALL b/plug-ins/Julia/INSTALL deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Julia/INSTALL +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Julia/Julia.c b/plug-ins/Julia/Julia.c deleted file mode 100644 index 98de36b69e..0000000000 --- a/plug-ins/Julia/Julia.c +++ /dev/null @@ -1,1534 +0,0 @@ -/********************************************************************** - * Julia Chaos Fractal Explorer Plug-in (Version 1.01) - * 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! - ********************************************************************** - */ - -/* The GIMP -- an image manipulation program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include "gtk/gtk.h" -#include "libgimp/gimp.h" -#include "logo.h" - -/***** Macros *****/ - -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - - -/***** Magic numbers *****/ - -#define PREVIEW_SIZE 128 -#define SCALE_WIDTH 200 -#define ENTRY_WIDTH 60 - -#define SINUS 0 -#define COSINUS 1 -#define NONE 2 - -/***** Types *****/ -typedef struct { - 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; -} Julia_vals_t; - -typedef struct { - GtkWidget *preview; - guchar *image; - guchar *wimage; - gint run; -} Julia_interface_t; - - - -/* Declare local functions. */ - -static void query (void); -static void run (char *name, - int nparams, - GParam *param, - int *nreturn_vals, - GParam **return_vals); - -static void Julia (GDrawable *drawable); -static void Julia_render_row (const guchar *src_row, - guchar *dest_row, - gint row, - gint row_width,gint bytes); -static void Julia_get_pixel(int x, int y, guchar *pixel); -void transform (short int *, short int *, short int *,double, double, double); - - -static void build_preview_source_image(void); - -static gint Julia_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, const char *desc); -static void dialog_scale_update(GtkAdjustment *adjustment, gdouble *value); -static void dialog_create_int_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc); -static void dialog_scale_int_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_reset_callback(GtkWidget *widget, gpointer data); */ -static void dialog_cancel_callback(GtkWidget *widget, gpointer data); -static void Julia_toggle_update (GtkWidget *widget, - gpointer data); -static float xmin=-2.0; -static float xmax=2.0; - -static float ymin=-2.0; -static float ymax=2.0; -static float cx=-1.0; -static float cy=-0.2; -static float xbild; -static float ybild; -static float xdiff; -static float ydiff; - -/***** Variables *****/ - -GPlugInInfo PLUG_IN_INFO = -{ - NULL, /* init_proc */ - NULL, /* quit_proc */ - query, /* query_proc */ - run, /* run_proc */ -}; - -static Julia_interface_t wint = { - NULL, /* preview */ - NULL, /* image */ - NULL, /* wimage */ - FALSE /* run */ -}; /* wint */ - -static Julia_vals_t wvals = { - -2.0,2.0,-2.0,2.0,50.0,-1.0,-0.2,0,128,128,128,1,1,0, -}; /* wvals */ - -static GDrawable *drawable; -static gint tile_width, tile_height; -static gint img_width, img_height, img_bpp; -static gint sel_x1, sel_y1, sel_x2, sel_y2; -static gint sel_width, sel_height; -static gint preview_width, preview_height; -static GTile *the_tile = NULL; -static double cen_x, cen_y; -static double scale_x, scale_y; - -gint do_redsinus; -gint do_redcosinus; -gint do_rednone; - -gint do_greensinus; -gint do_greencosinus; -gint do_greennone; - -gint do_bluesinus; -gint do_bluecosinus; -gint do_bluenone; - -gint do_colormode1; -gint do_colormode2; - -static GParam *ExternalParam=NULL; -static int ExternalInt; - - - -GtkWidget * Julia_logo_dialog(void); - -GtkWidget *maindlg; -GtkWidget *logodlg; -GtkTooltips *tips; -GdkColor tips_fg,tips_bg; - - - - -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_FLOAT, "xmin", "xmin fractal image delimiter" }, - { PARAM_FLOAT, "xmax", "xmax fractal image delimiter" }, - { PARAM_FLOAT, "ymin", "ymin fractal image delimiter" }, - { PARAM_FLOAT, "ymax", "ymax fractal image delimiter" }, - { PARAM_FLOAT, "iter", "Iteration value" }, - { PARAM_FLOAT, "cx", "cx value" }, - { PARAM_FLOAT, "cy", "cy value" }, - { PARAM_INT8, "colormode", "0: Apply colormap as specified by the parameters below; 1: Apply active gradient to final image"}, - { PARAM_FLOAT, "redstretch", "Red stretching factor" }, - { PARAM_FLOAT, "greenstretch","Green stretching factor" }, - { PARAM_FLOAT, "bluestretch", "Blue stretching factor" }, - { 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)" }, - }; - static GParamDef *return_vals = NULL; - static int nargs = sizeof (args) / sizeof (args[0]); - static int nreturn_vals = 0; - - gimp_install_procedure ("plug_in_julia", - "Julia Chaos Fractal Explorer Plug-In", - "Fills the active painting area with a Julia fractal.", - "Daniel Cotting (cotting@mygale.org, www.mygale.org/~cotting)", - "Daniel Cotting (cotting@mygale.org, www.mygale.org/~cotting)", - "1th May 1997", - "/Filters/Render/Julia Fractal", - "RGB*", - PROC_PLUG_IN, - nargs, nreturn_vals, - args, return_vals); -} - -static void -set_tooltip (GtkTooltips *tooltips, GtkWidget *widget, const char *desc) -{ - if (desc && desc[0]) - gtk_tooltips_set_tips (tooltips, widget, (char *) desc); -} - - -static void -run (char *name, - int nparams, - GParam *param, - int *nreturn_vals, - GParam **return_vals) -{ - static GParam values[1]; -/* GDrawable *drawable; */ - gint32 image_ID; - GRunModeType run_mode; - double xhsiz, yhsiz; - int pwidth, pheight; - GStatusType status = STATUS_SUCCESS; - - - run_mode = param[0].data.d_int32; - - values[0].type = PARAM_STATUS; - values[0].data.d_status = status; - - *nreturn_vals = 1; - *return_vals = values; - - - - /* Get the specified drawable */ - drawable = gimp_drawable_get (param[2].data.d_drawable); - image_ID = param[1].data.d_image; - tile_width = gimp_tile_width(); - tile_height = gimp_tile_height(); - - img_width = gimp_drawable_width(drawable->id); - img_height = gimp_drawable_height(drawable->id); - img_bpp = gimp_drawable_bpp(drawable->id); - - gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); - - sel_width = sel_x2 - sel_x1; - sel_height = sel_y2 - sel_y1; - - cen_x = (double) (sel_x2 - 1 + sel_x1) / 2.0; - cen_y = (double) (sel_y2 - 1 + sel_y1) / 2.0; - - xhsiz = (double) (sel_width - 1) / 2.0; - yhsiz = (double) (sel_height - 1) / 2.0; - - if (xhsiz < yhsiz) { - scale_x = yhsiz / xhsiz; - scale_y = 1.0; - } else if (xhsiz > yhsiz) { - scale_x = 1.0; - scale_y = xhsiz / yhsiz; - } else { - scale_x = 1.0; - scale_y = 1.0; - } /* else */ - - /* Calculate preview size */ - if (sel_width > sel_height) { - pwidth = MIN(sel_width, PREVIEW_SIZE); - pheight = sel_height * pwidth / sel_width; - } else { - pheight = MIN(sel_height, PREVIEW_SIZE); - pwidth = sel_width * pheight / sel_height; - } /* else */ - - preview_width = MAX(pwidth, 2); /* Min size is 2 */ - preview_height = MAX(pheight, 2); - - /* See how we will run */ - switch (run_mode) { - case RUN_INTERACTIVE: - /* Possibly retrieve data */ - - gimp_get_data("plug_in_julia", &wvals); - - /* Get information from the dialog */ - - if (!Julia_dialog()) - return; - - break; - - case RUN_NONINTERACTIVE: - /* Make sure all the arguments are present */ - - if (nparams != 17) - status = STATUS_CALLING_ERROR; - - if (status == STATUS_SUCCESS) - - wvals.xmin = param[3].data.d_float; - wvals.xmax = param[4].data.d_float; - wvals.ymin = param[5].data.d_float; - wvals.ymax = param[6].data.d_float; - wvals.iter = param[7].data.d_float; - wvals.cx = param[8].data.d_float; - wvals.cy = param[9].data.d_float; - wvals.colormode = param[10].data.d_int8; - wvals.redstretch = param[11].data.d_float; - wvals.greenstretch = param[12].data.d_float; - wvals.bluestretch = param[13].data.d_float; - wvals.redmode = param[14].data.d_int8; - wvals.greenmode = param[15].data.d_int8; - wvals.bluemode = param[16].data.d_int8; - - break; - - case RUN_WITH_LAST_VALS: - /* Possibly retrieve data */ - - gimp_get_data("plug_in_julia", &wvals); - break; - - default: - break; - } /* switch */ - - - if (status == STATUS_SUCCESS) - { - /* Make sure that the drawable is indexed or RGB color */ - if (gimp_drawable_color (drawable->id)) - { - gimp_progress_init ("Rendering Julia Fractal..."); - - /* Set the tile cache size */ - - gimp_tile_cache_ntiles(2*(drawable->width / gimp_tile_width()+1)); - - /* Run! */ - - -/* gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () - + 1));*/ - Julia (drawable); - if (wvals.colormode==1) ExternalParam = gimp_run_procedure("plug_in_gradmap",&ExternalInt, - PARAM_INT32, run_mode, - PARAM_IMAGE, image_ID, - PARAM_DRAWABLE, drawable->id, - PARAM_END); - - if (run_mode != RUN_NONINTERACTIVE) - gimp_displays_flush(); - - /* Store data */ - - if (run_mode == RUN_INTERACTIVE) - gimp_set_data("plug_in_julia", &wvals, sizeof(Julia_vals_t)); - } - else - { -/* gimp_message("This filter only applies on RGB-images"); */ - status = STATUS_EXECUTION_ERROR; - } - } - - values[0].data.d_status = status; - - gimp_drawable_detach (drawable); -} - -/*****/ - -static void -Julia_get_pixel(int x, int y, guchar *pixel) -{ - static gint row = -1; - static gint col = -1; - - gint newcol, newrow; - gint newcoloff, newrowoff; - guchar *p; - int i; - - if ((x < 0) || (x >= img_width) || (y < 0) || (y >= img_height)) { - pixel[0] = 0; - pixel[1] = 0; - pixel[2] = 0; - pixel[3] = 0; - - return; - } /* if */ - - newcol = x / tile_width; /* The compiler should optimize this */ - newcoloff = x % tile_width; - newrow = y / tile_height; - newrowoff = y % tile_height; - - if ((col != newcol) || (row != newrow) || (the_tile == NULL)) { - - if (the_tile != NULL) - gimp_tile_unref(the_tile, FALSE); - - the_tile = gimp_drawable_get_tile(drawable, FALSE, newrow, newcol); - gimp_tile_ref(the_tile); - col = newcol; - row = newrow; - } /* if */ - p = the_tile->data + the_tile->bpp * (the_tile->ewidth * newrowoff + newcoloff); - for (i = img_bpp; i; i--) - *pixel++ = *p++; - -} /* Julia_get_pixel */ - - - -static void -Julia_render_row (const guchar *src_row, - guchar *dest_row, - gint row, - gint row_width, - gint bytes) -{ - gint col, bytenum; - double redstretch, greenstretch, bluestretch; - for (col = 0; col < row_width ; col++) - { - float a,tb,x,y,xx; - int zaehler,color,r,g,b; - float pi=3.1415926; - cx=wvals.cx; - cy=wvals.cy; - redstretch = wvals.redstretch; - greenstretch = wvals.greenstretch; - bluestretch = wvals.bluestretch; - a=xmin+col*xdiff; - tb=ymin+row*ydiff; - x=a; - y=tb; - zaehler=0; - for (zaehler=0; (zaehler <= wvals.iter) && ((x*x+y*y)<4); zaehler++) - { - xx=x*x-y*y+cx; - y=2*x*y+cy; - x=xx; - } - color=zaehler*256/wvals.iter; - r=g=b=color; - switch (wvals.redmode) - { - case SINUS: - r = (int) redstretch*(1.0+sin((r/128.0-1)*pi)); - break; - case COSINUS: - r = (int) redstretch*(1.0+cos((r/128.0-1)*pi)); - break; - default: - break; - } - - switch (wvals.greenmode) - { - case SINUS: - g = (int) greenstretch*(1.0+sin((g/128.0-1)*pi)); - break; - case COSINUS: - g = (int) greenstretch*(1.0+cos((g/128.0-1)*pi)); - break; - default: - break; - } - switch (wvals.bluemode) - { - case SINUS: - b = (int) bluestretch*(1.0+sin((b/128.0-1)*pi)); - break; - case COSINUS: - b = (int) bluestretch*(1.0+cos((b/128.0-1)*pi)); - break; - default: - break; - } - if (r== 256) {r= 255;} - if (g== 256) {g= 255;} - if (b== 256) {b= 255;} - - - dest_row[col*bytes] = (int)r; - dest_row[col*bytes +1] = (int)g; - dest_row[col*bytes +2] = (int)b; - - if (bytes>3) - for (bytenum = 3; bytenumid, &x1, &y1, &x2, &y2); - - /* Get the size of the input image. (This will/must be the same - * as the size of the output image. - */ - width = drawable->width; - height = drawable->height; - bytes = drawable->bpp; - - /* allocate row buffers */ - src_row = (guchar *) malloc ((x2 - x1) * bytes); - dest_row = (guchar *) malloc ((x2 - x1) * bytes); - - - /* initialize the pixel regions */ - gimp_pixel_rgn_init (&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); - gimp_pixel_rgn_init (&destPR, drawable, 0, 0, width, height, TRUE, TRUE); - - xbild=width; - ybild=height; - xdiff=(xmax-xmin)/xbild; - ydiff=(ymax-ymin)/ybild; - - for (row = y1; row < y2; row++) - - { - gimp_pixel_rgn_get_row (&srcPR, src_row, x1, row, (x2 - x1)); - - Julia_render_row (src_row, - dest_row, - row, - (x2 - x1), - bytes); - - /* store the dest */ - gimp_pixel_rgn_set_row (&destPR, dest_row, x1, row, (x2 - x1)); - - if ((row % 10) == 0) - gimp_progress_update ((double) row / (double) (y2 - y1)); - } - - /* update the processed region */ - gimp_drawable_flush (drawable); - gimp_drawable_merge_shadow (drawable->id, TRUE); - gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); - - free (src_row); - free (dest_row); -} - -/*****/ - -static void -build_preview_source_image(void) -{ - double left, right, bottom, top; - double px, py; - double dx, dy; - int x, y; - guchar *p; - guchar pixel[4]; - - wint.image = g_malloc(preview_width * preview_height * 3 * sizeof(guchar)); - wint.wimage = g_malloc(preview_width * preview_height * 3 * sizeof(guchar)); - - 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); - - py = top; - - p = wint.image; - - for (y = 0; y < preview_height; y++) { - px = left; - for (x = 0; x < preview_width; x++) { - Julia_get_pixel((int) px, (int) py, pixel); - - *p++ = pixel[0]; - *p++ = pixel[1]; - *p++ = pixel[2]; - - px += dx; - } /* for */ - - py += dy; - } /* for */ -} /* build_preview_source_image */ - - -/*****/ - -static gint -Julia_dialog(void) -{ - GtkWidget *dialog; - GtkWidget *top_table; - GtkWidget *top_table2; - GtkWidget *frame; - GtkWidget *frame2; - GtkWidget *frame3; - GtkWidget *toggle; - GtkWidget *toggle_vbox; - GtkWidget *toggle_vbox2; - GtkWidget *toggle_vbox3; - GtkWidget *table, *table6; - GtkWidget *button; - gint argc; - gchar **argv; - guchar *color_cube; - GSList *redmode_group = NULL; - GSList *greenmode_group = NULL; - GSList *bluemode_group = NULL; - GSList *colormode_group = NULL; - - do_redsinus = (wvals.redmode == SINUS); - do_redcosinus = (wvals.redmode == COSINUS); - do_rednone = (wvals.redmode == NONE); - do_greensinus = (wvals.greenmode == SINUS); - do_greencosinus = (wvals.greenmode == COSINUS); - do_greennone = (wvals.greenmode == NONE); - do_bluesinus = (wvals.bluemode == SINUS); - do_bluecosinus = (wvals.bluemode == COSINUS); - do_bluenone = (wvals.bluemode == NONE); - do_colormode1 = (wvals.colormode == 0); - do_colormode2 = (wvals.colormode == 1); - - - - argc = 1; - argv = g_new(gchar *, 1); - argv[0] = g_strdup("Julia"); - - gtk_init(&argc, &argv); - - gtk_preview_set_gamma(gimp_gamma()); - gtk_preview_set_install_cmap(gimp_install_cmap()); - color_cube = gimp_color_cube(); - gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); - - gtk_widget_set_default_visual(gtk_preview_get_visual()); - gtk_widget_set_default_colormap(gtk_preview_get_cmap()); - - build_preview_source_image(); - dialog = maindlg = gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dialog), "Julia Fractal Explorer (cotting@mygale.org)"); - gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); - gtk_container_border_width(GTK_CONTAINER(dialog), 0); - gtk_signal_connect(GTK_OBJECT(dialog), "destroy", - (GtkSignalFunc) dialog_close_callback, - NULL); - - top_table = gtk_table_new(4, 4, FALSE); - gtk_container_border_width(GTK_CONTAINER(top_table), 0); - gtk_table_set_row_spacings(GTK_TABLE(top_table), 0); - 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_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 ("Fractal options:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table), frame, 1, 4, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame); - - 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(7, 7, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), 5); - gtk_table_set_row_spacings(GTK_TABLE(table), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox),table, FALSE, FALSE, 0); - gtk_widget_show(table); - dialog_create_value("XMIN", GTK_TABLE(table), 0, &wvals.xmin,-3,3, "Change the first (minimal) x-coordinate delimitation"); - dialog_create_value("XMAX", GTK_TABLE(table), 1, &wvals.xmax,-3,3, "Change the second (maximal) x-coordinate delimitation"); - dialog_create_value("YMIN", GTK_TABLE(table), 2, &wvals.ymin,-3,3, "Change the first (minimal) y-coordinate delimitation"); - dialog_create_value("YMAX", GTK_TABLE(table), 3, &wvals.ymax,-3,3, "Change the second (maximal) y-coordinate delimitation"); - dialog_create_value("ITER", GTK_TABLE(table), 4, &wvals.iter,0,1000, "Change the iteration value. The higher it is, the more details will be calculated, which will take more time."); - dialog_create_value("CX", GTK_TABLE(table), 5, &wvals.cx,-5,5, "Change the CX value (changes aspect of fractal)"); - dialog_create_value("CY", GTK_TABLE(table), 6, &wvals.cy,-5,5, "Change the CY value (changes aspect of fractal)"); - gtk_widget_show(table); - gtk_widget_show(toggle_vbox); - gtk_widget_show(frame); - - - frame2 = gtk_frame_new ("Color options:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table), frame2, 0, 4, 1, 3, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame2); - - toggle_vbox2 = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox2), 0); - gtk_container_add (GTK_CONTAINER (frame2), toggle_vbox2); - gtk_widget_show(toggle_vbox2); - - top_table2 = gtk_table_new(5, 5, FALSE); - gtk_container_border_width(GTK_CONTAINER(top_table2), 10); - gtk_table_set_row_spacings(GTK_TABLE(top_table2), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox2), top_table2, FALSE, FALSE, 0); - gtk_widget_show(top_table2); - - - frame = gtk_frame_new ("Color density:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame, 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame); - - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show(toggle_vbox); - - table6 = gtk_table_new(3, 3, FALSE); - gtk_container_border_width(GTK_CONTAINER(table6), 0); - gtk_table_set_row_spacings(GTK_TABLE(table6), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox), table6, FALSE, FALSE, 0); - gtk_widget_show(table6); - dialog_create_int_value("Red", GTK_TABLE(table6), 0, &wvals.redstretch,0,128,"Change the intensity of the red channel"); - dialog_create_int_value("Green", GTK_TABLE(table6), 1, &wvals.greenstretch,0,128,"Change the intensity of the green channel"); - dialog_create_int_value("Blue", GTK_TABLE(table6), 2, &wvals.bluestretch,0,128,"Change the intensity of the blue channel"); - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - frame3 = gtk_frame_new ("Color function:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame3, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame3); - - toggle_vbox3 = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox3), 0); - gtk_container_add (GTK_CONTAINER (frame3), toggle_vbox3); - gtk_widget_show (toggle_vbox3); - - table6 = gtk_table_new(4, 4, FALSE); - gtk_container_border_width(GTK_CONTAINER(table6), 0); - gtk_table_set_row_spacings(GTK_TABLE(table6), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox3), table6, FALSE, FALSE, 0); - gtk_widget_show(table6); - - frame = gtk_frame_new ("Red:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); -/* <-------------------------------/ */ - toggle = gtk_radio_button_new_with_label (redmode_group, "Sine"); - redmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - -/* Greenmode toggle box */ - frame = gtk_frame_new ("Green:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 1, 2, 0,1 , GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); - -/* <-----/ */ - toggle = gtk_radio_button_new_with_label (greenmode_group, "Sine"); - greenmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - -/* Bluemode toggle box */ - frame = gtk_frame_new ("Blue:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 2, 3,0,1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); - - toggle = gtk_radio_button_new_with_label (bluemode_group, "Sine"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - gtk_widget_show (toggle_vbox3); - gtk_widget_show (frame3); - -/* Colormode toggle box */ - frame = gtk_frame_new ("Color Mode:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame, 0, 1, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - 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 (colormode_group, "As specified above"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &do_colormode1); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_colormode1); - gtk_widget_show (toggle); - set_tooltip(tips,toggle,"Create a color-map with the options you specified above (color density/function). The result is visible in the preview image"); - - toggle = gtk_radio_button_new_with_label (bluemode_group, "Apply active gradient to final image"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) Julia_toggle_update, - &do_colormode2); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_colormode2); - gtk_widget_show (toggle); - set_tooltip(tips,toggle,"Create a color-map using a gradient from the gradient editor. The result is only visible in the final image. The preview will be calculated with the color-map derived from the color options above (color density/function)."); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); -/* gtk_widget_show (table); */ - - - /* Buttons */ - - -gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5); - - button = gtk_button_new_with_label("OK"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_ok_callback, - dialog); - 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 start the calculation of the fractal"); - - button = gtk_button_new_with_label("Cancel"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_cancel_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,"Discard any changes and close dialog box"); - - button = gtk_button_new_with_label("About..."); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc)Julia_about_callback,button); - 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 the plug-in and the author"); - -/* - button = gtk_button_new_with_label("Reset"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_reset_callback, - dialog); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); - gtk_widget_show(button); -*/ - /* Done */ - - gtk_widget_show(dialog); - dialog_update_preview(); - - gtk_main(); - gdk_flush(); - if (the_tile != NULL) { - gimp_tile_unref(the_tile, FALSE); - the_tile = NULL; - } /* if */ - - g_free(wint.image); - g_free(wint.wimage); - - return wint.run; -} /* Julia_dialog */ - - -/*****/ - -static void -dialog_update_preview(void) -{ - double left, right, bottom, top; - double dx, dy; - int px, py; - int x, y; - double redstretch, greenstretch, bluestretch; - int r,g,b; - double scale_x, scale_y; - guchar *p_ul, *i, *p; - float ta,tb,tx,ty,txx; - int zaehler,color; - float pi=3.1415926; - - 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); - - xmin = wvals.xmin; - xmax = wvals.xmax; - ymin = wvals.ymin; - ymax = wvals.ymax; - cx=wvals.cx; - cy=wvals.cy; - - redstretch = wvals.redstretch; - greenstretch = wvals.greenstretch; - bluestretch = wvals.bluestretch; - xbild=preview_width; - ybild=preview_height; - xdiff=(xmax-xmin)/xbild; - ydiff=(ymax-ymin)/ybild; - - scale_x = (double) (preview_width - 1) / (right - left); - scale_y = (double) (preview_height - 1) / (bottom - top); - - py = 0; - - p_ul = wint.wimage; - - - - for (y = 0; y < preview_height; y++) { - px = 0; - - for (x = 0; x < preview_width; x++) { - i = wint.image + 3 * (preview_width * py + px); - r = *i++; - g = *i++; - b = *i; - ta=(float)xmin+(float)x*xdiff; - tb=(float)ymin+(float)y*ydiff; - tx=ta; - ty=tb; - zaehler=0; - for (zaehler=0; (zaehler <= wvals.iter) && ((tx*tx+ty*ty)<4); zaehler++) - { - txx=tx*tx-ty*ty+cx; - ty=2.0*tx*ty+cy; - tx=txx; - } - r=g=b=color=zaehler*256/wvals.iter; - switch (wvals.redmode) - { - case SINUS: - r = (int) redstretch*(1.0+sin((r/128.0-1)*pi)); - break; - case COSINUS: - r = (int) redstretch*(1.0+cos((r/128.0-1)*pi)); - break; - default: - break; - } - - switch (wvals.greenmode) - { - case SINUS: - g = (int) greenstretch*(1.0+sin((g/128.0-1)*pi)); - break; - case COSINUS: - g = (int) greenstretch*(1.0+cos((g/128.0-1)*pi)); - break; - default: - break; - } - switch (wvals.bluemode) - { - case SINUS: - b = (int) bluestretch*(1.0+sin((b/128.0-1)*pi)); - break; - case COSINUS: - b = (int) bluestretch*(1.0+cos((b/128.0-1)*pi)); - break; - default: - break; - } - if (r== 256) {r= 255;} - if (g== 256) {g= 255;} - if (b== 256) {b= 255;} - - - p_ul[0] = r; - p_ul[1] = g; - p_ul[2] = b; - p_ul += 3; - px += 1; /* dx; */ - } /* for */ - py +=1; /* dy; */ - } /* 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(); -} /* dialog_update_preview */ - - -/*****/ - -static void -dialog_create_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc) -{ - GtkWidget *label; - GtkWidget *scale; - GtkWidget *entry; - GtkObject *scale_data; - char buf[256]; - - label = gtk_label_new(title); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); - gtk_widget_show(label); - - - scale_data = gtk_adjustment_new(*value, left, right, - (right - left) / 1000, - (right - left) / 1000, - 0); - - gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", - (GtkSignalFunc) dialog_scale_update, - value); - - scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); - gtk_widget_set_usize(scale, SCALE_WIDTH, 0); - gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); - 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); - gtk_object_set_user_data(scale_data, entry); - gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); - sprintf(buf, "%0.4f", *value); - gtk_entry_set_text(GTK_ENTRY(entry), buf); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) dialog_entry_update, - value); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, 0,0,4, 0); - gtk_widget_show(entry); - set_tooltip(tips,entry,desc); - -} /* dialog_create_value */ - -/*****/ - -static 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.4f", *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(); - } /* if */ -} /* dialog_scale_update */ -/*****/ - -static void -dialog_create_int_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc) -{ - GtkWidget *label; - GtkWidget *scale; - GtkWidget *entry; - GtkObject *scale_data; - char buf[256]; - - label = gtk_label_new(title); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); - gtk_widget_show(label); - - - scale_data = gtk_adjustment_new(*value, left, right, - (right - left) / 200, - (right - left) / 200, - 0); - - gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", - (GtkSignalFunc) dialog_scale_int_update, - value); - - scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); - gtk_widget_set_usize(scale, SCALE_WIDTH, 0); - gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); - 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); - gtk_object_set_user_data(scale_data, entry); - gtk_widget_set_usize(entry, ENTRY_WIDTH-20, 0); - sprintf(buf, "%i", (int)*value); - gtk_entry_set_text(GTK_ENTRY(entry), buf); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) dialog_entry_update, - value); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, 0,0,4, 0); - gtk_widget_show(entry); - set_tooltip(tips,entry,desc); - -} /* dialog_create_int_value */ - -/*****/ - -static 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); - - dialog_update_preview(); - } /* if */ -} /* dialog_scale_int_update */ -/*****/ - -static 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(); - } /* if */ - } /* if */ -} /* dialog_entry_update */ - - -static void -dialog_close_callback(GtkWidget *widget, gpointer data) -{ - gtk_main_quit(); -} /* dialog_close_callback */ - - -/*****/ - -static void -dialog_ok_callback(GtkWidget *widget, gpointer data) -{ - wint.run = TRUE; - gtk_widget_destroy(GTK_WIDGET(data)); -} /* dialog_ok_callback */ - - -/*****/ -/* -static void -dialog_reset_callback(GtkWidget *widget, gpointer data) -{ -static Julia_vals_t wvals = { - -2,1,-1.5,1.5,100,0,128,128,128,0,0,0, -}; - gtk_widget_destroy(GTK_WIDGET(data)); - Julia_dialog(); -} -*/ - -/*****/ - -static void -dialog_cancel_callback(GtkWidget *widget, gpointer data) -{ - gtk_widget_destroy(GTK_WIDGET(data)); -} /* dialog_cancel_callback */ - - -static void -Julia_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; - dialog_update_preview(); - - if (do_colormode1) - wvals.colormode = 0; - else if (do_colormode2) - wvals.colormode = 1; - dialog_update_preview(); - -} - -GtkWidget * -Julia_logo_dialog() -{ - GtkWidget *xdlg; - GtkWidget *xlabel; - GtkWidget *xbutton; - GtkWidget *xlogo_box; - GtkWidget *xpreview; - GtkWidget *xframe,*xframe2; - GtkWidget *xvbox; - GtkWidget *xhbox; - char *text; - gchar *temp,*temp2; - char *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)dialog_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)Julia_logo_ok_callback, - xdlg); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->action_area), - xbutton, TRUE, TRUE, 0); - gtk_widget_grab_default(xbutton); - gtk_widget_show(xbutton); - set_tooltip(tips,xbutton,"This will close the information box"); - - xframe = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(xframe), GTK_SHADOW_ETCHED_IN); - gtk_container_border_width(GTK_CONTAINER(xframe), 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->vbox), xframe, TRUE, TRUE, 0); - xvbox = gtk_vbox_new(FALSE, 5); - gtk_container_border_width(GTK_CONTAINER(xvbox), 10); - gtk_container_add(GTK_CONTAINER(xframe), xvbox); - - /* The logo frame & drawing area */ - xhbox = gtk_hbox_new (FALSE, 5); - gtk_box_pack_start (GTK_BOX (xvbox), xhbox, FALSE, TRUE, 0); - - xlogo_box = gtk_vbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (xhbox), xlogo_box, FALSE, FALSE, 0); - - xframe2 = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (xframe2), GTK_SHADOW_IN); - gtk_box_pack_start (GTK_BOX (xlogo_box), xframe2, FALSE, FALSE, 0); - - 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+logo_width*logo_height-1; - for (y = 0; y < logo_height; y++){ - temp2=temp; - for (x = 0; x< logo_width; x++) { - HEADER_PIXEL(datapointer,temp2); temp2+=3;} - gtk_preview_draw_row (GTK_PREVIEW (xpreview), - temp, - 0, y, logo_width); - } - g_free(temp); - gtk_container_add (GTK_CONTAINER (xframe2), xpreview); - gtk_widget_show (xpreview); - gtk_widget_show (xframe2); - gtk_widget_show (xlogo_box); - gtk_widget_show (xhbox); - - xhbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(xvbox), xhbox, TRUE, TRUE, 0); - text = "\nCotting Software Productions\n" - "Bahnhofstrasse 31\n" - "CH-3066 Stettlen (Switzerland)\n\n" - "cotting@mygale.org\n" - "http://www.mygale.org/~cotting\n\n" - "Julia Fractal Chaos Explorer\nPlug-In for the GIMP\n" - "Version 1.01\n"; - xlabel = gtk_label_new(text); - gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0); - gtk_widget_show(xlabel); - - gtk_widget_show(xhbox); - - gtk_widget_show(xvbox); - gtk_widget_show(xframe); - gtk_widget_show(xdlg); - - gtk_main(); - gdk_flush(); - return xdlg; -} diff --git a/plug-ins/Julia/Makefile.am b/plug-ins/Julia/Makefile.am deleted file mode 100644 index 4dc5c3834e..0000000000 --- a/plug-ins/Julia/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -## Process this file with automake to produce Makefile.in - -pluginlibdir = $(gimpplugindir)/plug-ins - -pluginlib_PROGRAMS = Julia - -Julia_SOURCES = \ - Julia.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 - -Julia_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 - - - - - diff --git a/plug-ins/Julia/README b/plug-ins/Julia/README deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Julia/README +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Julia/doc/doc b/plug-ins/Julia/doc/doc deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Julia/doc/doc +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Julia/logo.h b/plug-ins/Julia/logo.h deleted file mode 100644 index cb94ec445f..0000000000 --- a/plug-ins/Julia/logo.h +++ /dev/null @@ -1,788 +0,0 @@ -/* 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}; diff --git a/plug-ins/Makefile.am b/plug-ins/Makefile.am index 18e0aff84a..a44d913122 100644 --- a/plug-ins/Makefile.am +++ b/plug-ins/Makefile.am @@ -9,8 +9,6 @@ SUBDIRS = \ CentralReflection \ Curtain \ Encrypt_Decrypt \ - Julia \ - Mandelbrot \ DigitalSignature \ dbbrowser \ fuse \ diff --git a/plug-ins/Mandelbrot/.cvsignore b/plug-ins/Mandelbrot/.cvsignore deleted file mode 100644 index 8e9f4be24f..0000000000 --- a/plug-ins/Mandelbrot/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -.deps -_libs -.libs -Mandelbrot diff --git a/plug-ins/Mandelbrot/INSTALL b/plug-ins/Mandelbrot/INSTALL deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Mandelbrot/INSTALL +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Mandelbrot/Makefile.am b/plug-ins/Mandelbrot/Makefile.am deleted file mode 100644 index 02c062f4f9..0000000000 --- a/plug-ins/Mandelbrot/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -## Process this file with automake to produce Makefile.in - -pluginlibdir = $(gimpplugindir)/plug-ins - -pluginlib_PROGRAMS = Mandelbrot - -Mandelbrot_SOURCES = \ - Mandelbrot.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 - -Mandelbrot_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 - - - - - diff --git a/plug-ins/Mandelbrot/Mandelbrot.c b/plug-ins/Mandelbrot/Mandelbrot.c deleted file mode 100644 index d143fb5194..0000000000 --- a/plug-ins/Mandelbrot/Mandelbrot.c +++ /dev/null @@ -1,1538 +0,0 @@ -/********************************************************************** - * Mandelbrot Chaos Fractal Explorer Plug-in (Version 1.01) - * 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! - ********************************************************************** - */ - -/* The GIMP -- an image manipulation program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include "gtk/gtk.h" -#include "libgimp/gimp.h" -#include "logo.h" - -/***** Macros *****/ - -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - - -/***** Magic numbers *****/ - -#define PREVIEW_SIZE 128 -#define SCALE_WIDTH 200 -#define ENTRY_WIDTH 60 - -#define SINUS 0 -#define COSINUS 1 -#define NONE 2 - -/***** Types *****/ -typedef struct { - gdouble xmin; - gdouble xmax; - gdouble ymin; - gdouble ymax; - gdouble iter; - gint colormode; - gdouble redstretch; - gdouble greenstretch; - gdouble bluestretch; - gint redmode; - gint greenmode; - gint bluemode; -} mandelbrot_vals_t; - -typedef struct { - GtkWidget *preview; - guchar *image; - guchar *wimage; - gint run; -} mandelbrot_interface_t; - - - -/* Declare local functions. */ - -static void query (void); -static void run (char *name, - int nparams, - GParam *param, - int *nreturn_vals, - GParam **return_vals); - -static void mandelbrot (GDrawable *drawable); -static void mandelbrot_render_row (const guchar *src_row, - guchar *dest_row, - gint row, - gint row_width, - gint bytes); -static void mandelbrot_get_pixel(int x, int y, guchar *pixel); -void transform (short int *, short int *, short int *,double, double, double); - - -static void build_preview_source_image(void); - -static gint mandelbrot_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, const char *desc); -static void dialog_scale_update(GtkAdjustment *adjustment, gdouble *value); -static void dialog_create_int_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc); -static void dialog_scale_int_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_reset_callback(GtkWidget *widget, gpointer data); */ -static void dialog_cancel_callback(GtkWidget *widget, gpointer data); -static void mandelbrot_toggle_update (GtkWidget *widget, - gpointer data); -static float xmin=-2; -static float xmax=1; - -static float ymin=-1.5; -static float ymax=1.5; -static float xbild; -static float ybild; -static float xdiff; -static float ydiff; - -/***** Variables *****/ - -GPlugInInfo PLUG_IN_INFO = -{ - NULL, /* init_proc */ - NULL, /* quit_proc */ - query, /* query_proc */ - run, /* run_proc */ -}; - -static mandelbrot_interface_t wint = { - NULL, /* preview */ - NULL, /* image */ - NULL, /* wimage */ - FALSE /* run */ -}; /* wint */ - -static mandelbrot_vals_t wvals = { - -2.0,1.0,-1.5,1.5,50.0,0,128,128,128,1,1,0, -}; /* wvals */ - -static GDrawable *drawable; -static gint tile_width, tile_height; -static gint img_width, img_height, img_bpp; -static gint sel_x1, sel_y1, sel_x2, sel_y2; -static gint sel_width, sel_height; -static gint preview_width, preview_height; -static GTile *the_tile = NULL; -static double cen_x, cen_y; -static double scale_x, scale_y; - -gint do_redsinus; -gint do_redcosinus; -gint do_rednone; - -gint do_greensinus; -gint do_greencosinus; -gint do_greennone; - -gint do_bluesinus; -gint do_bluecosinus; -gint do_bluenone; - -gint do_colormode1; -gint do_colormode2; - -static GParam *ExternalParam=NULL; -static int ExternalInt; -/***** Functions *****/ - - -GtkWidget * mandelbrot_logo_dialog(void); - - -GtkWidget *maindlg; -GtkWidget *logodlg; -GtkTooltips *tips; -GdkColor tips_fg,tips_bg; - - - -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_FLOAT, "xmin", "xmin fractal image delimiter" }, - { PARAM_FLOAT, "xmax", "xmax fractal image delimiter" }, - { PARAM_FLOAT, "ymin", "ymin fractal image delimiter" }, - { PARAM_FLOAT, "ymax", "ymax fractal image delimiter" }, - { PARAM_FLOAT, "iter", "Iteration value" }, - { PARAM_INT8, "colormode", "0: Apply colormap as specified by the parameters below; 1: Apply active gradient to final image"}, - { PARAM_FLOAT, "redstretch", "Red stretching factor" }, - { PARAM_FLOAT, "greenstretch","Green stretching factor" }, - { PARAM_FLOAT, "bluestretch", "Blue stretching factor" }, - { 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)" }, - }; - static GParamDef *return_vals = NULL; - static int nargs = sizeof (args) / sizeof (args[0]); - static int nreturn_vals = 0; - - gimp_install_procedure ("plug_in_mandelbrot", - "Mandelbrot Chaos Fractal Explorer Plug-In", - "Fills the active painting area with a Mandelbrot fractal.", - "Daniel Cotting (cotting@mygale.org, www.mygale.org/~cotting)", - "Daniel Cotting (cotting@mygale.org, www.mygale.org/~cotting)", - "1th May 1997", - "/Filters/Render/Mandelbrot Fractal", - "RGB*", - PROC_PLUG_IN, - nargs, nreturn_vals, - args, return_vals); -} - - -static void -run (char *name, - int nparams, - GParam *param, - int *nreturn_vals, - GParam **return_vals) -{ - static GParam values[1]; -/* GDrawable *drawable; */ - gint32 image_ID; - GRunModeType run_mode; - double xhsiz, yhsiz; - int pwidth, pheight; - GStatusType status = STATUS_SUCCESS; - - - run_mode = param[0].data.d_int32; - - values[0].type = PARAM_STATUS; - values[0].data.d_status = status; - - *nreturn_vals = 1; - *return_vals = values; - - - - /* Get the specified drawable */ - drawable = gimp_drawable_get (param[2].data.d_drawable); - image_ID = param[1].data.d_image; - tile_width = gimp_tile_width(); - tile_height = gimp_tile_height(); - - img_width = gimp_drawable_width(drawable->id); - img_height = gimp_drawable_height(drawable->id); - img_bpp = gimp_drawable_bpp(drawable->id); - - gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2); - - sel_width = sel_x2 - sel_x1; - sel_height = sel_y2 - sel_y1; - - cen_x = (double) (sel_x2 - 1 + sel_x1) / 2.0; - cen_y = (double) (sel_y2 - 1 + sel_y1) / 2.0; - - xhsiz = (double) (sel_width - 1) / 2.0; - yhsiz = (double) (sel_height - 1) / 2.0; - - if (xhsiz < yhsiz) { - scale_x = yhsiz / xhsiz; - scale_y = 1.0; - } else if (xhsiz > yhsiz) { - scale_x = 1.0; - scale_y = xhsiz / yhsiz; - } else { - scale_x = 1.0; - scale_y = 1.0; - } /* else */ - - /* Calculate preview size */ - if (sel_width > sel_height) { - pwidth = MIN(sel_width, PREVIEW_SIZE); - pheight = sel_height * pwidth / sel_width; - } else { - pheight = MIN(sel_height, PREVIEW_SIZE); - pwidth = sel_width * pheight / sel_height; - } /* else */ - - preview_width = MAX(pwidth, 2); /* Min size is 2 */ - preview_height = MAX(pheight, 2); - - /* See how we will run */ - switch (run_mode) { - case RUN_INTERACTIVE: - /* Possibly retrieve data */ - - gimp_get_data("plug_in_mandelbrot", &wvals); - - /* Get information from the dialog */ - - if (!mandelbrot_dialog()) - return; - - break; - - case RUN_NONINTERACTIVE: - /* Make sure all the arguments are present */ - - if (nparams != 15) - status = STATUS_CALLING_ERROR; - - if (status == STATUS_SUCCESS) - - wvals.xmin = param[3].data.d_float; - wvals.xmax = param[4].data.d_float; - wvals.ymin = param[5].data.d_float; - wvals.ymax = param[6].data.d_float; - wvals.iter = param[7].data.d_float; - wvals.colormode = param[8].data.d_int8; - wvals.redstretch = param[9].data.d_float; - wvals.greenstretch = param[10].data.d_float; - wvals.bluestretch = param[11].data.d_float; - wvals.redmode = param[12].data.d_int8; - wvals.greenmode = param[13].data.d_int8; - wvals.bluemode = param[14].data.d_int8; - - break; - - case RUN_WITH_LAST_VALS: - /* Possibly retrieve data */ - - gimp_get_data("plug_in_mandelbrot", &wvals); - break; - - default: - break; - } /* switch */ - - - if (status == STATUS_SUCCESS) - { - /* Make sure that the drawable is indexed or RGB color */ - if (gimp_drawable_color (drawable->id)) - { - gimp_progress_init ("Rendering mandelbrot fractal..."); - - /* Set the tile cache size */ - - gimp_tile_cache_ntiles(2*(drawable->width / gimp_tile_width()+1)); - - /* Run! */ - - -/* gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () - + 1));*/ - mandelbrot (drawable); - if (wvals.colormode==1) ExternalParam = gimp_run_procedure("plug_in_gradmap",&ExternalInt, - PARAM_INT32, run_mode, - PARAM_IMAGE, image_ID, - PARAM_DRAWABLE, drawable->id, - PARAM_END); - - if (run_mode != RUN_NONINTERACTIVE) - gimp_displays_flush(); - - /* Store data */ - - if (run_mode == RUN_INTERACTIVE) - gimp_set_data("plug_in_mandelbrot", &wvals, sizeof(mandelbrot_vals_t)); - } - else - { -/* gimp_message("This filter only applies on RGB-images"); */ - status = STATUS_EXECUTION_ERROR; - } - } - - values[0].data.d_status = status; - - gimp_drawable_detach (drawable); -} - -/*****/ - -static void -mandelbrot_get_pixel(int x, int y, guchar *pixel) -{ - static gint row = -1; - static gint col = -1; - - gint newcol, newrow; - gint newcoloff, newrowoff; - guchar *p; - int i; - - if ((x < 0) || (x >= img_width) || (y < 0) || (y >= img_height)) { - pixel[0] = 0; - pixel[1] = 0; - pixel[2] = 0; - pixel[3] = 0; - - return; - } /* if */ - - newcol = x / tile_width; /* The compiler should optimize this */ - newcoloff = x % tile_width; - newrow = y / tile_height; - newrowoff = y % tile_height; - - if ((col != newcol) || (row != newrow) || (the_tile == NULL)) { - - if (the_tile != NULL) - gimp_tile_unref(the_tile, FALSE); - - the_tile = gimp_drawable_get_tile(drawable, FALSE, newrow, newcol); - gimp_tile_ref(the_tile); - col = newcol; - row = newrow; - } /* if */ - p = the_tile->data + the_tile->bpp * (the_tile->ewidth * newrowoff + newcoloff); - for (i = img_bpp; i; i--) - *pixel++ = *p++; - -} /* mandelbrot_get_pixel */ - - - -static void -mandelbrot_render_row (const guchar *src_row, - guchar *dest_row, - gint row, - gint row_width, - gint bytes) - - - - -{ - gint col, bytenum; - double redstretch,greenstretch, bluestretch; - for (col = 0; col < row_width ; col++) - { - float a,tb,x,y,xx; - int zaehler,color,r,g,b; - float pi=3.1415926; - - redstretch = wvals.redstretch; - greenstretch = wvals.greenstretch; - bluestretch = wvals.bluestretch; -/* v1 = (short int)src_row[col*bytes]; */ -/* v2 = (short int)src_row[col*bytes +1]; */ -/* v3 = (short int)src_row[col*bytes +2]; */ - -/* transform(&v1, &v2, &v3, redstretch, greenstretch, bluestretch); */ - a=xmin+col*xdiff; - tb=ymin+row*ydiff; - x=0; - y=0; - zaehler=0; - for (zaehler=0; (zaehler <= wvals.iter) && ((x*x+y*y)<4); zaehler++) - { - xx=x*x-y*y+a; - y=2*x*y+tb; - x=xx; - } - color=zaehler*256/wvals.iter; - r=g=b=color; - switch (wvals.redmode) - { - case SINUS: - r = (int) redstretch*(1.0+sin((r/128.0-1)*pi)); - break; - case COSINUS: - r = (int) redstretch*(1.0+cos((r/128.0-1)*pi)); - break; - default: - break; - } - - switch (wvals.greenmode) - { - case SINUS: - g = (int) greenstretch*(1.0+sin((g/128.0-1)*pi)); - break; - case COSINUS: - g = (int) greenstretch*(1.0+cos((g/128.0-1)*pi)); - break; - default: - break; - } - switch (wvals.bluemode) - { - case SINUS: - b = (int) bluestretch*(1.0+sin((b/128.0-1)*pi)); - break; - case COSINUS: - b = (int) bluestretch*(1.0+cos((b/128.0-1)*pi)); - break; - default: - break; - } - if (r== 256) {r= 255;} - if (g== 256) {g= 255;} - if (b== 256) {b= 255;} - - dest_row[col*bytes] = (int)r; - dest_row[col*bytes +1] = (int)g; - dest_row[col*bytes +2] = (int)b; - - if (bytes>3) - for (bytenum = 3; bytenumid, &x1, &y1, &x2, &y2); - - /* Get the size of the input image. (This will/must be the same - * as the size of the output image. - */ - width = drawable->width; - height = drawable->height; - bytes = drawable->bpp; - - /* allocate row buffers */ - src_row = (guchar *) malloc ((x2 - x1) * bytes); - dest_row = (guchar *) malloc ((x2 - x1) * bytes); - - - /* initialize the pixel regions */ - gimp_pixel_rgn_init (&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); - gimp_pixel_rgn_init (&destPR, drawable, 0, 0, width, height, TRUE, TRUE); - -/* - redstretch = wvals.redstretch; - greenstretch = wvals.greenstretch; - bluestretch = wvals.bluestretch; -*/ - xbild=width; - ybild=height; - xdiff=(xmax-xmin)/xbild; - ydiff=(ymax-ymin)/ybild; - - for (row = y1; row < y2; row++) - - { - gimp_pixel_rgn_get_row (&srcPR, src_row, x1, row, (x2 - x1)); - - mandelbrot_render_row (src_row, - dest_row, - row, - (x2 - x1), - bytes); - - /* store the dest */ - gimp_pixel_rgn_set_row (&destPR, dest_row, x1, row, (x2 - x1)); - - if ((row % 10) == 0) - gimp_progress_update ((double) row / (double) (y2 - y1)); - } - - /* update the processed region */ - gimp_drawable_flush (drawable); - gimp_drawable_merge_shadow (drawable->id, TRUE); - gimp_drawable_update (drawable->id, x1, y1, (x2 - x1), (y2 - y1)); - - free (src_row); - free (dest_row); -} - -/*****/ - -static void -build_preview_source_image(void) -{ - double left, right, bottom, top; - double px, py; - double dx, dy; - int x, y; - guchar *p; - guchar pixel[4]; - - wint.image = g_malloc(preview_width * preview_height * 3 * sizeof(guchar)); - wint.wimage = g_malloc(preview_width * preview_height * 3 * sizeof(guchar)); - - 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); - - py = top; - - p = wint.image; - - for (y = 0; y < preview_height; y++) { - px = left; - for (x = 0; x < preview_width; x++) { - mandelbrot_get_pixel((int) px, (int) py, pixel); - - *p++ = pixel[0]; - *p++ = pixel[1]; - *p++ = pixel[2]; - - px += dx; - } /* for */ - - py += dy; - } /* for */ -} /* build_preview_source_image */ - -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 -mandelbrot_dialog(void) -{ - GtkWidget *dialog; - GtkWidget *top_table; - GtkWidget *top_table2; - GtkWidget *frame; - GtkWidget *frame2; - GtkWidget *frame3; - GtkWidget *toggle; - GtkWidget *toggle_vbox; - GtkWidget *toggle_vbox2; - GtkWidget *toggle_vbox3; - GtkWidget *table, *table6; - GtkWidget *button; - gint argc; - gchar **argv; - guchar *color_cube; - GSList *redmode_group = NULL; - GSList *greenmode_group = NULL; - GSList *bluemode_group = NULL; - GSList *colormode_group = NULL; - - do_redsinus = (wvals.redmode == SINUS); - do_redcosinus = (wvals.redmode == COSINUS); - do_rednone = (wvals.redmode == NONE); - do_greensinus = (wvals.greenmode == SINUS); - do_greencosinus = (wvals.greenmode == COSINUS); - do_greennone = (wvals.greenmode == NONE); - do_bluesinus = (wvals.bluemode == SINUS); - do_bluecosinus = (wvals.bluemode == COSINUS); - do_bluenone = (wvals.bluemode == NONE); - do_colormode1 = (wvals.colormode == 0); - do_colormode2 = (wvals.colormode == 1); - - - argc = 1; - argv = g_new(gchar *, 1); - argv[0] = g_strdup("mandelbrot"); - - gtk_init(&argc, &argv); - - gtk_preview_set_gamma(gimp_gamma()); - gtk_preview_set_install_cmap(gimp_install_cmap()); - color_cube = gimp_color_cube(); - gtk_preview_set_color_cube(color_cube[0], color_cube[1], color_cube[2], color_cube[3]); - - gtk_widget_set_default_visual(gtk_preview_get_visual()); - gtk_widget_set_default_colormap(gtk_preview_get_cmap()); - - build_preview_source_image(); - dialog = maindlg = gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dialog), "Mandelbrot Fractal Explorer (cotting@mygale.org)"); - gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); - gtk_container_border_width(GTK_CONTAINER(dialog), 0); - gtk_signal_connect(GTK_OBJECT(dialog), "destroy", - (GtkSignalFunc) dialog_close_callback, - NULL); - - top_table = gtk_table_new(4, 4, FALSE); - gtk_container_border_width(GTK_CONTAINER(top_table), 0); - gtk_table_set_row_spacings(GTK_TABLE(top_table), 0); - 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_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 ("Fractal options:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table), frame, 1, 4, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame); - - 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(5, 5, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), 5); - gtk_table_set_row_spacings(GTK_TABLE(table), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox),table, FALSE, FALSE, 0); - gtk_widget_show(table); - dialog_create_value("XMIN", GTK_TABLE(table), 0, &wvals.xmin,-3,3, "Change the first (minimal) x-coordinate delimitation"); - dialog_create_value("XMAX", GTK_TABLE(table), 1, &wvals.xmax,-3,3, "Change the second (maximal) x-coordinate delimitation"); - dialog_create_value("YMIN", GTK_TABLE(table), 2, &wvals.ymin,-3,3, "Change the first (minimal) y-coordinate delimitation"); - dialog_create_value("YMAX", GTK_TABLE(table), 3, &wvals.ymax,-3,3, "Change the second (maximal) y-coordinate delimitation"); - dialog_create_value("ITER", GTK_TABLE(table), 4, &wvals.iter,0,1000, "Change the iteration value. The higher it is, the more details will be calculated, which will take more time."); - gtk_widget_show(table); - gtk_widget_show(toggle_vbox); - gtk_widget_show(frame); - - - frame2 = gtk_frame_new ("Color options:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table), frame2, 0, 4, 1, 3, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame2); - - toggle_vbox2 = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox2), 0); - gtk_container_add (GTK_CONTAINER (frame2), toggle_vbox2); - gtk_widget_show(toggle_vbox2); - - top_table2 = gtk_table_new(5, 5, FALSE); - gtk_container_border_width(GTK_CONTAINER(top_table2), 10); - gtk_table_set_row_spacings(GTK_TABLE(top_table2), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox2), top_table2, FALSE, FALSE, 0); - gtk_widget_show(top_table2); - - - frame = gtk_frame_new ("Color density:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame, 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show(frame); - - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show(toggle_vbox); - - table6 = gtk_table_new(3, 3, FALSE); - gtk_container_border_width(GTK_CONTAINER(table6), 0); - gtk_table_set_row_spacings(GTK_TABLE(table6), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox), table6, FALSE, FALSE, 0); - gtk_widget_show(table6); - dialog_create_int_value("Red", GTK_TABLE(table6), 0, &wvals.redstretch,0,128,"Change the intensity of the red channel"); - dialog_create_int_value("Green", GTK_TABLE(table6), 1, &wvals.greenstretch,0,128,"Change the intensity of the green channel"); - dialog_create_int_value("Blue", GTK_TABLE(table6), 2, &wvals.bluestretch,0,128,"Change the intensity of the blue channel"); - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - frame3 = gtk_frame_new ("Color function:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame3, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame3); - - toggle_vbox3 = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox3), 0); - gtk_container_add (GTK_CONTAINER (frame3), toggle_vbox3); - gtk_widget_show (toggle_vbox3); - - table6 = gtk_table_new(4, 4, FALSE); - gtk_container_border_width(GTK_CONTAINER(table6), 0); - gtk_table_set_row_spacings(GTK_TABLE(table6), 0); - gtk_box_pack_start(GTK_BOX(toggle_vbox3), table6, FALSE, FALSE, 0); - gtk_widget_show(table6); - - frame = gtk_frame_new ("Red:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); -/* <-------------------------------/ */ - toggle = gtk_radio_button_new_with_label (redmode_group, "Sine"); - redmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - -/* Greenmode toggle box */ - frame = gtk_frame_new ("Green:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 1, 2, 0,1 , GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); - -/* <-----/ */ - toggle = gtk_radio_button_new_with_label (greenmode_group, "Sine"); - greenmode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - - -/* Bluemode toggle box */ - frame = gtk_frame_new ("Blue:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (table6), frame, 2, 3,0,1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - gtk_widget_show (frame); - toggle_vbox = gtk_vbox_new (FALSE, 0); - gtk_container_border_width (GTK_CONTAINER (toggle_vbox), 0); - gtk_container_add (GTK_CONTAINER (frame), toggle_vbox); - gtk_widget_show (toggle_vbox); - - toggle = gtk_radio_button_new_with_label (bluemode_group, "Sine"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &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"); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); - gtk_widget_show (toggle_vbox3); - gtk_widget_show (frame3); - -/* Colormode toggle box */ - frame = gtk_frame_new ("Color Mode:"); - gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); - gtk_table_attach (GTK_TABLE (top_table2), frame, 0, 1, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 3, 3); - 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 (colormode_group, "As specified above"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &do_colormode1); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_colormode1); - gtk_widget_show (toggle); - set_tooltip(tips,toggle,"Create a color-map with the options you specified above (color density/function). The result is visible in the preview image"); - - toggle = gtk_radio_button_new_with_label (bluemode_group, "Apply active gradient to final image"); - bluemode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (toggle_vbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - (GtkSignalFunc) mandelbrot_toggle_update, - &do_colormode2); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (toggle), do_colormode2); - gtk_widget_show (toggle); - set_tooltip(tips,toggle,"Create a color-map using a gradient from the gradient editor. The result is only visible in the final image. The preview will be calculated with the color-map derived from the color options above (color density/function)."); - - gtk_widget_show (toggle_vbox); - gtk_widget_show (frame); -/* gtk_widget_show (table); */ - - - /* Buttons */ - - -gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5); - - button = gtk_button_new_with_label("OK"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_ok_callback, - dialog); - 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 start the calculation of the fractal"); - - button = gtk_button_new_with_label("Cancel"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_cancel_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,"Discard any changes and close dialog box"); - - button = gtk_button_new_with_label("About..."); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc)mandelbrot_about_callback,button); - 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 the plug-in and the author"); - - - -/* - button = gtk_button_new_with_label("Reset"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) dialog_reset_callback, - dialog); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0); - gtk_widget_show(button); -*/ - /* Done */ - - gtk_widget_show(dialog); - dialog_update_preview(); - - gtk_main(); - gdk_flush(); - if (the_tile != NULL) { - gimp_tile_unref(the_tile, FALSE); - the_tile = NULL; - } /* if */ - - g_free(wint.image); - g_free(wint.wimage); - - return wint.run; -} /* mandelbrot_dialog */ - - -/*****/ - -static void -dialog_update_preview(void) -{ - double left, right, bottom, top; - double dx, dy; - int px, py; - int x, y; - double redstretch, greenstretch, bluestretch; - int r,g,b; - double scale_x, scale_y; - guchar *p_ul, *i, *p; - float ta,tb,tx,ty,txx; - int zaehler,color; - float pi=3.1415926; - - 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); - - xmin = wvals.xmin; - xmax = wvals.xmax; - ymin = wvals.ymin; - ymax = wvals.ymax; - redstretch = wvals.redstretch; - greenstretch = wvals.greenstretch; - bluestretch = wvals.bluestretch; - xbild=preview_width; - ybild=preview_height; - xdiff=(xmax-xmin)/xbild; - ydiff=(ymax-ymin)/ybild; - - scale_x = (double) (preview_width - 1) / (right - left); - scale_y = (double) (preview_height - 1) / (bottom - top); - - py = 0; - - p_ul = wint.wimage; - - - - for (y = 0; y < preview_height; y++) { - px = 0; - - for (x = 0; x < preview_width; x++) { - i = wint.image + 3 * (preview_width * py + px); - r = *i++; - g = *i++; - b = *i; - ta=(float)xmin+(float)x*xdiff; - tb=(float)ymin+(float)y*ydiff; - tx=0; - ty=0; - zaehler=0; - for (zaehler=0; (zaehler <= wvals.iter) && ((tx*tx+ty*ty)<4); zaehler++) - { - txx=tx*tx-ty*ty+ta; - ty=2.0*tx*ty+tb; - tx=txx; - } - r=g=b=color=zaehler*256/wvals.iter; - switch (wvals.redmode) - { - case SINUS: - r = (int) redstretch*(1.0+sin((r/128.0-1)*pi)); - break; - case COSINUS: - r = (int) redstretch*(1.0+cos((r/128.0-1)*pi)); - break; - default: - break; - } - - switch (wvals.greenmode) - { - case SINUS: - g = (int) greenstretch*(1.0+sin((g/128.0-1)*pi)); - break; - case COSINUS: - g = (int) greenstretch*(1.0+cos((g/128.0-1)*pi)); - break; - default: - break; - } - switch (wvals.bluemode) - { - case SINUS: - b = (int) bluestretch*(1.0+sin((b/128.0-1)*pi)); - break; - case COSINUS: - b = (int) bluestretch*(1.0+cos((b/128.0-1)*pi)); - break; - default: - break; - } - if (r== 256) {r= 255;} - if (g== 256) {g= 255;} - if (b== 256) {b= 255;} - - - p_ul[0] = r; - p_ul[1] = g; - p_ul[2] = b; - p_ul += 3; - px += 1; /* dx; */ - } /* for */ - py +=1; /* dy; */ - } /* 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(); -} /* dialog_update_preview */ - - -/*****/ - -static void -dialog_create_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc) -{ - GtkWidget *label; - GtkWidget *scale; - GtkWidget *entry; - GtkObject *scale_data; - char buf[256]; - - label = gtk_label_new(title); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); - gtk_widget_show(label); - - - scale_data = gtk_adjustment_new(*value, left, right, - (right - left) / 1000, - (right - left) / 1000, - 0); - - gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", - (GtkSignalFunc) dialog_scale_update, - value); - - scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); - gtk_widget_set_usize(scale, SCALE_WIDTH, 0); - gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); - 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); - gtk_object_set_user_data(scale_data, entry); - gtk_widget_set_usize(entry, ENTRY_WIDTH, 0); - sprintf(buf, "%0.4f", *value); - gtk_entry_set_text(GTK_ENTRY(entry), buf); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) dialog_entry_update, - value); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, 0,0,4, 0); - gtk_widget_show(entry); - set_tooltip(tips,entry,desc); - -} /* dialog_create_value */ - -/*****/ - -static 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.4f", *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(); - } /* if */ -} /* dialog_scale_update */ - - -/*****/ -static void -dialog_create_int_value(char *title, GtkTable *table, int row, gdouble *value, - int left, int right, const char *desc) -{ - GtkWidget *label; - GtkWidget *scale; - GtkWidget *entry; - GtkObject *scale_data; - char buf[256]; - - label = gtk_label_new(title); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 4, 0); - gtk_widget_show(label); - - - scale_data = gtk_adjustment_new(*value, left, right, - (right - left) / 200, - (right - left) / 200, - 0); - - gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed", - (GtkSignalFunc) dialog_scale_int_update, - value); - - scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data)); - gtk_widget_set_usize(scale, SCALE_WIDTH, 0); - gtk_table_attach(table, scale, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); - 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); - gtk_object_set_user_data(scale_data, entry); - gtk_widget_set_usize(entry, ENTRY_WIDTH-20, 0); - sprintf(buf, "%i", (int)*value); - gtk_entry_set_text(GTK_ENTRY(entry), buf); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) dialog_entry_update, - value); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1, 0,0,4, 0); - gtk_widget_show(entry); - set_tooltip(tips,entry,desc); - -} /* dialog_create_int_value */ - -/*****/ - -static 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); - - dialog_update_preview(); - } /* if */ -} /* dialog_scale_int_update */ -/*****/ - -static 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(); - } /* if */ - } /* if */ -} /* dialog_entry_update */ - - -static void -dialog_close_callback(GtkWidget *widget, gpointer data) -{ - gtk_main_quit(); -} /* dialog_close_callback */ - - -/*****/ - -static void -dialog_ok_callback(GtkWidget *widget, gpointer data) -{ - wint.run = TRUE; - gtk_widget_destroy(GTK_WIDGET(data)); -} /* dialog_ok_callback */ - - -/*****/ -/* -static void -dialog_reset_callback(GtkWidget *widget, gpointer data) -{ -static mandelbrot_vals_t wvals = { - -2,1,-1.5,1.5,100,0,128,128,128,0,0,0, -}; - gtk_widget_destroy(GTK_WIDGET(data)); - mandelbrot_dialog(); -} -*/ - -/*****/ - -static void -dialog_cancel_callback(GtkWidget *widget, gpointer data) -{ - gtk_widget_destroy(GTK_WIDGET(data)); -} /* dialog_cancel_callback */ - - -static void -mandelbrot_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; - dialog_update_preview(); - - if (do_colormode1) - wvals.colormode = 0; - else if (do_colormode2) - wvals.colormode = 1; - dialog_update_preview(); - -} - -GtkWidget * -mandelbrot_logo_dialog() -{ - GtkWidget *xdlg; - GtkWidget *xlabel; - GtkWidget *xbutton; - GtkWidget *xlogo_box; - GtkWidget *xpreview; - GtkWidget *xframe,*xframe2; - GtkWidget *xvbox; - GtkWidget *xhbox; - char *text; - gchar *temp,*temp2; - char *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)dialog_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)mandelbrot_logo_ok_callback, - xdlg); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->action_area), - xbutton, TRUE, TRUE, 0); - gtk_widget_grab_default(xbutton); - gtk_widget_show(xbutton); - set_tooltip(tips,xbutton,"This will close the information box"); - - xframe = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(xframe), GTK_SHADOW_ETCHED_IN); - gtk_container_border_width(GTK_CONTAINER(xframe), 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->vbox), xframe, TRUE, TRUE, 0); - xvbox = gtk_vbox_new(FALSE, 5); - gtk_container_border_width(GTK_CONTAINER(xvbox), 10); - gtk_container_add(GTK_CONTAINER(xframe), xvbox); - - /* The logo frame & drawing area */ - xhbox = gtk_hbox_new (FALSE, 5); - gtk_box_pack_start (GTK_BOX (xvbox), xhbox, FALSE, TRUE, 0); - - xlogo_box = gtk_vbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (xhbox), xlogo_box, FALSE, FALSE, 0); - - xframe2 = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (xframe2), GTK_SHADOW_IN); - gtk_box_pack_start (GTK_BOX (xlogo_box), xframe2, FALSE, FALSE, 0); - - 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+logo_width*logo_height-1; - for (y = 0; y < logo_height; y++){ - temp2=temp; - for (x = 0; x< logo_width; x++) { - HEADER_PIXEL(datapointer,temp2); temp2+=3;} - gtk_preview_draw_row (GTK_PREVIEW (xpreview), - temp, - 0, y, logo_width); - } - g_free(temp); - gtk_container_add (GTK_CONTAINER (xframe2), xpreview); - gtk_widget_show (xpreview); - gtk_widget_show (xframe2); - gtk_widget_show (xlogo_box); - gtk_widget_show (xhbox); - - xhbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(xvbox), xhbox, TRUE, TRUE, 0); - text = "\nCotting Software Productions\n" - "Bahnhofstrasse 31\n" - "CH-3066 Stettlen (Switzerland)\n\n" - "cotting@mygale.org\n" - "http://www.mygale.org/~cotting\n\n" - "Mandelbrot Fractal Chaos Explorer\nPlug-In for the GIMP\n" - "Version 1.01\n"; - xlabel = gtk_label_new(text); - gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0); - gtk_widget_show(xlabel); - - gtk_widget_show(xhbox); - - gtk_widget_show(xvbox); - gtk_widget_show(xframe); - gtk_widget_show(xdlg); - - gtk_main(); - gdk_flush(); - return xdlg; -} diff --git a/plug-ins/Mandelbrot/README b/plug-ins/Mandelbrot/README deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Mandelbrot/README +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Mandelbrot/doc/doc b/plug-ins/Mandelbrot/doc/doc deleted file mode 100644 index 5e53dcbbc9..0000000000 --- a/plug-ins/Mandelbrot/doc/doc +++ /dev/null @@ -1,75 +0,0 @@ -------------------------------------------- - 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. -------------------------------------------- - - -------------------------------------------- - 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... - - 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 - 35 to 40 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 - ------------------------------------------- - \ No newline at end of file diff --git a/plug-ins/Mandelbrot/logo.h b/plug-ins/Mandelbrot/logo.h deleted file mode 100644 index cb94ec445f..0000000000 --- a/plug-ins/Mandelbrot/logo.h +++ /dev/null @@ -1,788 +0,0 @@ -/* 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}; diff --git a/plug-ins/common/CML_explorer.c b/plug-ins/common/CML_explorer.c index 51cf092387..9db5353c97 100644 --- a/plug-ins/common/CML_explorer.c +++ b/plug-ins/common/CML_explorer.c @@ -1300,6 +1300,7 @@ DIALOG () GtkWidget *dlg; GtkWidget *hbox; GtkWidget *button; + GtkTooltips *tooltips; gchar **argv; gint argc; @@ -1489,7 +1490,6 @@ DIALOG () random_sensitives[3].logic = FALSE; { GtkWidget *button; - GtkTooltips *tooltips; button = gtkW_vbox_add_button (box, "Switch to \"from seed\" with the last seed", (GtkSignalFunc) CML_set_or_randomize_seed_callback, @@ -1605,6 +1605,9 @@ DIALOG () preview_update (); gtk_main (); + + gtk_object_unref (GTK_OBJECT (tooltips)); + gdk_flush (); return INTERFACE.run; diff --git a/plug-ins/common/randomize.c b/plug-ins/common/randomize.c index 9a1b4594aa..d780a1ab8a 100644 --- a/plug-ins/common/randomize.c +++ b/plug-ins/common/randomize.c @@ -253,6 +253,7 @@ static void set_tooltip( ); static void setup_tooltips(); +static GtkTooltips *tips; /************************************ Guts ***********************************/ @@ -934,6 +935,7 @@ randomize_dialog() gtk_widget_show(dlg); gtk_main(); + gtk_object_unref (GTK_OBJECT (tips)); gdk_flush(); /* * Figure out which type of randomization to apply. @@ -1029,7 +1031,6 @@ randomize_text_update(GtkWidget *widget, gpointer data) { /* * TOOLTIPS ROUTINES */ -static GtkTooltips *tips; void setup_tooltips(GtkWidget *parent) diff --git a/plug-ins/randomize/randomize.c b/plug-ins/randomize/randomize.c index 9a1b4594aa..d780a1ab8a 100644 --- a/plug-ins/randomize/randomize.c +++ b/plug-ins/randomize/randomize.c @@ -253,6 +253,7 @@ static void set_tooltip( ); static void setup_tooltips(); +static GtkTooltips *tips; /************************************ Guts ***********************************/ @@ -934,6 +935,7 @@ randomize_dialog() gtk_widget_show(dlg); gtk_main(); + gtk_object_unref (GTK_OBJECT (tips)); gdk_flush(); /* * Figure out which type of randomization to apply. @@ -1029,7 +1031,6 @@ randomize_text_update(GtkWidget *widget, gpointer data) { /* * TOOLTIPS ROUTINES */ -static GtkTooltips *tips; void setup_tooltips(GtkWidget *parent) diff --git a/plug-ins/refract/refmain.c b/plug-ins/refract/refmain.c index 5fcb32278c..ee0c2357fc 100644 --- a/plug-ins/refract/refmain.c +++ b/plug-ins/refract/refmain.c @@ -422,6 +422,7 @@ refract_dialog() gtk_widget_show (dlg); gtk_main (); + gtk_object_unref (GTK_OBJECT (tooltips)); gdk_flush (); return refractint.run; diff --git a/plug-ins/warp/warp.c b/plug-ins/warp/warp.c index 9c1efbf58b..57e9b93425 100644 --- a/plug-ins/warp/warp.c +++ b/plug-ins/warp/warp.c @@ -825,6 +825,7 @@ warp_dialog (GDrawable *drawable) gtk_widget_show (dlg); gtk_main (); + gtk_object_unref (GTK_OBJECT (tooltips)); gdk_flush (); /* determine wrap type */