mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-22 20:41:43 +00:00
141b6e8a25
* 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
220 lines
4.9 KiB
C
220 lines
4.9 KiB
C
#define MAX_PREVIEW_SIZE 125
|
|
#define MAX_ROUGHNESS 128
|
|
#define RANGE_HEIGHT 15
|
|
#define PR_BX_BRDR 10
|
|
#define ALL 255
|
|
#define MARGIN 5
|
|
|
|
#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 double hsv;
|
|
|
|
typedef struct {
|
|
gint width;
|
|
gint height;
|
|
guchar *rgb;
|
|
hsv *hsv;
|
|
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);
|
|
|
|
ReducedImage *Reduce_The_Image (GDrawable *,
|
|
GDrawable *,
|
|
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 *,
|
|
char *);
|
|
|
|
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);
|
|
|
|
void Frames_Check_Button_In_A_Box (GtkWidget *,
|
|
guchar *label,
|
|
GtkSignalFunc func,
|
|
GtkWidget *frame,
|
|
int clicked);
|
|
|
|
void Adjust_Preview_Sizes (int width,
|
|
int height );
|
|
void refreshPreviews (int);
|
|
void initializeFilterPacks (void);
|
|
|
|
void fp (GDrawable *drawable);
|
|
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 ErrorMessage (guchar *);
|
|
|
|
|
|
void fp_advanced_ok();
|
|
gint fp_fake_transparency(gint i, gint j);
|