From 960cdf29197bc3f5922110cf26627aa9709ac79b Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Fri, 10 Jun 2005 10:29:11 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'bogue40'. --- generic/Item.h | 377 --------------------------------------------------------- 1 file changed, 377 deletions(-) delete mode 100644 generic/Item.h (limited to 'generic/Item.h') diff --git a/generic/Item.h b/generic/Item.h deleted file mode 100644 index 3871bf8..0000000 --- a/generic/Item.h +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Item.h -- Header to access items' common state and functions. - * - * Authors : Patrick Lecoanet. - * Creation date : - * - * $Id$ - */ - -/* - * Copyright (c) 1996 - 2005 CENA, Patrick Lecoanet -- - * - * See the file "Copyright" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - */ - - -#ifndef _Item_h -#define _Item_h - - -#include "PostScript.h" -#include "Attrs.h" -#include "Types.h" -#include "List.h" -#include "Field.h" - -#include -#include - - -/* - * Types and constants for attribute processing. - */ -typedef struct _ZnAttrConfig { - int type; - char *name; - Tk_Uid uid; - int offset; - int bool_bit; - int flags; - ZnBool read_only; -} ZnAttrConfig; - -/* - * When adding new type in the following enum - * do not forget to update attribute_type_strings - * in Item.c. - */ -#define ZN_CONFIG_END 0 -#define ZN_CONFIG_BOOL 1 -#define ZN_CONFIG_BITMAP 2 -#define ZN_CONFIG_BITMAP_LIST 3 -#define ZN_CONFIG_STRING 4 -#define ZN_CONFIG_FONT 5 -#define ZN_CONFIG_EDGE_LIST 6 -#define ZN_CONFIG_RELIEF 7 -#define ZN_CONFIG_DIM 8 -#define ZN_CONFIG_PRI 9 -#define ZN_CONFIG_ALIGNMENT 10 -#define ZN_CONFIG_AUTO_ALIGNMENT 11 -#define ZN_CONFIG_LINE_END 12 -#define ZN_CONFIG_LABEL_FORMAT 13 -#define ZN_CONFIG_LINE_STYLE 14 -#define ZN_CONFIG_LINE_SHAPE 15 -#define ZN_CONFIG_ITEM 16 -#define ZN_CONFIG_ANGLE 17 -#define ZN_CONFIG_INT 18 -#define ZN_CONFIG_UINT 19 -#define ZN_CONFIG_POINT 20 -#define ZN_CONFIG_ANCHOR 21 -#define ZN_CONFIG_TAG_LIST 22 -#define ZN_CONFIG_MAP_INFO 23 -#define ZN_CONFIG_IMAGE 24 -#define ZN_CONFIG_LEADER_ANCHORS 25 -#define ZN_CONFIG_JOIN_STYLE 26 -#define ZN_CONFIG_CAP_STYLE 27 -#define ZN_CONFIG_GRADIENT 28 -#define ZN_CONFIG_GRADIENT_LIST 29 -#define ZN_CONFIG_WINDOW 30 -#define ZN_CONFIG_ALPHA 31 -#define ZN_CONFIG_FILL_RULE 32 -#define ZN_CONFIG_SHORT 33 -#define ZN_CONFIG_USHORT 34 -#define ZN_CONFIG_CHAR 35 -#define ZN_CONFIG_UCHAR 36 - -#define ZN_DRAW_FLAG 1 << 0 -#define ZN_COORDS_FLAG 1 << 1 -#define ZN_TRANSFO_FLAG 1 << 2 -#define ZN_REPICK_FLAG 1 << 3 -#define ZN_BORDER_FLAG 1 << 4 -#define ZN_CLFC_FLAG 1 << 5 /* Clear Label Format Cache. */ -#define ZN_IMAGE_FLAG 1 << 6 /* Update image pointer. */ -#define ZN_VIS_FLAG 1 << 7 /* Visibility has changed. */ -#define ZN_MOVED_FLAG 1 << 8 /* Item has moved. */ -#define ZN_ITEM_FLAG 1 << 9 /* Signal a change in an item type attribute. */ -#define ZN_MAP_INFO_FLAG 1 << 10/* Update mapinfo pointer. */ -#define ZN_LAYOUT_FLAG 1 << 11 /* A layout need update. */ -#define ZN_POLAR_FLAG 1 << 12 /* Signal a cartesian to polar change. */ -#define ZN_CARTESIAN_FLAG 1 << 13 /* Signal a polar to cartesian change. */ -#define ZN_TILE_FLAG 1 << 14 /* Update tile pointer. */ -#define ZN_WINDOW_FLAG 1 << 15 /* Signal a change in a window type attribute. */ - - -/* - * This constant marks a non existant item -*/ -#define ZN_NO_ITEM NULL - -/* - * Constants for item parts. The item indexable parts (named fields) are coded - * as positive or null integers. The item specific parts (not indexable) are - * coded as negatives beginning at -2 up to -9 which is the current limit. The - * -1 value is reserved to indicate no part. - */ -#define ZnPartToBit(part) (1 << (ABS(part)-2)) -#define ZN_NO_PART -1 - -/* - * Some flags macros. - */ -#define ISSET(var, mask) ((var) & (mask)) -#define ISCLEAR(var, mask) (((var) & (mask)) == 0) -#define SET(var,mask) ((var) |= (mask)) -#define CLEAR(var, mask) ((var) &= ~(mask)) -#define ASSIGN(var, mask, bool) ((bool) ? SET((var), (mask)) : CLEAR((var), (mask))) - -/* - * Item flags values. - */ -#define ZN_VISIBLE_BIT (1<<0) -#define ZN_SENSITIVE_BIT (1<<1) -#define ZN_UPDATE_DEPENDENT_BIT (1<<2) -#define ZN_COMPOSE_SCALE_BIT (1<<3) -#define ZN_COMPOSE_ROTATION_BIT (1<<4) -#define ZN_COMPOSE_ALPHA_BIT (1<<5) -/* - * Must be kept one greater than the last flag shift count. - */ -#define ZN_PRIVATE_FLAGS_OFFSET 6 - - -/* - * Operator constants for the coord method. - */ -#define ZN_COORDS_READ 0 -#define ZN_COORDS_READ_ALL 1 -#define ZN_COORDS_REPLACE 2 -#define ZN_COORDS_REPLACE_ALL 3 -#define ZN_COORDS_ADD 4 -#define ZN_COORDS_ADD_LAST 5 -#define ZN_COORDS_REMOVE 6 - - -struct _ZnWInfo; -struct _ZnTransfo; - -/* - * Item record header -- - */ -typedef struct _ZnItemStruct { - /* Private data */ - unsigned int id; - ZnList tags; - struct _ZnWInfo *wi; /* The widget this item is on */ - struct _ZnItemClassStruct *class; /* item class */ - struct _ZnItemStruct *previous; /* previous item in group list */ - struct _ZnItemStruct *next; /* next item in group list */ - struct _ZnItemStruct *parent; - ZnBBox item_bounding_box; /* device item bounding box */ - - /* Common attributes */ - unsigned short flags; - unsigned short part_sensitive; /* Currently limited to 16 parts per item */ - unsigned short inv_flags; - unsigned short priority; - struct _ZnTransfo *transfo; - struct _ZnItemStruct *connected_item; /* Item this item is connected to */ -#ifdef GL -#ifdef GL_LIST - GLuint gl_list; /* Display list storing the item graphics */ -#endif -#endif -} ZnItemStruct, *ZnItem; - -typedef struct _ZnToAreaStruct { - Tk_Uid tag_uid; - ZnBool enclosed; - ZnItem in_group; - ZnBool report; - ZnBool recursive; - ZnBool override_atomic; - ZnBBox *area; -} ZnToAreaStruct, *ZnToArea; - -typedef struct _ZnPickStruct { - int aperture; - ZnItem in_group; - ZnItem start_item; - ZnBool recursive; - ZnBool override_atomic; - ZnPoint *point; - ZnItem a_item; - int a_part; -} ZnPickStruct, *ZnPick; - - -/* - * Item class record -- - */ -typedef int (*ZnItemInitMethod)(ZnItem item, int *argc, Tcl_Obj *CONST *args[]); -typedef int (*ZnItemConfigureMethod)(ZnItem item, int argc, Tcl_Obj *CONST args[], - int *flags); -typedef int (*ZnItemQueryMethod)(ZnItem item, int argc, Tcl_Obj *CONST args[]); -typedef void (*ZnItemCloneMethod)(ZnItem item); -typedef void (*ZnItemDestroyMethod)(ZnItem item); -typedef void (*ZnItemDrawMethod)(ZnItem item); -typedef void (*ZnItemRenderMethod)(ZnItem item); -typedef void (*ZnItemComputeCoordinatesMethod)(ZnItem item, ZnBool force); -typedef int (*ZnItemToAreaMethod)(ZnItem item, ZnToArea ta); -typedef ZnReal (*ZnItemPickMethod)(ZnItem item, ZnPick ps); -typedef ZnBool (*ZnItemIsSensitiveMethod)(ZnItem item, int part); -typedef struct _ZnFieldSetStruct* (*ZnItemGetFieldSetMethod)(ZnItem item); -typedef int (*ZnItemContourMethod)(ZnItem item, int cmd, int index, ZnPoly *poly); -typedef void (*ZnItemPickVertexMethod)(ZnItem item, ZnPoint *p, int *contour, - int *vertex, int *o_vertex); -typedef void (*ZnItemGetAnchorMethod)(ZnItem item, Tk_Anchor anchor, ZnPoint *p); -typedef ZnBool (*ZnItemGetClipVerticesMethod)(ZnItem item, ZnTriStrip *tristrip); -typedef ZnBool (*ZnItemGetContoursMethod)(ZnItem item, ZnPoly *poly); -typedef int (*ZnItemCoordsMethod)(ZnItem item, int contour, int index, int cmd, - ZnPoint **points, char **controls, unsigned int *num_points); -typedef void (*ZnItemInsertCharsMethod)(ZnItem item, int field, int *index, - char *chars); -typedef void (*ZnItemDeleteCharsMethod)(ZnItem item, int field, int *first, - int *last); -typedef void (*ZnItemCursorMethod)(ZnItem item, int field, int index); -typedef int (*ZnItemIndexMethod)(ZnItem item, int field, Tcl_Obj *index_spec, - int *index); -typedef int (*ZnItemPartMethod)(ZnItem item, Tcl_Obj **part_spec, int *part); -typedef int (*ZnItemSelectionMethod)(ZnItem item, int field, int offset, - char *chars, int max_chars); -typedef int (*ZnItemPostScriptMethod)(ZnItem item, ZnBool prepass, ZnBBox *area); - - -typedef void *ZnItemClassId; - -#define ZN_CLASS_HAS_ANCHORS (1<<0) -#define ZN_CLASS_ONE_COORD (1<<1) - -typedef struct _ZnItemClassStruct { - char *name; - unsigned int size; - ZnAttrConfig *attr_desc; - unsigned int num_parts; /* 0 if no special parts, else - * gives how many parts exist. */ - int flags; /* HAS_ANCHORS, ONE_COORD */ - int pos_offset; /* Offset of -position attrib, */ - /* if any, -1 otherwise. */ - ZnItemInitMethod Init; - ZnItemCloneMethod Clone; - ZnItemDestroyMethod Destroy; - ZnItemConfigureMethod Configure; - ZnItemQueryMethod Query; - ZnItemGetFieldSetMethod GetFieldSet; - ZnItemGetAnchorMethod GetAnchor; - ZnItemGetClipVerticesMethod GetClipVertices; - ZnItemGetContoursMethod GetContours; - ZnItemCoordsMethod Coords; - ZnItemInsertCharsMethod InsertChars; - ZnItemDeleteCharsMethod DeleteChars; - ZnItemCursorMethod Cursor; - ZnItemIndexMethod Index; - ZnItemPartMethod Part; - ZnItemSelectionMethod Selection; - ZnItemContourMethod Contour; - ZnItemComputeCoordinatesMethod ComputeCoordinates; - ZnItemToAreaMethod ToArea; - ZnItemDrawMethod Draw; - ZnItemRenderMethod Render; - ZnItemIsSensitiveMethod IsSensitive; - ZnItemPickMethod Pick; - ZnItemPickVertexMethod PickVertex; - ZnItemPostScriptMethod PostScript; -} ZnItemClassStruct, *ZnItemClass; - - -/* - ********************************************************************************** - * - * Generic methods for all items. - * - ********************************************************************************** - */ -extern struct _ZnITEM { - ZnItem (*CloneItem)(ZnItem model); - void (*DestroyItem)(ZnItem item); - int (*ConfigureItem)(ZnItem item, int field, int argc, Tcl_Obj *CONST args[], - ZnBool init); - int (*QueryItem)(ZnItem item, int field, int argc, Tcl_Obj *CONST args[]); - void (*InsertItem)(ZnItem item, ZnItem group, ZnItem mark_item, ZnBool before); - void (*UpdateItemPriority)(ZnItem item, ZnItem mark_item, ZnBool before); - void (*UpdateItemDependency)(ZnItem item, ZnItem old_connection); - void (*ExtractItem)(ZnItem item); - void (*SetId)(ZnItem item); - void (*FreeId)(ZnItem item); - void (*AddTag)(ZnItem item, Tk_Uid tag); - void (*RemoveTag)(ZnItem item, Tk_Uid tag); - void (*FreeTags)(ZnItem item); - ZnBool (*HasTag)(ZnItem item, Tk_Uid tag); - void (*ResetTransfo)(ZnItem item); - void (*SetTransfo)(ZnItem item, struct _ZnTransfo *t); - void (*TranslateItem)(ZnItem item, ZnReal tx, ZnReal ty, ZnBool abs); - void (*ScaleItem)(ZnItem item, ZnReal sx, ZnReal sy, ZnPoint *p); - void (*SkewItem)(ZnItem item, ZnReal x_skew, ZnReal y_skew); - void (*RotateItem)(ZnItem item, ZnReal angle, ZnBool deg, ZnPoint *p); - void (*Invalidate)(ZnItem item, int reason); - void (*InvalidateItems)(ZnItem group, ZnItemClass item_class); - void (*GetItemTransform)(ZnItem item, struct _ZnTransfo *t); -} ZnITEM; - - -/* - ********************************************************************************** - * - * Methods defined in Item.c useful for writing items. - * - ********************************************************************************** - */ -void ZnItemInit(); -ZnItem ZnCreateItem(struct _ZnWInfo *wi, ZnItemClass item_class, - int *argc, Tcl_Obj *CONST *args[]); -void ZnAddItemClass(ZnItemClass class); -ZnItemClass ZnLookupItemClass(char *class_name); -ZnList ZnItemClassList(); -int ZnConfigureAttributes(struct _ZnWInfo *wi, ZnItem item, void *record, - ZnAttrConfig *attr_desc, int argc, Tcl_Obj *CONST args[], - int *flags); -int ZnAttributesInfo(Tcl_Interp *interp, void *record, - ZnAttrConfig *attr_desc, int argc, Tcl_Obj *CONST args[]); -int ZnQueryAttribute(Tcl_Interp *interp, void *record, ZnAttrConfig *attr_desc, - Tcl_Obj *attr_name); -void ZnInitTransformStack(struct _ZnWInfo *wi); -void ZnFreeTransformStack(struct _ZnWInfo *wi); -void ZnResetTransformStack(struct _ZnWInfo *wi); -void ZnPushTransform(struct _ZnWInfo *wi, struct _ZnTransfo *transfo, - ZnPoint *pos, ZnBool compose_scale, ZnBool compose_rot); -void ZnPopTransform(struct _ZnWInfo *wi); -void ZnInitClipStack(struct _ZnWInfo *wi); -void ZnFreeClipStack(struct _ZnWInfo *wi); -void ZnResetClipStack(struct _ZnWInfo *wi); -void ZnPushClip(struct _ZnWInfo *wi, ZnTriStrip *tristrip, ZnBool simple, - ZnBool set_gc); -void ZnPopClip(struct _ZnWInfo *wi, ZnBool set_gc); -ZnBool ZnCurrentClip(struct _ZnWInfo *wi, TkRegion *reg, ZnBBox **clip_box, - ZnBool *simple); -void ZnUpdateItemImage(void *client_data); - - -extern ZnItemClassId ZnArc; -extern ZnItemClassId ZnMap; -extern ZnItemClassId ZnTabular; -extern ZnItemClassId ZnCurve; -extern ZnItemClassId ZnBezier; -extern ZnItemClassId ZnTriangles; -extern ZnItemClassId ZnRectangle; -extern ZnItemClassId ZnReticle; -extern ZnItemClassId ZnTrack; -extern ZnItemClassId ZnWayPoint; -extern ZnItemClassId ZnGroup; -extern ZnItemClassId ZnIcon; -extern ZnItemClassId ZnText; -extern ZnItemClassId ZnWindow; - - -#endif /* _Item_h */ -- cgit v1.1