1998-07-14 14:15:10 +08:00
|
|
|
#define MAX_PREVIEW_SIZE 125
|
|
|
|
#define MAX_ROUGHNESS 128
|
|
|
|
#define RANGE_HEIGHT 15
|
1999-12-28 00:18:06 +08:00
|
|
|
#define PR_BX_BRDR 4
|
1998-07-14 14:15:10 +08:00
|
|
|
#define ALL 255
|
1999-12-28 00:18:06 +08:00
|
|
|
#define MARGIN 4
|
1998-07-14 14:15:10 +08:00
|
|
|
|
|
|
|
#define RANGE_ADJUST_MASK GDK_EXPOSURE_MASK | \
|
|
|
|
GDK_ENTER_NOTIFY_MASK | \
|
|
|
|
GDK_BUTTON_PRESS_MASK | \
|
|
|
|
GDK_BUTTON_RELEASE_MASK | \
|
|
|
|
GDK_BUTTON1_MOTION_MASK | \
|
|
|
|
GDK_POINTER_MOTION_HINT_MASK
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
gint run;
|
|
|
|
} fpInterface;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
gint width;
|
|
|
|
gint height;
|
|
|
|
guchar *rgb;
|
2003-05-21 02:29:13 +08:00
|
|
|
gdouble *hsv;
|
1998-07-14 14:15:10 +08:00
|
|
|
guchar *mask;
|
|
|
|
} ReducedImage;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
SHADOWS,
|
|
|
|
MIDTONES,
|
|
|
|
HIGHLIGHTS,
|
|
|
|
INTENSITIES
|
|
|
|
}FP_Intensity;
|
|
|
|
|
|
|
|
enum {
|
|
|
|
NONEATALL =0,
|
|
|
|
CURRENT =1,
|
|
|
|
HUE =2,
|
|
|
|
SATURATION =4,
|
|
|
|
VALUE =8
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
RED,
|
|
|
|
GREEN,
|
|
|
|
BLUE,
|
|
|
|
CYAN,
|
|
|
|
YELLOW,
|
|
|
|
MAGENTA,
|
|
|
|
ALL_PRIMARY
|
|
|
|
};
|
|
|
|
|
|
|
|
enum {
|
|
|
|
DOWN = -1,
|
|
|
|
UP = 1
|
|
|
|
};
|
|
|
|
|
|
|
|
enum {
|
|
|
|
BY_HUE,
|
|
|
|
BY_SAT,
|
|
|
|
BY_VAL,
|
|
|
|
JUDGE_BY
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
GtkWidget *window;
|
|
|
|
GtkWidget *shadowsEntry;
|
|
|
|
GtkWidget *midtonesEntry;
|
|
|
|
GtkWidget *rangePreview;
|
|
|
|
GtkWidget *aliasingPreview;
|
|
|
|
GtkObject *aliasingData;
|
|
|
|
GtkWidget *aliasingGraph;
|
|
|
|
} AdvancedWindow;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int Color;
|
|
|
|
float Rough;
|
|
|
|
GtkWidget *roughnessScale;
|
|
|
|
float Alias;
|
|
|
|
GtkWidget *aliasingScale;
|
|
|
|
float PreviewSize;
|
|
|
|
GtkWidget *previewSizeScale;
|
|
|
|
FP_Intensity Range;
|
|
|
|
gint ValueBy;
|
|
|
|
gint SlctnOnly;
|
|
|
|
gint RealTime;
|
|
|
|
guchar Offset;
|
|
|
|
guchar VisibleFrames;
|
|
|
|
guchar Cutoffs[INTENSITIES];
|
|
|
|
gint Touched[JUDGE_BY];
|
|
|
|
gint redAdj[JUDGE_BY][256];
|
|
|
|
gint blueAdj[JUDGE_BY][256];
|
|
|
|
gint greenAdj[JUDGE_BY][256];
|
|
|
|
gint satAdj[JUDGE_BY][256];
|
|
|
|
GtkWidget *rangeLabels[12];
|
|
|
|
}FP_Params;
|
|
|
|
|
|
|
|
GtkWidget *fp_create_bna(void);
|
|
|
|
GtkWidget *fp_create_rough(void);
|
|
|
|
GtkWidget *fp_create_range(void);
|
|
|
|
GtkWidget *fp_create_circle_palette(void);
|
|
|
|
GtkWidget *fp_create_lnd(void);
|
|
|
|
GtkWidget *fp_create_show(void);
|
|
|
|
GtkWidget *fp_create_msnls();
|
|
|
|
GtkWidget *fp_create_frame_select();
|
|
|
|
GtkWidget *fp_create_pixels_select_by();
|
|
|
|
|
|
|
|
void fp_show_hide_frame(GtkWidget *button,
|
|
|
|
GtkWidget *frame);
|
|
|
|
|
2000-08-22 11:27:14 +08:00
|
|
|
ReducedImage *Reduce_The_Image (GimpDrawable *,
|
|
|
|
GimpDrawable *,
|
1998-07-14 14:15:10 +08:00
|
|
|
gint,
|
|
|
|
gint);
|
|
|
|
|
|
|
|
void fp_render_preview (GtkWidget *,
|
|
|
|
gint,
|
|
|
|
gint );
|
|
|
|
|
|
|
|
void Update_Current_FP (gint,
|
|
|
|
gint );
|
|
|
|
|
|
|
|
void fp_Create_Nudge (gint* );
|
|
|
|
|
|
|
|
gint fp_dialog (void);
|
|
|
|
gint fp_advanced_dialog (void);
|
|
|
|
|
|
|
|
void fp_advanced_call (void);
|
|
|
|
|
|
|
|
void fp_entire_image (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
void fp_selection_only (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
|
|
|
|
void fp_selection_in_context (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
|
|
|
|
void selectionMade (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
void fp_close_callback (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
void fp_ok_callback (GtkWidget *,
|
|
|
|
gpointer );
|
|
|
|
void fp_scale_update (GtkAdjustment *,
|
|
|
|
float* );
|
|
|
|
void fp_change_current_range (GtkAdjustment*,
|
|
|
|
gint* );
|
|
|
|
void fp_change_current_pixels_by (GtkWidget *,
|
|
|
|
gint *);
|
|
|
|
void resetFilterPacks (void);
|
|
|
|
|
|
|
|
void update_range_labels (void);
|
|
|
|
|
|
|
|
void fp_create_smoothness_graph (GtkWidget* );
|
|
|
|
|
|
|
|
void fp_range_preview_spill (GtkWidget*,
|
|
|
|
gint );
|
|
|
|
|
|
|
|
void Create_A_Preview (GtkWidget **,
|
|
|
|
GtkWidget **,
|
|
|
|
int,
|
|
|
|
int );
|
|
|
|
|
|
|
|
void Create_A_Table_Entry (GtkWidget **,
|
|
|
|
GtkWidget *,
|
2000-04-12 06:27:00 +08:00
|
|
|
const char *);
|
1998-07-14 14:15:10 +08:00
|
|
|
|
|
|
|
GSList* Button_In_A_Box (GtkWidget *,
|
|
|
|
GSList *,
|
|
|
|
guchar *,
|
|
|
|
GtkSignalFunc,
|
|
|
|
gpointer,
|
|
|
|
int );
|
|
|
|
|
|
|
|
void Check_Button_In_A_Box (GtkWidget *,
|
|
|
|
guchar *label,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer data,
|
|
|
|
int clicked);
|
|
|
|
|
applied gimp-lecorfec-99041[02]-0, changes follow
* applied gimp-lecorfec-99041[02]-0, changes follow
* plug-ins/FractalExplorer/Dialogs.h (make_color_map):
replaced free with g_free to fix segfault.
* plug-ins/Lighting/lighting_preview.c (compute_preview):
allocate xpostab and ypostab only when needed (it could also be
allocated on stack with a compilation-fixed size like MapObject).
It avoids to lose some Kb on each preview :)
Also reindented (unfortunate C-c C-q) some other lines.
* plug-ins/Lighting/lighting_main.c (run):
release allocated postabs.
* plug-ins/Lighting/lighting_ui.c:
callbacks now have only one argument because gck widget use
gtk_signal_connect_object. Caused segfault for scale widget.
* plug-ins/autocrop/autocrop.c (doit):
return if image has only background (thus fixing a segfault).
* plug-ins/emboss/emboss.c (pluginCore, emboss_do_preview):
replaced malloc/free with g_malloc/g_free (unneeded, but
shouldn't everyone use glib calls ? :)
* plug-ins/flame/flame.c :
replaced a segfaulting free, and several harmless malloc/free pairs.
* plug-ins/flame/megawidget.c (mw_preview_build):
replaced harmless malloc/free pair.
Note : mwp->bits is malloc'ed but seems to be never freed.
* plug-ins/fractaltrace/fractaltrace.c (pixels_free):
replaced a bunch of segfaulting free.
(pixels_get, dialog_show): replaced gtk_signal_connect_object
with gtk_signal_connect to accomodate callbacks (caused STRANGE
dialog behaviour, coz you destroyed buttons one by one).
* plug-ins/illusion/illusion.c (dialog):
same gtk_signal_connect_object replacement for same reasons.
* plug-ins/libgck/gck/gckcolor.c :
changed all gck_rgb_to_color* functions to use a static GdkColor
instead of a malloc'ed area. Provided reentrant functions with
the old behaviour (gck_rgb_to_color*_r). Made some private functions
static, too.
gck_rgb_to_gdkcolor now use the new functions while
gck_rgb_to_gdkcolor_r is the reentrant version.
Also affected by this change: gck_gc_set_foreground and
gck_gc_set_background (no more free(color)).
* plug-ins/libgck/gck/gckcolor.h :
added the gck_rgb_to_gdkcolor_r proto.
* plug-ins/lic/lic.c (ok_button_clicked, cancel_button_clicked) :
segfault on gtk_widget_destroy, now calls gtk_main_quit.
(dialog_destroy) : segfault on window closure when called by
"destroy" event. Now called by "delete_event".
* plug-ins/megawidget/megawidget.c (mw_preview_build):
replaced harmless malloc/free pair.
Note : mwp->bits is malloc'ed but seems to be never freed.
* plug-ins/png/png.c (load_image):
replaced 2 segfaulting free.
* plug-ins/print/print-ps.c (ps_print):
replaced a segfaulting free (called many times :).
* plug-ins/sgi/sgi.c (load_image, save_image):
replaced a bunch of segfaulting free, and did some harmless
inits to avoid a few gcc warnings.
* plug-ins/wind/wind.c (render_wind):
replaced a segfaulting free.
(render_blast): replaced harmless malloc/free pair.
* plug-ins/bmp/bmpread.c (ReadImage):
yet another free()/g_free() problem fixed.
* plug-ins/exchange/exchange.c (real_exchange):
ditto.
* plug-ins/fp/fp.h: added Frames_Check_Button_In_A_Box proto.
* plug-ins/fp/fp_gtk.c: closing subdialogs via window manager
wasn't handled, thus leading to errors and crashes.
Now delete_event signals the dialog control button
to close a dialog with the good way.
* plug-ins/ifscompose/ifscompose.c (value_pair_create):
tried to set events mask on scale widget (a NO_WINDOW widget).
* plug-ins/png/png.c (save_image):
Replaced 2 free() with g_free() for g_malloc'ed memory.
Mysteriously I corrected the loading bug but not the saving one :)
-Yosh
1999-04-16 05:49:09 +08:00
|
|
|
void Frames_Check_Button_In_A_Box (GtkWidget *,
|
|
|
|
guchar *label,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
GtkWidget *frame,
|
|
|
|
int clicked);
|
|
|
|
|
1998-07-14 14:15:10 +08:00
|
|
|
void Adjust_Preview_Sizes (int width,
|
|
|
|
int height );
|
|
|
|
void refreshPreviews (int);
|
|
|
|
void initializeFilterPacks (void);
|
|
|
|
|
2000-08-22 11:27:14 +08:00
|
|
|
void fp (GimpDrawable *drawable);
|
1998-07-14 14:15:10 +08:00
|
|
|
void fp_row (const guchar *src_row,
|
|
|
|
guchar *dest_row,
|
|
|
|
gint row,
|
|
|
|
gint row_width,
|
|
|
|
gint bytes);
|
|
|
|
|
|
|
|
void draw_slider (GdkWindow *window,
|
|
|
|
GdkGC *border_gc,
|
|
|
|
GdkGC *fill_gc,
|
|
|
|
int xpos);
|
|
|
|
gint FP_Range_Change_Events (GtkWidget *,
|
|
|
|
GdkEvent *,
|
|
|
|
FP_Params *);
|
|
|
|
|
|
|
|
void As_You_Drag (GtkWidget *button);
|
|
|
|
void preview_size_scale_update (GtkAdjustment *adjustment,
|
|
|
|
float *scale_val);
|
|
|
|
|
|
|
|
|
|
|
|
void fp_advanced_ok();
|
|
|
|
gint fp_fake_transparency(gint i, gint j);
|