PLplot  5.15.0
pltkwd.h
Go to the documentation of this file.
1 //
2 // Holds system header includes, prototypes of xwin driver
3 // utility functions, and definition of the state structure.
4 //
5 
6 #ifndef __PLTKWD_H__
7 #define __PLTKWD_H__
8 
9 #include "plplot.h"
10 #include "plstrm.h"
11 
12 // System headers
13 
14 #ifndef MAC_TCL
15 #ifndef __MWERKS__
16 #include <sys/types.h>
17 #endif
18 #endif
19 
20 #include <tk.h>
21 #ifdef MAC_TCL
22 #else
23 // These are pulled in by 'tkMacPort.h'
24 #include <X11/Xlib.h>
25 #include <X11/Xutil.h>
26 #include <X11/cursorfont.h>
27 #include <X11/keysym.h>
28 #endif
29 // Specify max number of displays in use
30 
31 #define PLTKDISPLAYS 100
32 
33 // Set constants for dealing with colormap. In brief:
34 //
35 // ccmap When set, turns on custom color map
36 //
37 // See Init_CustomCmap() and Init_DefaultCmap() for more info.
38 // Set ccmap at your own risk -- still under development.
39 //
40 
41 static int plplot_tkwin_ccmap = 0;
42 
43 // One of these holds the display info, shared by all streams on a given
44 // display
45 
46 typedef struct
47 {
48  int nstreams; // Number of streams using display
49  int ixwd; // Specifies tkwDisplay number
50  char *displayName; // Name of X display
51  int screen; // X screen
52  Display *display; // X display
53  Visual *visual; // X Visual
54  GC gcXor; // Graphics context for XOR draws
55  Colormap map; // Colormap
56  unsigned depth; // display depth
57  int color; // Set to 1 if a color output device
58  int ncol0; // Number of cmap 0 colors allocated
59  int ncol1; // Number of cmap 1 colors allocated
60  XColor cmap0[16]; // Color entries for cmap 0
61  XColor cmap1[256]; // Color entries for cmap 1
62  XColor fgcolor; // Foreground color (if grayscale)
63  Tk_Cursor xhair_cursor; // Crosshair cursor
64 } TkwDisplay;
65 
66 // One of these holds the X driver state information
67 
68 typedef struct
69 {
70  TkwDisplay *tkwd; // Pointer to display info
71 
72  Window window; // X window id
73  Pixmap pixmap; // Off-screen pixmap
74  GC gc; // Graphics context
75  XColor curcolor; // Current pen color
76 
77  long event_mask; // Event mask
78  int flags; // 1 = delete, 2 = exit event loop
79  long init_width; // Initial window width
80  long init_height; // Initial window height
81 
82  unsigned width, height, border; // Current window dimensions
83 
84  double xscale_init; // initial pixels/lx (virt. coords)
85  double yscale_init; // initial pixels/ly (virt. coords)
86  double xscale; // as above, but current value
87  double yscale; // (after possible resizing)
88 
89  short xlen, ylen; // Lengths of device coord space
90 
91  int write_to_window; // Set if plotting direct to window
92  int write_to_pixmap; // Set if plotting to pixmap
93 
94  int instr; // Instruction timer
95  int max_instr; // Limit before X server is queried
96 
97  PLGraphicsIn gin; // Graphics input structure
98 
99  int locate_mode; // Set while in locate mode
100  int drawing_xhairs; // Set during xhair draws
101  XPoint xhair_x[2], xhair_y[2]; // Crosshair lines
102 
103  void ( *MasterEH )( PLStream *, XEvent * ); // Master X event handler
104 } TkwDev;
105 
106 //--------------------------------------------------------------------------
107 // Function Prototypes
108 //--------------------------------------------------------------------------
109 
110 #ifdef __cplusplus
111 extern "C" {
112 #endif
113 
114 // Performs basic driver initialization.
115 
116 void
118 
119 // Copies the supplied PLColor to an XColor
120 
121 void
122 PLColor_to_TkColor( PLColor *plcolor, XColor *xcolor );
123 
124 // Copies the supplied XColor to a PLColor
125 
126 void
127 PLColor_from_TkColor( PLColor *plcolor, XColor *xcolor );
128 
129 // Same but also tells me if the color changed
130 int
131 PLColor_from_TkColor_Changed( PLColor *plcolor, XColor *xcolor );
132 
133 void Tkw_StoreColor( PLStream* pls, TkwDisplay* tkwd, XColor* col );
134 
135 // Set background & foreground colors.
136 
137 void
139 
140 #ifdef __cplusplus
141 }
142 #endif
143 
144 #endif // __PLTKWD_H__
TkwDev::event_mask
long event_mask
Definition: pltkwd.h:77
plD_open_tkwin
void plD_open_tkwin(PLStream *pls)
TkwDev::ylen
short ylen
Definition: pltkwd.h:89
TkwDisplay::ncol1
int ncol1
Definition: pltkwd.h:59
TkwDev::yscale_init
double yscale_init
Definition: pltkwd.h:85
TkwDev::write_to_pixmap
int write_to_pixmap
Definition: pltkwd.h:92
TkwDisplay::depth
unsigned depth
Definition: pltkwd.h:56
plstrm.h
PlPlotter::border
Tk_3DBorder border
Definition: plplotter.c:115
TkwDev::width
unsigned width
Definition: pltkwd.h:82
PLColor_from_TkColor_Changed
int PLColor_from_TkColor_Changed(PLColor *plcolor, XColor *xcolor)
TkwDev::max_instr
int max_instr
Definition: pltkwd.h:95
TkwDev::flags
int flags
Definition: pltkwd.h:78
TkwDev::write_to_window
int write_to_window
Definition: pltkwd.h:91
TkwDisplay::ncol0
int ncol0
Definition: pltkwd.h:58
plplot_tkwin_ccmap
static int plplot_tkwin_ccmap
Definition: pltkwd.h:41
Tk_Cursor
#define Tk_Cursor
Definition: plframe.c:80
TkwDev::drawing_xhairs
int drawing_xhairs
Definition: pltkwd.h:100
TkwDisplay
Definition: pltkwd.h:46
TkwDisplay::gcXor
GC gcXor
Definition: pltkwd.h:54
TkwDisplay::color
int color
Definition: pltkwd.h:57
TkwDev::init_height
long init_height
Definition: pltkwd.h:80
TkwDev::xscale_init
double xscale_init
Definition: pltkwd.h:84
TkwDisplay::screen
int screen
Definition: pltkwd.h:51
PLGraphicsIn
Definition: plplot.h:433
plplot.h
pls
static PLStream * pls[PL_NSTREAMS]
Definition: plcore.h:88
TkwDisplay::nstreams
int nstreams
Definition: pltkwd.h:48
TkwDev::instr
int instr
Definition: pltkwd.h:94
PLColor
Definition: plplot.h:546
TkwDev
Definition: pltkwd.h:68
TkwDev::locate_mode
int locate_mode
Definition: pltkwd.h:99
TkwDev::xscale
double xscale
Definition: pltkwd.h:86
TkwDev::yscale
double yscale
Definition: pltkwd.h:87
TkwDev::tkwd
TkwDisplay * tkwd
Definition: pltkwd.h:70
TkwDisplay::ixwd
int ixwd
Definition: pltkwd.h:49
TkwDev::window
Window window
Definition: pltkwd.h:72
TkwDisplay::fgcolor
XColor fgcolor
Definition: pltkwd.h:62
PlPlotter::height
int height
Definition: plplotter.c:121
TkwDev::pixmap
Pixmap pixmap
Definition: pltkwd.h:73
PlPlotter::xhair_x
XPoint xhair_x[2]
Definition: plplotter.c:181
TkwDev::gin
PLGraphicsIn gin
Definition: pltkwd.h:97
Tkw_StoreColor
void Tkw_StoreColor(PLStream *pls, TkwDisplay *tkwd, XColor *col)
PLColor_from_TkColor
void PLColor_from_TkColor(PLColor *plcolor, XColor *xcolor)
PlPlotter::xhair_y
XPoint xhair_y[2]
Definition: plplotter.c:182
PLStream
Definition: plstrm.h:523
TkwDev::gc
GC gc
Definition: pltkwd.h:74
pltkwin_setBGFG
void pltkwin_setBGFG(PLStream *pls)
TkwDisplay::map
Colormap map
Definition: pltkwd.h:55
TkwDev::init_width
long init_width
Definition: pltkwd.h:79
TkwDev::curcolor
XColor curcolor
Definition: pltkwd.h:75
PLColor_to_TkColor
void PLColor_to_TkColor(PLColor *plcolor, XColor *xcolor)
TkwDisplay::xhair_cursor
Tk_Cursor xhair_cursor
Definition: pltkwd.h:63
TkwDisplay::displayName
char * displayName
Definition: pltkwd.h:50
TkwDisplay::display
Display * display
Definition: pltkwd.h:52
TkwDisplay::visual
Visual * visual
Definition: pltkwd.h:53