00001
00016 #include "ZincTypes.hpp"
00017 #include "ZincObjects.hpp"
00018 #include "ZincPath.hpp"
00019 #include "ZincExtern.hpp"
00020 #include <tcl.h>
00021
00022 #ifndef ZINC_HEADER
00023 #define ZINC_HEADER
00024
00025
00027 const int ZINC_POOL_COUNT = 7;
00029 const int ZINC_PARAM_COUNT = 10;
00030
00032 const int DEFAULT_GROUP = 1;
00033
00037 class Zinc
00038 {
00039 friend class ZincPath;
00040
00041 public:
00042 Tcl_Obj *id;
00043 WidgetObjCmd objCmd;
00044 ClientData wi;
00045 String tclCb;
00046 int znId;
00047 String window;
00048
00049 static int znCount;
00050 static Tcl_CmdInfo imgCmdInfo;
00051 static Tcl_CmdInfo fntCmdInfo;
00052 static Tcl_CmdInfo focCmdInfo;
00053 static Tcl_CmdInfo bndCmdInfo;
00054 static Tcl_Obj* pool[ZINC_POOL_COUNT];
00055 static Tcl_Obj* p1[ZINC_PARAM_COUNT];
00056 static Tcl_Obj* p2[ZINC_PARAM_COUNT];
00057
00058 public:
00059 static Tcl_Interp *interp;
00060
00066 Zinc (int renderingMode);
00067
00071 ~Zinc ();
00072
00078 void setTitle (String title);
00079
00080
00081
00082
00083
00089 void setBackcolor (String value);
00090
00096 String getBackcolor ();
00097
00103 void setForecolor (String value);
00104
00110 String getForecolor ();
00111
00117 void setWidth (int value);
00118
00124 int getWidth ();
00125
00131 void setHeight (int value);
00132
00138 int getHeight ();
00139
00145 void setBorderwidth (int value);
00146
00152 int getBorderwidth ();
00153
00159 void setFont (ZincFont* value);
00160
00166 ZincFont* getFont ();
00167
00168
00169
00170
00171
00179 void bbox (ZincItem* item, double bbox[4]);
00180
00188 void relativeBbox (ZincItem* item, double bbox[4]);
00189
00190
00197 void chggroup (ZincItem *item, ZincItem *parentGroup);
00198
00205 ZincItem* clone (ZincItem *item);
00206
00212 int contour (ZincItem *item);
00213
00222 int contour (ZincItem *item, itemOperator flag, ZincItem *reference);
00223
00232 int contour (ZincItem *item, bool add, ZincPath *contour);
00233
00244 void coords (ZincItem *item, ZincPath *contour, bool add,
00245 int contourIndex = -1, int coordIndex = -1);
00246
00254 void coordsRemove (ZincItem *item, int coordIndex, int contourIndex = -1);
00255
00262 void addTag (ZincItem *item, String tag);
00263
00270 void dTag (ZincItem *item, String tag = String(""));
00271
00280 int getTags (ZincItem *item, String*** tagList);
00281
00287 void focus (ZincItem *item);
00288
00295 bool isGname (String gname);
00296
00303 void gname (String gradient, String gname);
00304
00311 ZincItem* group (ZincItem *item);
00312
00318 void lower (ZincItem *item);
00319
00326 void lower (ZincItem *item, ZincItem *belowThis);
00327
00333 void raise (ZincItem *item);
00334
00341 void raise (ZincItem *item, ZincItem *aboveThis);
00342
00349 itemType type (ZincItem *item);
00350
00358 ZincItem* createTag(String tag);
00359
00360
00361
00362
00368 void itemRemove (ZincItem *item);
00369
00377 ZincItem *itemCreateGroup (ZincItem *parentGroup);
00378
00386 ZincItem *itemCreateRectangle (ZincItem *parentGroup, double x, double y,
00387 double width, double height);
00388
00396 ZincItem *itemCreateArc (ZincItem *parentGroup, double x, double y,
00397 double width, double height);
00398
00405 ZincItem *itemCreateText (ZincItem *parentGroup);
00406
00414 ZincItem *itemCreateCurve (ZincItem *parentGroup, ZincPath *path);
00415
00423 ZincItem *itemCreateIcon (ZincItem *parentGroup, ZincImage* image);
00424
00425
00426
00427
00428
00429
00438 void bind (String eventSpecification,
00439 ZincWidgetCallback callBack, void *userData, bool add = false);
00440
00446 void unbind (String eventSpecification);
00447
00457 void itemBind (ZincItem *item, String eventSpecification,
00458 ZincItemCallback callBack, void *userData, bool add = false);
00459
00466 void itemUnbind (ZincItem *item, String eventSpecification);
00467
00468
00469
00470
00471
00478 void itemTranslate (ZincItem * item, double dx, double dy);
00479
00487 void itemTranslate (ZincItem * item, double x, double y, bool absolute);
00488
00495 void itemRotate (ZincItem * item, double angle);
00496
00504 void itemRotate (ZincItem * item, double angle, double x, double y);
00505
00513 void itemRotate (ZincItem * item, double angle, bool degree);
00514
00523 void itemRotate (ZincItem * item, double angle, double x, double y,
00524 bool degree);
00525
00533 void itemScale (ZincItem * item, double ax, double ay);
00534
00543 void itemScale (ZincItem * item, double ax, double ay, double cx, double cy);
00544
00545
00553 void itemSkew (ZincItem * item, double sx, double sy);
00554
00561 void itemSkewX (ZincItem * item, double sx);
00562
00569 void itemSkewY (ZincItem * item, double sy);
00570
00576 void itemResetTransformation (ZincItem * item);
00577
00584 void itemSetTransformation (ZincItem * item,
00585 double a, double b, double c,
00586 double d, double e, double f);
00587
00594 void itemGetTransformation (ZincItem * item,
00595 double *a, double *b, double *c,
00596 double *d, double *e, double *f);
00597
00604 void itemMatrix (ZincItem * item,
00605 double a, double b, double c,
00606 double d, double e, double f);
00607
00608
00609
00610
00611
00612
00613
00614
00620 void itemSetClosed (ZincItem * item, bool value);
00621
00627 bool itemGetClosed (ZincItem * item);
00628
00634 void itemSetComposealpha (ZincItem * item, bool value);
00635
00641 bool itemGetComposealpha (ZincItem * item);
00642
00648 void itemSetComposerotation (ZincItem * item, bool value);
00649
00655 bool itemGetComposerotation (ZincItem * item);
00656
00662 void itemSetComposescale (ZincItem * item, bool value);
00663
00669 bool itemGetComposescale (ZincItem * item);
00670
00676 void itemSetExtent (ZincItem * item, unsigned int value);
00677
00683 unsigned int itemGetExtent (ZincItem * item);
00684
00690 void itemSetFillcolor (ZincItem * item, String value);
00691
00697 String itemGetFillcolor (ZincItem * item);
00698
00704 void itemSetFilled (ZincItem * item, bool value);
00705
00711 bool itemGetFilled (ZincItem * item);
00712
00718 void itemSetFillpattern (ZincItem * item, ZincBitmap * value);
00719
00725 ZincBitmap * itemGetFillpattern (ZincItem * item);
00726
00732 void itemSetLinecolor (ZincItem * item, String value);
00733
00739 String itemGetLinecolor (ZincItem * item);
00740
00746 void itemSetLinepattern (ZincItem * item, ZincBitmap * value);
00747
00753 ZincBitmap * itemGetLinepattern (ZincItem * item);
00754
00760 void itemSetLinestyle (ZincItem * item, lineStyle value);
00761
00767 lineStyle itemGetLinestyle (ZincItem * item);
00768
00774 void itemSetLinewidth (ZincItem * item, double value);
00775
00781 double itemGetLinewidth (ZincItem * item);
00782
00788 void itemSetPieslice (ZincItem * item, bool value);
00789
00795 bool itemGetPieslice (ZincItem * item);
00796
00802 void itemSetPriority (ZincItem * item, unsigned int value);
00803
00809 unsigned int itemGetPriority (ZincItem * item);
00810
00816 void itemSetSensitive (ZincItem * item, bool value);
00817
00823 bool itemGetSensitive (ZincItem * item);
00824
00830 void itemSetStartangle (ZincItem * item, unsigned int value);
00831
00837 unsigned int itemGetStartangle (ZincItem * item);
00838
00844 void itemSetTile (ZincItem * item, ZincBitmap * value);
00845
00851 ZincBitmap * itemGetTile (ZincItem * item);
00852
00858 void itemSetVisible (ZincItem * item, bool value);
00859
00865 bool itemGetVisible (ZincItem * item);
00866
00872 void itemSetCapstyle (ZincItem * item, capStyle value);
00873
00879 capStyle itemGetCapstyle (ZincItem * item);
00880
00886 void itemSetFillrule (ZincItem * item, fillRule value);
00887
00893 fillRule itemGetFillrule (ZincItem * item);
00894
00900 void itemSetJoinstyle (ZincItem * item, joinStyle value);
00901
00907 joinStyle itemGetJoinstyle (ZincItem * item);
00908
00914 void itemSetRelief (ZincItem * item, relief value);
00915
00921 relief itemGetRelief (ZincItem * item);
00922
00928 void itemSetSmoothrelief (ZincItem * item, bool value);
00929
00935 bool itemGetSmoothrelief (ZincItem * item);
00936
00942 void itemSetAlpha (ZincItem * item, unsigned int value);
00943
00949 unsigned int itemGetAlpha (ZincItem * item);
00950
00956 void itemSetAtomic (ZincItem * item, bool value);
00957
00963 bool itemGetAtomic (ZincItem * item);
00964
00970 void itemSetClip (ZincItem * item, ZincItem * value);
00971
00977 ZincItem * itemGetClip (ZincItem * item);
00978
00984 void itemSetAnchor (ZincItem * item, anchor value);
00985
00991 anchor itemGetAnchor (ZincItem * item);
00992
00998 void itemSetColor (ZincItem * item, String value);
00999
01005 String itemGetColor (ZincItem * item);
01006
01012 void itemSetConnecteditem (ZincItem * item, ZincItem * value);
01013
01019 ZincItem * itemGetConnecteditem (ZincItem * item);
01020
01026 void itemSetConnectionanchor (ZincItem * item, anchor value);
01027
01033 anchor itemGetConnectionanchor (ZincItem * item);
01034
01040 void itemSetImage (ZincItem * item, ZincImage * value);
01041
01047 ZincImage * itemGetImage (ZincItem * item);
01048
01054 void itemSetMask (ZincItem * item, ZincBitmap * value);
01055
01061 ZincBitmap * itemGetMask (ZincItem * item);
01062
01068 void itemSetAlignment (ZincItem * item, alignment value);
01069
01075 alignment itemGetAlignment (ZincItem * item);
01076
01082 void itemSetFont (ZincItem * item, ZincFont * value);
01083
01089 ZincFont * itemGetFont (ZincItem * item);
01090
01096 void itemSetOverstriked (ZincItem * item, bool value);
01097
01103 bool itemGetOverstriked (ZincItem * item);
01104
01110 void itemSetSpacing (ZincItem * item, short value);
01111
01117 short itemGetSpacing (ZincItem * item);
01118
01124 void itemSetText (ZincItem * item, String value);
01125
01131 String itemGetText (ZincItem * item);
01132
01138 void itemSetUnderlined (ZincItem * item, bool value);
01139
01145 bool itemGetUnderlined (ZincItem * item);
01146
01152 void itemSetWidth (ZincItem * item, unsigned short value);
01153
01159 unsigned short itemGetWidth (ZincItem * item);
01160
01161
01162
01163
01164
01165
01172 void itemSetFirstend (ZincItem * item, double a, double b, double c);
01173
01180 void itemGetFirstend (ZincItem * item, double *a, double *b, double *c);
01181
01188 void itemSetLastend (ZincItem * item, double a, double b, double c);
01189
01196 void itemGetLastend (ZincItem * item, double *a, double *b, double *c);
01197
01204 void itemSetPosition (ZincItem * item, double x, double y);
01205
01212 void itemGetPosition (ZincItem * item, double *x, double *y);
01213
01219 ZincImage* createImageFromFile (String image);
01220
01226 ZincImage* createImageFromData (String image);
01227
01233 ZincBitmap* createBitmapFromFile (String image);
01234
01240 ZincBitmap* createBitmapFromData (String image);
01241
01247 ZincBitmap* createBitmapFromName (String image);
01248
01256 ZincImage* createImageFromAGGBuffer (int width, int height, unsigned char *aggBuffer);
01257
01258
01271 ZincFont* createFont (String family, int size, int bold = -1,
01272 int italic = -1, int underline = -1,
01273 int overstrike = -1);
01274
01281 int getFontAscent (ZincFont* font);
01282
01289 int getImageWidth (ZincImage *image);
01290
01297 int getImageHeight (ZincImage *image);
01298
01299
01300
01301
01302
01308 static void loadZinc (char *argv0) throw (ZincException);
01309
01313 static void zincMainLoop ();
01314
01315
01316
01317
01325 static void z_tcl_call (int result, char* p_msg) throw (ZincException);
01326
01337 void z_command (int count, char* p_msg) throw (ZincException);
01338
01339 };
01340
01341 #endif