diff options
Diffstat (limited to 'app/widgets/gimpgradienteditor.h')
-rw-r--r-- | app/widgets/gimpgradienteditor.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/app/widgets/gimpgradienteditor.h b/app/widgets/gimpgradienteditor.h new file mode 100644 index 0000000..3698d72 --- /dev/null +++ b/app/widgets/gimpgradienteditor.h @@ -0,0 +1,118 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Gradient editor module copyight (C) 1996-1997 Federico Mena Quintero + * federico@nuclecu.unam.mx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#ifndef __GIMP_GRADIENT_EDITOR_H__ +#define __GIMP_GRADIENT_EDITOR_H__ + + +#include "gimpdataeditor.h" + + +#define GRAD_NUM_COLORS 10 + + +typedef enum +{ + GRAD_DRAG_NONE = 0, + GRAD_DRAG_LEFT, + GRAD_DRAG_MIDDLE, + GRAD_DRAG_ALL +} GradientEditorDragMode; + + +#define GIMP_TYPE_GRADIENT_EDITOR (gimp_gradient_editor_get_type ()) +#define GIMP_GRADIENT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_GRADIENT_EDITOR, GimpGradientEditor)) +#define GIMP_GRADIENT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_GRADIENT_EDITOR, GimpGradientEditorClass)) +#define GIMP_IS_GRADIENT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_GRADIENT_EDITOR)) +#define GIMP_IS_GRADIENT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_GRADIENT_EDITOR)) +#define GIMP_GRADIENT_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_GRADIENT_EDITOR, GimpGradientEditorClass)) + + +typedef struct _GimpGradientEditorClass GimpGradientEditorClass; + +struct _GimpGradientEditor +{ + GimpDataEditor parent_instance; + + GtkWidget *current_color; + GtkWidget *hint_label1; + GtkWidget *hint_label2; + GtkWidget *hint_label3; + GtkWidget *hint_label4; + GtkWidget *scrollbar; + GtkWidget *control; + + /* Zoom and scrollbar */ + guint zoom_factor; + GtkAdjustment *scroll_data; + + /* Gradient view */ + gint view_last_x; + gboolean view_button_down; + + /* Gradient control */ + GimpGradientSegment *control_drag_segment; /* Segment which is being dragged */ + GimpGradientSegment *control_sel_l; /* Left segment of selection */ + GimpGradientSegment *control_sel_r; /* Right segment of selection */ + GradientEditorDragMode control_drag_mode; /* What is being dragged? */ + guint32 control_click_time; /* Time when mouse was pressed */ + gboolean control_compress; /* Compressing/expanding handles */ + gint control_last_x; /* Last mouse position when dragging */ + gdouble control_last_gx; /* Last position (wrt gradient) when dragging */ + gdouble control_orig_pos; /* Original click position when dragging */ + + GimpGradientBlendColorSpace blend_color_space; + + /* Saved colors */ + GimpRGB saved_colors[GRAD_NUM_COLORS]; + + /* Color dialog */ + GtkWidget *color_dialog; + GimpGradientSegment *saved_segments; + gboolean saved_dirty; +}; + +struct _GimpGradientEditorClass +{ + GimpDataEditorClass parent_class; +}; + + +GType gimp_gradient_editor_get_type (void) G_GNUC_CONST; + +GtkWidget * gimp_gradient_editor_new (GimpContext *context, + GimpMenuFactory *menu_factory); + +void gimp_gradient_editor_get_selection (GimpGradientEditor *editor, + GimpGradient **gradient, + GimpGradientSegment **left, + GimpGradientSegment **right); +void gimp_gradient_editor_set_selection (GimpGradientEditor *editor, + GimpGradientSegment *left, + GimpGradientSegment *right); + +void gimp_gradient_editor_edit_left_color (GimpGradientEditor *editor); +void gimp_gradient_editor_edit_right_color (GimpGradientEditor *editor); + +void gimp_gradient_editor_zoom (GimpGradientEditor *editor, + GimpZoomType zoom_type); + + +#endif /* __GIMP_GRADIENT_EDITOR_H__ */ |