summaryrefslogtreecommitdiffstats
path: root/plug-ins/gfig/gfig.h
diff options
context:
space:
mode:
Diffstat (limited to 'plug-ins/gfig/gfig.h')
-rw-r--r--plug-ins/gfig/gfig.h245
1 files changed, 245 insertions, 0 deletions
diff --git a/plug-ins/gfig/gfig.h b/plug-ins/gfig/gfig.h
new file mode 100644
index 0000000..a2ed727
--- /dev/null
+++ b/plug-ins/gfig/gfig.h
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This is a plug-in for GIMP.
+ *
+ * Generates images containing vector type drawings.
+ *
+ * Copyright (C) 1997 Andy Thomas alt@picnic.demon.co.uk
+ *
+ * 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 __GFIG_H__
+#define __GFIG_H__
+
+#include "gfig-types.h"
+#include "gfig-style.h"
+
+#define MAX_UNDO 10
+#define MIN_UNDO 1
+
+typedef struct
+{
+ gint gridspacing;
+ GridType gridtype;
+ gboolean drawgrid;
+ gboolean snap2grid;
+ gboolean lockongrid;
+ gboolean showcontrol;
+ gdouble grid_radius_min;
+ gdouble grid_radius_interval;
+ gdouble grid_rotation;
+ gdouble grid_granularity;
+ gint grid_sectors_desired;
+} GfigOpts;
+
+typedef struct
+{
+ SelectionType type; /* ADD etc .. */
+ gint antia; /* Boolean for Antia */
+ gint feather; /* Feather it ? */
+ gdouble feather_radius; /* Radius to feather */
+ ArcType as_pie; /* Arc type selection segment/sector */
+ FillType fill_type; /* Fill type for selection */
+ gdouble fill_opacity; /* You can guess this one */
+} selection_option;
+
+void object_start (GdkPoint *pnt, gint);
+void object_operation (GdkPoint *pnt, gint);
+void object_operation_start (GdkPoint *pnt, gint shift_down);
+void object_operation_end (GdkPoint *pnt, gint);
+void object_end (GdkPoint *pnt, gint shift_down);
+
+#define MAX_LOAD_LINE 256
+#define SQ_SIZE 8
+
+#define PLUG_IN_PROC "plug-in-gfig"
+#define PLUG_IN_BINARY "gfig"
+#define PLUG_IN_ROLE "gimp-gfig"
+
+extern gint line_no;
+extern gint preview_width, preview_height;
+extern gint need_to_scale;
+extern gdouble scale_x_factor, scale_y_factor;
+extern GdkPixbuf *back_pixbuf;
+
+extern GtkWidget *pic_preview;
+extern gint obj_show_single;
+
+typedef struct
+{
+ GfigOpts opts;
+ gboolean showimage;
+ gint maxundo;
+ gboolean showpos;
+ gdouble brushfade;
+ gdouble brushgradient;
+ gdouble airbrushpressure;
+ DrawonLayers onlayers;
+ LayersBGType onlayerbg;
+ PaintType painttype;
+ gboolean reverselines;
+ gboolean scaletoimage;
+ gdouble scaletoimagefp;
+ BrushType brshtype;
+ DobjType otype;
+} SelectItVals;
+
+struct _GFigObj
+{
+ gchar *name; /* Trailing name of file */
+ gchar *filename; /* Filename itself */
+ gchar *draw_name; /* Name of the drawing */
+ gfloat version; /* Version number of data file */
+ GfigOpts opts; /* Options enforced when fig saved */
+ GList *obj_list; /* Objects that make up this list */
+ gint obj_status; /* See above for possible values */
+ GtkWidget *list_item;
+ GtkWidget *label_widget;
+ GtkWidget *pixmap_widget;
+};
+
+/* this is temp, should be able to get rid of */
+typedef struct BrushDesc
+{
+ gchar *name;
+ gdouble opacity;
+ gint spacing;
+ GimpLayerMode paint_mode;
+ gint width;
+ gint height;
+ guchar *pv_buf; /* Buffer where brush placed */
+ gint16 x_off;
+ gint16 y_off;
+ const gchar *popup;
+} BrushDesc;
+
+typedef struct
+{
+ gboolean debug_styles;
+ gboolean show_background; /* show thumbnail of image behind figure */
+ gint32 image_id; /* Gimp image id */
+ gint32 drawable_id; /* Gimp drawable to paint on */
+ GFigObj *current_obj;
+ GfigObject *selected_obj;
+ GtkWidget *preview;
+ Style default_style;
+ BrushDesc bdesc;
+ GtkWidget *fg_color_button;
+ GtkWidget *bg_color_button;
+ GtkWidget *brush_select;
+ GtkWidget *pattern_select;
+ GtkWidget *gradient_select;
+ GtkWidget *fillstyle_combo;
+ GtkWidget *paint_type_toggle;
+ GimpRGB *fg_color;
+ GimpRGB *bg_color;
+ gboolean enable_repaint;
+ gboolean using_new_layer;
+} GFigContext;
+
+extern GFigContext *gfig_context;
+
+extern selection_option selopt;
+extern SelectItVals selvals;
+
+void add_to_all_obj (GFigObj *fobj,
+ GfigObject *obj);
+
+gchar *get_line (gchar *buf,
+ gint s,
+ FILE *from,
+ gint init);
+
+gint gfig_scale_x (gint x);
+gint gfig_scale_y (gint y);
+void scale_to_xy (gdouble *list,
+ gint size);
+void scale_to_original_xy (gdouble *list,
+ gint size);
+
+void gfig_paint (BrushType brush_type,
+ gint32 drawable_ID,
+ gint seg_count,
+ gdouble line_pnts[]);
+
+void draw_item (cairo_t *cr,
+ gboolean fill);
+void draw_circle (GdkPoint *p,
+ gboolean selected,
+ cairo_t *cr);
+void draw_sqr (GdkPoint *p,
+ gboolean selected,
+ cairo_t *cr);
+
+void list_button_update (GFigObj *obj);
+
+GtkWidget *num_sides_widget (const gchar *d_title,
+ gint *num_sides,
+ gint *which_way,
+ gint adj_min,
+ gint adj_max);
+
+void setup_undo (void);
+void draw_grid_clear (void);
+void prepend_to_all_obj (GFigObj *fobj,
+ GList *nobj);
+
+void gfig_draw_arc (gint x,
+ gint y,
+ gint width,
+ gint height,
+ gint angle1,
+ gint angle2,
+ cairo_t *cr);
+
+void gfig_draw_line (gint x0,
+ gint y0,
+ gint x1,
+ gint y1,
+ cairo_t *cr);
+
+void gfig_paint_callback (void);
+GFigObj *gfig_load (const gchar *filename,
+ const gchar *name);
+void gfig_name_encode (gchar *dest,
+ gchar *src);
+void gfig_name_decode (gchar *dest,
+ const gchar *src);
+
+gint gfig_list_pos (GFigObj *gfig);
+gint gfig_list_insert (GFigObj *gfig);
+void gfig_free (GFigObj *gfig);
+
+void save_options (GString *string);
+
+GString *gfig_save_as_string (void);
+gboolean gfig_save_as_parasite (void);
+GFigObj *gfig_load_from_parasite (void);
+GFigObj *gfig_new (void);
+void gfig_save_callbk (void);
+void paint_layer_fill (gdouble x1,
+ gdouble y1,
+ gdouble x2,
+ gdouble y2);
+
+
+
+extern GtkWidget *top_level_dlg;
+extern GList *gfig_list;
+extern gdouble org_scale_x_factor, org_scale_y_factor;
+
+#endif /* __GFIG_H__ */