plug-ins/fp/fp_gdk.c #include <libgimp/gimpmath.h> g* types, stuff.

2000-11-08  Michael Natterer  <mitch@gimp.org>

	* plug-ins/fp/fp_gdk.c
	* plug-ins/fp/fp_gtk.c: #include <libgimp/gimpmath.h> g* types, stuff.
This commit is contained in:
Michael Natterer 2000-11-07 23:34:19 +00:00 committed by Michael Natterer
parent bf18b4b7c9
commit ea31de799a
3 changed files with 159 additions and 138 deletions

View File

@ -1,3 +1,8 @@
2000-11-08 Michael Natterer <mitch@gimp.org>
* plug-ins/fp/fp_gdk.c
* plug-ins/fp/fp_gtk.c: #include <libgimp/gimpmath.h> g* types, stuff.
2000-11-08 Michael Natterer <mitch@gimp.org> 2000-11-08 Michael Natterer <mitch@gimp.org>
* plug-ins/print/RELNOTES * plug-ins/print/RELNOTES

View File

@ -1,8 +1,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <math.h>
#include "gtk/gtk.h" #include <gtk/gtk.h>
#include "libgimp/gimp.h" #include "libgimp/gimp.h"
#include "fp.h" #include "fp.h"
extern AdvancedWindow AW; extern AdvancedWindow AW;
@ -26,38 +28,39 @@ draw_slider(GdkWindow *window,
GdkGC *fill_gc, GdkGC *fill_gc,
int xpos) int xpos)
{ {
int i; gint i;
for (i = 0; i < RANGE_HEIGHT; i++) for (i = 0; i < RANGE_HEIGHT; i++)
gdk_draw_line(window, fill_gc, MARGIN + xpos-i/2, i, MARGIN + xpos+i/2,i); gdk_draw_line (window, fill_gc, MARGIN + xpos-i/2, i, MARGIN + xpos+i/2,i);
gdk_draw_line(window, border_gc, MARGIN + xpos, 0, gdk_draw_line (window, border_gc, MARGIN + xpos, 0,
MARGIN + xpos - (RANGE_HEIGHT - 1) / 2, RANGE_HEIGHT - 1); MARGIN + xpos - (RANGE_HEIGHT - 1) / 2, RANGE_HEIGHT - 1);
gdk_draw_line(window, border_gc, MARGIN + xpos, 0, gdk_draw_line (window, border_gc, MARGIN + xpos, 0,
MARGIN + xpos + (RANGE_HEIGHT - 1) / 2, RANGE_HEIGHT - 1); MARGIN + xpos + (RANGE_HEIGHT - 1) / 2, RANGE_HEIGHT - 1);
gdk_draw_line(window, border_gc, MARGIN + xpos-(RANGE_HEIGHT-1)/2,RANGE_HEIGHT-1, gdk_draw_line (window, border_gc, MARGIN + xpos-(RANGE_HEIGHT-1)/2,RANGE_HEIGHT-1,
MARGIN + xpos + (RANGE_HEIGHT-1)/2, RANGE_HEIGHT-1); MARGIN + xpos + (RANGE_HEIGHT-1)/2, RANGE_HEIGHT-1);
} }
void void
draw_it(GtkWidget *widget) draw_it (GtkWidget *widget)
{ {
draw_slider(AW.aliasingGraph->window, draw_slider (AW.aliasingGraph->window,
AW.aliasingGraph->style->black_gc, AW.aliasingGraph->style->black_gc,
AW.aliasingGraph->style->dark_gc[GTK_STATE_NORMAL], AW.aliasingGraph->style->dark_gc[GTK_STATE_NORMAL],
Current.Cutoffs[SHADOWS]); Current.Cutoffs[SHADOWS]);
draw_slider(AW.aliasingGraph->window, draw_slider (AW.aliasingGraph->window,
AW.aliasingGraph->style->black_gc, AW.aliasingGraph->style->black_gc,
AW.aliasingGraph->style->dark_gc[GTK_STATE_NORMAL], AW.aliasingGraph->style->dark_gc[GTK_STATE_NORMAL],
Current.Cutoffs[MIDTONES]); Current.Cutoffs[MIDTONES]);
draw_slider(AW.aliasingGraph->window, draw_slider (AW.aliasingGraph->window,
AW.aliasingGraph->style->black_gc, AW.aliasingGraph->style->black_gc,
AW.aliasingGraph->style->dark_gc[GTK_STATE_SELECTED], AW.aliasingGraph->style->dark_gc[GTK_STATE_SELECTED],
Current.Offset); Current.Offset);
} }
gint gint
@ -71,91 +74,95 @@ FP_Range_Change_Events (GtkWidget *widget,
static guchar *new; static guchar *new;
gint x; gint x;
switch(event->type) { switch (event->type)
{
case GDK_EXPOSE:
draw_it (NULL);
break;
case GDK_EXPOSE: case GDK_BUTTON_PRESS:
draw_it(NULL); bevent= (GdkEventButton *) event;
break;
case GDK_BUTTON_PRESS: shad = abs (bevent->x - Current.Cutoffs[SHADOWS]);
bevent=(GdkEventButton *) event; mid = abs (bevent->x - Current.Cutoffs[MIDTONES]);
offset = abs (bevent->x - Current.Offset);
shad = abs(bevent->x - Current.Cutoffs[SHADOWS]); min = MIN (MIN (shad, mid), offset);
mid = abs(bevent->x - Current.Cutoffs[MIDTONES]);
offset = abs(bevent->x - Current.Offset);
min= MIN(MIN(shad,mid),offset); if (bevent->x >0 && bevent->x<256)
{
if (min == shad)
new = &Current.Cutoffs[SHADOWS];
else if (min == mid)
new = &Current.Cutoffs[MIDTONES];
else
new = &Current.Offset;
slider_erase (AW.aliasingGraph->window, *new);
*new=bevent->x;
}
if (bevent->x >0 && bevent->x<256) { draw_it (NULL);
if (min==shad)
new = &Current.Cutoffs[SHADOWS];
else if (min==mid)
new = &Current.Cutoffs[MIDTONES];
else
new = &Current.Offset;
slider_erase(AW.aliasingGraph->window,*new); if (Current.RealTime)
*new=bevent->x; {
fp_range_preview_spill (AW.rangePreview, Current.ValueBy);
update_range_labels ();
fp_create_smoothness_graph (AW.aliasingPreview);
refreshPreviews (Current.VisibleFrames);
}
break;
case GDK_BUTTON_RELEASE:
if (!Current.RealTime)
{
fp_range_preview_spill (AW.rangePreview, Current.ValueBy);
update_range_labels ();
fp_create_smoothness_graph (AW.aliasingPreview);
refreshPreviews (Current.VisibleFrames);
}
break;
case GDK_MOTION_NOTIFY:
mevent = (GdkEventMotion *) event;
gdk_window_get_pointer (widget->window, &x, NULL, NULL);
if (x >= 0 && x < 256)
{
slider_erase (AW.aliasingGraph->window, *new);
*new = x;
draw_it (NULL);
if (Current.RealTime)
{
fp_range_preview_spill (AW.rangePreview, Current.ValueBy);
update_range_labels ();
fp_create_smoothness_graph (AW.aliasingPreview);
refreshPreviews (Current.VisibleFrames);
}
}
break;
default:
break;
} }
draw_it(NULL); return FALSE;
if (Current.RealTime) {
fp_range_preview_spill(AW.rangePreview,Current.ValueBy);
update_range_labels();
fp_create_smoothness_graph(AW.aliasingPreview);
refreshPreviews(Current.VisibleFrames);
}
break;
case GDK_BUTTON_RELEASE:
if (!Current.RealTime) {
fp_range_preview_spill(AW.rangePreview,Current.ValueBy);
update_range_labels();
fp_create_smoothness_graph(AW.aliasingPreview);
refreshPreviews(Current.VisibleFrames);
}
break;
case GDK_MOTION_NOTIFY:
mevent= (GdkEventMotion *) event;
gdk_window_get_pointer(widget->window, &x,NULL, NULL);
if (x>=0 && x<256) {
slider_erase(AW.aliasingGraph->window,*new);
*new=x;
draw_it(NULL);
if (Current.RealTime) {
fp_range_preview_spill(AW.rangePreview,Current.ValueBy);
update_range_labels();
fp_create_smoothness_graph(AW.aliasingPreview);
refreshPreviews(Current.VisibleFrames);
}
}
break;
default:
break;
}
return 0;
} }
void void
update_range_labels() update_range_labels (void)
{ {
guchar buffer[3]; guchar buffer[3];
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[1]),"0"); gtk_label_set_text (GTK_LABEL(Current.rangeLabels[1]),"0");
sprintf(buffer,"%d",Current.Cutoffs[SHADOWS]); g_snprintf (buffer, sizeof (buffer), "%d", Current.Cutoffs[SHADOWS]);
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[3]),buffer); gtk_label_set_text (GTK_LABEL (Current.rangeLabels[3]), buffer);
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[5]),buffer); gtk_label_set_text (GTK_LABEL (Current.rangeLabels[5]), buffer);
sprintf(buffer,"%d",Current.Cutoffs[MIDTONES]); g_snprintf (buffer, sizeof (buffer), "%d", Current.Cutoffs[MIDTONES]);
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[7]),buffer); gtk_label_set_text (GTK_LABEL (Current.rangeLabels[7]), buffer);
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[9]),buffer); gtk_label_set_text (GTK_LABEL (Current.rangeLabels[9]), buffer);
gtk_label_set_text (GTK_LABEL(Current.rangeLabels[11]),"255"); gtk_label_set_text (GTK_LABEL(Current.rangeLabels[11]), "255");
} }

