15 #include "vtkTkInternals.h"
43 #define MIN(a,b) ((a) < (b) ? (a) : (b))
46 #define MAX(a,b) ((a) > (b) ? (a) : (b))
49 #define SELECTION_VISIBLE
108 #define TIL_STATIC_SPACE 128
211 #define DOUBLEBUFFER_NONE 0
212 #define DOUBLEBUFFER_ITEM 1
213 #define DOUBLEBUFFER_WINDOW 2
223 #define LINE_STYLE_DOT 0
224 #define LINE_STYLE_SOLID 1
233 #define BG_MODE_COLUMN 0
234 #define BG_MODE_ORDER 1
235 #define BG_MODE_ORDERVIS 2
236 #define BG_MODE_ROW 3
238 #define BG_MODE_INDEX 4
239 #define BG_MODE_VISINDEX 5
286 #define COLUMN_LOCK_LEFT 0
287 #define COLUMN_LOCK_NONE 1
288 #define COLUMN_LOCK_RIGHT 2
297 #define UNIFORM_GROUP
323 #define TREE_WRAP_NONE 0
324 #define TREE_WRAP_ITEMS 1
325 #define TREE_WRAP_PIXELS 2
326 #define TREE_WRAP_WINDOW 3
378 #define TREE_CONF_FONT 0x0001
379 #define TREE_CONF_ITEMSIZE 0x0002
380 #define TREE_CONF_INDENT 0x0004
381 #define TREE_CONF_WRAP 0x0008
382 #define TREE_CONF_BUTIMG 0x0010
383 #define TREE_CONF_BUTBMP 0x0020
385 #define TREE_CONF_RELAYOUT 0x0100
386 #define TREE_CONF_REDISPLAY 0x0200
387 #define TREE_CONF_FG 0x0400
388 #define TREE_CONF_PROXY 0x0800
389 #define TREE_CONF_BUTTON 0x1000
390 #define TREE_CONF_LINE 0x2000
391 #define TREE_CONF_DEFSTYLE 0x4000
392 #define TREE_CONF_BG_IMAGE 0x8000
393 #define TREE_CONF_THEME 0x00010000
406 #define STATE_OP_ON 0
407 #define STATE_OP_OFF 1
408 #define STATE_OP_TOGGLE 2
409 #define SFO_NOT_OFF 0x0001
410 #define SFO_NOT_TOGGLE 0x0002
411 #define SFO_NOT_STATIC 0x0004
415 #define Tree_BorderLeft(tree) \
417 #define Tree_BorderTop(tree) \
419 #define Tree_BorderRight(tree) \
420 (Tk_Width(tree->tkwin) - tree->inset)
421 #define Tree_BorderBottom(tree) \
422 (Tk_Height(tree->tkwin) - tree->inset)
424 #define Tree_HeaderLeft(tree) \
425 Tree_BorderLeft(tree)
426 #define Tree_HeaderTop(tree) \
428 #define Tree_HeaderRight(tree) \
429 Tree_BorderRight(tree)
430 #define Tree_HeaderBottom(tree) \
431 (Tree_BorderTop(tree) + Tree_HeaderHeight(tree))
432 #define Tree_HeaderWidth(tree) \
433 (Tree_HeaderRight(tree) - Tree_HeaderLeft(tree))
435 #define Tree_ContentLeft(tree) \
436 (Tree_BorderLeft(tree) + Tree_WidthOfLeftColumns(tree))
437 #define Tree_ContentTop(tree) \
438 (Tree_BorderTop(tree) + Tree_HeaderHeight(tree))
439 #define Tree_ContentRight(tree) \
440 (Tree_BorderRight(tree) - Tree_WidthOfRightColumns(tree))
441 #define Tree_ContentBottom(tree) \
442 Tree_BorderBottom(tree)
444 #define Tree_ContentWidth(tree) \
445 (Tree_ContentRight(tree) - Tree_ContentLeft(tree))
446 #define Tree_ContentHeight(tree) \
447 (Tree_ContentBottom(tree) - Tree_ContentTop(tree))
451 #define ITEM_ALL ((TreeItem) -1)
452 #define IFO_NOT_MANY 0x0001
453 #define IFO_NOT_NULL 0x0002
454 #define IFO_NOT_ROOT 0x0004
455 #define IFO_NOT_ORPHAN 0x0008
456 #define IFO_LIST_ALL 0x0010
474 #define ITEM_FOR_EACH(item, items, item2s, iter) \
475 for (item = ItemForEach_Start(items, item2s, iter); \
477 item = ItemForEach_Next(iter))
479 extern void FormatResult(Tcl_Interp *interp,
char *fmt, ...);
489 #define STATE_OPEN 0x0001
490 #define STATE_SELECTED 0x0002
491 #define STATE_ENABLED 0x0004
492 #define STATE_ACTIVE 0x0008
493 #define STATE_FOCUS 0x0010
497 #define CS_DISPLAY 0x01
498 #define CS_LAYOUT 0x02
526 extern void TreeItem_Draw(
TreeCtrl *tree,
TreeItem self,
int lock,
int x,
int y,
int width,
int height, Drawable drawable,
int minX,
int maxX,
int index);
542 int x1,
int y1,
int x2,
int y2, Tcl_Obj *listObj);
544 TreeColumn treeColumn,
int objc, Tcl_Obj *CONST objv[], XRectangle rects[]);
548 extern int TreeItemCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
550 int lock,
int x,
int y,
int width,
int height);
569 extern int StringTableCO_Init(Tk_OptionSpec *optionTable, CONST
char *optionName, CONST
char **tablePtr);
612 int x1,
int y1,
int x2,
int y2, Tcl_Obj *listObj);
617 #define SORT_DOUBLE 2
619 #define SORT_COMMAND 4
622 extern int TreeStyle_ValidateElements(
TreeCtrl *tree,
TreeStyle style_,
int objc, Tcl_Obj *CONST objv[]);
625 extern int TreeElementCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
626 extern int TreeStyleCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
640 extern int TreeNotifyCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
651 #define COLUMN_ALL ((TreeColumn) -1)
652 #define COLUMN_NTAIL ((TreeColumn) -2)
653 #define CFO_NOT_MANY 0x01
654 #define CFO_NOT_NULL 0x02
655 #define CFO_NOT_TAIL 0x04
656 #define CFO_LIST_ALL 0x08
675 #define COLUMN_FOR_EACH(column, columns, column2s, iter) \
676 for (column = ColumnForEach_Start(columns, column2s, iter); \
678 column = ColumnForEach_Next(iter))
681 extern int TreeColumnCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
725 extern int DragImageCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
733 extern int TreeMarqueeCmd(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
794 int x1,
int y1,
int x2,
int y2,
int xOffset,
int yOffset);
796 #define DINFO_OUT_OF_DATE 0x0001
797 #define DINFO_CHECK_COLUMN_WIDTH 0x0002
798 #define DINFO_DRAW_HEADER 0x0004
799 #define DINFO_SET_ORIGIN_X 0x0008
800 #define DINFO_UPDATE_SCROLLBAR_X 0x0010
801 #define DINFO_REDRAW_PENDING 0x00020
802 #define DINFO_INVALIDATE 0x0040
803 #define DINFO_DRAW_HIGHLIGHT 0x0080
804 #define DINFO_DRAW_BORDER 0x0100
805 #define DINFO_REDO_RANGES 0x0200
806 #define DINFO_SET_ORIGIN_Y 0x0400
807 #define DINFO_UPDATE_SCROLLBAR_Y 0x0800
808 #define DINFO_REDO_INCREMENTS 0x1000
809 #define DINFO_REDO_COLUMN_WIDTH 0x2000
810 #define DINFO_REDO_SELECTION 0x4000
811 #define DINFO_DRAW_WHITESPACE 0x8000
830 #ifdef TREECTRL_DEBUG
831 #define WIPE(p,s) memset((char *) p, 0xAA, s)
835 #define CWIPE(p,t,c) WIPE(p, sizeof(t) * (c))
836 #define WIPEFREE(p,s) { WIPE(p, s); ckfree((char *) p); }
837 #define WFREE(p,t) WIPEFREE(p, sizeof(t))
838 #define WCFREE(p,t,c) WIPEFREE(p, sizeof(t) * (c))
840 extern int Ellipsis(Tk_Font tkfont,
char *
string,
int numBytes,
int *maxPixels,
char *ellipsis,
int force);
841 extern void HDotLine(
TreeCtrl *tree, Drawable drawable, GC gc,
int x1,
int y1,
int x2);
842 extern void VDotLine(
TreeCtrl *tree, Drawable drawable, GC gc,
int x1,
int y1,
int y2);
843 extern void DotRect(
TreeCtrl *tree, Drawable drawable,
int x,
int y,
int width,
int height);
854 int numChars,
int wrapLength, Tk_Justify justify,
int maxLines,
int flags);
858 extern void TextLayout_Draw(Display *display, Drawable drawable, GC gc,
859 TextLayout layout,
int x,
int y,
int firstChar,
int lastChar,
862 extern void DrawXORLine(Display *display, Drawable drawable,
int x1,
int y1,
866 GC gc,
int src_x,
int src_y,
int width,
int height,
int dest_x,
int dest_y);
868 XColor *fg, XColor *bg,
869 int src_x,
int src_y,
int width,
int height,
int dest_x,
int dest_y);
870 extern void Tk_FillRegion(Display *display, Drawable drawable, GC gc, TkRegion rgn);
871 extern void Tk_OffsetRegion(TkRegion region,
int xOffset,
int yOffset);
873 int width,
int height,
int dx,
int dy, TkRegion damageRgn);
875 extern void XImage2Photo(Tcl_Interp *interp, Tk_PhotoHandle photoH, XImage *ximage,
int alpha);
877 #define PAD_TOP_LEFT 0
878 #define PAD_BOTTOM_RIGHT 1
882 Tk_Window tkwin, Tcl_Obj *padObj,
883 int *topLeftPtr,
int *bottomRightPtr);
900 #define MATCH_PARTIAL 2
901 #define MATCH_EXACT 3
926 int state,
int *match);
928 int *widthPtr,
int *heightPtr);
930 int state,
int *match);
932 int state,
int *match);
934 int state,
int *match);
936 int state,
int *match);
938 int state,
int *match);
940 int *widthPtr,
int *heightPtr);
942 int state,
int *match);
951 extern char *
AllocHax_Alloc(ClientData data, Tk_Uid
id,
int size);
952 extern char *
AllocHax_CAlloc(ClientData data, Tk_Uid
id,
int size,
int count,
int roundUp);
953 extern char *
AllocHax_Realloc(ClientData data, Tk_Uid
id,
char *ptr,
int size1,
int size2);
954 extern void AllocHax_Free(ClientData data, Tk_Uid
id,
char *ptr,
int size);
955 extern void AllocHax_CFree(ClientData data, Tk_Uid
id,
char *ptr,
int size,
int count,
int roundUp);
966 #define TreeItemList_Init TreePtrList_Init
967 #define TreeItemList_Append TreePtrList_Append
968 #define TreeItemList_Concat TreePtrList_Concat
969 #define TreeItemList_Free TreePtrList_Free
970 #define TreeItemList_Items(L) ((TreeItem *) (L)->pointers)
971 #define TreeItemList_Nth(L,n) ((TreeItem) (L)->pointers[n])
972 #define TreeItemList_Count(L) ((L)->count)
975 #define TreeColumnList_Init TreePtrList_Init
976 #define TreeColumnList_Append TreePtrList_Append
977 #define TreeColumnList_Concat TreePtrList_Concat
978 #define TreeColumnList_Free TreePtrList_Free
979 #define TreeColumnList_Nth(L,n) ((TreeColumn) (L)->pointers[n])
980 #define TreeColumnList_Count(L) ((L)->count)
993 #define TREE_TAG_SPACE 3
1035 extern Tk_OptionSpec *
OptionSpec_Find(Tk_OptionSpec *optionTable, CONST
char *optionName);
1039 extern int PerStateCO_Init(Tk_OptionSpec *optionTable, CONST
char *optionName,
1060 Tk_OptionSpec *optionTable);
1063 extern int DynamicCO_Init(Tk_OptionSpec *optionTable, CONST
char *optionName,
1064 int id,
int size,
int objOffset,
int internalOffset,
1070 extern Tk_ObjCustomOption
pixelsCO;
1071 extern Tk_ObjCustomOption
stringCO;
1072 extern Tk_ObjCustomOption
styleCO;
1076 #define STATIC_SIZE 20
1077 #define STATIC_ALLOC(P,T,C) \
1078 if (C > STATIC_SIZE) \
1079 P = (T *) ckalloc(sizeof(T) * (C))
1080 #define STATIC_FREE(P,T,C) \
1082 if (C > STATIC_SIZE) \
1084 #define STATIC_FREE2(P,P2) \