gimp/plug-ins/fractal-explorer/fractal-explorer.h

215 lines
4.8 KiB
C

#ifndef __FRACTALEXPLORER_H__
#define __FRACTALEXPLORER_H__
/**********************************************************************
Magic numbers
*********************************************************************/
#define PREVIEW_SIZE 256
#define ENTRY_WIDTH 60
#define MAX_LOAD_LINE 256
#define GR_WIDTH 325
#define MAXNCOLORS 8192
#define MAXSTRLEN 256
#define PLUG_IN_PROC "plug-in-fractalexplorer"
#define PLUG_IN_BINARY "fractal-explorer"
#define PLUG_IN_ROLE "gimp-fractal-explorer"
#define FRACTAL_HEADER "Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>\n"
#define fractalexplorer_HEADER "Fractal Explorer Plug-In Version 2 - (c) 1997 <cotting@mygale.org>\n"
enum
{
SINUS,
COSINUS,
NONE
};
enum
{
TYPE_MANDELBROT,
TYPE_JULIA,
TYPE_BARNSLEY_1,
TYPE_BARNSLEY_2,
TYPE_BARNSLEY_3,
TYPE_SPIDER,
TYPE_MAN_O_WAR,
TYPE_LAMBDA,
TYPE_SIERPINSKI,
NUM_TYPES
};
/**********************************************************************
Types
*********************************************************************/
typedef struct
{
gint fractaltype;
gdouble xmin;
gdouble xmax;
gdouble ymin;
gdouble ymax;
gdouble iter;
gdouble cx;
gdouble cy;
gint colormode;
gdouble redstretch;
gdouble greenstretch;
gdouble bluestretch;
gint redmode;
gint greenmode;
gint bluemode;
gboolean redinvert;
gboolean greeninvert;
gboolean blueinvert;
gboolean alwayspreview;
gint ncolors;
gboolean gradinvert;
gboolean useloglog;
} explorer_vals_t;
typedef struct
{
GtkWidget *preview;
guchar *wimage;
gint run;
} explorer_interface_t;
/* typedef gint colorvalue[3]; */
typedef struct
{
guchar r, g, b;
} gucharRGB;
typedef gucharRGB clrmap[MAXNCOLORS];
typedef guchar vlumap[MAXNCOLORS];
typedef struct
{
GtkWidget *text;
GtkAdjustment *data;
} scaledata;
typedef struct _DialogElements DialogElements;
struct _DialogElements
{
GtkWidget *type[NUM_TYPES];
GtkWidget *xmin;
GtkWidget *xmax;
GtkWidget *ymin;
GtkWidget *ymax;
GtkWidget *iter;
GtkWidget *cx;
GtkWidget *cy;
GtkWidget *ncol;
GtkWidget *useloglog;
GtkWidget *red;
GtkWidget *green;
GtkWidget *blue;
GtkWidget *redmode[3];
GtkWidget *redinvert;
GtkWidget *greenmode[3];
GtkWidget *greeninvert;
GtkWidget *bluemode[3];
GtkWidget *blueinvert;
GtkWidget *colormode[2];
};
typedef struct DFigObj
{
gchar *name; /* Trailing name of file */
gchar *filename; /* Filename itself */
gchar *draw_name; /* Name of the drawing */
explorer_vals_t opts; /* Options enforced when fig saved */
GtkWidget *list_item;
GtkWidget *label_widget;
GtkWidget *pixmap_widget;
gint obj_status;
} fractalexplorerOBJ;
typedef struct GigObj
{
gchar *name; /* Trailing name of file */
gchar *filename; /* Filename itself */
gchar *draw_name; /* Name of the drawing */
gint typus;
GtkWidget *list_item;
GtkWidget *label_widget;
GtkWidget *pixmap_widget;
gint obj_status;
} gradientOBJ;
typedef struct _fractalexplorerListOptions
{
GtkWidget *query_box;
GtkWidget *name_entry;
GtkWidget *list_entry;
fractalexplorerOBJ *obj;
gint created;
} fractalexplorerListOptions;
/* States of the object */
#define fractalexplorer_OK 0x0
#define fractalexplorer_MODIFIED 0x1
#define gradient_GRADIENTEDITOR 0x2
extern fractalexplorerOBJ *current_obj;
GtkWidget * add_objects_list (void);
/**********************************************************************
Global variables
*********************************************************************/
extern gdouble xmin;
extern gdouble xmax;
extern gdouble ymin;
extern gdouble ymax;
extern gdouble xbild;
extern gdouble ybild;
extern gdouble xdiff;
extern gdouble ydiff;
extern gint sel_x1,
sel_y1,
sel_x2,
sel_y2;
extern gint preview_width,
preview_height;
extern gdouble *gg;
extern int line_no;
extern gchar *filename;
extern clrmap colormap;
extern gchar *fractalexplorer_path;
extern explorer_interface_t wint;
extern explorer_vals_t wvals;
/**********************************************************************
Global functions
*********************************************************************/
void explorer_render_row (const guchar *src_row,
guchar *dest_row,
gint row,
gint row_width,
gint bpp);
#endif