gimp/plug-ins/gfig/gfig.h

229 lines
5.0 KiB
C
Raw Normal View History

/*
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This is a plug-in for the 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
#ifndef __GFIG_H__
#define __GFIG_H__
#include "gfig-dobject.h"
#define MAX_LOAD_LINE 256
#define SQ_SIZE 8
#define HELP_ID "plug-in-gfig"
extern gint line_no;
extern gint preview_width, preview_height;
extern gboolean drawing_pic;
extern gint need_to_scale;
extern gint32 gfig_image;
extern gint32 gfig_drawable;
extern GdkGC *gfig_gc;
extern gdouble scale_x_factor, scale_y_factor;
extern GtkWidget *gfig_preview;
extern GtkWidget *pic_preview;
extern Dobject *tmp_line;
extern gint obj_show_single;
typedef enum
{
RECT_GRID = 0,
POLAR_GRID,
ISO_GRID
} GridType;
typedef struct
{
gint gridspacing;
GridType gridtype;
gboolean drawgrid;
gboolean snap2grid;
gboolean lockongrid;
gboolean showcontrol;
} GfigOpts;
typedef enum
{
ADD = 0,
SUBTRACT,
REPLACE,
INTERSECT
} SelectionType;
typedef enum
{
ARC_SEGMENT = 0,
ARC_SECTOR
} ArcType;
typedef enum
{
FILL_FOREGROUND = 0,
FILL_BACKGROUND,
FILL_PATTERN
} FillType;
typedef enum
{
FILL_EACH = 0,
FILL_AFTER
} FillWhen;
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 */
FillWhen fill_when; /* Fill on each selection or after all? */
gdouble fill_opacity; /* You can guess this one */
} selection_option;
typedef enum
{
ORIGINAL_LAYER = 0,
SINGLE_LAYER,
MULTI_LAYER
} DrawonLayers;
typedef enum
{
LAYER_TRANS_BG = 0,
LAYER_BG_BG,
LAYER_FG_BG,
LAYER_WHITE_BG,
LAYER_COPY_BG
} LayersBGType;
typedef enum
{
PAINT_BRUSH_TYPE = 0,
PAINT_SELECTION_TYPE,
PAINT_SELECTION_FILL_TYPE
} PaintType;
typedef enum
{
BRUSH_BRUSH_TYPE = 0,
BRUSH_PENCIL_TYPE,
BRUSH_AIRBRUSH_TYPE,
BRUSH_PATTERN_TYPE
} BrushType;
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;
gboolean approxcircles;
BrushType brshtype;
DobjType otype;
} SelectItVals;
typedef struct DFigObj
{
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 */
DAllObjs *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;
} GFigObj;
extern GFigObj *current_obj;
2003-11-12 05:23:33 +08:00
extern GFigObj *pic_obj;
extern selection_option selopt;
extern SelectItVals selvals;
void add_to_all_obj (GFigObj * fobj, Dobject *obj);
gchar *get_line (gchar *buf,
gint s,
FILE *from,
gint init);
void scale_to_xy (gdouble *list,
gint size);
void scale_to_original_xy (gdouble *list,
gint size);
void reverse_pairs_list (gdouble *list,
gint size);
void gfig_paint (BrushType brush_type,
gint32 drawable_ID,
gint seg_count,
gdouble line_pnts[]);
void draw_circle (GdkPoint *p);
void draw_sqr (GdkPoint *p);
2003-11-12 05:23:33 +08:00
void list_button_update (GFigObj *obj);
void num_sides_dialog (gchar *d_title,
gint *num_sides,
gint *which_way,
gint adj_min,
gint adj_max);
void toggle_obj_type (GtkWidget *widget,
gpointer data);
void setup_undo (void);
void draw_grid_clear (void);
void prepend_to_all_obj (GFigObj *fobj,
DAllObjs *nobj);
void gfig_draw_arc (gint x,
gint y,
gint width,
gint height,
gint angle1,
gint angle2);
void gfig_draw_line (gint x0,
gint y0,
gint x1,
gint y1);
#endif /* __GFIG_H__ */