[BACK]Return to object.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / term

Annotation of OpenXM_contrib/gnuplot/term/object.h, Revision 1.1.1.1

1.1       maekawa     1: /*
                      2:  * FIG : Facility for Interactive Generation of figures
                      3:  * Copyright (c) 1985 by Supoj Sutanthavibul
                      4:  * Parts Copyright (c) 1994 by Brian V. Smith
                      5:  * Parts Copyright (c) 1991 by Paul King
                      6:  *
                      7:  * The X Consortium, and any party obtaining a copy of these files from
                      8:  * the X Consortium, directly or indirectly, is granted, free of charge, a
                      9:  * full and unrestricted irrevocable, world-wide, paid up, royalty-free,
                     10:  * nonexclusive right and license to deal in this software and
                     11:  * documentation files (the "Software"), including without limitation the
                     12:  * rights to use, copy, modify, merge, publish, distribute, sublicense,
                     13:  * and/or sell copies of the Software, and to permit persons who receive
                     14:  * copies from any such party to do so, with the only requirement being
                     15:  * that this copyright notice remain intact.  This license includes without
                     16:  * limitation a license to do the foregoing actions under any patents of
                     17:  * the party supplying this software to the X Consortium.
                     18:  */
                     19:
                     20: /* This file has been modified for use with Gnuplot 3.6 by
                     21:  * Ian MacPhedran.
                     22:  */
                     23:
                     24: /* DEFAULT is used for many things - font, color etc */
                     25:
                     26: #define                DEFAULT               (-1)
                     27: #define                SOLID_LINE              0
                     28: #define                DASH_LINE               1
                     29: #define                DOTTED_LINE             2
                     30: #define                RUBBER_LINE             3
                     31: #define                PANEL_LINE              4
                     32:
                     33: #define                Color                   int
                     34:
                     35: #define                BLACK                   0
                     36: #define                BLUE                    1
                     37: #define                GREEN                   2
                     38: #define                CYAN                    3
                     39: #define                RED                     4
                     40: #define                MAGENTA                 5
                     41: #define                YELLOW                  6
                     42: #define                WHITE                   7
                     43:
                     44: /** VERY IMPORTANT:  The f_line, f_spline and f_arc objects all must have the
                     45:                components up to and including the arrows in the same order.
                     46:                This is for the get/put_generic_arrows() in e_edit.c.
                     47: **/
                     48:
                     49: typedef struct f_point {
                     50:     int                    x, y;
                     51: }
                     52:                F_point;
                     53:
                     54: typedef struct f_pos {
                     55:     int                    x, y;
                     56: }
                     57:                F_pos;
                     58:
                     59: #define DEF_ARROW_WID (4 * ZOOM_FACTOR)
                     60: #define DEF_ARROW_HT (8 * ZOOM_FACTOR)
                     61:
                     62: typedef struct f_arrow {
                     63:     int                    type;
                     64:     int                    style;
                     65:     float          thickness;
                     66:     float          wid;
                     67:     float          ht;
                     68: }
                     69:                F_arrow;
                     70:
                     71: typedef struct f_ellipse {
                     72:     int                    tagged;
                     73:     int                    distrib;
                     74:     int                    type;
                     75: #define                                        T_ELLIPSE_BY_RAD        1
                     76: #define                                        T_ELLIPSE_BY_DIA        2
                     77: #define                                        T_CIRCLE_BY_RAD         3
                     78: #define                                        T_CIRCLE_BY_DIA         4
                     79:     int                    style;
                     80:     int                    thickness;
                     81:     Color          pen_color;
                     82:     Color          fill_color;
                     83:     int                    fill_style;
                     84:     int                    depth;
                     85:     float          style_val;
                     86:     int                    pen_style;
                     87:     float          angle;
                     88:     int                    direction;
                     89: #define                                        UNFILLED        -1
                     90:     struct f_pos    center;
                     91:     struct f_pos    radiuses;
                     92:     struct f_pos    start;
                     93:     struct f_pos    end;
                     94:     struct f_ellipse *next;
                     95: }
                     96:                F_ellipse;
                     97:
                     98: /* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_arc STRUCTURE */
                     99:
                    100: typedef struct f_arc {
                    101:     int                    tagged;
                    102:     int                    distrib;
                    103:     int                    type;
                    104:                                /* note: these arc types are the internal values */
                    105:                                /* in the file, they are open=1, wedge=2 */
                    106: #define                                        T_OPEN_ARC              0
                    107: #define                                        T_PIE_WEDGE_ARC         1
                    108:     int                    style;
                    109:     int                    thickness;
                    110:     Color          pen_color;
                    111:     Color          fill_color;
                    112:     int                    fill_style;
                    113:     int                    depth;
                    114:     int                    pen_style;
                    115:     struct f_arrow *for_arrow;
                    116:     struct f_arrow *back_arrow;
                    117: /* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
                    118:     int                    cap_style;
                    119:     float          style_val;
                    120:     int                    direction;
                    121:     struct {
                    122:        float           x, y;
                    123:     }              center;
                    124:     struct f_pos    point[3];
                    125:     struct f_arc   *next;
                    126: }
                    127:                F_arc;
                    128:
                    129: #define                CLOSED_PATH             0
                    130: #define                OPEN_PATH               1
                    131: #define                DEF_BOXRADIUS           7
                    132: #define                DEF_DASHLENGTH          4
                    133: #define                DEF_DOTGAP              3
                    134:
                    135: typedef struct f_pic {
                    136: #ifndef PATH_MAX
                    137: #define PATH_MAX 128
                    138: #endif
                    139:     char           file[PATH_MAX];
                    140:     int                    subtype;
                    141: #define T_PIC_EPS      1
                    142: #define T_PIC_BITMAP   2
                    143: #define T_PIC_PIXMAP   3
                    144: #define T_PIC_GIF      4
                    145: #define FileInvalid    -2
                    146:     int                    flipped;
                    147:     unsigned char   *bitmap;
                    148:     int                    numcols;            /* number of colors in cmap */
                    149:     float          hw_ratio;
                    150:     int                    size_x, size_y;     /* fig units */
                    151:     struct f_pos    bit_size;          /* pixels */
                    152:     Color          color;              /* only used for XBM */
                    153:     int                    pix_rotation, pix_width, pix_height, pix_flipped;
                    154: }
                    155:                F_pic;
                    156:
                    157: extern char    EMPTY_PIC[];
                    158:
                    159: /* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_line STRUCTURE */
                    160:
                    161: typedef struct f_line {
                    162:     int                    tagged;
                    163:     int                    distrib;
                    164:     int                    type;
                    165: #define                                        T_POLYLINE      1
                    166: #define                                        T_BOX           2
                    167: #define                                        T_POLYGON       3
                    168: #define                                        T_ARC_BOX       4
                    169: #define                                        T_PIC_BOX       5
                    170:     int                    style;
                    171:     int                    thickness;
                    172:     Color          pen_color;
                    173:     Color          fill_color;
                    174:     int                    fill_style;
                    175:     int                    depth;
                    176:     int                    pen_style;
                    177:     struct f_arrow *for_arrow;
                    178:     struct f_arrow *back_arrow;
                    179: /* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
                    180:     int                    cap_style;          /* line cap style - Butt, Round, Bevel */
                    181: #define                                        CAP_BUTT        0
                    182: #define                                        CAP_ROUND       1
                    183: #define                                        CAP_PROJECT     2
                    184:     struct f_point *points;    /* this must immediately follow cap_style */
                    185:     int                    join_style;         /* join style - Miter, Round, Bevel */
                    186: #define                                        JOIN_MITER      0
                    187: #define                                        JOIN_ROUND      1
                    188: #define                                        JOIN_BEVEL      2
                    189:     float          style_val;
                    190:     int                    radius;             /* corner radius for T_ARC_BOX */
                    191:     struct f_pic   *pic;
                    192:     struct f_line  *next;
                    193: }
                    194:                F_line;
                    195:
                    196: typedef struct f_text {
                    197:     int                    tagged;
                    198:     int                    distrib;
                    199:     int                    type;
                    200: #define                                        T_LEFT_JUSTIFIED        0
                    201: #define                                        T_CENTER_JUSTIFIED      1
                    202: #define                                        T_RIGHT_JUSTIFIED       2
                    203:     int                    font;
                    204: /*    PIX_FONT     fontstruct; */
                    205:     int                    size;       /* point size */
                    206:     Color          color;
                    207:     int                    depth;
                    208:     float          angle;      /* in radians */
                    209:
                    210:     int                    flags;
                    211: #define                                        RIGID_TEXT              1
                    212: #define                                        SPECIAL_TEXT            2
                    213: #define                                        PSFONT_TEXT             4
                    214: #define                                        HIDDEN_TEXT             8
                    215:
                    216:     int                    ascent;     /* Fig units */
                    217:     int                    length;     /* Fig units */
                    218:     int                    descent;    /* from XTextExtents(), not in file */
                    219:     int                    base_x;
                    220:     int                    base_y;
                    221:     int                    pen_style;
                    222:     char          *cstring;
                    223:     struct f_text  *next;
                    224: }
                    225:                F_text;
                    226:
                    227: #define MAXFONT(T) (psfont_text(T) ? NUM_FONTS : NUM_LATEX_FONTS)
                    228:
                    229: #define                rigid_text(t) \
                    230:                        (t->flags == DEFAULT \
                    231:                                || (t->flags & RIGID_TEXT))
                    232:
                    233: #define                special_text(t) \
                    234:                        ((t->flags != DEFAULT \
                    235:                                && (t->flags & SPECIAL_TEXT)))
                    236:
                    237: #define                psfont_text(t) \
                    238:                        (t->flags != DEFAULT \
                    239:                                && (t->flags & PSFONT_TEXT))
                    240:
                    241: #define                hidden_text(t) \
                    242:                        (t->flags != DEFAULT \
                    243:                                && (t->flags & HIDDEN_TEXT))
                    244:
                    245: #define                text_length(t) \
                    246:                        (hidden_text(t) ? hidden_text_length : t->length)
                    247:
                    248: #define                using_ps        (cur_textflags & PSFONT_TEXT)
                    249:
                    250: typedef struct f_control {
                    251:     float          lx, ly, rx, ry;
                    252:     struct f_control *next;
                    253: }
                    254:                F_control;
                    255:
                    256: /* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_spline STRUCTURE */
                    257:
                    258: #define                int_spline(s)           (s->type & 0x2)
                    259: #define                normal_spline(s)        (!(s->type & 0x2))
                    260: #define                closed_spline(s)        (s->type & 0x1)
                    261: #define                open_spline(s)          (!(s->type & 0x1))
                    262:
                    263: typedef struct f_spline {
                    264:     int                    tagged;
                    265:     int                    distrib;
                    266:     int                    type;
                    267: #define                                        T_OPEN_NORMAL   0
                    268: #define                                        T_CLOSED_NORMAL 1
                    269: #define                                        T_OPEN_INTERP   2
                    270: #define                                        T_CLOSED_INTERP 3
                    271:     int                    style;
                    272:     int                    thickness;
                    273:     Color          pen_color;
                    274:     Color          fill_color;
                    275:     int                    fill_style;
                    276:     int                    depth;
                    277:     int                    pen_style;
                    278:     struct f_arrow *for_arrow;
                    279:     struct f_arrow *back_arrow;
                    280: /* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
                    281:     int                    cap_style;
                    282:     /*
                    283:      * For T_OPEN_NORMAL and T_CLOSED_NORMAL points are control points while
                    284:      * they are knots for T_OPEN_INTERP and T_CLOSED_INTERP whose control
                    285:      * points are stored in controls.
                    286:      */
                    287:     struct f_point *points;    /* this must immediately follow cap_style */
                    288:     float          style_val;
                    289:     struct f_control *controls;
                    290:     struct f_spline *next;
                    291: }
                    292:                F_spline;
                    293:
                    294: typedef struct f_compound {
                    295:     int                    tagged;
                    296:     int                    distrib;
                    297:     struct f_pos    nwcorner;
                    298:     struct f_pos    secorner;
                    299:     struct f_line  *lines;
                    300:     struct f_ellipse *ellipses;
                    301:     struct f_spline *splines;
                    302:     struct f_text  *texts;
                    303:     struct f_arc   *arcs;
                    304:     struct f_compound *compounds;
                    305:     struct f_compound *next;
                    306: }
                    307:                F_compound;
                    308:
                    309: typedef struct f_linkinfo {
                    310:     struct f_line  *line;
                    311:     struct f_point *endpt;
                    312:     struct f_point *prevpt;
                    313:     int                    two_pts;
                    314:     struct f_linkinfo *next;
                    315: }
                    316:                F_linkinfo;
                    317:
                    318: /* separate the "type" and the "style" from the cur_arrowtype */
                    319: #define                ARROW_TYPE(x)   ((x)==0? 0 : ((x)+1)/2)
                    320: #define                ARROW_STYLE(x)  ((x)==0? 0 : ((x)+1)%2)
                    321:
                    322: #define                ARROW_SIZE      sizeof(struct f_arrow)
                    323: #define                POINT_SIZE      sizeof(struct f_point)
                    324: #define                CONTROL_SIZE    sizeof(struct f_control)
                    325: #define                ELLOBJ_SIZE     sizeof(struct f_ellipse)
                    326: #define                ARCOBJ_SIZE     sizeof(struct f_arc)
                    327: #define                LINOBJ_SIZE     sizeof(struct f_line)
                    328: #define                TEXOBJ_SIZE     sizeof(struct f_text)
                    329: #define                SPLOBJ_SIZE     sizeof(struct f_spline)
                    330: #define                COMOBJ_SIZE     sizeof(struct f_compound)
                    331: #define                PIC_SIZE        sizeof(struct f_pic)
                    332: #define                LINKINFO_SIZE   sizeof(struct f_linkinfo)
                    333:
                    334: /**********************  object codes  **********************/
                    335:
                    336: #define                O_COLOR_DEF     0
                    337: #define                O_ELLIPSE       1
                    338: #define                O_POLYLINE      2
                    339: #define                O_SPLINE        3
                    340: #define                O_TEXT          4
                    341: #define                O_ARC           5
                    342: #define                O_COMPOUND      6
                    343: #define                O_END_COMPOUND  -O_COMPOUND
                    344: #define                O_ALL_OBJECT    99
                    345:
                    346: /********************* object masks for update  ************************/
                    347:
                    348: #define M_NONE                 0x000
                    349: #define M_POLYLINE_POLYGON     0x001
                    350: #define M_POLYLINE_LINE                0x002
                    351: #define M_POLYLINE_BOX         0x004   /* includes ARCBOX */
                    352: #define M_SPLINE_O_NORMAL      0x008
                    353: #define M_SPLINE_C_NORMAL      0x010
                    354: #define M_SPLINE_O_INTERP      0x020
                    355: #define M_SPLINE_C_INTERP      0x040
                    356: #define M_TEXT_NORMAL          0x080
                    357: #define M_TEXT_HIDDEN          0x100
                    358: #define M_ARC                  0x200
                    359: #define M_ELLIPSE              0x400
                    360: #define M_COMPOUND             0x800
                    361:
                    362: #define M_TEXT         (M_TEXT_HIDDEN | M_TEXT_NORMAL)
                    363: #define M_SPLINE_O     (M_SPLINE_O_NORMAL | M_SPLINE_O_INTERP)
                    364: #define M_SPLINE_C     (M_SPLINE_C_NORMAL | M_SPLINE_C_INTERP)
                    365: #define M_SPLINE_NORMAL (M_SPLINE_O_NORMAL | M_SPLINE_C_NORMAL)
                    366: #define M_SPLINE_INTERP (M_SPLINE_O_INTERP | M_SPLINE_C_INTERP)
                    367: #define M_SPLINE       (M_SPLINE_NORMAL | M_SPLINE_INTERP)
                    368: #define M_POLYLINE     (M_POLYLINE_LINE | M_POLYLINE_POLYGON | M_POLYLINE_BOX)
                    369: #define M_VARPTS_OBJECT (M_POLYLINE_LINE | M_POLYLINE_POLYGON | M_SPLINE)
                    370: #define M_OPEN_OBJECT  (M_POLYLINE_LINE | M_SPLINE_O | M_ARC)
                    371: #define M_ROTATE_ANGLE (M_VARPTS_OBJECT | M_ARC | M_TEXT | M_COMPOUND | M_ELLIPSE)
                    372: #define M_ELLTEXTANGLE (M_ELLIPSE | M_TEXT)
                    373: #define M_OBJECT       (M_ELLIPSE | M_POLYLINE | M_SPLINE | M_TEXT | M_ARC)
                    374: #define M_NO_TEXT      (M_ELLIPSE | M_POLYLINE | M_SPLINE | M_COMPOUND | M_ARC)
                    375: #define M_ALL          (M_OBJECT | M_COMPOUND)
                    376:
                    377: /************************  Objects  **********************/
                    378:
                    379: extern F_compound objects;
                    380:
                    381: /************  global working pointers ************/
                    382:
                    383: extern F_line          *cur_l, *new_l, *old_l;
                    384: extern F_arc           *cur_a, *new_a, *old_a;
                    385: extern F_ellipse       *cur_e, *new_e, *old_e;
                    386: extern F_text          *cur_t, *new_t, *old_t;
                    387: extern F_spline                *cur_s, *new_s, *old_s;
                    388: extern F_compound      *cur_c, *new_c, *old_c;
                    389: extern F_point         *first_point, *cur_point;
                    390: extern F_linkinfo      *cur_links;
                    391:
                    392: /*************** object attribute settings ***********/
                    393:
                    394: /*  Lines  */
                    395: extern int     cur_linewidth;
                    396: extern int     cur_linestyle;
                    397: extern int     cur_joinstyle;
                    398: extern int     cur_capstyle;
                    399: extern float   cur_dashlength;
                    400: extern float   cur_dotgap;
                    401: extern float   cur_styleval;
                    402: extern Color   cur_fillcolor, cur_pencolor;
                    403: extern int     cur_fillstyle, cur_penstyle;
                    404: extern int     cur_boxradius;
                    405: extern int     cur_arrowmode;
                    406: extern int     cur_arrowtype;
                    407: extern int     cur_arctype;
                    408:
                    409: /* Text */
                    410: extern int     cur_fontsize;   /* font size */
                    411: extern int     cur_latex_font;
                    412: extern int     cur_ps_font;
                    413: extern int     cur_textjust;
                    414: extern int     cur_textflags;
                    415:
                    416: /* Misc */
                    417: extern float   cur_elltextangle;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>