View File

@ -17,29 +17,30 @@
to figure out which button the user pushed, etc. to figure out which button the user pushed, etc.
Not my design, please don't blame me -- njl */ Not my design, please don't blame me -- njl */
static const char *hue_red= N_("Red:"); static const gchar *hue_red = N_("Red:");
static const char *hue_green= N_("Green:"); static const gchar *hue_green = N_("Green:");
static const char *hue_blue= N_("Blue:"); static const gchar *hue_blue = N_("Blue:");
static const char *hue_cyan= N_("Cyan:"); static const gchar *hue_cyan = N_("Cyan:");
static const char *hue_yellow= N_("Yellow:"); static const gchar *hue_yellow = N_("Yellow:");
static const char *hue_magenta= N_("Magenta:"); static const gchar *hue_magenta = N_("Magenta:");
static const char *val_darker= N_("Darker:"); static const gchar *val_darker = N_("Darker:");
static const char *val_lighter= N_("Lighter:"); static const gchar *val_lighter = N_("Lighter:");
static const char *sat_more= N_("More Sat:"); static const gchar *sat_more = N_("More Sat:");
static const char *sat_less= N_("Less Sat:"); static const gchar *sat_less = N_("Less Sat:");
static const char *current_val= N_("Current:"); static const gchar *current_val = N_("Current:");
AdvancedWindow AW = { NULL, NULL, NULL, NULL, NULL, NULL, NULL }; AdvancedWindow AW = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
extern FP_Params Current; extern FP_Params Current;
extern GimpDrawable *drawable, *mask; extern GimpDrawable *drawable;
extern GimpDrawable *mask;
FP_Intensity ShMidHi[] = { SHADOWS, MIDTONES, HIGHLIGHTS }; FP_Intensity ShMidHi[] = { SHADOWS, MIDTONES, HIGHLIGHTS };
int HueSatVal[] = { BY_HUE, BY_SAT, BY_VAL }; gint HueSatVal[] = { BY_HUE, BY_SAT, BY_VAL };
gint nudgeArray[256]; gint nudgeArray[256];
@ -53,21 +54,22 @@ GtkWidget *plusSatPreview, *SatPreview, *minusSatPreview;
struct struct
{ {
GtkWidget *bna, GtkWidget *bna;
*palette, GtkWidget *palette;
*rough, GtkWidget *rough;
*range, GtkWidget *range;
*show, GtkWidget *show;
*lnd, GtkWidget *lnd;
*pixelsBy, GtkWidget *pixelsBy;
*frameSelect, GtkWidget *frameSelect;
*satur; GtkWidget *satur;
} fpFrames; } fpFrames;
fpInterface FPint = fpInterface FPint =
{ {
FALSE /* run */ FALSE /* run */
}; };
ReducedImage *reduced; ReducedImage *reduced;
/***********************************************************/ /***********************************************************/
@ -256,9 +258,9 @@ fp_create_range (void)
ShMidHi + MIDTONES, ShMidHi + MIDTONES,
Current.Range == MIDTONES); Current.Range == MIDTONES);
group = Button_In_A_Box (vbox, group, _("Highlights"), group = Button_In_A_Box (vbox, group, _("Highlights"),
GTK_SIGNAL_FUNC (fp_change_current_range), GTK_SIGNAL_FUNC (fp_change_current_range),
ShMidHi + HIGHLIGHTS, ShMidHi + HIGHLIGHTS,
Current.Range == HIGHLIGHTS); Current.Range == HIGHLIGHTS);
return frame; return frame;
} }
@ -564,9 +566,9 @@ Frames_Check_Button_In_A_Box (GtkWidget *vbox,
} }
void void
Create_A_Table_Entry (GtkWidget **box, Create_A_Table_Entry (GtkWidget **box,
GtkWidget *SmallerFrame, GtkWidget *SmallerFrame,
const gchar *description) const gchar *description)
{ {
GtkWidget *label, *button, *table; GtkWidget *label, *button, *table;
@ -575,7 +577,7 @@ Create_A_Table_Entry (GtkWidget **box,
gtk_widget_show (*box); gtk_widget_show (*box);
/* Delayed translation applied here */ /* Delayed translation applied here */
label = gtk_label_new (gettext(description)); label = gtk_label_new (gettext (description));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_widget_show (label); gtk_widget_show (label);
@ -595,14 +597,16 @@ Create_A_Table_Entry (GtkWidget **box,
GTK_SIGNAL_FUNC (selectionMade), GTK_SIGNAL_FUNC (selectionMade),
(gchar *) description); (gchar *) description);
gtk_container_add (GTK_CONTAINER (button), SmallerFrame); gtk_container_add (GTK_CONTAINER (button), SmallerFrame);
gtk_widget_show (button); gtk_widget_show (button);
gtk_table_attach (GTK_TABLE (table), button, 0, 1, 1, 2, gtk_table_attach (GTK_TABLE (table), button, 0, 1, 1, 2,
0, 0, 0, 4); 0, 0, 0, 4);
} }
else else
gtk_table_attach (GTK_TABLE (table), SmallerFrame, 0, 1, 1, 2, {
0, 0, 0, 4); gtk_table_attach (GTK_TABLE (table), SmallerFrame, 0, 1, 1, 2,
0, 0, 0, 4);
}
} }
void void
@ -642,7 +646,7 @@ void
fp_selection_only (GtkWidget *button, fp_selection_only (GtkWidget *button,
gpointer data) gpointer data)
{ {
static int notFirstTime = 0; static gint notFirstTime = 0;
if (!(notFirstTime++)) if (!(notFirstTime++))
return; return;
@ -668,7 +672,7 @@ void
fp_show_hide_frame (GtkWidget *button, fp_show_hide_frame (GtkWidget *button,
GtkWidget *frame) GtkWidget *frame)
{ {
int prev = Current.VisibleFrames; gint prev = Current.VisibleFrames;
if (frame == NULL) if (frame == NULL)
return; return;
@ -800,7 +804,7 @@ void
fp_scale_update (GtkAdjustment *adjustment, fp_scale_update (GtkAdjustment *adjustment,
float *scale_val) float *scale_val)
{ {
static float prevValue=.25; static gfloat prevValue = 0.25;
*scale_val = adjustment->value; *scale_val = adjustment->value;
@ -836,12 +840,17 @@ void
fp_change_current_pixels_by (GtkWidget *button, fp_change_current_pixels_by (GtkWidget *button,
gint *valueBy) gint *valueBy)
{ {
int prevValue=VALUE; gint prevValue = VALUE;
static int notFirstTime=0; static gint notFirstTime = 0;
if (!(notFirstTime++)) return; if (!(notFirstTime++))
if (!GTK_TOGGLE_BUTTON(button)->active) return; return;
if (*valueBy == prevValue) return;
if (!GTK_TOGGLE_BUTTON(button)->active)
return;
if (*valueBy == prevValue)
return;
Current.ValueBy = *valueBy; Current.ValueBy = *valueBy;
refreshPreviews (Current.VisibleFrames); refreshPreviews (Current.VisibleFrames);
@ -865,7 +874,7 @@ fp_advanced_call (void)
fp_advanced_dialog (); fp_advanced_dialog ();
} }
int gint
fp_dialog (void) fp_dialog (void)
{ {
GtkWidget *bna; GtkWidget *bna;