00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "common.h"
00019
00020 #ifndef _TK
00021 #define _TK
00022
00023
00024
00025
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #define TK_MAJOR_VERSION 8
00053 #define TK_MINOR_VERSION 4
00054 #define TK_RELEASE_LEVEL TCL_FINAL_RELEASE
00055 #define TK_RELEASE_SERIAL 6
00056
00057 #define TK_VERSION "8.4"
00058 #define TK_PATCH_LEVEL "8.4.6"
00059
00060
00061
00062
00063
00064
00065 #if defined(MAC_TCL) || defined(MAC_OSX_TK)
00066 # ifndef REDO_KEYSYM_LOOKUP
00067 # define REDO_KEYSYM_LOOKUP
00068 # endif
00069 #endif
00070
00071 #ifndef _TCL
00072 # include <tcl.h>
00073 # if (TCL_MAJOR_VERSION != 8) || (TCL_MINOR_VERSION != 4)
00074 # error Tk 8.4 must be compiled with tcl.h from Tcl 8.4
00075 # endif
00076 #endif
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 #ifndef RC_INVOKED
00089
00090 #ifndef _XLIB_H
00091 # if defined (MAC_TCL)
00092 # include <Xlib.h>
00093 # include <X.h>
00094 # elif defined(MAC_OSX_TK)
00095 # include <X11/Xlib.h>
00096 # include <X11/X.h>
00097 # else
00098 # include <X11/Xlib.h>
00099 # endif
00100 #endif
00101 #ifdef __STDC__
00102 # include <stddef.h>
00103 #endif
00104
00105 #ifdef BUILD_tk
00106 # undef TCL_STORAGE_CLASS
00107 # define TCL_STORAGE_CLASS DLLEXPORT
00108 #endif
00109
00110
00111
00112
00113
00114 #ifdef XNQueryInputStyle
00115 #define TK_USE_INPUT_METHODS
00116 #endif
00117
00118
00119
00120
00121
00122 typedef struct Tk_BindingTable_ *Tk_BindingTable;
00123 typedef struct Tk_Canvas_ *Tk_Canvas;
00124 typedef struct Tk_Cursor_ *Tk_Cursor;
00125 typedef struct Tk_ErrorHandler_ *Tk_ErrorHandler;
00126 typedef struct Tk_Font_ *Tk_Font;
00127 typedef struct Tk_Image__ *Tk_Image;
00128 typedef struct Tk_ImageMaster_ *Tk_ImageMaster;
00129 typedef struct Tk_OptionTable_ *Tk_OptionTable;
00130 typedef struct Tk_PostscriptInfo_ *Tk_PostscriptInfo;
00131 typedef struct Tk_TextLayout_ *Tk_TextLayout;
00132 typedef struct Tk_Window_ *Tk_Window;
00133 typedef struct Tk_3DBorder_ *Tk_3DBorder;
00134 typedef struct Tk_Style_ *Tk_Style;
00135 typedef struct Tk_StyleEngine_ *Tk_StyleEngine;
00136 typedef struct Tk_StyledElement_ *Tk_StyledElement;
00137
00138
00139
00140
00141
00142 typedef CONST char *Tk_Uid;
00143
00144
00145
00146
00147
00148
00149 typedef enum {
00150 TK_OPTION_BOOLEAN,
00151 TK_OPTION_INT,
00152 TK_OPTION_DOUBLE,
00153 TK_OPTION_STRING,
00154 TK_OPTION_STRING_TABLE,
00155 TK_OPTION_COLOR,
00156 TK_OPTION_FONT,
00157 TK_OPTION_BITMAP,
00158 TK_OPTION_BORDER,
00159 TK_OPTION_RELIEF,
00160 TK_OPTION_CURSOR,
00161 TK_OPTION_JUSTIFY,
00162 TK_OPTION_ANCHOR,
00163 TK_OPTION_SYNONYM,
00164 TK_OPTION_PIXELS,
00165 TK_OPTION_WINDOW,
00166 TK_OPTION_END,
00167 TK_OPTION_CUSTOM,
00168 TK_OPTION_STYLE
00169 } Tk_OptionType;
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179 typedef struct Tk_OptionSpec {
00180 Tk_OptionType type;
00181
00182
00183 char *optionName;
00184
00185 char *dbName;
00186 char *dbClass;
00187 char *defValue;
00188
00189
00190 int objOffset;
00191
00192
00193
00194
00195
00196 int internalOffset;
00197
00198
00199
00200
00201
00202
00203
00204 int flags;
00205
00206 ClientData clientData;
00207
00208
00209 int typeMask;
00210
00211
00212
00213
00214
00215
00216 } Tk_OptionSpec;
00217
00218
00219
00220
00221
00222
00223
00224 #define TK_OPTION_NULL_OK (1 << 0)
00225 #define TK_OPTION_DONT_SET_DEFAULT (1 << 3)
00226
00227
00228
00229
00230
00231
00232
00233 typedef int (Tk_CustomOptionSetProc) _ANSI_ARGS_((ClientData clientData,
00234 Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj **value, char *widgRec,
00235 int offset, char *saveInternalPtr, int flags));
00236 typedef Tcl_Obj *(Tk_CustomOptionGetProc) _ANSI_ARGS_((ClientData clientData,
00237 Tk_Window tkwin, char *widgRec, int offset));
00238 typedef void (Tk_CustomOptionRestoreProc) _ANSI_ARGS_((ClientData clientData,
00239 Tk_Window tkwin, char *internalPtr, char *saveInternalPtr));
00240 typedef void (Tk_CustomOptionFreeProc) _ANSI_ARGS_((ClientData clientData,
00241 Tk_Window tkwin, char *internalPtr));
00242
00243 typedef struct Tk_ObjCustomOption {
00244 char *name;
00245 Tk_CustomOptionSetProc *setProc;
00246
00247 Tk_CustomOptionGetProc *getProc;
00248
00249
00250 Tk_CustomOptionRestoreProc *restoreProc;
00251
00252
00253 Tk_CustomOptionFreeProc *freeProc;
00254
00255 ClientData clientData;
00256
00257 } Tk_ObjCustomOption;
00258
00259
00260
00261
00262
00263
00264
00265
00266 #ifdef offsetof
00267 #define Tk_Offset(type, field) ((int) offsetof(type, field))
00268 #else
00269 #define Tk_Offset(type, field) ((int) ((char *) &((type *) 0)->field))
00270 #endif
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282 typedef struct Tk_SavedOption {
00283 struct TkOption *optionPtr;
00284
00285 Tcl_Obj *valuePtr;
00286
00287
00288
00289 double internalForm;
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301 } Tk_SavedOption;
00302
00303 #ifdef TCL_MEM_DEBUG
00304 # define TK_NUM_SAVED_OPTIONS 2
00305 #else
00306 # define TK_NUM_SAVED_OPTIONS 20
00307 #endif
00308
00309 typedef struct Tk_SavedOptions {
00310 char *recordPtr;
00311
00312 Tk_Window tkwin;
00313
00314 int numItems;
00315
00316 Tk_SavedOption items[TK_NUM_SAVED_OPTIONS];
00317
00318 struct Tk_SavedOptions *nextPtr;
00319
00320
00321
00322
00323 } Tk_SavedOptions;
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337 #ifndef __NO_OLD_CONFIG
00338
00339 typedef int (Tk_OptionParseProc) _ANSI_ARGS_((ClientData clientData,
00340 Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value, char *widgRec,
00341 int offset));
00342 typedef char *(Tk_OptionPrintProc) _ANSI_ARGS_((ClientData clientData,
00343 Tk_Window tkwin, char *widgRec, int offset,
00344 Tcl_FreeProc **freeProcPtr));
00345
00346 typedef struct Tk_CustomOption {
00347 Tk_OptionParseProc *parseProc;
00348
00349
00350 Tk_OptionPrintProc *printProc;
00351
00352
00353 ClientData clientData;
00354
00355
00356 } Tk_CustomOption;
00357
00358
00359
00360
00361
00362
00363
00364
00365 typedef struct Tk_ConfigSpec {
00366 int type;
00367
00368
00369 char *argvName;
00370
00371 Tk_Uid dbName;
00372 Tk_Uid dbClass;
00373 Tk_Uid defValue;
00374
00375 int offset;
00376
00377
00378 int specFlags;
00379
00380
00381 Tk_CustomOption *customPtr;
00382
00383
00384
00385 } Tk_ConfigSpec;
00386
00387
00388
00389
00390
00391
00392 typedef enum {
00393 TK_CONFIG_BOOLEAN, TK_CONFIG_INT, TK_CONFIG_DOUBLE, TK_CONFIG_STRING,
00394 TK_CONFIG_UID, TK_CONFIG_COLOR, TK_CONFIG_FONT, TK_CONFIG_BITMAP,
00395 TK_CONFIG_BORDER, TK_CONFIG_RELIEF, TK_CONFIG_CURSOR,
00396 TK_CONFIG_ACTIVE_CURSOR, TK_CONFIG_JUSTIFY, TK_CONFIG_ANCHOR,
00397 TK_CONFIG_SYNONYM, TK_CONFIG_CAP_STYLE, TK_CONFIG_JOIN_STYLE,
00398 TK_CONFIG_PIXELS, TK_CONFIG_MM, TK_CONFIG_WINDOW, TK_CONFIG_CUSTOM,
00399 TK_CONFIG_END
00400 } Tk_ConfigTypes;
00401
00402
00403
00404
00405
00406 #define TK_CONFIG_ARGV_ONLY 1
00407 #define TK_CONFIG_OBJS 0x80
00408
00409
00410
00411
00412
00413
00414
00415
00416 #define TK_CONFIG_NULL_OK (1 << 0)
00417 #define TK_CONFIG_COLOR_ONLY (1 << 1)
00418 #define TK_CONFIG_MONO_ONLY (1 << 2)
00419 #define TK_CONFIG_DONT_SET_DEFAULT (1 << 3)
00420 #define TK_CONFIG_OPTION_SPECIFIED (1 << 4)
00421 #define TK_CONFIG_USER_BIT 0x100
00422 #endif
00423
00424
00425
00426
00427
00428 typedef struct {
00429 char *key;
00430
00431 int type;
00432 char *src;
00433
00434 char *dst;
00435
00436 char *help;
00437 } Tk_ArgvInfo;
00438
00439
00440
00441
00442
00443
00444 #define TK_ARGV_CONSTANT 15
00445 #define TK_ARGV_INT 16
00446 #define TK_ARGV_STRING 17
00447 #define TK_ARGV_UID 18
00448 #define TK_ARGV_REST 19
00449 #define TK_ARGV_FLOAT 20
00450 #define TK_ARGV_FUNC 21
00451 #define TK_ARGV_GENFUNC 22
00452 #define TK_ARGV_HELP 23
00453 #define TK_ARGV_CONST_OPTION 24
00454 #define TK_ARGV_OPTION_VALUE 25
00455 #define TK_ARGV_OPTION_NAME_VALUE 26
00456 #define TK_ARGV_END 27
00457
00458
00459
00460
00461
00462 #define TK_ARGV_NO_DEFAULTS 0x1
00463 #define TK_ARGV_NO_LEFTOVERS 0x2
00464 #define TK_ARGV_NO_ABBREV 0x4
00465 #define TK_ARGV_DONT_SKIP_FIRST_ARG 0x8
00466
00467
00468
00469
00470
00471
00472 typedef enum {
00473 TK_DEFER_EVENT, TK_PROCESS_EVENT, TK_DISCARD_EVENT
00474 } Tk_RestrictAction;
00475
00476
00477
00478
00479
00480 #define TK_WIDGET_DEFAULT_PRIO 20
00481 #define TK_STARTUP_FILE_PRIO 40
00482 #define TK_USER_DEFAULT_PRIO 60
00483 #define TK_INTERACTIVE_PRIO 80
00484 #define TK_MAX_PRIO 100
00485
00486
00487
00488
00489
00490 #define TK_RELIEF_NULL -1
00491 #define TK_RELIEF_FLAT 0
00492 #define TK_RELIEF_GROOVE 1
00493 #define TK_RELIEF_RAISED 2
00494 #define TK_RELIEF_RIDGE 3
00495 #define TK_RELIEF_SOLID 4
00496 #define TK_RELIEF_SUNKEN 5
00497
00498
00499
00500
00501
00502 #define TK_3D_FLAT_GC 1
00503 #define TK_3D_LIGHT_GC 2
00504 #define TK_3D_DARK_GC 3
00505
00506
00507
00508
00509
00510
00511
00512
00513 #define TK_NOTIFY_SHARE 20
00514
00515
00516
00517
00518
00519 typedef enum {
00520 TK_ANCHOR_N, TK_ANCHOR_NE, TK_ANCHOR_E, TK_ANCHOR_SE,
00521 TK_ANCHOR_S, TK_ANCHOR_SW, TK_ANCHOR_W, TK_ANCHOR_NW,
00522 TK_ANCHOR_CENTER
00523 } Tk_Anchor;
00524
00525
00526
00527
00528
00529 typedef enum {
00530 TK_JUSTIFY_LEFT, TK_JUSTIFY_RIGHT, TK_JUSTIFY_CENTER
00531 } Tk_Justify;
00532
00533
00534
00535
00536
00537
00538 typedef struct Tk_FontMetrics {
00539 int ascent;
00540
00541
00542
00543 int descent;
00544
00545
00546
00547 int linespace;
00548
00549
00550
00551
00552 } Tk_FontMetrics;
00553
00554
00555
00556
00557
00558 #define TK_WHOLE_WORDS 1
00559 #define TK_AT_LEAST_ONE 2
00560 #define TK_PARTIAL_OK 4
00561
00562
00563
00564
00565
00566 #define TK_IGNORE_TABS 8
00567 #define TK_IGNORE_NEWLINES 16
00568
00569
00570
00571
00572
00573
00574 typedef Window (Tk_ClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin,
00575 Window parent, ClientData instanceData));
00576 typedef void (Tk_ClassWorldChangedProc) _ANSI_ARGS_((ClientData instanceData));
00577 typedef void (Tk_ClassModalProc) _ANSI_ARGS_((Tk_Window tkwin,
00578 XEvent *eventPtr));
00579
00580 typedef struct Tk_ClassProcs {
00581 unsigned int size;
00582 Tk_ClassWorldChangedProc *worldChangedProc;
00583
00584
00585
00586 Tk_ClassCreateProc *createProc;
00587
00588
00589
00590 Tk_ClassModalProc *modalProc;
00591
00592
00593
00594 } Tk_ClassProcs;
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610 #define Tk_GetClassProc(procs, which) \
00611 (((procs) == NULL) ? NULL : \
00612 (((procs)->size <= Tk_Offset(Tk_ClassProcs, which)) ? NULL:(procs)->which))
00613
00614
00615
00616
00617
00618
00619
00620 typedef void (Tk_GeomRequestProc) _ANSI_ARGS_((ClientData clientData,
00621 Tk_Window tkwin));
00622 typedef void (Tk_GeomLostSlaveProc) _ANSI_ARGS_((ClientData clientData,
00623 Tk_Window tkwin));
00624
00625 typedef struct Tk_GeomMgr {
00626 char *name;
00627
00628
00629 Tk_GeomRequestProc *requestProc;
00630
00631
00632 Tk_GeomLostSlaveProc *lostSlaveProc;
00633
00634
00635
00636
00637 } Tk_GeomMgr;
00638
00639
00640
00641
00642
00643 #define TK_SCROLL_MOVETO 1
00644 #define TK_SCROLL_PAGES 2
00645 #define TK_SCROLL_UNITS 3
00646 #define TK_SCROLL_ERROR 4
00647
00648
00649
00650
00651
00652
00653
00654
00655 #define VirtualEvent (LASTEvent)
00656 #define ActivateNotify (LASTEvent + 1)
00657 #define DeactivateNotify (LASTEvent + 2)
00658 #define MouseWheelEvent (LASTEvent + 3)
00659 #define TK_LASTEVENT (LASTEvent + 4)
00660
00661 #define MouseWheelMask (1L << 28)
00662
00663 #define ActivateMask (1L << 29)
00664 #define VirtualEventMask (1L << 30)
00665 #define TK_LASTEVENT (LASTEvent + 4)
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677 typedef struct {
00678 int type;
00679 unsigned long serial;
00680 Bool send_event;
00681 Display *display;
00682 Window event;
00683 Window root;
00684 Window subwindow;
00685 Time time;
00686 int x, y;
00687 int x_root, y_root;
00688 unsigned int state;
00689 Tk_Uid name;
00690 Bool same_screen;
00691 } XVirtualEvent;
00692
00693 typedef struct {
00694 int type;
00695 unsigned long serial;
00696 Bool send_event;
00697 Display *display;
00698 Window window;
00699 } XActivateDeactivateEvent;
00700 typedef XActivateDeactivateEvent XActivateEvent;
00701 typedef XActivateDeactivateEvent XDeactivateEvent;
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712 #define Tk_Display(tkwin) (((Tk_FakeWin *) (tkwin))->display)
00713 #define Tk_ScreenNumber(tkwin) (((Tk_FakeWin *) (tkwin))->screenNum)
00714 #define Tk_Screen(tkwin) (ScreenOfDisplay(Tk_Display(tkwin), \
00715 Tk_ScreenNumber(tkwin)))
00716 #define Tk_Depth(tkwin) (((Tk_FakeWin *) (tkwin))->depth)
00717 #define Tk_Visual(tkwin) (((Tk_FakeWin *) (tkwin))->visual)
00718 #define Tk_WindowId(tkwin) (((Tk_FakeWin *) (tkwin))->window)
00719 #define Tk_PathName(tkwin) (((Tk_FakeWin *) (tkwin))->pathName)
00720 #define Tk_Name(tkwin) (((Tk_FakeWin *) (tkwin))->nameUid)
00721 #define Tk_Class(tkwin) (((Tk_FakeWin *) (tkwin))->classUid)
00722 #define Tk_X(tkwin) (((Tk_FakeWin *) (tkwin))->changes.x)
00723 #define Tk_Y(tkwin) (((Tk_FakeWin *) (tkwin))->changes.y)
00724 #define Tk_Width(tkwin) (((Tk_FakeWin *) (tkwin))->changes.width)
00725 #define Tk_Height(tkwin) \
00726 (((Tk_FakeWin *) (tkwin))->changes.height)
00727 #define Tk_Changes(tkwin) (&((Tk_FakeWin *) (tkwin))->changes)
00728 #define Tk_Attributes(tkwin) (&((Tk_FakeWin *) (tkwin))->atts)
00729 #define Tk_IsEmbedded(tkwin) \
00730 (((Tk_FakeWin *) (tkwin))->flags & TK_EMBEDDED)
00731 #define Tk_IsContainer(tkwin) \
00732 (((Tk_FakeWin *) (tkwin))->flags & TK_CONTAINER)
00733 #define Tk_IsMapped(tkwin) \
00734 (((Tk_FakeWin *) (tkwin))->flags & TK_MAPPED)
00735 #define Tk_IsTopLevel(tkwin) \
00736 (((Tk_FakeWin *) (tkwin))->flags & TK_TOP_LEVEL)
00737 #define Tk_HasWrapper(tkwin) \
00738 (((Tk_FakeWin *) (tkwin))->flags & TK_HAS_WRAPPER)
00739 #define Tk_WinManaged(tkwin) \
00740 (((Tk_FakeWin *) (tkwin))->flags & TK_WIN_MANAGED)
00741 #define Tk_TopWinHierarchy(tkwin) \
00742 (((Tk_FakeWin *) (tkwin))->flags & TK_TOP_HIERARCHY)
00743 #define Tk_ReqWidth(tkwin) (((Tk_FakeWin *) (tkwin))->reqWidth)
00744 #define Tk_ReqHeight(tkwin) (((Tk_FakeWin *) (tkwin))->reqHeight)
00745
00746 #define Tk_InternalBorderWidth(tkwin) \
00747 (((Tk_FakeWin *) (tkwin))->internalBorderLeft)
00748 #define Tk_InternalBorderLeft(tkwin) \
00749 (((Tk_FakeWin *) (tkwin))->internalBorderLeft)
00750 #define Tk_InternalBorderRight(tkwin) \
00751 (((Tk_FakeWin *) (tkwin))->internalBorderRight)
00752 #define Tk_InternalBorderTop(tkwin) \
00753 (((Tk_FakeWin *) (tkwin))->internalBorderTop)
00754 #define Tk_InternalBorderBottom(tkwin) \
00755 (((Tk_FakeWin *) (tkwin))->internalBorderBottom)
00756 #define Tk_MinReqWidth(tkwin) (((Tk_FakeWin *) (tkwin))->minReqWidth)
00757 #define Tk_MinReqHeight(tkwin) (((Tk_FakeWin *) (tkwin))->minReqHeight)
00758 #define Tk_Parent(tkwin) (((Tk_FakeWin *) (tkwin))->parentPtr)
00759 #define Tk_Colormap(tkwin) (((Tk_FakeWin *) (tkwin))->atts.colormap)
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772 typedef struct Tk_FakeWin {
00773 Display *display;
00774 char *dummy1;
00775 int screenNum;
00776 Visual *visual;
00777 int depth;
00778 Window window;
00779 char *dummy2;
00780 char *dummy3;
00781 Tk_Window parentPtr;
00782 char *dummy4;
00783 char *dummy5;
00784 char *pathName;
00785 Tk_Uid nameUid;
00786 Tk_Uid classUid;
00787 XWindowChanges changes;
00788 unsigned int dummy6;
00789 XSetWindowAttributes atts;
00790 unsigned long dummy7;
00791 unsigned int flags;
00792 char *dummy8;
00793 #ifdef TK_USE_INPUT_METHODS
00794 XIC dummy9;
00795 #endif
00796 ClientData *dummy10;
00797 int dummy11;
00798 int dummy12;
00799 char *dummy13;
00800 char *dummy14;
00801 ClientData dummy15;
00802 int reqWidth, reqHeight;
00803 int internalBorderLeft;
00804 char *dummy16;
00805 char *dummy17;
00806 ClientData dummy18;
00807 char *dummy19;
00808 int internalBorderRight;
00809 int internalBorderTop;
00810 int internalBorderBottom;
00811 int minReqWidth;
00812 int minReqHeight;
00813 } Tk_FakeWin;
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00885
00886
00887 #define TK_MAPPED 1
00888 #define TK_TOP_LEVEL 2
00889 #define TK_ALREADY_DEAD 4
00890 #define TK_NEED_CONFIG_NOTIFY 8
00891 #define TK_GRAB_FLAG 0x10
00892 #define TK_CHECKED_IC 0x20
00893 #define TK_DONT_DESTROY_WINDOW 0x40
00894 #define TK_WM_COLORMAP_WINDOW 0x80
00895 #define TK_EMBEDDED 0x100
00896 #define TK_CONTAINER 0x200
00897 #define TK_BOTH_HALVES 0x400
00898 #define TK_DEFER_MODAL 0x800
00899 #define TK_WRAPPER 0x1000
00900 #define TK_REPARENTED 0x2000
00901 #define TK_ANONYMOUS_WINDOW 0x4000
00902 #define TK_HAS_WRAPPER 0x8000
00903 #define TK_WIN_MANAGED 0x10000
00904 #define TK_TOP_HIERARCHY 0x20000
00905 #define TK_PROP_PROPCHANGE 0x40000
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916 typedef enum {
00917 TK_STATE_NULL = -1, TK_STATE_ACTIVE, TK_STATE_DISABLED,
00918 TK_STATE_NORMAL, TK_STATE_HIDDEN
00919 } Tk_State;
00920
00921 typedef struct Tk_SmoothMethod {
00922 char *name;
00923 int (*coordProc) _ANSI_ARGS_((Tk_Canvas canvas,
00924 double *pointPtr, int numPoints, int numSteps,
00925 XPoint xPoints[], double dblPoints[]));
00926 void (*postscriptProc) _ANSI_ARGS_((Tcl_Interp *interp,
00927 Tk_Canvas canvas, double *coordPtr,
00928 int numPoints, int numSteps));
00929 } Tk_SmoothMethod;
00930
00931
00932
00933
00934
00935
00936
00937
00938 #define TK_TAG_SPACE 3
00939
00940 typedef struct Tk_Item {
00941 int id;
00942
00943
00944 struct Tk_Item *nextPtr;
00945
00946
00947
00948 Tk_Uid staticTagSpace[TK_TAG_SPACE];
00949
00950 Tk_Uid *tagPtr;
00951
00952
00953
00954 int tagSpace;
00955
00956 int numTags;
00957
00958 struct Tk_ItemType *typePtr;
00959
00960 int x1, y1, x2, y2;
00961
00962
00963
00964
00965
00966 struct Tk_Item *prevPtr;
00967
00968
00969
00970 Tk_State state;
00971 char *reserved1;
00972 int redraw_flags;
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982 } Tk_Item;
00983
00984
00985
00986
00987
00988
00989
00990
00991
00992
00993
00994 #define TK_ITEM_STATE_DEPENDANT 1
00995 #define TK_ITEM_DONT_REDRAW 2
00996
00997
00998
00999
01000
01001
01002
01003 #ifdef USE_OLD_CANVAS
01004 typedef int Tk_ItemCreateProc _ANSI_ARGS_((Tcl_Interp *interp,
01005 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01006 char **argv));
01007 typedef int Tk_ItemConfigureProc _ANSI_ARGS_((Tcl_Interp *interp,
01008 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01009 char **argv, int flags));
01010 typedef int Tk_ItemCoordProc _ANSI_ARGS_((Tcl_Interp *interp,
01011 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01012 char **argv));
01013 #else
01014 typedef int Tk_ItemCreateProc _ANSI_ARGS_((Tcl_Interp *interp,
01015 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01016 Tcl_Obj *CONST objv[]));
01017 typedef int Tk_ItemConfigureProc _ANSI_ARGS_((Tcl_Interp *interp,
01018 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01019 Tcl_Obj *CONST objv[], int flags));
01020 typedef int Tk_ItemCoordProc _ANSI_ARGS_((Tcl_Interp *interp,
01021 Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
01022 Tcl_Obj *CONST argv[]));
01023 #endif
01024 typedef void Tk_ItemDeleteProc _ANSI_ARGS_((Tk_Canvas canvas,
01025 Tk_Item *itemPtr, Display *display));
01026 typedef void Tk_ItemDisplayProc _ANSI_ARGS_((Tk_Canvas canvas,
01027 Tk_Item *itemPtr, Display *display, Drawable dst,
01028 int x, int y, int width, int height));
01029 typedef double Tk_ItemPointProc _ANSI_ARGS_((Tk_Canvas canvas,
01030 Tk_Item *itemPtr, double *pointPtr));
01031 typedef int Tk_ItemAreaProc _ANSI_ARGS_((Tk_Canvas canvas,
01032 Tk_Item *itemPtr, double *rectPtr));
01033 typedef int Tk_ItemPostscriptProc _ANSI_ARGS_((Tcl_Interp *interp,
01034 Tk_Canvas canvas, Tk_Item *itemPtr, int prepass));
01035 typedef void Tk_ItemScaleProc _ANSI_ARGS_((Tk_Canvas canvas,
01036 Tk_Item *itemPtr, double originX, double originY,
01037 double scaleX, double scaleY));
01038 typedef void Tk_ItemTranslateProc _ANSI_ARGS_((Tk_Canvas canvas,
01039 Tk_Item *itemPtr, double deltaX, double deltaY));
01040 typedef int Tk_ItemIndexProc _ANSI_ARGS_((Tcl_Interp *interp,
01041 Tk_Canvas canvas, Tk_Item *itemPtr, char *indexString,
01042 int *indexPtr));
01043 typedef void Tk_ItemCursorProc _ANSI_ARGS_((Tk_Canvas canvas,
01044 Tk_Item *itemPtr, int index));
01045 typedef int Tk_ItemSelectionProc _ANSI_ARGS_((Tk_Canvas canvas,
01046 Tk_Item *itemPtr, int offset, char *buffer,
01047 int maxBytes));
01048 typedef void Tk_ItemInsertProc _ANSI_ARGS_((Tk_Canvas canvas,
01049 Tk_Item *itemPtr, int beforeThis, char *string));
01050 typedef void Tk_ItemDCharsProc _ANSI_ARGS_((Tk_Canvas canvas,
01051 Tk_Item *itemPtr, int first, int last));
01052
01053 #ifndef __NO_OLD_CONFIG
01054
01055 typedef struct Tk_ItemType {
01056 char *name;
01057
01058 int itemSize;
01059
01060 Tk_ItemCreateProc *createProc;
01061
01062 Tk_ConfigSpec *configSpecs;
01063
01064
01065 Tk_ItemConfigureProc *configProc;
01066
01067 Tk_ItemCoordProc *coordProc;
01068
01069 Tk_ItemDeleteProc *deleteProc;
01070
01071 Tk_ItemDisplayProc *displayProc;
01072
01073 int alwaysRedraw;
01074
01075
01076 Tk_ItemPointProc *pointProc;
01077
01078 Tk_ItemAreaProc *areaProc;
01079
01080 Tk_ItemPostscriptProc *postscriptProc;
01081
01082
01083
01084 Tk_ItemScaleProc *scaleProc;
01085
01086 Tk_ItemTranslateProc *translateProc;
01087
01088 Tk_ItemIndexProc *indexProc;
01089
01090
01091 Tk_ItemCursorProc *icursorProc;
01092
01093 Tk_ItemSelectionProc *selectionProc;
01094
01095
01096 Tk_ItemInsertProc *insertProc;
01097
01098 Tk_ItemDCharsProc *dCharsProc;
01099
01100 struct Tk_ItemType *nextPtr;
01101
01102 char *reserved1;
01103 int reserved2;
01104 char *reserved3;
01105 char *reserved4;
01106 } Tk_ItemType;
01107
01108 #endif
01109
01110
01111
01112
01113
01114
01115
01116
01117
01118 typedef struct Tk_CanvasTextInfo {
01119 Tk_3DBorder selBorder;
01120
01121 int selBorderWidth;
01122
01123 XColor *selFgColorPtr;
01124
01125 Tk_Item *selItemPtr;
01126
01127
01128 int selectFirst;
01129
01130 int selectLast;
01131
01132 Tk_Item *anchorItemPtr;
01133
01134
01135 int selectAnchor;
01136
01137
01138
01139 Tk_3DBorder insertBorder;
01140
01141 int insertWidth;
01142
01143 int insertBorderWidth;
01144
01145 Tk_Item *focusItemPtr;
01146
01147
01148 int gotFocus;
01149
01150 int cursorOn;
01151
01152
01153 } Tk_CanvasTextInfo;
01154
01155
01156
01157
01158
01159 typedef struct Tk_Dash {
01160 int number;
01161 union {
01162 char *pt;
01163 char array[sizeof(char *)];
01164 } pattern;
01165 } Tk_Dash;
01166
01167 typedef struct Tk_TSOffset {
01168 int flags;
01169 int xoffset;
01170 int yoffset;
01171 } Tk_TSOffset;
01172
01173
01174
01175
01176
01177 #define TK_OFFSET_INDEX 1
01178 #define TK_OFFSET_RELATIVE 2
01179 #define TK_OFFSET_LEFT 4
01180 #define TK_OFFSET_CENTER 8
01181 #define TK_OFFSET_RIGHT 16
01182 #define TK_OFFSET_TOP 32
01183 #define TK_OFFSET_MIDDLE 64
01184 #define TK_OFFSET_BOTTOM 128
01185
01186 typedef struct Tk_Outline {
01187 GC gc;
01188 double width;
01189 double activeWidth;
01190 double disabledWidth;
01191 int offset;
01192 Tk_Dash dash;
01193 Tk_Dash activeDash;
01194 Tk_Dash disabledDash;
01195 VOID *reserved1;
01196 VOID *reserved2;
01197 VOID *reserved3;
01198 Tk_TSOffset tsoffset;
01199 XColor *color;
01200 XColor *activeColor;
01201 XColor *disabledColor;
01202 Pixmap stipple;
01203 Pixmap activeStipple;
01204 Pixmap disabledStipple;
01205 } Tk_Outline;
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216 typedef struct Tk_ImageType Tk_ImageType;
01217 #ifdef USE_OLD_IMAGE
01218 typedef int (Tk_ImageCreateProc) _ANSI_ARGS_((Tcl_Interp *interp,
01219 char *name, int argc, char **argv, Tk_ImageType *typePtr,
01220 Tk_ImageMaster master, ClientData *masterDataPtr));
01221 #else
01222 typedef int (Tk_ImageCreateProc) _ANSI_ARGS_((Tcl_Interp *interp,
01223 char *name, int objc, Tcl_Obj *CONST objv[], Tk_ImageType *typePtr,
01224 Tk_ImageMaster master, ClientData *masterDataPtr));
01225 #endif
01226 typedef ClientData (Tk_ImageGetProc) _ANSI_ARGS_((Tk_Window tkwin,
01227 ClientData masterData));
01228 typedef void (Tk_ImageDisplayProc) _ANSI_ARGS_((ClientData instanceData,
01229 Display *display, Drawable drawable, int imageX, int imageY,
01230 int width, int height, int drawableX, int drawableY));
01231 typedef void (Tk_ImageFreeProc) _ANSI_ARGS_((ClientData instanceData,
01232 Display *display));
01233 typedef void (Tk_ImageDeleteProc) _ANSI_ARGS_((ClientData masterData));
01234 typedef void (Tk_ImageChangedProc) _ANSI_ARGS_((ClientData clientData,
01235 int x, int y, int width, int height, int imageWidth,
01236 int imageHeight));
01237 typedef int (Tk_ImagePostscriptProc) _ANSI_ARGS_((ClientData clientData,
01238 Tcl_Interp *interp, Tk_Window tkwin, Tk_PostscriptInfo psinfo,
01239 int x, int y, int width, int height, int prepass));
01240
01241
01242
01243
01244
01245
01246
01247
01248
01249
01250 struct Tk_ImageType {
01251 char *name;
01252 Tk_ImageCreateProc *createProc;
01253
01254
01255 Tk_ImageGetProc *getProc;
01256
01257
01258 Tk_ImageDisplayProc *displayProc;
01259
01260
01261 Tk_ImageFreeProc *freeProc;
01262
01263
01264 Tk_ImageDeleteProc *deleteProc;
01265
01266
01267
01268
01269 Tk_ImagePostscriptProc *postscriptProc;
01270
01271
01272 struct Tk_ImageType *nextPtr;
01273
01274
01275
01276 char *reserved;
01277 };
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292 typedef void *Tk_PhotoHandle;
01293
01294
01295
01296
01297
01298 typedef struct Tk_PhotoImageBlock {
01299 unsigned char *pixelPtr;
01300 int width;
01301 int height;
01302 int pitch;
01303
01304 int pixelSize;
01305
01306 int offset[4];
01307
01308
01309 } Tk_PhotoImageBlock;
01310
01311
01312
01313
01314
01315
01316
01317 #define TK_PHOTO_COMPOSITE_OVERLAY 0
01318 #define TK_PHOTO_COMPOSITE_SET 1
01319
01320
01321
01322
01323
01324
01325 typedef struct Tk_PhotoImageFormat Tk_PhotoImageFormat;
01326 #ifdef USE_OLD_IMAGE
01327 typedef int (Tk_ImageFileMatchProc) _ANSI_ARGS_((Tcl_Channel chan,
01328 char *fileName, char *formatString, int *widthPtr, int *heightPtr));
01329 typedef int (Tk_ImageStringMatchProc) _ANSI_ARGS_((char *string,
01330 char *formatString, int *widthPtr, int *heightPtr));
01331 typedef int (Tk_ImageFileReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
01332 Tcl_Channel chan, char *fileName, char *formatString,
01333 Tk_PhotoHandle imageHandle, int destX, int destY,
01334 int width, int height, int srcX, int srcY));
01335 typedef int (Tk_ImageStringReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
01336 char *string, char *formatString, Tk_PhotoHandle imageHandle,
01337 int destX, int destY, int width, int height, int srcX, int srcY));
01338 typedef int (Tk_ImageFileWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
01339 char *fileName, char *formatString, Tk_PhotoImageBlock *blockPtr));
01340 typedef int (Tk_ImageStringWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
01341 Tcl_DString *dataPtr, char *formatString,
01342 Tk_PhotoImageBlock *blockPtr));
01343 #else
01344 typedef int (Tk_ImageFileMatchProc) _ANSI_ARGS_((Tcl_Channel chan,
01345 CONST char *fileName, Tcl_Obj *format, int *widthPtr,
01346 int *heightPtr, Tcl_Interp *interp));
01347 typedef int (Tk_ImageStringMatchProc) _ANSI_ARGS_((Tcl_Obj *dataObj,
01348 Tcl_Obj *format, int *widthPtr, int *heightPtr,
01349 Tcl_Interp *interp));
01350 typedef int (Tk_ImageFileReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
01351 Tcl_Channel chan, CONST char *fileName, Tcl_Obj *format,
01352 Tk_PhotoHandle imageHandle, int destX, int destY,
01353 int width, int height, int srcX, int srcY));
01354 typedef int (Tk_ImageStringReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
01355 Tcl_Obj *dataObj, Tcl_Obj *format, Tk_PhotoHandle imageHandle,
01356 int destX, int destY, int width, int height, int srcX, int srcY));
01357 typedef int (Tk_ImageFileWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
01358 CONST char *fileName, Tcl_Obj *format, Tk_PhotoImageBlock *blockPtr));
01359 typedef int (Tk_ImageStringWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
01360 Tcl_Obj *format, Tk_PhotoImageBlock *blockPtr));
01361 #endif
01362
01363
01364
01365
01366
01367
01368
01369
01370 struct Tk_PhotoImageFormat {
01371 char *name;
01372 Tk_ImageFileMatchProc *fileMatchProc;
01373
01374
01375 Tk_ImageStringMatchProc *stringMatchProc;
01376
01377
01378 Tk_ImageFileReadProc *fileReadProc;
01379
01380
01381 Tk_ImageStringReadProc *stringReadProc;
01382
01383
01384 Tk_ImageFileWriteProc *fileWriteProc;
01385
01386
01387 Tk_ImageStringWriteProc *stringWriteProc;
01388
01389
01390
01391 struct Tk_PhotoImageFormat *nextPtr;
01392
01393
01394
01395 };
01396
01397 EXTERN void Tk_CreateOldImageType _ANSI_ARGS_((
01398 Tk_ImageType *typePtr));
01399 EXTERN void Tk_CreateOldPhotoImageFormat _ANSI_ARGS_((
01400 Tk_PhotoImageFormat *formatPtr));
01401
01402 #if !defined(USE_TK_STUBS) && defined(USE_OLD_IMAGE)
01403 #define Tk_CreateImageType Tk_CreateOldImageType
01404 #define Tk_CreatePhotoImageFormat Tk_CreateOldPhotoImageFormat
01405 #endif
01406
01407
01408
01409
01410
01411
01412
01413
01414
01415
01416
01417
01418
01419 #define TK_STYLE_VERSION_1 0x1
01420 #define TK_STYLE_VERSION TK_STYLE_VERSION_1
01421
01422
01423
01424
01425
01426
01427 typedef void (Tk_GetElementSizeProc) _ANSI_ARGS_((ClientData clientData,
01428 char *recordPtr, CONST Tk_OptionSpec **optionsPtr, Tk_Window tkwin,
01429 int width, int height, int inner, int *widthPtr, int *heightPtr));
01430 typedef void (Tk_GetElementBoxProc) _ANSI_ARGS_((ClientData clientData,
01431 char *recordPtr, CONST Tk_OptionSpec **optionsPtr, Tk_Window tkwin,
01432 int x, int y, int width, int height, int inner, int *xPtr, int *yPtr,
01433 int *widthPtr, int *heightPtr));
01434 typedef int (Tk_GetElementBorderWidthProc) _ANSI_ARGS_((ClientData clientData,
01435 char *recordPtr, CONST Tk_OptionSpec **optionsPtr, Tk_Window tkwin));
01436 typedef void (Tk_DrawElementProc) _ANSI_ARGS_((ClientData clientData,
01437 char *recordPtr, CONST Tk_OptionSpec **optionsPtr, Tk_Window tkwin,
01438 Drawable d, int x, int y, int width, int height, int state));
01439
01440 typedef struct Tk_ElementOptionSpec {
01441 char *name;
01442 Tk_OptionType type;
01443
01444 } Tk_ElementOptionSpec;
01445
01446 typedef struct Tk_ElementSpec {
01447 int version;
01448 char *name;
01449 Tk_ElementOptionSpec *options;
01450
01451
01452
01453
01454
01455
01456
01457 Tk_GetElementSizeProc *getSize;
01458
01459
01460
01461 Tk_GetElementBoxProc *getBox;
01462
01463
01464 Tk_GetElementBorderWidthProc *getBorderWidth;
01465
01466
01467 Tk_DrawElementProc *draw;
01468 } Tk_ElementSpec;
01469
01470
01471
01472
01473
01474 #define TK_ELEMENT_STATE_ACTIVE 1<<0
01475 #define TK_ELEMENT_STATE_DISABLED 1<<1
01476 #define TK_ELEMENT_STATE_FOCUS 1<<2
01477 #define TK_ELEMENT_STATE_PRESSED 1<<3
01478
01479
01480
01481
01482
01483
01484
01485
01486
01487
01488
01489 #define TK_READABLE TCL_READABLE
01490 #define TK_WRITABLE TCL_WRITABLE
01491 #define TK_EXCEPTION TCL_EXCEPTION
01492
01493 #define TK_DONT_WAIT TCL_DONT_WAIT
01494 #define TK_X_EVENTS TCL_WINDOW_EVENTS
01495 #define TK_WINDOW_EVENTS TCL_WINDOW_EVENTS
01496 #define TK_FILE_EVENTS TCL_FILE_EVENTS
01497 #define TK_TIMER_EVENTS TCL_TIMER_EVENTS
01498 #define TK_IDLE_EVENTS TCL_IDLE_EVENTS
01499 #define TK_ALL_EVENTS TCL_ALL_EVENTS
01500
01501 #define Tk_IdleProc Tcl_IdleProc
01502 #define Tk_FileProc Tcl_FileProc
01503 #define Tk_TimerProc Tcl_TimerProc
01504 #define Tk_TimerToken Tcl_TimerToken
01505
01506 #define Tk_BackgroundError Tcl_BackgroundError
01507 #define Tk_CancelIdleCall Tcl_CancelIdleCall
01508 #define Tk_CreateFileHandler Tcl_CreateFileHandler
01509 #define Tk_CreateTimerHandler Tcl_CreateTimerHandler
01510 #define Tk_DeleteFileHandler Tcl_DeleteFileHandler
01511 #define Tk_DeleteTimerHandler Tcl_DeleteTimerHandler
01512 #define Tk_DoOneEvent Tcl_DoOneEvent
01513 #define Tk_DoWhenIdle Tcl_DoWhenIdle
01514 #define Tk_Sleep Tcl_Sleep
01515
01516
01517
01518 #define Tk_EventuallyFree Tcl_EventuallyFree
01519 #define Tk_FreeProc Tcl_FreeProc
01520 #define Tk_Preserve Tcl_Preserve
01521 #define Tk_Release Tcl_Release
01522
01523
01524 #define Tk_Main(argc, argv, proc) \
01525 Tk_MainEx(argc, argv, proc, Tcl_CreateInterp())
01526
01527 CONST char *Tk_InitStubs _ANSI_ARGS_((Tcl_Interp *interp, char *version, int exact));
01528
01529 #ifndef USE_TK_STUBS
01530
01531 #define Tk_InitStubs(interp, version, exact) \
01532 Tcl_PkgRequire(interp, "Tk", version, exact)
01533
01534 #endif
01535
01536 void Tk_InitImageArgs _ANSI_ARGS_((Tcl_Interp *interp, int argc, char ***argv));
01537
01538 #if !defined(USE_TK_STUBS) || !defined(USE_OLD_IMAGE)
01539
01540 #define Tk_InitImageArgs(interp, argc, argv)
01541
01542 #endif
01543
01544
01545
01546
01547
01548
01549
01550
01551
01552
01553 typedef int (Tk_ErrorProc) _ANSI_ARGS_((ClientData clientData,
01554 XErrorEvent *errEventPtr));
01555 typedef void (Tk_EventProc) _ANSI_ARGS_((ClientData clientData,
01556 XEvent *eventPtr));
01557 typedef int (Tk_GenericProc) _ANSI_ARGS_((ClientData clientData,
01558 XEvent *eventPtr));
01559 typedef int (Tk_ClientMessageProc) _ANSI_ARGS_((Tk_Window tkwin,
01560 XEvent *eventPtr));
01561 typedef int (Tk_GetSelProc) _ANSI_ARGS_((ClientData clientData,
01562 Tcl_Interp *interp, char *portion));
01563 typedef void (Tk_LostSelProc) _ANSI_ARGS_((ClientData clientData));
01564 typedef Tk_RestrictAction (Tk_RestrictProc) _ANSI_ARGS_((
01565 ClientData clientData, XEvent *eventPtr));
01566 typedef int (Tk_SelectionProc) _ANSI_ARGS_((ClientData clientData,
01567 int offset, char *buffer, int maxBytes));
01568
01569
01570
01571
01572
01573
01574
01575
01576
01577
01578 #include "tkDecls.h"
01579
01580
01581
01582
01583
01584
01585
01586
01587
01588
01589 #ifdef USE_COMPOSITELESS_PHOTO_PUT_BLOCK
01590 # ifdef Tk_PhotoPutBlock
01591 # undef Tk_PhotoPutBlock
01592 # endif
01593 # define Tk_PhotoPutBlock Tk_PhotoPutBlock_NoComposite
01594 # ifdef Tk_PhotoPutZoomedBlock
01595 # undef Tk_PhotoPutZoomedBlock
01596 # endif
01597 # define Tk_PhotoPutZoomedBlock Tk_PhotoPutZoomedBlock_NoComposite
01598 #endif
01599
01600
01601
01602
01603
01604
01605 #undef TCL_STORAGE_CLASS
01606 #define TCL_STORAGE_CLASS DLLIMPORT
01607
01608 #endif
01609
01610
01611
01612
01613
01614 #ifdef __cplusplus
01615 }
01616 #endif
01617
01618 #endif
01619
01620
01621
01622
01623
01624
01625
01626
01627
01628