mirror of https://github.com/GNOME/gimp.git
some more work on the gimpcolorbutton and its usage
--Sven
This commit is contained in:
parent
44774c222f
commit
51269ffffa
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
Wed Nov 17 00:14:11 MET 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* libgimp/gimpcolorbutton.c: hide the colorselection dialog when
|
||||
the button is set insensitive
|
||||
|
||||
* plug-ins/common/Makefile.am
|
||||
* plug-ins/common/nova.c
|
||||
* plug-ins/common/papertile.c
|
||||
* plug-ins/common/plugin-defs.pl
|
||||
* plug-ins/sinus/Makefile.am
|
||||
* plug-ins/sinus/sinus.c
|
||||
* plug-ins/sinus/sinus_logo.h
|
||||
* plug-ins/gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc
|
||||
* po-plug-ins/POTFILES.in: made supernova, papertile and sinus use
|
||||
the gimpcolorbutton, internationalized the plug-ins while I was on it
|
||||
|
||||
1999-11-16 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* libgimp/gimpchainbutton.c: the chainbutton's parent_class is a
|
||||
|
|
|
@ -66,10 +66,10 @@ struct _GimpColorButton
|
|||
GtkButton button;
|
||||
|
||||
gchar *title;
|
||||
gint width;
|
||||
gint height;
|
||||
guchar *color;
|
||||
gint bpp;
|
||||
gint width;
|
||||
gint height;
|
||||
|
||||
gdouble *dcolor;
|
||||
GtkWidget *preview;
|
||||
|
@ -81,15 +81,18 @@ struct _GimpColorButton
|
|||
};
|
||||
|
||||
|
||||
static void gimp_color_button_destroy (GtkObject *object);
|
||||
static void gimp_color_button_clicked (GtkButton *button);
|
||||
static void gimp_color_button_paint (GimpColorButton *gcb);
|
||||
static void gimp_color_button_destroy (GtkObject *object);
|
||||
static void gimp_color_button_clicked (GtkButton *button);
|
||||
static void gimp_color_button_paint (GimpColorButton *gcb);
|
||||
static void gimp_color_button_state_changed (GtkWidget *widget, GtkStateType previous_state);
|
||||
|
||||
static void gimp_color_button_dialog_ok (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_cancel (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_ok (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_cancel (GtkWidget *widget, gpointer data);
|
||||
|
||||
static void gimp_color_button_use_fg (gpointer callback_data, guint callback_action, GtkWidget *widget);
|
||||
static void gimp_color_button_use_bg (gpointer callback_data, guint callback_action, GtkWidget *widget);
|
||||
static void gimp_color_button_use_fg (gpointer callback_data, guint callback_action,
|
||||
GtkWidget *widget);
|
||||
static void gimp_color_button_use_bg (gpointer callback_data, guint callback_action,
|
||||
GtkWidget *widget);
|
||||
|
||||
static gint gimp_color_button_menu_popup (GtkWidget *widget, GdkEvent *event, gpointer data);
|
||||
static gchar* gimp_color_button_menu_translate (const gchar *path, gpointer func_data);
|
||||
|
@ -137,10 +140,12 @@ static void
|
|||
gimp_color_button_class_init (GimpColorButtonClass *class)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
GtkButtonClass *widget_class;
|
||||
GtkButtonClass *button_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
|
||||
object_class = (GtkObjectClass*) class;
|
||||
widget_class = (GtkButtonClass*) class;
|
||||
button_class = (GtkButtonClass*) class;
|
||||
widget_class = (GtkWidgetClass*) class;
|
||||
|
||||
parent_class = gtk_type_class (gtk_widget_get_type ());
|
||||
|
||||
|
@ -155,10 +160,12 @@ gimp_color_button_class_init (GimpColorButtonClass *class)
|
|||
LAST_SIGNAL);
|
||||
class->color_changed = NULL;
|
||||
|
||||
widget_class->clicked = gimp_color_button_clicked;
|
||||
object_class->destroy = gimp_color_button_destroy;
|
||||
object_class->destroy = gimp_color_button_destroy;
|
||||
button_class->clicked = gimp_color_button_clicked;
|
||||
widget_class->state_changed = gimp_color_button_state_changed;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gimp_color_button_init (GimpColorButton *gcb)
|
||||
{
|
||||
|
@ -220,7 +227,7 @@ gimp_color_button_new (gchar *title,
|
|||
gcb->height = height;
|
||||
gcb->color = color;
|
||||
gcb->bpp = bpp;
|
||||
|
||||
|
||||
gcb->dcolor = g_new (gdouble, 4);
|
||||
gcb->even = g_new (guchar, 3 * width);
|
||||
gcb->odd = g_new (guchar, 3 * width);
|
||||
|
@ -234,6 +241,7 @@ gimp_color_button_new (gchar *title,
|
|||
gcb->preview = gtk_preview_new (GTK_PREVIEW_COLOR);
|
||||
gtk_signal_connect (GTK_OBJECT (gcb->preview), "destroy",
|
||||
gtk_widget_destroyed, &gcb->preview);
|
||||
|
||||
gtk_preview_size (GTK_PREVIEW (gcb->preview), width, height);
|
||||
gtk_container_add (GTK_CONTAINER (gcb), gcb->preview);
|
||||
gtk_widget_show (gcb->preview);
|
||||
|
@ -299,6 +307,19 @@ gimp_color_button_update (GimpColorButton *gcb)
|
|||
gcb->dcolor);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_color_button_state_changed (GtkWidget *widget,
|
||||
GtkStateType previous_state)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_COLOR_BUTTON (widget));
|
||||
|
||||
if (!GTK_WIDGET_IS_SENSITIVE (widget) && GIMP_COLOR_BUTTON (widget)->dialog)
|
||||
gtk_widget_hide (GIMP_COLOR_BUTTON (widget)->dialog);
|
||||
|
||||
if (GTK_WIDGET_CLASS (parent_class)->state_changed)
|
||||
(* GTK_WIDGET_CLASS (parent_class)->state_changed) (widget, previous_state);
|
||||
}
|
||||
|
||||
static gint
|
||||
gimp_color_button_menu_popup (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
|
@ -352,8 +373,10 @@ gimp_color_button_clicked (GtkButton *button)
|
|||
gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (gcb->dialog)->cancel_button),
|
||||
"clicked",
|
||||
(GtkSignalFunc) gimp_color_button_dialog_cancel, gcb);
|
||||
gtk_window_position (GTK_WINDOW (gcb->dialog), GTK_WIN_POS_MOUSE);
|
||||
gtk_window_position (GTK_WINDOW (gcb->dialog), GTK_WIN_POS_MOUSE);
|
||||
}
|
||||
gtk_color_selection_set_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (gcb->dialog)->colorsel),
|
||||
gcb->dcolor);
|
||||
gtk_widget_show (gcb->dialog);
|
||||
}
|
||||
|
||||
|
@ -433,7 +456,7 @@ gimp_color_button_dialog_ok (GtkWidget *widget,
|
|||
gcb->color[i] = new_color[i];
|
||||
}
|
||||
|
||||
gtk_widget_destroy (gcb->dialog);
|
||||
gtk_widget_hide (gcb->dialog);
|
||||
|
||||
if (color_changed)
|
||||
{
|
||||
|
@ -452,7 +475,7 @@ gimp_color_button_dialog_cancel (GtkWidget *widget,
|
|||
g_return_if_fail (GIMP_IS_COLOR_BUTTON (data));
|
||||
gcb = GIMP_COLOR_BUTTON (data);
|
||||
|
||||
gtk_widget_destroy (gcb->dialog);
|
||||
gtk_widget_hide (gcb->dialog);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -66,10 +66,10 @@ struct _GimpColorButton
|
|||
GtkButton button;
|
||||
|
||||
gchar *title;
|
||||
gint width;
|
||||
gint height;
|
||||
guchar *color;
|
||||
gint bpp;
|
||||
gint width;
|
||||
gint height;
|
||||
|
||||
gdouble *dcolor;
|
||||
GtkWidget *preview;
|
||||
|
@ -81,15 +81,18 @@ struct _GimpColorButton
|
|||
};
|
||||
|
||||
|
||||
static void gimp_color_button_destroy (GtkObject *object);
|
||||
static void gimp_color_button_clicked (GtkButton *button);
|
||||
static void gimp_color_button_paint (GimpColorButton *gcb);
|
||||
static void gimp_color_button_destroy (GtkObject *object);
|
||||
static void gimp_color_button_clicked (GtkButton *button);
|
||||
static void gimp_color_button_paint (GimpColorButton *gcb);
|
||||
static void gimp_color_button_state_changed (GtkWidget *widget, GtkStateType previous_state);
|
||||
|
||||
static void gimp_color_button_dialog_ok (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_cancel (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_ok (GtkWidget *widget, gpointer data);
|
||||
static void gimp_color_button_dialog_cancel (GtkWidget *widget, gpointer data);
|
||||
|
||||
static void gimp_color_button_use_fg (gpointer callback_data, guint callback_action, GtkWidget *widget);
|
||||
static void gimp_color_button_use_bg (gpointer callback_data, guint callback_action, GtkWidget *widget);
|
||||
static void gimp_color_button_use_fg (gpointer callback_data, guint callback_action,
|
||||
GtkWidget *widget);
|
||||
static void gimp_color_button_use_bg (gpointer callback_data, guint callback_action,
|
||||
GtkWidget *widget);
|
||||
|
||||
static gint gimp_color_button_menu_popup (GtkWidget *widget, GdkEvent *event, gpointer data);
|
||||
static gchar* gimp_color_button_menu_translate (const gchar *path, gpointer func_data);
|
||||
|
@ -137,10 +140,12 @@ static void
|
|||
gimp_color_button_class_init (GimpColorButtonClass *class)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
GtkButtonClass *widget_class;
|
||||
GtkButtonClass *button_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
|
||||
object_class = (GtkObjectClass*) class;
|
||||
widget_class = (GtkButtonClass*) class;
|
||||
button_class = (GtkButtonClass*) class;
|
||||
widget_class = (GtkWidgetClass*) class;
|
||||
|
||||
parent_class = gtk_type_class (gtk_widget_get_type ());
|
||||
|
||||
|
@ -155,10 +160,12 @@ gimp_color_button_class_init (GimpColorButtonClass *class)
|
|||
LAST_SIGNAL);
|
||||
class->color_changed = NULL;
|
||||
|
||||
widget_class->clicked = gimp_color_button_clicked;
|
||||
object_class->destroy = gimp_color_button_destroy;
|
||||
object_class->destroy = gimp_color_button_destroy;
|
||||
button_class->clicked = gimp_color_button_clicked;
|
||||
widget_class->state_changed = gimp_color_button_state_changed;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gimp_color_button_init (GimpColorButton *gcb)
|
||||
{
|
||||
|
@ -220,7 +227,7 @@ gimp_color_button_new (gchar *title,
|
|||
gcb->height = height;
|
||||
gcb->color = color;
|
||||
gcb->bpp = bpp;
|
||||
|
||||
|
||||
gcb->dcolor = g_new (gdouble, 4);
|
||||
gcb->even = g_new (guchar, 3 * width);
|
||||
gcb->odd = g_new (guchar, 3 * width);
|
||||
|
@ -234,6 +241,7 @@ gimp_color_button_new (gchar *title,
|
|||
gcb->preview = gtk_preview_new (GTK_PREVIEW_COLOR);
|
||||
gtk_signal_connect (GTK_OBJECT (gcb->preview), "destroy",
|
||||
gtk_widget_destroyed, &gcb->preview);
|
||||
|
||||
gtk_preview_size (GTK_PREVIEW (gcb->preview), width, height);
|
||||
gtk_container_add (GTK_CONTAINER (gcb), gcb->preview);
|
||||
gtk_widget_show (gcb->preview);
|
||||
|
@ -299,6 +307,19 @@ gimp_color_button_update (GimpColorButton *gcb)
|
|||
gcb->dcolor);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_color_button_state_changed (GtkWidget *widget,
|
||||
GtkStateType previous_state)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_COLOR_BUTTON (widget));
|
||||
|
||||
if (!GTK_WIDGET_IS_SENSITIVE (widget) && GIMP_COLOR_BUTTON (widget)->dialog)
|
||||
gtk_widget_hide (GIMP_COLOR_BUTTON (widget)->dialog);
|
||||
|
||||
if (GTK_WIDGET_CLASS (parent_class)->state_changed)
|
||||
(* GTK_WIDGET_CLASS (parent_class)->state_changed) (widget, previous_state);
|
||||
}
|
||||
|
||||
static gint
|
||||
gimp_color_button_menu_popup (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
|
@ -352,8 +373,10 @@ gimp_color_button_clicked (GtkButton *button)
|
|||
gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (gcb->dialog)->cancel_button),
|
||||
"clicked",
|
||||
(GtkSignalFunc) gimp_color_button_dialog_cancel, gcb);
|
||||
gtk_window_position (GTK_WINDOW (gcb->dialog), GTK_WIN_POS_MOUSE);
|
||||
gtk_window_position (GTK_WINDOW (gcb->dialog), GTK_WIN_POS_MOUSE);
|
||||
}
|
||||
gtk_color_selection_set_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (gcb->dialog)->colorsel),
|
||||
gcb->dcolor);
|
||||
gtk_widget_show (gcb->dialog);
|
||||
}
|
||||
|
||||
|
@ -433,7 +456,7 @@ gimp_color_button_dialog_ok (GtkWidget *widget,
|
|||
gcb->color[i] = new_color[i];
|
||||
}
|
||||
|
||||
gtk_widget_destroy (gcb->dialog);
|
||||
gtk_widget_hide (gcb->dialog);
|
||||
|
||||
if (color_changed)
|
||||
{
|
||||
|
@ -452,7 +475,7 @@ gimp_color_button_dialog_cancel (GtkWidget *widget,
|
|||
g_return_if_fail (GIMP_IS_COLOR_BUTTON (data));
|
||||
gcb = GIMP_COLOR_BUTTON (data);
|
||||
|
||||
gtk_widget_destroy (gcb->dialog);
|
||||
gtk_widget_hide (gcb->dialog);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -747,6 +747,7 @@ nova_SOURCES = \
|
|||
nova.c
|
||||
|
||||
nova_LDADD = \
|
||||
$(top_builddir)/libgimp/libgimpui.la \
|
||||
$(top_builddir)/libgimp/libgimp.la \
|
||||
$(GTK_LIBS) \
|
||||
$(INTLLIBS)
|
||||
|
@ -763,6 +764,7 @@ papertile_SOURCES = \
|
|||
papertile.c
|
||||
|
||||
papertile_LDADD = \
|
||||
$(top_builddir)/libgimp/libgimpui.la \
|
||||
$(top_builddir)/libgimp/libgimp.la \
|
||||
$(GTK_LIBS) \
|
||||
$(INTLLIBS)
|
||||
|
|
|
@ -61,6 +61,8 @@
|
|||
#include <time.h>
|
||||
#include "gtk/gtk.h"
|
||||
#include "libgimp/gimp.h"
|
||||
#include "libgimp/gimpui.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
#ifdef RCSID
|
||||
static char rcsid[] = "$Id$";
|
||||
|
@ -100,7 +102,7 @@ static void dummy_printf( char *fmt, ... ) {}
|
|||
|
||||
typedef struct {
|
||||
gint xcenter, ycenter;
|
||||
gint color[3];
|
||||
guchar color[3];
|
||||
gint radius;
|
||||
gint nspoke;
|
||||
gint randomhue;
|
||||
|
@ -113,31 +115,31 @@ typedef struct {
|
|||
typedef struct {
|
||||
GtkObject *adjustment;
|
||||
GtkWidget *entry;
|
||||
gint constraint;
|
||||
gint constraint;
|
||||
} NovaEntryScaleData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GDrawable *drawable;
|
||||
gint dwidth, dheight;
|
||||
gint bpp;
|
||||
gint dwidth, dheight;
|
||||
gint bpp;
|
||||
GtkWidget *xentry, *yentry;
|
||||
GtkWidget *preview;
|
||||
gint pwidth, pheight;
|
||||
gint cursor;
|
||||
gint curx, cury; /* x,y of cursor in preview */
|
||||
gint oldx, oldy;
|
||||
gint in_call;
|
||||
gint pwidth, pheight;
|
||||
gint cursor;
|
||||
gint curx, cury; /* x,y of cursor in preview */
|
||||
gint oldx, oldy;
|
||||
gint in_call;
|
||||
} NovaCenter;
|
||||
|
||||
|
||||
/* Declare a local function.
|
||||
*/
|
||||
static void query (void);
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals);
|
||||
|
||||
static gint nova_dialog ( GDrawable *drawable );
|
||||
|
@ -199,7 +201,7 @@ GPlugInInfo PLUG_IN_INFO =
|
|||
static NovaValues pvals =
|
||||
{
|
||||
128, 128, /* xcenter, ycenter */
|
||||
{ 90, 100, 256 }, /* color */
|
||||
{ 90, 100, 255 }, /* color */
|
||||
20, /* radius */
|
||||
100, /* nspoke */
|
||||
0 /* random hue */
|
||||
|
@ -214,7 +216,7 @@ static NovaInterface pint =
|
|||
MAIN ()
|
||||
|
||||
static void
|
||||
query()
|
||||
query ()
|
||||
{
|
||||
static GParamDef args[]=
|
||||
{
|
||||
|
@ -251,10 +253,10 @@ query()
|
|||
}
|
||||
|
||||
static void
|
||||
run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals)
|
||||
{
|
||||
static GParam values[1];
|
||||
|
@ -321,7 +323,7 @@ run (gchar *name,
|
|||
/* Make sure that the drawable is gray or RGB color */
|
||||
if (gimp_drawable_is_rgb (drawable->id) || gimp_drawable_is_gray (drawable->id))
|
||||
{
|
||||
gimp_progress_init ("Rendering...");
|
||||
gimp_progress_init (_("Rendering SuperNova..."));
|
||||
gimp_tile_cache_ntiles (TILE_CACHE_SIZE);
|
||||
|
||||
nova (drawable);
|
||||
|
@ -353,11 +355,14 @@ run (gchar *name,
|
|||
/*******************/
|
||||
|
||||
static gint
|
||||
nova_dialog ( GDrawable *drawable )
|
||||
nova_dialog (GDrawable *drawable)
|
||||
{
|
||||
GtkWidget *dlg;
|
||||
GtkWidget *hbbox;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *align;
|
||||
GtkWidget *button;
|
||||
GtkWidget *center_frame;
|
||||
guchar *color_cube;
|
||||
|
@ -387,62 +392,76 @@ nova_dialog ( GDrawable *drawable )
|
|||
#endif
|
||||
|
||||
dlg = gtk_dialog_new ();
|
||||
gtk_window_set_title (GTK_WINDOW (dlg), "SuperNova");
|
||||
gtk_window_set_title (GTK_WINDOW (dlg), _("SuperNova"));
|
||||
gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE);
|
||||
gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
|
||||
(GtkSignalFunc) nova_close_callback,
|
||||
NULL);
|
||||
|
||||
/* Action area */
|
||||
button = gtk_button_new_with_label ("OK");
|
||||
/* Action area */
|
||||
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 2);
|
||||
gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dlg)->action_area), FALSE);
|
||||
hbbox = gtk_hbutton_box_new ();
|
||||
gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4);
|
||||
gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dlg)->action_area), hbbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbbox);
|
||||
|
||||
button = gtk_button_new_with_label (_("OK"));
|
||||
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
(GtkSignalFunc) nova_ok_callback,
|
||||
dlg);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0);
|
||||
(GtkSignalFunc) nova_ok_callback,
|
||||
dlg);
|
||||
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
|
||||
gtk_widget_grab_default (button);
|
||||
gtk_widget_show (button);
|
||||
|
||||
button = gtk_button_new_with_label ("Cancel");
|
||||
button = gtk_button_new_with_label (_("Cancel"));
|
||||
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
|
||||
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
|
||||
(GtkSignalFunc) gtk_widget_destroy,
|
||||
GTK_OBJECT (dlg));
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0);
|
||||
(GtkSignalFunc) gtk_widget_destroy,
|
||||
GTK_OBJECT (dlg));
|
||||
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
|
||||
gtk_widget_show (button);
|
||||
|
||||
/* parameter settings */
|
||||
frame = gtk_frame_new ("Parameter Settings");
|
||||
frame = gtk_frame_new (_("Parameter Settings"));
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_container_border_width (GTK_CONTAINER (frame), 10);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
table = gtk_table_new (7, 2, FALSE);
|
||||
table = gtk_table_new (5, 2, FALSE);
|
||||
gtk_container_border_width (GTK_CONTAINER (table), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame), table);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 3);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
|
||||
|
||||
center_frame = nova_center_create ( drawable );
|
||||
gtk_table_attach( GTK_TABLE(table), center_frame, 0, 2, 0, 1,
|
||||
gtk_table_attach (GTK_TABLE (table), center_frame, 0, 2, 0, 1,
|
||||
0, 0, 0, 0 );
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 1,
|
||||
"R value:", &pvals.color[0],
|
||||
0, 255, TRUE );
|
||||
|
||||
label = gtk_label_new (_("Color:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_table_attach_defaults (GTK_TABLE(table), label, 0, 1, 1, 2);
|
||||
gtk_widget_show (label);
|
||||
|
||||
align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0);
|
||||
button = gimp_color_button_new (_("SuperNova Color Picker"),
|
||||
SCALE_WIDTH - 8, 16,
|
||||
pvals.color, 3);
|
||||
gtk_container_add (GTK_CONTAINER (align), button);
|
||||
gtk_table_attach_defaults (GTK_TABLE(table), align, 1, 2, 1, 2);
|
||||
gtk_widget_show (align);
|
||||
gtk_widget_show (button);
|
||||
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 2,
|
||||
"G value:", &pvals.color[1],
|
||||
0, 255, TRUE );
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 3,
|
||||
"B value:", &pvals.color[2],
|
||||
0, 255, TRUE );
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 4,
|
||||
"Radius:", &pvals.radius,
|
||||
_("Radius:"), &pvals.radius,
|
||||
1, 100, FALSE );
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 5,
|
||||
"Spokes:", &pvals.nspoke,
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 3,
|
||||
_("Spokes:"), &pvals.nspoke,
|
||||
1, 1024, TRUE );
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 6,
|
||||
"Random hue:", &pvals.randomhue,
|
||||
nova_int_entryscale_new( GTK_TABLE (table), 0, 4,
|
||||
_("Random Hue:"), &pvals.randomhue,
|
||||
0, 360, TRUE );
|
||||
|
||||
gtk_widget_show (frame);
|
||||
|
@ -459,14 +478,14 @@ nova_dialog ( GDrawable *drawable )
|
|||
|
||||
static void
|
||||
nova_close_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
gtk_main_quit ();
|
||||
}
|
||||
|
||||
static void
|
||||
nova_ok_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
pint.run = TRUE;
|
||||
gtk_widget_destroy (GTK_WIDGET (data));
|
||||
|
@ -488,7 +507,7 @@ nova_ok_callback (GtkWidget *widget,
|
|||
*/
|
||||
|
||||
static GtkWidget *
|
||||
nova_center_create ( GDrawable *drawable )
|
||||
nova_center_create (GDrawable *drawable)
|
||||
{
|
||||
NovaCenter *center;
|
||||
GtkWidget *frame;
|
||||
|
@ -513,7 +532,7 @@ nova_center_create ( GDrawable *drawable )
|
|||
center->oldy = 0;
|
||||
center->in_call = TRUE; /* to avoid side effects while initialization */
|
||||
|
||||
frame = gtk_frame_new ( "Center of SuperNova" );
|
||||
frame = gtk_frame_new (_("Center of SuperNova"));
|
||||
gtk_signal_connect( GTK_OBJECT( frame ), "destroy",
|
||||
(GtkSignalFunc) nova_center_destroy,
|
||||
center );
|
||||
|
@ -526,7 +545,7 @@ nova_center_create ( GDrawable *drawable )
|
|||
gtk_table_set_row_spacings (GTK_TABLE (table), 3);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 5);
|
||||
|
||||
label = gtk_label_new ( "X: " );
|
||||
label = gtk_label_new (_("X: "));
|
||||
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5 );
|
||||
gtk_table_attach( GTK_TABLE(table), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show(label);
|
||||
|
@ -540,7 +559,7 @@ nova_center_create ( GDrawable *drawable )
|
|||
gtk_table_attach( GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
|
||||
gtk_widget_show(entry);
|
||||
|
||||
label = gtk_label_new ( "Y: " );
|
||||
label = gtk_label_new (_("Y: "));
|
||||
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5 );
|
||||
gtk_table_attach( GTK_TABLE(table), label, 2, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
|
||||
gtk_widget_show(label);
|
||||
|
@ -606,8 +625,8 @@ nova_center_create ( GDrawable *drawable )
|
|||
}
|
||||
|
||||
static void
|
||||
nova_center_destroy ( GtkWidget *widget,
|
||||
gpointer data )
|
||||
nova_center_destroy (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
NovaCenter *center = data;
|
||||
g_free( center );
|
||||
|
@ -620,7 +639,7 @@ static void render_preview ( GtkWidget *preview, GPixelRgn *srcrgn );
|
|||
* Draw the contents into the internal buffer of the preview widget
|
||||
*/
|
||||
static void
|
||||
nova_center_preview_init ( NovaCenter *center )
|
||||
nova_center_preview_init (NovaCenter *center)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
GPixelRgn src_rgn;
|
||||
|
@ -651,7 +670,8 @@ nova_center_preview_init ( NovaCenter *center )
|
|||
#endif
|
||||
|
||||
static void
|
||||
render_preview ( GtkWidget *preview, GPixelRgn *srcrgn )
|
||||
render_preview (GtkWidget *preview,
|
||||
GPixelRgn *srcrgn)
|
||||
{
|
||||
guchar *src_row, *dest_row, *src, *dest;
|
||||
gint row, col;
|
||||
|
@ -745,7 +765,8 @@ render_preview ( GtkWidget *preview, GPixelRgn *srcrgn )
|
|||
*/
|
||||
|
||||
static void
|
||||
nova_center_draw ( NovaCenter *center, gint update )
|
||||
nova_center_draw (NovaCenter *center,
|
||||
gint update)
|
||||
{
|
||||
if( update & PREVIEW )
|
||||
{
|
||||
|
@ -787,8 +808,8 @@ nova_center_draw ( NovaCenter *center, gint update )
|
|||
*/
|
||||
|
||||
static void
|
||||
nova_center_entry_update ( GtkWidget *widget,
|
||||
gpointer data )
|
||||
nova_center_entry_update (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
NovaCenter *center;
|
||||
gint *val, new_val;
|
||||
|
@ -816,7 +837,7 @@ nova_center_entry_update ( GtkWidget *widget,
|
|||
*/
|
||||
|
||||
static void
|
||||
nova_center_cursor_update ( NovaCenter *center )
|
||||
nova_center_cursor_update (NovaCenter *center)
|
||||
{
|
||||
center->curx = pvals.xcenter * center->pwidth / center->dwidth;
|
||||
center->cury = pvals.ycenter * center->pheight / center->dheight;
|
||||
|
@ -832,8 +853,8 @@ nova_center_cursor_update ( NovaCenter *center )
|
|||
* Handle the expose event on the preview
|
||||
*/
|
||||
static gint
|
||||
nova_center_preview_expose( GtkWidget *widget,
|
||||
GdkEvent *event )
|
||||
nova_center_preview_expose (GtkWidget *widget,
|
||||
GdkEvent *event)
|
||||
{
|
||||
NovaCenter *center;
|
||||
|
||||
|
@ -848,8 +869,8 @@ nova_center_preview_expose( GtkWidget *widget,
|
|||
*/
|
||||
|
||||
static gint
|
||||
nova_center_preview_events ( GtkWidget *widget,
|
||||
GdkEvent *event )
|
||||
nova_center_preview_events (GtkWidget *widget,
|
||||
GdkEvent *event)
|
||||
{
|
||||
NovaCenter *center;
|
||||
GdkEventButton *bevent;
|
||||
|
@ -915,9 +936,14 @@ nova_center_preview_events ( GtkWidget *widget,
|
|||
/***********************************************************************/
|
||||
|
||||
static void
|
||||
nova_int_entryscale_new ( GtkTable *table, gint x, gint y,
|
||||
gchar *caption, gint *intvar,
|
||||
gint min, gint max, gint constraint)
|
||||
nova_int_entryscale_new (GtkTable *table,
|
||||
gint x,
|
||||
gint y,
|
||||
gchar *caption,
|
||||
gint *intvar,
|
||||
gint min,
|
||||
gint max,
|
||||
gint constraint)
|
||||
{
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
|
@ -981,7 +1007,7 @@ nova_int_entryscale_new ( GtkTable *table, gint x, gint y,
|
|||
*/
|
||||
static void
|
||||
nova_paired_entry_destroy_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
NovaEntryScaleData *userdata;
|
||||
userdata = data;
|
||||
|
@ -993,7 +1019,7 @@ nova_paired_entry_destroy_callback (GtkWidget *widget,
|
|||
|
||||
static void
|
||||
nova_paired_int_scale_update (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
NovaEntryScaleData *userdata;
|
||||
GtkEntry *entry;
|
||||
|
|
|
@ -21,11 +21,10 @@
|
|||
*============================================================================*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdk.h>
|
||||
#include <libgimp/gimp.h>
|
||||
#include <math.h>
|
||||
#include "libgimp/gimp.h"
|
||||
#include "libgimp/gimpui.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
/*============================================================================*/
|
||||
/* DEFINES */
|
||||
|
@ -35,7 +34,6 @@
|
|||
#define PLUGIN_TITLE "Paper Tile"
|
||||
#define PLUGIN_PATH "<Image>/Filters/Map/Paper Tile"
|
||||
|
||||
#define round(x) (floor((x)+0.5))
|
||||
|
||||
/*============================================================================*/
|
||||
/* TYPES */
|
||||
|
@ -69,7 +67,7 @@ struct _PluginParams
|
|||
gboolean centering;
|
||||
gboolean wrap_around;
|
||||
BackgroundType background_type;
|
||||
gdouble background_color[4];
|
||||
guchar background_color[4];
|
||||
};
|
||||
|
||||
/*============================================================================*/
|
||||
|
@ -107,7 +105,7 @@ static struct {
|
|||
TRUE, /* centering */
|
||||
FALSE, /* wrap_around */
|
||||
BACKGROUND_TYPE_INVERTED, /* background_type */
|
||||
{ 0.0, 0.0, 1.0, 1.0 } /* background_color[4] */
|
||||
{ 0, 0, 255, 255 } /* background_color[4] */
|
||||
},
|
||||
|
||||
0, /* image */
|
||||
|
@ -151,7 +149,7 @@ params_load_from_gimp ( void )
|
|||
if( p.params.background_type == BACKGROUND_TYPE_TRANSPARENT ){
|
||||
p.params.background_type = BACKGROUND_TYPE_INVERTED;
|
||||
}
|
||||
p.params.background_color[3] = 1.0;
|
||||
p.params.background_color[3] = 255;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -167,213 +165,11 @@ static struct {
|
|||
GtkAdjustment * division_x_adj;
|
||||
GtkAdjustment * division_y_adj;
|
||||
GtkAdjustment * move_max_rate_adj;
|
||||
|
||||
struct {
|
||||
GtkWidget * widget;
|
||||
GtkWidget * preview;
|
||||
GtkWidget * dialog;
|
||||
guint width;
|
||||
guint height;
|
||||
guchar * row_buffer[2];
|
||||
} color_button;
|
||||
|
||||
GtkWidget * color_button;
|
||||
|
||||
} w;
|
||||
|
||||
/*============================================================================*/
|
||||
/* COLOR BUTTON WIDGET */
|
||||
/*============================================================================*/
|
||||
|
||||
static void
|
||||
color_button_destroyed ( GtkWidget *widget )
|
||||
{
|
||||
g_free( w.color_button.row_buffer[0] );
|
||||
g_free( w.color_button.row_buffer[1] );
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static inline void
|
||||
color_button_update ( void )
|
||||
{
|
||||
gint x;
|
||||
gdouble v, R, G, B, A;
|
||||
|
||||
for( x = 0; x < w.color_button.width; x++ ){
|
||||
A = p.params.background_color[3];
|
||||
R = p.params.background_color[0] * A * 255.0;
|
||||
G = p.params.background_color[1] * A * 255.0;
|
||||
B = p.params.background_color[2] * A * 255.0;
|
||||
v = ( ( ( x / 4 ) & 0x1 ) ? 0.6 : 0.4 ) * ( 1.0 - A ) * 255.0;
|
||||
w.color_button.row_buffer[0][x*3 ] = (guchar)( R + v );
|
||||
w.color_button.row_buffer[0][x*3+1] = (guchar)( G + v );
|
||||
w.color_button.row_buffer[0][x*3+2] = (guchar)( B + v );
|
||||
v = ( ( ( x / 4 ) & 0x1 ) ? 0.4 : 0.6 ) * ( 1.0 - A ) * 255.0;
|
||||
w.color_button.row_buffer[1][x*3 ] = (guchar)( R + v );
|
||||
w.color_button.row_buffer[1][x*3+1] = (guchar)( G + v );
|
||||
w.color_button.row_buffer[1][x*3+2] = (guchar)( B + v );
|
||||
}
|
||||
|
||||
for( x= 0; x < w.color_button.height; x++ ){
|
||||
gtk_preview_draw_row( GTK_PREVIEW(w.color_button.preview),
|
||||
w.color_button.row_buffer[(x/4)&0x1],
|
||||
0, x, w.color_button.width );
|
||||
}
|
||||
|
||||
if( GTK_WIDGET_REALIZED(w.color_button.preview) ){
|
||||
gtk_preview_put
|
||||
( GTK_PREVIEW(w.color_button.preview),
|
||||
w.color_button.preview->window,
|
||||
w.color_button.preview->style->black_gc,
|
||||
( w.color_button.preview->allocation.width -
|
||||
GTK_PREVIEW(w.color_button.preview)->buffer_width ) / 2,
|
||||
( w.color_button.preview->allocation.height -
|
||||
GTK_PREVIEW(w.color_button.preview)->buffer_height ) / 2,
|
||||
0, 0,
|
||||
GTK_PREVIEW(w.color_button.preview)->buffer_width,
|
||||
GTK_PREVIEW(w.color_button.preview)->buffer_height );
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
color_button_dialog_destroyed ( GtkWidget *widget )
|
||||
{
|
||||
w.color_button.dialog = NULL;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
color_button_dialog_changed ( GtkColorSelection *sel )
|
||||
{
|
||||
gtk_color_selection_get_color( sel, p.params.background_color );
|
||||
color_button_update();
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static gboolean
|
||||
color_button_dialog_deleted ( GtkWidget *widget )
|
||||
{
|
||||
GtkColorSelectionDialog *dialog =
|
||||
GTK_COLOR_SELECTION_DIALOG(w.color_button.dialog);
|
||||
GtkColorSelection *sel = GTK_COLOR_SELECTION(dialog->colorsel);
|
||||
gint i;
|
||||
|
||||
for( i = 0; i < 8; i++ ) sel->values[i] = sel->old_values[i];
|
||||
|
||||
color_button_dialog_changed( sel );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
color_button_dialog_ok_clicked ( GtkWidget *widget )
|
||||
{
|
||||
GtkColorSelectionDialog *dialog =
|
||||
GTK_COLOR_SELECTION_DIALOG(w.color_button.dialog);
|
||||
GtkColorSelection *sel = GTK_COLOR_SELECTION(dialog->colorsel);
|
||||
|
||||
color_button_dialog_changed( sel );
|
||||
gtk_widget_destroy( w.color_button.dialog );
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
color_button_dialog_cancel_clicked ( GtkWidget *widget )
|
||||
{
|
||||
GtkColorSelectionDialog *dialog =
|
||||
GTK_COLOR_SELECTION_DIALOG(w.color_button.dialog);
|
||||
GtkColorSelection *sel = GTK_COLOR_SELECTION(dialog->colorsel);
|
||||
gint i;
|
||||
|
||||
for( i = 0; i < 8; i++ ) sel->values[i] = sel->old_values[i];
|
||||
|
||||
color_button_dialog_changed( sel );
|
||||
gtk_widget_destroy( w.color_button.dialog );
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
color_button_dialog_open ( void )
|
||||
{
|
||||
if( w.color_button.dialog == NULL ){
|
||||
|
||||
GtkColorSelectionDialog * dialog;
|
||||
GtkColorSelection * sel;
|
||||
gint i;
|
||||
|
||||
w.color_button.dialog =
|
||||
gtk_color_selection_dialog_new( "Background Color" );
|
||||
dialog = GTK_COLOR_SELECTION_DIALOG(w.color_button.dialog);
|
||||
sel = GTK_COLOR_SELECTION(dialog->colorsel);
|
||||
|
||||
gtk_color_selection_set_opacity( sel, p.drawable_has_alpha );
|
||||
gtk_widget_destroy( dialog->help_button );
|
||||
gtk_signal_connect( GTK_OBJECT(sel), "color_changed",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_changed),
|
||||
NULL );
|
||||
gtk_signal_connect( GTK_OBJECT(dialog->ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_ok_clicked),
|
||||
NULL );
|
||||
gtk_signal_connect( GTK_OBJECT(dialog->cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_cancel_clicked),
|
||||
NULL );
|
||||
gtk_signal_connect( GTK_OBJECT(dialog), "delete_event",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_deleted),
|
||||
NULL );
|
||||
gtk_signal_connect( GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_destroyed),
|
||||
NULL );
|
||||
|
||||
gtk_color_selection_set_color( sel, p.params.background_color );
|
||||
for( i = 0; i < 8; i++ ) sel->old_values[i] = sel->values[i];
|
||||
gtk_color_selection_set_color( sel, p.params.background_color );
|
||||
|
||||
gtk_widget_show_all( w.color_button.dialog );
|
||||
|
||||
} else {
|
||||
|
||||
gtk_widget_show_all( w.color_button.dialog );
|
||||
gdk_window_raise( w.color_button.dialog->window );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static inline void
|
||||
color_button_create ( void )
|
||||
{
|
||||
static const guint WIDTH = 120;
|
||||
static const guint HEIGHT = 20;
|
||||
|
||||
w.color_button.width = WIDTH;
|
||||
w.color_button.height = HEIGHT;
|
||||
w.color_button.row_buffer[0] = g_new( guchar, 3 * WIDTH );
|
||||
w.color_button.row_buffer[1] = g_new( guchar, 3 * WIDTH );
|
||||
w.color_button.preview = gtk_preview_new( GTK_PREVIEW_COLOR );
|
||||
w.color_button.widget = gtk_button_new();
|
||||
w.color_button.dialog = NULL;
|
||||
|
||||
gtk_preview_size( GTK_PREVIEW(w.color_button.preview), WIDTH, HEIGHT );
|
||||
gtk_widget_set_usize( w.color_button.preview, WIDTH, HEIGHT );
|
||||
gtk_widget_set_usize( w.color_button.widget, WIDTH + 1, HEIGHT + 1 );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(w.color_button.widget), "destroy",
|
||||
GTK_SIGNAL_FUNC(color_button_destroyed), NULL );
|
||||
gtk_signal_connect( GTK_OBJECT(w.color_button.widget), "clicked",
|
||||
GTK_SIGNAL_FUNC(color_button_dialog_open), NULL );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(w.color_button.widget), 0 );
|
||||
gtk_container_add( GTK_CONTAINER(w.color_button.widget),
|
||||
w.color_button.preview );
|
||||
|
||||
color_button_update();
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/* ADJUSTMENTS */
|
||||
|
@ -536,17 +332,15 @@ wrap_around_toggled ( GtkToggleButton *button )
|
|||
static void
|
||||
background_type_toggled ( GtkToggleButton *button, BackgroundType *type )
|
||||
{
|
||||
if( gtk_toggle_button_get_active( button ) ){
|
||||
if( *type != p.params.background_type ){
|
||||
p.params.background_type = *type;
|
||||
gtk_widget_set_sensitive( w.color_button.widget,
|
||||
*type == BACKGROUND_TYPE_COLOR );
|
||||
if( *type != BACKGROUND_TYPE_COLOR && w.color_button.dialog ){
|
||||
gtk_widget_destroy( w.color_button.dialog );
|
||||
w.color_button.dialog = NULL;
|
||||
}
|
||||
if ( gtk_toggle_button_get_active( button ) )
|
||||
{
|
||||
if( *type != p.params.background_type )
|
||||
{
|
||||
p.params.background_type = *type;
|
||||
gtk_widget_set_sensitive (w.color_button,
|
||||
*type == BACKGROUND_TYPE_COLOR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
@ -565,13 +359,13 @@ dialog_create ( void )
|
|||
GtkWidget *box;
|
||||
GtkWidget *label;
|
||||
|
||||
/* SPECIRL WIDGETS */
|
||||
adjustments_create();
|
||||
color_button_create();
|
||||
/* SPECIAL WIDGETS */
|
||||
adjustments_create();
|
||||
|
||||
|
||||
/* DIALOG WINDOW */
|
||||
w.dialog = gtk_window_new( GTK_WINDOW_DIALOG );
|
||||
gtk_window_set_title( GTK_WINDOW(w.dialog), PLUGIN_TITLE );
|
||||
gtk_window_set_title( GTK_WINDOW(w.dialog), _("Paper Tile") );
|
||||
gtk_window_set_policy( GTK_WINDOW(w.dialog), FALSE, FALSE, FALSE );
|
||||
gtk_window_set_position( GTK_WINDOW(w.dialog), GTK_WIN_POS_MOUSE );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(w.dialog), 5 );
|
||||
|
@ -596,26 +390,26 @@ dialog_create ( void )
|
|||
gtk_container_set_border_width( GTK_CONTAINER(vbox), 0 );
|
||||
gtk_box_pack_start( GTK_BOX(main_hbox), vbox, TRUE, TRUE, 0 );
|
||||
|
||||
frame = gtk_frame_new( "Division" );
|
||||
frame = gtk_frame_new (_("Division"));
|
||||
gtk_container_set_border_width( GTK_CONTAINER(frame), 5 );
|
||||
gtk_box_pack_start( GTK_BOX(vbox), frame, TRUE, FALSE, 0 );
|
||||
table = gtk_table_new( 3, 2, FALSE );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(table), 5 );
|
||||
gtk_container_add( GTK_CONTAINER(frame), table );
|
||||
label = gtk_label_new( "X:" );
|
||||
label = gtk_label_new( _("X:") );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 0, 1 );
|
||||
button = gtk_spin_button_new( w.division_x_adj, 1.5, 0 );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), button, 1, 2, 0, 1 );
|
||||
label = gtk_label_new( "Y:" );
|
||||
label = gtk_label_new( _("Y:") );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 1, 2 );
|
||||
button = gtk_spin_button_new( w.division_y_adj, 1.5, 0 );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), button, 1, 2, 1, 2 );
|
||||
label = gtk_label_new( "Size:" );
|
||||
label = gtk_label_new( _("Size:") );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 2, 3 );
|
||||
button = gtk_spin_button_new( w.tile_size_adj, 1.5, 0 );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), button, 1, 2, 2, 3 );
|
||||
|
||||
frame = gtk_frame_new( "Fractional Pixels" );
|
||||
frame = gtk_frame_new( _("Fractional Pixels") );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(frame), 5 );
|
||||
gtk_box_pack_start( GTK_BOX(vbox), frame, TRUE, FALSE, 0 );
|
||||
box = gtk_vbox_new( FALSE, 0 );
|
||||
|
@ -630,12 +424,12 @@ dialog_create ( void )
|
|||
FRACTIONAL_TYPE_FORCE
|
||||
};
|
||||
static const gchar *name[] = {
|
||||
"Background",
|
||||
"Ignore",
|
||||
"Force"
|
||||
N_("Background"),
|
||||
N_("Ignore"),
|
||||
N_("Force")
|
||||
};
|
||||
for( i = 0; i < 3; i++ ){
|
||||
button = gtk_radio_button_new_with_label( group, name[i] );
|
||||
button = gtk_radio_button_new_with_label( group, gettext (name[i]) );
|
||||
gtk_signal_connect( GTK_OBJECT(button), "toggled",
|
||||
GTK_SIGNAL_FUNC(fractional_type_toggled), &type[i] );
|
||||
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(button),
|
||||
|
@ -644,7 +438,7 @@ dialog_create ( void )
|
|||
group = gtk_radio_button_group( GTK_RADIO_BUTTON(button) );
|
||||
}
|
||||
}
|
||||
button = gtk_check_button_new_with_label( "Centering" );
|
||||
button = gtk_check_button_new_with_label( _("Centering") );
|
||||
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(button),
|
||||
p.params.centering );
|
||||
gtk_signal_connect( GTK_OBJECT(button), "toggled",
|
||||
|
@ -656,24 +450,24 @@ dialog_create ( void )
|
|||
gtk_container_set_border_width( GTK_CONTAINER(vbox), 0 );
|
||||
gtk_box_pack_start( GTK_BOX(main_hbox), vbox, TRUE, TRUE, 0 );
|
||||
|
||||
frame = gtk_frame_new( "Movement" );
|
||||
frame = gtk_frame_new( _("Movement") );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(frame), 5 );
|
||||
gtk_box_pack_start( GTK_BOX(vbox), frame, TRUE, FALSE, 0 );
|
||||
table = gtk_table_new( 2, 2, FALSE );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(table), 5 );
|
||||
gtk_container_add( GTK_CONTAINER(frame), table );
|
||||
label = gtk_label_new( "Max(%):" );
|
||||
label = gtk_label_new( _("Max(%):") );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), label, 0, 1, 0, 1 );
|
||||
button = gtk_spin_button_new( w.move_max_rate_adj, 1.5, 0 );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), button, 1, 2, 0, 1 );
|
||||
button = gtk_check_button_new_with_label( "Wrap Around" );
|
||||
button = gtk_check_button_new_with_label( _("Wrap Around") );
|
||||
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(button),
|
||||
p.params.wrap_around );
|
||||
gtk_signal_connect( GTK_OBJECT(button), "toggled",
|
||||
GTK_SIGNAL_FUNC(wrap_around_toggled), NULL );
|
||||
gtk_table_attach_defaults( GTK_TABLE(table), button, 0, 2, 1, 2 );
|
||||
|
||||
frame = gtk_frame_new( "Background Type" );
|
||||
frame = gtk_frame_new( _("Background Type") );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(frame), 5 );
|
||||
gtk_box_pack_start( GTK_BOX(vbox), frame, TRUE, FALSE, 0 );
|
||||
box = gtk_vbox_new( FALSE, 0 );
|
||||
|
@ -691,20 +485,25 @@ dialog_create ( void )
|
|||
BACKGROUND_TYPE_COLOR
|
||||
};
|
||||
static const gchar *name[] = {
|
||||
"Transparent",
|
||||
"Inverted Image",
|
||||
"Image",
|
||||
"Foreground Color",
|
||||
"Background Color",
|
||||
"Custom Color"
|
||||
N_("Transparent"),
|
||||
N_("Inverted Image"),
|
||||
N_("Image"),
|
||||
N_("Foreground Color"),
|
||||
N_("Background Color"),
|
||||
N_("Custom Color")
|
||||
};
|
||||
for( i = p.drawable_has_alpha ? 0 : 1; i < 6; i++ ){
|
||||
if( type[i] != BACKGROUND_TYPE_COLOR ){
|
||||
button = gtk_radio_button_new_with_label( group, name[i] );
|
||||
button = gtk_radio_button_new_with_label( group, gettext (name[i]) );
|
||||
} else {
|
||||
button = gtk_radio_button_new( group );
|
||||
gtk_container_set_border_width( GTK_CONTAINER(button), 0 );
|
||||
gtk_container_add( GTK_CONTAINER(button), w.color_button.widget );
|
||||
button = gtk_radio_button_new (group );
|
||||
gtk_container_set_border_width (GTK_CONTAINER (button), 0);
|
||||
w.color_button = gimp_color_button_new (_("Background Color"), 100, 16,
|
||||
p.params.background_color,
|
||||
p.drawable_has_alpha ? 4 : 3);
|
||||
gtk_widget_set_sensitive (w.color_button,
|
||||
p.params.background_type == BACKGROUND_TYPE_COLOR);
|
||||
gtk_container_add (GTK_CONTAINER (button), w.color_button);
|
||||
}
|
||||
gtk_signal_connect( GTK_OBJECT(button), "toggled",
|
||||
GTK_SIGNAL_FUNC(background_type_toggled), &type[i] );
|
||||
|
@ -716,12 +515,15 @@ dialog_create ( void )
|
|||
}
|
||||
|
||||
/* ACTION AREA */
|
||||
button = gtk_button_new_with_label( "OK" );
|
||||
button = gtk_button_new_with_label( _("Ok") );
|
||||
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
|
||||
gtk_signal_connect( GTK_OBJECT(button), "clicked",
|
||||
GTK_SIGNAL_FUNC(dialog_ok_clicked), NULL );
|
||||
gtk_container_add( GTK_CONTAINER(action_box), button );
|
||||
gtk_widget_grab_default (button);
|
||||
|
||||
button = gtk_button_new_with_label( "CANCEL" );
|
||||
button = gtk_button_new_with_label( _("Cancel") );
|
||||
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
|
||||
gtk_signal_connect( GTK_OBJECT(button), "clicked",
|
||||
GTK_SIGNAL_FUNC(dialog_cancel_clicked), NULL );
|
||||
gtk_container_add( GTK_CONTAINER(action_box), button );
|
||||
|
@ -1039,10 +841,10 @@ filter ( void )
|
|||
}
|
||||
break;
|
||||
case BACKGROUND_TYPE_COLOR:
|
||||
pixel[0] = p.params.background_color[0] * 255.0;
|
||||
pixel[1] = p.params.background_color[1] * 255.0;
|
||||
pixel[2] = p.params.background_color[2] * 255.0;
|
||||
pixel[3] = p.params.background_color[3] * 255.0;
|
||||
pixel[0] = p.params.background_color[0];
|
||||
pixel[1] = p.params.background_color[1];
|
||||
pixel[2] = p.params.background_color[2];
|
||||
pixel[3] = p.params.background_color[3];
|
||||
for( y = clear_y0; y < clear_y1; y++ ){
|
||||
for( x = clear_x0; x < clear_x1; x++ ){
|
||||
dindex = p.drawable->bpp * ( p.drawable->width * y + x );
|
||||
|
@ -1105,32 +907,6 @@ filter ( void )
|
|||
g_free( row_buffer );
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/* UNDO */
|
||||
/*============================================================================*/
|
||||
|
||||
static inline void
|
||||
undo_group_start ( void )
|
||||
{
|
||||
GParam *params;
|
||||
gint numof_params;
|
||||
params = gimp_run_procedure( "gimp_undo_push_group_start",
|
||||
&numof_params, PARAM_IMAGE, p.image, PARAM_END );
|
||||
gimp_destroy_params( params, numof_params );
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
static inline void
|
||||
undo_group_end ( void )
|
||||
{
|
||||
GParam *params;
|
||||
gint numof_params;
|
||||
|
||||
params = gimp_run_procedure( "gimp_undo_push_group_end",
|
||||
&numof_params, PARAM_IMAGE, p.image, PARAM_END );
|
||||
gimp_destroy_params( params, numof_params );
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/* PLUGIN INTERFACES */
|
||||
|
@ -1236,11 +1012,11 @@ plugin_run ( gchar * name,
|
|||
if( status == STATUS_SUCCESS && p.run ){
|
||||
if( p.run_mode == RUN_INTERACTIVE ){
|
||||
params_save_to_gimp();
|
||||
undo_group_start();
|
||||
gimp_undo_push_group_start (p.image);
|
||||
}
|
||||
filter();
|
||||
if( p.run_mode == RUN_INTERACTIVE ){
|
||||
undo_group_end();
|
||||
gimp_undo_push_group_end (p.image);
|
||||
gimp_displays_flush();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,9 +69,9 @@
|
|||
'nlfilt' => { libdep => 'gtk', libsupp => 'megawidget' },
|
||||
'noisify' => { libdep => 'gtk' },
|
||||
'normalize' => { libdep => 'glib' },
|
||||
'nova' => { libdep => 'gtk' },
|
||||
'nova' => { libdep => 'gtk', ui => 1 },
|
||||
'oilify' => { libdep => 'gtk' },
|
||||
'papertile' => { libdep => 'gtk' },
|
||||
'papertile' => { libdep => 'gtk', ui => 1 },
|
||||
'pat' => { libdep => 'gtk', ui => 1 },
|
||||
'pcx' => { libdep => 'gtk', ui => 1 },
|
||||
'pix' => { libdep => 'gtk', ui => 1 },
|
||||
|
|
|
@ -4,22 +4,22 @@
|
|||
*/
|
||||
gint p_plug_in_sinus_iter_ALT(GRunModeType run_mode, gint32 total_steps, gdouble current_step, gint32 len_struct)
|
||||
{
|
||||
typedef gdouble colRGBA[4];
|
||||
|
||||
typedef struct t_plug_in_sinus_Vals
|
||||
{
|
||||
gdouble xscale;
|
||||
gdouble yscale;
|
||||
gdouble complex;
|
||||
gdouble scalex;
|
||||
gdouble scaley;
|
||||
gdouble cmplx;
|
||||
gdouble blend_power;
|
||||
gint seed;
|
||||
gint tiling;
|
||||
gint perturb;
|
||||
gint perturbation;
|
||||
gint colorization;
|
||||
gint colors;
|
||||
colRGBA alpha1;
|
||||
colRGBA alpha2;
|
||||
} t_plug_in_sinus_Vals;
|
||||
t_color col1;
|
||||
guchar col1_alpha;
|
||||
t_color col2;
|
||||
guchar col2_alpha;
|
||||
} t_plug_in_sinus_Vals;
|
||||
|
||||
t_plug_in_sinus_Vals buf, *buf_from, *buf_to;
|
||||
|
||||
|
@ -37,24 +37,19 @@ gint p_plug_in_sinus_iter_ALT(GRunModeType run_mode, gint32 total_steps, gdouble
|
|||
buf_to = (t_plug_in_sinus_Vals *)&g_plugin_data_to[0];
|
||||
memcpy(&buf, buf_from, sizeof(buf));
|
||||
|
||||
p_delta_gdouble(&buf.xscale, buf_from->xscale, buf_to->xscale, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.yscale, buf_from->yscale, buf_to->yscale, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.complex, buf_from->complex, buf_to->complex, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.scalex, buf_from->scalex, buf_to->scalex, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.scaley, buf_from->scaley, buf_to->scaley, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.cmplx, buf_from->cmplx, buf_to->cmplx, total_steps, current_step);
|
||||
p_delta_gdouble(&buf.blend_power, buf_from->blend_power, buf_to->blend_power, total_steps, current_step);
|
||||
p_delta_gint(&buf.seed, buf_from->seed, buf_to->seed, total_steps, current_step);
|
||||
p_delta_gint(&buf.tiling, buf_from->tiling, buf_to->tiling, total_steps, current_step);
|
||||
p_delta_gint(&buf.perturb, buf_from->perturb, buf_to->perturb, total_steps, current_step);
|
||||
p_delta_gint(&buf.perturbation, buf_from->perturbation, buf_to->perturbation, total_steps, current_step);
|
||||
p_delta_gint(&buf.colorization, buf_from->colorization, buf_to->colorization, total_steps, current_step);
|
||||
p_delta_gint(&buf.colors, buf_from->colors, buf_to->colors, total_steps, current_step);
|
||||
|
||||
p_delta_gdouble(&buf.alpha1[0], buf_from->alpha1[0], buf_to->alpha1[0], total_steps, current_step);
|
||||
p_delta_gdouble(&buf.alpha1[1], buf_from->alpha1[1], buf_to->alpha1[1], total_steps, current_step);
|
||||
p_delta_gdouble(&buf.alpha1[2], buf_from->alpha1[2], buf_to->alpha1[2], total_steps, current_step);
|
||||
|
||||
p_delta_gdouble(&buf.alpha2[0], buf_from->alpha2[0], buf_to->alpha2[0], total_steps, current_step);
|
||||
p_delta_gdouble(&buf.alpha2[1], buf_from->alpha2[1], buf_to->alpha2[1], total_steps, current_step);
|
||||
p_delta_gdouble(&buf.alpha2[2], buf_from->alpha2[2], buf_to->alpha2[2], total_steps, current_step);
|
||||
|
||||
p_delta_gdouble(&buf.blend_power, buf_from->blend_power, buf_to->blend_power, total_steps, current_step);
|
||||
p_delta_color(&buf.col1, &buf_from->col1, &buf_to->col1, total_steps, current_step);
|
||||
p_delta_char(&buf.col1_alpha, buf_from->col1_alpha, buf_to->col1_alpha, total_steps, current_step);
|
||||
p_delta_color(&buf.col2, &buf_from->col2, &buf_to->col2, total_steps, current_step);
|
||||
p_delta_char(&buf.col2_alpha, buf_from->col2_alpha, buf_to->col2_alpha, total_steps, current_step);
|
||||
|
||||
gimp_set_data("plug_in_sinus", &buf, sizeof(buf));
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ INCLUDES = \
|
|||
|
||||
LDADD = \
|
||||
$(top_builddir)/plug-ins/megawidget/libmegawidget.a \
|
||||
$(top_builddir)/libgimp/libgimpui.la \
|
||||
$(top_builddir)/libgimp/libgimp.la \
|
||||
$(GTK_LIBS) \
|
||||
$(INTLLIBS)
|
||||
|
|
|
@ -41,6 +41,8 @@
|
|||
#include <gdk/gdk.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <libgimp/gimp.h>
|
||||
#include "libgimp/gimpui.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include <plug-ins/megawidget/megawidget.h>
|
||||
|
||||
#ifdef USE_LOGO
|
||||
|
@ -53,7 +55,6 @@
|
|||
|
||||
#define ROUND_TO_INT(val) ((int) ((val) + 0.5))
|
||||
|
||||
typedef gdouble colRGBA[4];
|
||||
|
||||
/*
|
||||
* This structure is used for persistent data.
|
||||
|
@ -71,18 +72,22 @@ typedef gdouble colRGBA[4];
|
|||
#define PERTURBED 1L
|
||||
|
||||
typedef struct {
|
||||
gdouble scalex, scaley;
|
||||
gdouble scalex;
|
||||
gdouble scaley;
|
||||
gdouble cmplx;
|
||||
gdouble blend_power;
|
||||
gint seed;
|
||||
gint tiling;
|
||||
glong perturbation;
|
||||
glong colorization;
|
||||
glong colors;
|
||||
colRGBA col1,col2;
|
||||
gint seed;
|
||||
gint tiling;
|
||||
glong perturbation;
|
||||
glong colorization;
|
||||
glong colors;
|
||||
guchar col1[4];
|
||||
guchar col2[4];
|
||||
} SinusVals;
|
||||
|
||||
static SinusVals svals={15.0, 15.0, 1.0, 0.0, 42, TRUE, PERTURBED, LINEAR, USE_COLORS, {1,1,0,1}, {0,0,1,1}};
|
||||
static SinusVals svals =
|
||||
{ 15.0, 15.0, 1.0, 0.0, 42, TRUE, PERTURBED, LINEAR,
|
||||
USE_COLORS, { 255, 255, 0, 255 }, { 0, 0, 255, 255 } };
|
||||
|
||||
typedef struct {
|
||||
gint height, width;
|
||||
|
@ -93,7 +98,7 @@ typedef struct {
|
|||
} params;
|
||||
|
||||
|
||||
static gint drawable_is_grayscale= FALSE;
|
||||
static gint drawable_is_grayscale = FALSE;
|
||||
static struct mwPreview *thePreview;
|
||||
static GDrawable *drawable;
|
||||
|
||||
|
@ -116,9 +121,9 @@ void sinus_do_preview(GtkWidget *w);
|
|||
|
||||
void DrawPreviewImage(gint DoCompute);
|
||||
inline void compute_block_4(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p);
|
||||
inline void compute_block_3(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p) ;
|
||||
inline void compute_block_2(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p) ;
|
||||
inline void compute_block_1(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p) ;
|
||||
inline void compute_block_3(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p);
|
||||
inline void compute_block_2(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p);
|
||||
inline void compute_block_1(guchar *dest_row, guint rowstride,gint x0,gint y0,gint h,gint w, params *p);
|
||||
|
||||
GPlugInInfo PLUG_IN_INFO =
|
||||
{
|
||||
|
@ -136,25 +141,23 @@ static void query ()
|
|||
{
|
||||
static GParamDef args[] =
|
||||
{
|
||||
{ PARAM_INT32, "run_mode", "Interactive, non-interactive" },
|
||||
{ PARAM_IMAGE, "image", "Input image (unused)" },
|
||||
{ PARAM_INT32, "run_mode", "Interactive, non-interactive" },
|
||||
{ PARAM_IMAGE, "image", "Input image (unused)" },
|
||||
{ PARAM_DRAWABLE, "drawable", "Input drawable" },
|
||||
|
||||
{ PARAM_FLOAT, "xscale", "Scale value for x axis" },
|
||||
{ PARAM_FLOAT, "yscale", "Scale value dor y axis" },
|
||||
{ PARAM_FLOAT, "complex", "Complexity factor" },
|
||||
{ PARAM_INT32, "seed", "Seed value for random number generator" },
|
||||
{ PARAM_INT32, "tiling", "If set, the pattern generated will tile" },
|
||||
{ PARAM_INT32, "perturb", "If set, the pattern is a little more distorted..." },
|
||||
|
||||
{ PARAM_INT32, "colors", "where to take the colors (0= B&W, 1= fg/bg, 2= col1/col2)"},
|
||||
/* { PARAM_COLOR, "col1", "fist color (sometimes unused)" },
|
||||
{ PARAM_COLOR, "col2", "second color (sometimes unused)" },*/
|
||||
{ PARAM_FLOAT, "alpha1", "alpha for the first color (used if the drawable has an alpha chanel)" },
|
||||
{ PARAM_FLOAT, "alpha2", "alpha for the second color (used if the drawable has an alpha chanel)" },
|
||||
|
||||
{ PARAM_INT32, "blend", "0= linear, 1= bilinear, 2= sinusoidal" },
|
||||
{ PARAM_FLOAT, "blend_power", "Power used to strech the blend" }
|
||||
{ PARAM_FLOAT, "xscale", "Scale value for x axis" },
|
||||
{ PARAM_FLOAT, "yscale", "Scale value dor y axis" },
|
||||
{ PARAM_FLOAT, "complex", "Complexity factor" },
|
||||
{ PARAM_INT32, "seed", "Seed value for random number generator" },
|
||||
{ PARAM_INT32, "tiling", "If set, the pattern generated will tile" },
|
||||
{ PARAM_INT32, "perturb", "If set, the pattern is a little more distorted..." },
|
||||
{ PARAM_INT32, "colors", "where to take the colors (0= B&W, 1= fg/bg, 2= col1/col2)"},
|
||||
{ PARAM_COLOR, "col1", "fist color (sometimes unused)" },
|
||||
{ PARAM_COLOR, "col2", "second color (sometimes unused)" },
|
||||
{ PARAM_FLOAT, "alpha1", "alpha for the first color (used if the drawable has an alpha chanel)" },
|
||||
{ PARAM_FLOAT, "alpha2", "alpha for the second color (used if the drawable has an alpha chanel)" },
|
||||
{ PARAM_INT32, "blend", "0= linear, 1= bilinear, 2= sinusoidal" },
|
||||
{ PARAM_FLOAT, "blend_power", "Power used to strech the blend" }
|
||||
};
|
||||
|
||||
static GParamDef *return_vals = NULL;
|
||||
|
@ -174,11 +177,12 @@ static void query ()
|
|||
args, return_vals);
|
||||
}
|
||||
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals)
|
||||
static void
|
||||
run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals)
|
||||
{
|
||||
static GParam values[1];
|
||||
GRunModeType run_mode;
|
||||
|
@ -213,27 +217,27 @@ static void run (gchar *name,
|
|||
|
||||
case RUN_NONINTERACTIVE:
|
||||
/* Make sure all the arguments are there! */
|
||||
if (nparams != 14)
|
||||
if (nparams != 16)
|
||||
status = STATUS_CALLING_ERROR;
|
||||
if (status == STATUS_SUCCESS)
|
||||
{
|
||||
svals.seed = param[6].data.d_int32;
|
||||
svals.scalex = param[3].data.d_float;
|
||||
svals.scaley = param[4].data.d_float;
|
||||
svals.cmplx = param[5].data.d_float;
|
||||
svals.blend_power = param[15].data.d_float;
|
||||
svals.tiling = param[7].data.d_int32;
|
||||
svals.scalex = param[3].data.d_float;
|
||||
svals.scaley = param[4].data.d_float;
|
||||
svals.cmplx = param[5].data.d_float;
|
||||
svals.seed = param[6].data.d_int32;
|
||||
svals.tiling = param[7].data.d_int32;
|
||||
svals.perturbation = param[8].data.d_int32;
|
||||
svals.colors = param[9].data.d_int32;
|
||||
svals.col1[0] = param[10].data.d_color.red;
|
||||
svals.col1[1] = param[10].data.d_color.green;
|
||||
svals.col1[2] = param[10].data.d_color.blue;
|
||||
svals.col2[0] = param[11].data.d_color.red;
|
||||
svals.col2[1] = param[11].data.d_color.green;
|
||||
svals.col2[2] = param[11].data.d_color.blue;
|
||||
svals.col1[3] = param[12].data.d_float * 255.0;
|
||||
svals.col2[3] = param[13].data.d_float * 255.0;
|
||||
svals.colorization = param[14].data.d_int32;
|
||||
svals.colors = param[9].data.d_int32;
|
||||
svals.col1[3] = param[12].data.d_float;
|
||||
svals.col2[3] = param[13].data.d_float;
|
||||
svals.col1[0] = param[10].data.d_color.red/255.999;
|
||||
svals.col1[1] = param[10].data.d_color.green/255.999;
|
||||
svals.col1[2] = param[10].data.d_color.blue/255.999;
|
||||
svals.col2[0] = param[11].data.d_color.red/255.999;
|
||||
svals.col2[1] = param[11].data.d_color.green/255.999;
|
||||
svals.col2[2] = param[11].data.d_color.blue/255.999;
|
||||
svals.blend_power = param[15].data.d_float;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -252,7 +256,7 @@ static void run (gchar *name,
|
|||
/* Make sure that the drawable is gray or RGB */
|
||||
if (( status == STATUS_SUCCESS) && (gimp_drawable_is_rgb (drawable->id) || gimp_drawable_is_gray (drawable->id)))
|
||||
{
|
||||
gimp_progress_init("Calculating picture...");
|
||||
gimp_progress_init ("Calculating picture...");
|
||||
gimp_tile_cache_ntiles( 1 );
|
||||
sinus ();
|
||||
|
||||
|
@ -277,7 +281,8 @@ static void run (gchar *name,
|
|||
* Main procedure
|
||||
*/
|
||||
|
||||
void prepare_coef( params *p)
|
||||
void
|
||||
prepare_coef (params *p)
|
||||
{
|
||||
typedef struct { guchar r,g,b,a;} type_color;
|
||||
type_color col1,col2;
|
||||
|
@ -328,8 +333,8 @@ void prepare_coef( params *p)
|
|||
p->c32= ROUND_TO_INT(p->c32/(2*G_PI))*2*G_PI;
|
||||
}
|
||||
|
||||
col2.a=255.999*svals.col2[3];
|
||||
col1.a=255.999*svals.col1[3];
|
||||
col2.a=svals.col2[3];
|
||||
col1.a=svals.col1[3];
|
||||
|
||||
if (drawable_is_grayscale) {
|
||||
col1.r=col1.g=col1.b=255;
|
||||
|
@ -337,12 +342,12 @@ void prepare_coef( params *p)
|
|||
} else {
|
||||
switch (svals.colors) {
|
||||
case USE_COLORS:
|
||||
col1.r=255.999*svals.col1[0];
|
||||
col1.g=255.999*svals.col1[1];
|
||||
col1.b=255.999*svals.col1[2];
|
||||
col2.r=255.999*svals.col2[0];
|
||||
col2.g=255.999*svals.col2[1];
|
||||
col2.b=255.999*svals.col2[2];
|
||||
col1.r=svals.col1[0];
|
||||
col1.g=svals.col1[1];
|
||||
col1.b=svals.col1[2];
|
||||
col2.r=svals.col2[0];
|
||||
col2.g=svals.col2[1];
|
||||
col2.b=svals.col2[2];
|
||||
break;
|
||||
case B_W:
|
||||
col1.r=col1.g=col1.b=255;
|
||||
|
@ -366,72 +371,82 @@ void prepare_coef( params *p)
|
|||
}
|
||||
|
||||
static void
|
||||
sinus()
|
||||
sinus ()
|
||||
{
|
||||
params p;
|
||||
gint bytes;
|
||||
GPixelRgn dest_rgn;
|
||||
int ix1, iy1, ix2, iy2; /* Selected image size. */
|
||||
gpointer pr;
|
||||
gint progress, max_progress;
|
||||
|
||||
prepare_coef(&p);
|
||||
|
||||
gimp_drawable_mask_bounds(drawable->id, &ix1, &iy1, &ix2, &iy2);
|
||||
|
||||
p.width = drawable->width;
|
||||
p.height = drawable->height;
|
||||
bytes = drawable->bpp;
|
||||
|
||||
gimp_pixel_rgn_init(&dest_rgn, drawable, ix1, iy1, ix2-ix1, iy2-iy1, TRUE,TRUE);
|
||||
progress = 0;
|
||||
max_progress = (ix2-ix1)*(iy2-iy1);
|
||||
|
||||
for (pr= gimp_pixel_rgns_register(1, &dest_rgn); pr != NULL; pr = gimp_pixel_rgns_process(pr)) {
|
||||
switch (bytes) {
|
||||
case 4:
|
||||
compute_block_4(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 3:
|
||||
compute_block_3(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 2:
|
||||
compute_block_2(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 1:
|
||||
compute_block_1(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
}
|
||||
progress+= dest_rgn.w * dest_rgn.h;
|
||||
gimp_progress_update((double) progress/ (double) max_progress);
|
||||
}
|
||||
|
||||
|
||||
gimp_drawable_flush(drawable);
|
||||
gimp_drawable_merge_shadow(drawable->id, TRUE);
|
||||
gimp_drawable_update ( drawable->id, ix1, iy1, (ix2-ix1), (iy2-iy1));
|
||||
params p;
|
||||
gint bytes;
|
||||
GPixelRgn dest_rgn;
|
||||
int ix1, iy1, ix2, iy2; /* Selected image size. */
|
||||
gpointer pr;
|
||||
gint progress, max_progress;
|
||||
|
||||
prepare_coef(&p);
|
||||
|
||||
gimp_drawable_mask_bounds(drawable->id, &ix1, &iy1, &ix2, &iy2);
|
||||
|
||||
p.width = drawable->width;
|
||||
p.height = drawable->height;
|
||||
bytes = drawable->bpp;
|
||||
|
||||
gimp_pixel_rgn_init(&dest_rgn, drawable, ix1, iy1, ix2-ix1, iy2-iy1, TRUE,TRUE);
|
||||
progress = 0;
|
||||
max_progress = (ix2-ix1)*(iy2-iy1);
|
||||
|
||||
for (pr= gimp_pixel_rgns_register(1, &dest_rgn); pr != NULL; pr = gimp_pixel_rgns_process(pr)) {
|
||||
switch (bytes) {
|
||||
case 4:
|
||||
compute_block_4(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 3:
|
||||
compute_block_3(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 2:
|
||||
compute_block_2(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
case 1:
|
||||
compute_block_1(dest_rgn.data, dest_rgn.rowstride, dest_rgn.x, dest_rgn.y, dest_rgn.w, dest_rgn.h, &p);
|
||||
break;
|
||||
}
|
||||
progress+= dest_rgn.w * dest_rgn.h;
|
||||
gimp_progress_update((double) progress/ (double) max_progress);
|
||||
}
|
||||
|
||||
|
||||
gimp_drawable_flush(drawable);
|
||||
gimp_drawable_merge_shadow(drawable->id, TRUE);
|
||||
gimp_drawable_update ( drawable->id, ix1, iy1, (ix2-ix1), (iy2-iy1));
|
||||
}
|
||||
|
||||
double linear (double v)
|
||||
double
|
||||
linear (double v)
|
||||
{
|
||||
register double a=v-(int)v;
|
||||
return (a<0?1.0+a:a);
|
||||
register double a=v-(int)v;
|
||||
return (a<0?1.0+a:a);
|
||||
}
|
||||
|
||||
double bilinear(double v)
|
||||
double
|
||||
bilinear (double v)
|
||||
{
|
||||
register double a=v-(int)v;
|
||||
a=(a<0?1.0+a:a);
|
||||
return (a>0.5?2-2*a:2*a);
|
||||
register double a=v-(int)v;
|
||||
a=(a<0?1.0+a:a);
|
||||
return (a>0.5?2-2*a:2*a);
|
||||
}
|
||||
|
||||
double cosinus(double v)
|
||||
double
|
||||
cosinus (double v)
|
||||
{
|
||||
return 0.5-0.5*sin((v+0.25)*G_PI*2);
|
||||
return 0.5-0.5*sin((v+0.25)*G_PI*2);
|
||||
}
|
||||
|
||||
|
||||
inline void compute_block_4(guchar *dest_row, guint rowstride,gint x0,gint y0,gint w,gint h, params *p)
|
||||
inline void
|
||||
compute_block_4 (guchar *dest_row,
|
||||
guint rowstride,
|
||||
gint x0,
|
||||
gint y0,
|
||||
gint w,
|
||||
gint h,
|
||||
params *p)
|
||||
{
|
||||
gint i,j;
|
||||
double x,y, grey;
|
||||
|
@ -456,7 +471,14 @@ inline void compute_block_4(guchar *dest_row, guint rowstride,gint x0,gint y0,gi
|
|||
}
|
||||
}
|
||||
|
||||
inline void compute_block_3(guchar *dest_row, guint rowstride,gint x0,gint y0,gint w,gint h, params *p)
|
||||
inline void
|
||||
compute_block_3 (guchar *dest_row,
|
||||
guint rowstride,
|
||||
gint x0,
|
||||
gint y0,
|
||||
gint w,
|
||||
gint h,
|
||||
params *p)
|
||||
{
|
||||
gint i,j;
|
||||
double x,y, grey;
|
||||
|
@ -478,7 +500,15 @@ inline void compute_block_3(guchar *dest_row, guint rowstride,gint x0,gint y0,gi
|
|||
dest_row += rowstride;
|
||||
}
|
||||
}
|
||||
inline void compute_block_2(guchar *dest_row, guint rowstride,gint x0,gint y0,gint w,gint h, params *p)
|
||||
|
||||
inline void
|
||||
compute_block_2 (guchar *dest_row,
|
||||
guint rowstride,
|
||||
gint x0,
|
||||
gint y0,
|
||||
gint w,
|
||||
gint h,
|
||||
params *p)
|
||||
{
|
||||
gint i,j;
|
||||
double x,y, grey;
|
||||
|
@ -500,7 +530,15 @@ inline void compute_block_2(guchar *dest_row, guint rowstride,gint x0,gint y0,gi
|
|||
dest_row += rowstride;
|
||||
}
|
||||
}
|
||||
inline void compute_block_1(guchar *dest_row, guint rowstride,gint x0,gint y0,gint w,gint h, params *p)
|
||||
|
||||
inline void
|
||||
compute_block_1 (guchar *dest_row,
|
||||
guint rowstride,
|
||||
gint x0,
|
||||
gint y0,
|
||||
gint w,
|
||||
gint h,
|
||||
params *p)
|
||||
{
|
||||
gint i,j;
|
||||
double x,y, grey;
|
||||
|
@ -527,17 +565,54 @@ inline void compute_block_1(guchar *dest_row, guint rowstride,gint x0,gint y0,gi
|
|||
/* -------------------------- UI ------------------------------- */
|
||||
/* -------------------------------------------------------------- */
|
||||
|
||||
|
||||
static void
|
||||
alpha_scale_cb (GtkAdjustment *adj,
|
||||
gpointer data)
|
||||
{
|
||||
guchar *val;
|
||||
GtkWidget *color_button;
|
||||
|
||||
val = (guchar*)data;
|
||||
|
||||
*val = (guchar)(adj->value * 255.0);
|
||||
|
||||
color_button = gtk_object_get_user_data (GTK_OBJECT (adj));
|
||||
if (GIMP_IS_COLOR_BUTTON (color_button))
|
||||
gimp_color_button_update (GIMP_COLOR_BUTTON (color_button));
|
||||
}
|
||||
|
||||
static void
|
||||
alpha_scale_update (GtkWidget *color_button,
|
||||
gpointer data)
|
||||
{
|
||||
guchar *val;
|
||||
GtkWidget *adj;
|
||||
|
||||
val = (guchar*)data;
|
||||
|
||||
adj = gtk_object_get_user_data (GTK_OBJECT (color_button));
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (adj), data);
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (adj), (gfloat)(*val) / 255.0);
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (adj), data);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************/
|
||||
/* The note book */
|
||||
/*****************************************/
|
||||
int sinus_dialog(void)
|
||||
int
|
||||
sinus_dialog (void)
|
||||
{
|
||||
GtkWidget *dlg;
|
||||
GtkWidget *preview;
|
||||
gint runp;
|
||||
GtkWidget *main_hbox, *notebook;
|
||||
GtkWidget *page,*frame, *label, *vbox, *hbox, *table;
|
||||
struct mwColorSel *push_col1, *push_col2;
|
||||
GtkWidget *push_col1 = NULL;
|
||||
GtkWidget *push_col2 = NULL;
|
||||
GtkWidget *scale;
|
||||
GtkObject *adj;
|
||||
#ifdef USE_LOGO
|
||||
GtkWidget *logo;
|
||||
gint x,y;
|
||||
|
@ -574,7 +649,7 @@ int sinus_dialog(void)
|
|||
|
||||
/* Create Main window with a vbox */
|
||||
/* ============================== */
|
||||
dlg = mw_app_new("plug_in_sinus", "Sinus", &runp);
|
||||
dlg = mw_app_new("plug_in_sinus", _("Sinus"), &runp);
|
||||
main_hbox = gtk_hbox_new(FALSE, 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(main_hbox), 5);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), main_hbox, TRUE, TRUE, 0);
|
||||
|
@ -616,33 +691,33 @@ int sinus_dialog(void)
|
|||
page = gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(page), 5);
|
||||
|
||||
frame= gtk_frame_new("Drawing settings");
|
||||
frame= gtk_frame_new (_("Drawing settings"));
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start(GTK_BOX(page), frame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(frame);
|
||||
table = gtk_table_new(4, 2, FALSE);
|
||||
gtk_container_border_width(GTK_CONTAINER (table), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
mw_fscale_entry_new(table, "X scale: ", 0.0001, 100.0, 0.001, 5, 0,
|
||||
mw_fscale_entry_new(table, _("X Scale: "), 0.0001, 100.0, 0.001, 5, 0,
|
||||
0, 1, 1, 2, &(svals.scalex));
|
||||
mw_fscale_entry_new(table, "Y scale: ", 0.0001, 100.0, 0.001, 5, 0,
|
||||
mw_fscale_entry_new(table, _("Y Scale: "), 0.0001, 100.0, 0.001, 5, 0,
|
||||
0, 1, 2, 3, &(svals.scaley));
|
||||
mw_fscale_entry_new(table, "Complexity: ", 0, 15.0, 0.01, 5, 0,
|
||||
mw_fscale_entry_new(table, _("Complexity: "), 0, 15.0, 0.01, 5, 0,
|
||||
0, 1, 3, 4, &(svals.cmplx));
|
||||
gtk_widget_show(table);
|
||||
|
||||
frame= gtk_frame_new("Calculation settings");
|
||||
frame= gtk_frame_new (_("Calculation settings"));
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start(GTK_BOX(page), frame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(frame);
|
||||
vbox= gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
mw_ientry_new(vbox, NULL, "Random seed:", &svals.seed);
|
||||
mw_toggle_button_new(vbox, NULL, "Force tiling?", &svals.tiling);
|
||||
mw_ientry_new(vbox, NULL, _("Random seed:"), &svals.seed);
|
||||
mw_toggle_button_new(vbox, NULL, _("Force tiling?"), &svals.tiling);
|
||||
mw_value_radio_group_new(vbox, NULL , coefs_radio, &svals.perturbation);
|
||||
|
||||
label = gtk_label_new("Settings");
|
||||
label = gtk_label_new (_("Settings"));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label);
|
||||
gtk_widget_show(page);
|
||||
|
@ -653,48 +728,103 @@ int sinus_dialog(void)
|
|||
page = gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(page), 5);
|
||||
|
||||
frame = gtk_frame_new("Colors");
|
||||
frame = gtk_frame_new (_("Colors"));
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start(GTK_BOX(page), frame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(frame);
|
||||
if (drawable_is_grayscale) {
|
||||
/*if in grey scale, the colors are necessarily black and white */
|
||||
label = gtk_label_new("The colors are white and black.");
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), label);
|
||||
gtk_widget_show(label);
|
||||
if (drawable_is_grayscale)
|
||||
{
|
||||
/*if in grey scale, the colors are necessarily black and white */
|
||||
label = gtk_label_new(_("The colors are white and black."));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), label);
|
||||
gtk_widget_show(label);
|
||||
}
|
||||
else
|
||||
{
|
||||
vbox= gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
mw_value_radio_group_new(vbox, NULL, colors_radio, &svals.colors);
|
||||
hbox= gtk_hbox_new(TRUE, 20);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0);
|
||||
|
||||
push_col1 = gimp_color_button_new (_("First Color"), 32, 32, svals.col1, 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), push_col1, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push_col1);
|
||||
|
||||
} else {
|
||||
vbox= gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_widget_show(vbox);
|
||||
mw_value_radio_group_new(vbox, NULL, colors_radio, &svals.colors);
|
||||
hbox= gtk_hbox_new(TRUE, 20);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0);
|
||||
push_col2 = gimp_color_button_new (_("Second Color"), 32, 32, svals.col2, 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), push_col2, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push_col2);
|
||||
|
||||
push_col1 = mw_color_select_button_create(hbox, "Fisrt Color", svals.col1, FALSE);
|
||||
push_col2 = mw_color_select_button_create(hbox, "Second Color", svals.col2, FALSE);
|
||||
gtk_widget_show(hbox);
|
||||
gtk_widget_show (hbox);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
frame = gtk_frame_new("Alpha Channels");
|
||||
frame = gtk_frame_new (_("Alpha Channels"));
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start(GTK_BOX(page), frame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(frame);
|
||||
table = gtk_table_new(3, 2, FALSE);
|
||||
|
||||
table = gtk_table_new (3, 2, FALSE);
|
||||
gtk_container_border_width(GTK_CONTAINER (table), 5);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
|
||||
mw_fscale_entry_new(table, "first color ", 0, 1.0, 0.01, 5, 0,
|
||||
0, 1, 1, 2, &(svals.col1[3]));
|
||||
mw_fscale_entry_new(table, "last color ", 0, 1.0, 0.01, 5, 0,
|
||||
0, 1, 2, 3, &(svals.col2[3]));
|
||||
label = gtk_label_new (_("First Color: "));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 1.0);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
|
||||
GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adj = gtk_adjustment_new ((gfloat)(svals.col1[3]) / 255.0, 0.0, 1.0, 0.01, 0.1, 0.0);
|
||||
gtk_object_set_user_data (GTK_OBJECT (adj), push_col1);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
(GtkSignalFunc) alpha_scale_cb,
|
||||
&svals.col1[3]);
|
||||
if (push_col1)
|
||||
{
|
||||
gtk_object_set_user_data (GTK_OBJECT (push_col1), adj);
|
||||
gtk_signal_connect (GTK_OBJECT (push_col1), "color_changed",
|
||||
(GtkSignalFunc) alpha_scale_update, &svals.col1[3]);
|
||||
}
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (adj));
|
||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
|
||||
gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 1, 2,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (scale);
|
||||
|
||||
label = gtk_label_new (_("Second Color: "));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 1.0);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3,
|
||||
GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adj = gtk_adjustment_new ((gfloat)(svals.col2[3]) / 255.0, 0.0, 1.0, 0.01, 0.1, 0.0);
|
||||
gtk_object_set_user_data (GTK_OBJECT (adj), push_col2);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
(GtkSignalFunc) alpha_scale_cb,
|
||||
&svals.col2[3]);
|
||||
if (push_col2)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (push_col2), "color_changed",
|
||||
(GtkSignalFunc) alpha_scale_update, &svals.col2[3]);
|
||||
gtk_object_set_user_data (GTK_OBJECT (push_col2), adj);
|
||||
}
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (adj));
|
||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
|
||||
gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 2, 3,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (scale);
|
||||
|
||||
/* mw_iscale_entry_new (table, _("First color "), 0, 255, 1, 5, 0, */
|
||||
/* 0, 1, 1, 2, &(svals.col1[3])); */
|
||||
/* mw_iscale_entry_new (table, _("Second color "), 0, 255, 1, 5, 0, */
|
||||
/* 0, 1, 2, 3, &(svals.col2[3])); */
|
||||
|
||||
gtk_widget_show(table);
|
||||
|
||||
label = gtk_label_new("Colors");
|
||||
label = gtk_label_new (_("Colors"));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label);
|
||||
gtk_widget_show(page);
|
||||
|
@ -702,12 +832,12 @@ int sinus_dialog(void)
|
|||
|
||||
/* blend settings dialog: */
|
||||
/* ====================== */
|
||||
label = gtk_label_new("Blend");
|
||||
label = gtk_label_new (_("Blend"));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
|
||||
page = gtk_vbox_new(FALSE, 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(page), 5);
|
||||
|
||||
frame = gtk_frame_new("Blend settings");
|
||||
frame = gtk_frame_new(_("Blend settings"));
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start(GTK_BOX(page), frame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(frame);
|
||||
|
@ -716,13 +846,13 @@ int sinus_dialog(void)
|
|||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
gtk_container_border_width(GTK_CONTAINER(vbox), 5);
|
||||
gtk_widget_show(vbox);
|
||||
mw_value_radio_group_new(vbox, "Gradient", coloriz_radio, &svals.colorization);
|
||||
mw_value_radio_group_new(vbox, _("Gradient"), coloriz_radio, &svals.colorization);
|
||||
|
||||
table = gtk_table_new(2, 2, FALSE);
|
||||
gtk_container_border_width(GTK_CONTAINER (table), 5);
|
||||
gtk_container_add(GTK_CONTAINER(vbox), table);
|
||||
|
||||
mw_fscale_entry_new(table, "Exponent ", -7.5, 7.5, 0.01, 5.0, 0.0,
|
||||
mw_fscale_entry_new(table, _("Exponent "), -7.5, 7.5, 0.01, 5.0, 0.0,
|
||||
0, 1, 0, 1, &svals.blend_power);
|
||||
gtk_widget_show(table);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* GIMP header image file format (INDEXED): \tmp\logo.h */
|
||||
|
||||
static unsigned int width = 100;
|
||||
static unsigned int height = 100;
|
||||
/* static unsigned int width = 100; */
|
||||
/* static unsigned int height = 100; */
|
||||
|
||||
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
|
||||
|
||||
|
|
|
@ -36,7 +36,9 @@ plug-ins/common/grid.c
|
|||
plug-ins/common/film.c
|
||||
plug-ins/common/mail.c
|
||||
plug-ins/common/normalize.c
|
||||
plug-ins/common/nova.c
|
||||
plug-ins/common/oilify.c
|
||||
plug-ins/common/papertile.c
|
||||
plug-ins/common/png.c
|
||||
plug-ins/common/ps.c
|
||||
plug-ins/common/rotate.c
|
||||
|
@ -125,4 +127,5 @@ plug-ins/script-fu/script-fu-scripts.c
|
|||
plug-ins/script-fu/script-fu-server.c
|
||||
plug-ins/script-fu/script-fu.c
|
||||
plug-ins/sel2path/sel2path.c
|
||||
plug-ins/sinus/sinus.c
|
||||
plug-ins/struc/struc.c
|
||||
|
|
Loading…
Reference in New Issue