~ubuntu-branches/ubuntu/utopic/gridengine/utopic

« back to all changes in this revision

Viewing changes to source/3rdparty/qmon/Xbae/MatrixP.h

  • Committer: Bazaar Package Importer
  • Author(s): Mark Hymers
  • Date: 2008-06-25 22:36:13 UTC
  • Revision ID: james.westby@ubuntu.com-20080625223613-tvd9xlhuoct9kyhm
Tags: upstream-6.2~beta2
ImportĀ upstreamĀ versionĀ 6.2~beta2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright(c) 1992 Bell Communications Research, Inc. (Bellcore)
 
3
 * Copyright(c) 1995-99 Andrew Lister
 
4
 *                        All rights reserved
 
5
 * Permission to use, copy, modify and distribute this material for
 
6
 * any purpose and without fee is hereby granted, provided that the
 
7
 * above copyright notice and this permission notice appear in all
 
8
 * copies, and that the name of Bellcore not be used in advertising
 
9
 * or publicity pertaining to this material without the specific,
 
10
 * prior written permission of an authorized representative of
 
11
 * Bellcore.
 
12
 *
 
13
 * BELLCORE MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES, EX-
 
14
 * PRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, INCLUDING, BUT
 
15
 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 
16
 * FITNESS FOR ANY PARTICULAR PURPOSE, AND THE WARRANTY AGAINST IN-
 
17
 * FRINGEMENT OF PATENTS OR OTHER INTELLECTUAL PROPERTY RIGHTS.  THE
 
18
 * SOFTWARE IS PROVIDED "AS IS", AND IN NO EVENT SHALL BELLCORE OR
 
19
 * ANY OF ITS AFFILIATES BE LIABLE FOR ANY DAMAGES, INCLUDING ANY
 
20
 * LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES RELAT-
 
21
 * ING TO THE SOFTWARE.
 
22
 *
 
23
 * MatrixWidget Author: Andrew Wason, Bellcore, aw@bae.bellcore.com
 
24
 *
 
25
 * $Id$
 
26
 */
 
27
 
 
28
/*
 
29
 * MatrixP.h - Private definitions for Matrix widget
 
30
 */
 
31
 
 
32
#ifndef _Xbae_MatrixP_h
 
33
#define _Xbae_MatrixP_h
 
34
 
 
35
#if XmVersion <= 1001
 
36
#        include <Xm/XmP.h>
 
37
#else
 
38
#        include <Xm/ManagerP.h>
 
39
#endif
 
40
 
 
41
#include "Matrix.h"
 
42
 
 
43
#ifndef P
 
44
#if defined(__STDC__) || defined (__cplusplus)
 
45
#define P(x)                x
 
46
#else
 
47
#define P(x)                ()
 
48
#define const
 
49
#define volatile
 
50
#endif
 
51
#endif
 
52
 
 
53
/*
 
54
 * A few definitions we like to use, but those with R4 won't have.
 
55
 * From Xfuncproto.h in R5.
 
56
 */
 
57
 
 
58
#ifndef XlibSpecificationRelease
 
59
# ifndef _XFUNCPROTOBEGIN
 
60
#   ifdef __cplusplus                      /* for C++ V2.0 */
 
61
#     define _XFUNCPROTOBEGIN extern "C" {   /* do not leave open across includes */
 
62
#     define _XFUNCPROTOEND }
 
63
#   else
 
64
#     define _XFUNCPROTOBEGIN
 
65
#     define _XFUNCPROTOEND
 
66
#   endif
 
67
# endif /* _XFUNCPROTOBEGIN */
 
68
#else
 
69
#include <X11/Xfuncproto.h>
 
70
#endif
 
71
 
 
72
/*
 
73
 * New types for the class methods
 
74
 */
 
75
_XFUNCPROTOBEGIN
 
76
 
 
77
typedef void (*XbaeMatrixSetCellProc) P((XbaeMatrixWidget, int, int,
 
78
                                         const String, Boolean));
 
79
 
 
80
typedef String (*XbaeMatrixGetCellProc) P((XbaeMatrixWidget, int, int));
 
81
 
 
82
typedef void (*XbaeMatrixEditCellProc) P((XbaeMatrixWidget, XEvent *,
 
83
                                          int, int, String *, Cardinal));
 
84
 
 
85
typedef void (*XbaeMatrixSelectCellProc) P((XbaeMatrixWidget, int, int));
 
86
 
 
87
typedef void (*XbaeMatrixSelectRowProc) P((XbaeMatrixWidget, int));
 
88
 
 
89
typedef void (*XbaeMatrixSelectColumnProc) P((XbaeMatrixWidget, int));
 
90
 
 
91
typedef void (*XbaeMatrixDeselectAllProc) P((XbaeMatrixWidget));
 
92
 
 
93
typedef void (*XbaeMatrixSelectAllProc) P((XbaeMatrixWidget));
 
94
 
 
95
typedef void (*XbaeMatrixDeselectCellProc) P((XbaeMatrixWidget, int, int));
 
96
 
 
97
typedef void (*XbaeMatrixDeselectRowProc) P((XbaeMatrixWidget, int));
 
98
 
 
99
typedef void (*XbaeMatrixDeselectColumnProc) P((XbaeMatrixWidget, int));
 
100
 
 
101
typedef Boolean (*XbaeMatrixCommitEditProc) P((XbaeMatrixWidget, XEvent *,
 
102
                                               Boolean));
 
103
 
 
104
typedef void (*XbaeMatrixCancelEditProc) P((XbaeMatrixWidget, Boolean));
 
105
 
 
106
typedef void (*XbaeMatrixAddRowsProc) P((XbaeMatrixWidget, int, String *,
 
107
                                         String *, Pixel *, Pixel *, int));
 
108
 
 
109
typedef void (*XbaeMatrixDeleteRowsProc) P((XbaeMatrixWidget, int, int));
 
110
 
 
111
typedef void (*XbaeMatrixAddColumnsProc) P((XbaeMatrixWidget, int, String *,
 
112
                                            String *, short *, int *,
 
113
                                            unsigned char*, unsigned char *,
 
114
                                            Pixel *, Pixel *, int));
 
115
 
 
116
typedef void (*XbaeMatrixDeleteColumnsProc) P((XbaeMatrixWidget, int, int));
 
117
 
 
118
typedef void (*XbaeMatrixSetRowColorsProc) P((XbaeMatrixWidget, int, Pixel *,
 
119
                                              int, Boolean));
 
120
 
 
121
typedef void (*XbaeMatrixSetColumnColorsProc) P((XbaeMatrixWidget, int,
 
122
                                                 Pixel *, int, Boolean));
 
123
 
 
124
typedef void (*XbaeMatrixSetCellColorProc) P((XbaeMatrixWidget, int, int,
 
125
                                              Pixel, Boolean));
 
126
 
 
127
_XFUNCPROTOEND
 
128
 
 
129
/*
 
130
 * Different than the traversal directions in Xm.h
 
131
 */
 
132
#define NOT_TRAVERSING        -1
 
133
 
 
134
/*
 
135
 * New fields for the Matrix widget class record
 
136
 */
 
137
typedef struct {
 
138
    XbaeMatrixSetCellProc                set_cell;
 
139
    XbaeMatrixGetCellProc                get_cell;
 
140
    XbaeMatrixEditCellProc                edit_cell;
 
141
    XbaeMatrixSelectCellProc                select_cell;
 
142
    XbaeMatrixSelectRowProc                select_row;
 
143
    XbaeMatrixSelectColumnProc                select_column;
 
144
    XbaeMatrixDeselectAllProc                deselect_all;
 
145
    XbaeMatrixSelectAllProc                select_all;
 
146
    XbaeMatrixDeselectCellProc                deselect_cell;
 
147
    XbaeMatrixDeselectRowProc                deselect_row;
 
148
    XbaeMatrixDeselectColumnProc        deselect_column;
 
149
    XbaeMatrixCommitEditProc                commit_edit;
 
150
    XbaeMatrixCancelEditProc                cancel_edit;
 
151
    XbaeMatrixAddRowsProc                add_rows;
 
152
    XbaeMatrixDeleteRowsProc                delete_rows;
 
153
    XbaeMatrixAddColumnsProc                add_columns;
 
154
    XbaeMatrixDeleteColumnsProc                delete_columns;
 
155
    XbaeMatrixSetRowColorsProc                set_row_colors;
 
156
    XbaeMatrixSetColumnColorsProc        set_column_colors;
 
157
    XbaeMatrixSetCellColorProc                set_cell_color;
 
158
    XtPointer                                extension;
 
159
} XbaeMatrixClassPart;
 
160
 
 
161
/*
 
162
 * Full class record declaration
 
163
 */
 
164
typedef struct _XbaeMatrixClassRec {
 
165
    CoreClassPart                core_class;
 
166
    CompositeClassPart                composite_class;
 
167
    ConstraintClassPart                constraint_class;
 
168
    XmManagerClassPart                manager_class;
 
169
    XbaeMatrixClassPart                matrix_class;
 
170
} XbaeMatrixClassRec;
 
171
 
 
172
externalref XbaeMatrixClassRec xbaeMatrixClassRec;
 
173
 
 
174
 
 
175
/*
 
176
 * Inheritance constants for set/get/edit methods
 
177
 */
 
178
#define XbaeInheritGetCell ((XbaeMatrixGetCellProc) _XtInherit)
 
179
#define XbaeInheritSetCell ((XbaeMatrixSetCellProc) _XtInherit)
 
180
#define XbaeInheritEditCell ((XbaeMatrixEditCellProc) _XtInherit)
 
181
#define XbaeInheritSelectCell ((XbaeMatrixSelectCellProc) _XtInherit)
 
182
#define XbaeInheritSelectRow ((XbaeMatrixSelectRowProc) _XtInherit)
 
183
#define XbaeInheritSelectColumn ((XbaeMatrixSelectColumnProc) _XtInherit)
 
184
#if XmVersion >= 1002
 
185
#define XbaeInheritHighlightCell ((XbaeMatrixHighlightCellProc) _XtInherit)
 
186
#define XbaeInheritHighlightRow ((XbaeMatrixHighlightRowProc) _XtInherit)
 
187
#define XbaeInheritHighlightColumn ((XbaeMatrixHighlightColumnProc) _XtInherit)
 
188
#endif
 
189
#define XbaeInheritDeselectAll ((XbaeMatrixDeselectAllProc) _XtInherit)
 
190
#define XbaeInheritSelectAll ((XbaeMatrixSelectAllProc) _XtInherit)
 
191
#define XbaeInheritDeselectCell ((XbaeMatrixDeselectCellProc) _XtInherit)
 
192
#define XbaeInheritDeselectRow ((XbaeMatrixDeselectRowProc) _XtInherit)
 
193
#define XbaeInheritDeselectColumn ((XbaeMatrixDeselectColumnProc) _XtInherit)
 
194
#define XbaeInheritCommitEdit ((XbaeMatrixCommitEditProc) _XtInherit)
 
195
#define XbaeInheritCancelEdit ((XbaeMatrixCancelEditProc) _XtInherit)
 
196
#define XbaeInheritAddRows ((XbaeMatrixAddRowsProc) _XtInherit)
 
197
#define XbaeInheritDeleteRows ((XbaeMatrixDeleteRowsProc) _XtInherit)
 
198
#define XbaeInheritAddColumns ((XbaeMatrixAddColumnsProc) _XtInherit)
 
199
#define XbaeInheritDeleteColumns ((XbaeMatrixDeleteColumnsProc)_XtInherit)
 
200
#define XbaeInheritSetRowColors ((XbaeMatrixSetRowColorsProc)_XtInherit)
 
201
#define XbaeInheritSetColumnColors ((XbaeMatrixSetColumnColorsProc)_XtInherit)
 
202
#define XbaeInheritSetCellColor ((XbaeMatrixSetCellColorProc)_XtInherit)
 
203
 
 
204
/*
 
205
 * New data structures for the ScrollMgr code
 
206
 */
 
207
typedef struct _SmScrollNode {
 
208
    int x;
 
209
    int y;
 
210
    struct _SmScrollNode *next;
 
211
    struct _SmScrollNode *prev;
 
212
} SmScrollNodeRec, *SmScrollNode;
 
213
 
 
214
typedef struct _SmScrollMgr {
 
215
    int offset_x;
 
216
    int offset_y;
 
217
    int scroll_count;
 
218
    SmScrollNode scroll_queue;
 
219
    Boolean scrolling;
 
220
} SmScrollMgrRec, *SmScrollMgr;
 
221
 
 
222
/*
 
223
 * Rectangle struct used for internal calculations.  (x1,y1) are the upper
 
224
 * left corner, (x2,y2) are the lower right.
 
225
 */
 
226
typedef struct _Rectangle
 
227
{
 
228
    int x1, y1;
 
229
    int x2, y2;
 
230
}
 
231
Rectangle;
 
232
 
 
233
/*
 
234
 * Data structure for column labels
 
235
 */
 
236
typedef struct _ColumnLabelLines {
 
237
    int lines;
 
238
    int *lengths;
 
239
} ColumnLabelLinesRec, *ColumnLabelLines;
 
240
 
 
241
/*
 
242
 * New fields for the Matrix widget record
 
243
 */
 
244
typedef struct {
 
245
    /*
 
246
     * resources
 
247
     */
 
248
    Boolean        allow_column_resize;        /* can columns dynamically resize?   */
 
249
    Boolean        bold_labels;                /* draw bold row/column labels?             */
 
250
    Boolean        button_labels;                /* draw labels as buttons?             */
 
251
    Boolean        fill;                        /* fill available space?             */
 
252
    Boolean        trailing_attached_right;  /* trailing columns fixed to right */
 
253
    Boolean        trailing_attached_bottom; /* trailing rows fixed to bottom   */
 
254
    Boolean        reverse_select;                /* reverse colours - selected cells? */
 
255
    Boolean        scroll_select;                /* flag to scroll a selected cell    */
 
256
    Boolean        **selected_cells;        /* 2D array of selected cells             */
 
257
    Boolean        show_arrows;                /* sow arrows when text obscured?    */
 
258
    Boolean     *column_button_labels;  /* which column labels are butons */
 
259
    Boolean     *row_button_labels;     /* which row labels are butons */
 
260
    Boolean        traverse_fixed;                /* allow traversal to fixed cells?   */
 
261
    Boolean        calc_cursor_position;        /* calculate insert pos from click   */
 
262
    unsigned char cell_shadow_type;        /* cell shadow type                     */
 
263
    unsigned char **cell_shadow_types;        /* 2D array of per cell shadow type  */
 
264
    unsigned char *column_alignments;        /* alignment of each column             */
 
265
    unsigned char *column_label_alignments;/* alignment of each column label */
 
266
    unsigned char *column_shadow_types;        /* 1D array of per col shadow types  */
 
267
    unsigned char grid_type;                /* shadowed in/shadowed out/plain    */
 
268
    unsigned char hsb_display_policy;        /* horiz scroll bar display policy   */
 
269
    unsigned char row_label_alignment;        /* alignment of row labels             */
 
270
    unsigned char *row_shadow_types;        /* 1D array of per row shadow types  */
 
271
    unsigned char scrollbar_placement;        /* placement of the scrollbars             */
 
272
    unsigned char selection_policy;        /* as for XmList */
 
273
    unsigned char shadow_type;                /* matrix window shadow type             */
 
274
#if XmVersion >= 1002
 
275
    unsigned char **highlighted_cells;        /* 2D array of highlighted cells     */
 
276
#endif
 
277
    unsigned char vsb_display_policy;        /* vert scroll bar display policy    */
 
278
 
 
279
    String        **cells;                /* 2D array of strings                     */
 
280
    String        *column_labels;                /* array of labels above each column */
 
281
    String        *row_labels;                /* array of labels next to each row  */
 
282
 
 
283
    XtPointer        **cell_user_data;        /* 2D array of per cell user data    */
 
284
    XtPointer        *column_user_data;        /* 1D array of per column user data  */
 
285
    XtPointer        *row_user_data;                /* 1D array of per row user data     */
 
286
 
 
287
    short        *column_widths;                /* width of each column in chars     */
 
288
    short        row_label_width;        /* max width of row labels in chars  */
 
289
 
 
290
    int                alt_row_count;                /* # of rows for e/o background             */
 
291
    int                columns;                /* number of cells per row             */
 
292
    int                *column_max_lengths;        /* max length of each col in chars   */
 
293
    int         double_click_interval;        /* interval between clicks             */
 
294
    int         left_column;                /* horizontal origin (in col space)  */
 
295
    int                rows;                        /* number of rows per column             */
 
296
    int                top_row;                /* vertical origin (in row space)    */
 
297
 
 
298
    Dimension        cell_highlight_thickness; /* hilite thickness for textField  */
 
299
    Dimension        cell_margin_height;        /* margin height for textField             */
 
300
    Dimension        cell_margin_width;        /* margin width for textField             */
 
301
    Dimension        cell_shadow_thickness;        /* shadow thickness for each cell    */
 
302
    Dimension        fixed_columns;                /* number of leading fixed columns   */
 
303
    Dimension        fixed_rows;                /* number of leading fixed rows             */
 
304
    Dimension        space;                        /* spacing for scrollbars             */
 
305
    Dimension        text_shadow_thickness;        /* shadow thickness for text field   */
 
306
    Dimension        trailing_fixed_columns;        /* number of trailing fixed columns  */
 
307
    Dimension        trailing_fixed_rows;        /* number of trailing fixed rows     */
 
308
    Dimension        visible_columns;        /* number of columns to make visible */
 
309
    Dimension        visible_rows;                /* number of rows to make visible    */
 
310
 
 
311
    Pixel        button_label_background; /* color of button label background */
 
312
    Pixel        **cell_background;        /* 2D array of Pixels                     */
 
313
    Pixel        **colors;                /* 2D array of Pixels                     */
 
314
    Pixel        column_label_color;        /* color of column label             */
 
315
    Pixel        even_row_background;        /* even row background color             */
 
316
    Pixel        grid_line_color;        /* color of grid, for XmGrid_LINE    */
 
317
    Pixel       odd_row_background;        /* odd row background color             */
 
318
    Pixel        row_label_color;        /* color of row label                     */
 
319
    Pixel        selected_background;        /* background for selected cells     */
 
320
    Pixel        selected_foreground;        /* foreground for selected cells     */
 
321
    Pixel        text_background;        /* background for the "text" field   */
 
322
 
 
323
    XtTranslations text_translations;        /* translations for textField widget */
 
324
 
 
325
    XtCallbackList default_action_callback; /* called for a double click     */
 
326
    XtCallbackList draw_cell_callback;        /* called when a cell is drawn             */
 
327
    XtCallbackList enter_cell_callback;        /* called when a cell is entered     */
 
328
    XtCallbackList label_activate_callback; /* called when label pressed     */
 
329
    XtCallbackList leave_cell_callback;        /* called when a cell is left             */
 
330
    XtCallbackList modify_verify_callback; /* verify change to textField     */
 
331
                                        /* and a draw_cell_callback is set   */
 
332
#if XmVersion > 1001
 
333
    XtCallbackList process_drag_callback; /* called when a drag is initiated */
 
334
#endif
 
335
    XtCallbackList resize_callback;        /* called when Matrix is resized     */
 
336
    XtCallbackList resize_column_callback; /* called when column is resized  */
 
337
    XtCallbackList select_cell_callback; /* called when cells are selected   */
 
338
    XtCallbackList traverse_cell_callback; /* next cell to traverse to             */
 
339
    XtCallbackList write_cell_callback;        /*called when a cell needs to be set*/ 
 
340
 
 
341
    XmFontList        font_list;                /* fontList of widget and textField  */
 
342
    XmFontList        label_font_list;        /* fontList of labels                     */
 
343
 
 
344
    
 
345
    /*
 
346
     * private state
 
347
     */
 
348
#if XmVersion >= 1002
 
349
    unsigned char highlight_location;        /* What is being highlighted             */
 
350
#endif
 
351
    short        first_row_offset;        /* hidden first row */
 
352
    int                cell_visible_height;        /* height of visible cells in pixels */
 
353
    int                column_label_maxlines;        /* max # lines in column labels             */
 
354
    int                *column_positions;        /* pixel position of each column     */
 
355
    int                current_column;                /* column of the text field             */
 
356
    int                current_row;                /* row of the text field             */
 
357
    int                horiz_origin;                /* horiz origin (in pixel space)     */
 
358
    int                label_baseline;                /* baseline of label                     */
 
359
    int                last_column;                /* The last selected column             */
 
360
    int                last_row;                /* The last selected row             */
 
361
    int                num_selected_cells;        /* The number selected cells             */
 
362
    int                text_baseline;                /* baseline of text in each cell     */
 
363
    int                traversing;                /* direction we are traversing             */
 
364
 
 
365
    unsigned int non_fixed_total_width;        /* width of cell area in pixels             */
 
366
    unsigned int current_clip;                /* current clip mask setting             */
 
367
    unsigned int disable_redisplay;        /* disable redisplay counter             */
 
368
 
 
369
    Dimension        desired_height;                /* height widget wants to be             */
 
370
    Dimension        desired_width;                /* width widget wants to be             */
 
371
 
 
372
    Time        last_click_time;        /* when last ButtonPress occurred    */
 
373
 
 
374
    Widget        text_field;                /* the text field                     */
 
375
    Widget        horizontal_sb;                /* the horizontal scrollbar             */
 
376
    Widget      vertical_sb;                /* the vertical scrollbar             */
 
377
    Widget        clip_window;                /* the clip child                     */
 
378
    Widget        left_clip;                /* clips for scrolling fixed cells   */
 
379
    Widget        right_clip;
 
380
    Widget        top_clip;
 
381
    Widget        bottom_clip;
 
382
    Widget        current_parent;                /* Current textField parent window   */
 
383
#if CELL_WIDGETS
 
384
    Widget        **cell_widgets;                /* array of widgets for cells             */
 
385
#endif
 
386
 
 
387
    GC                cell_bottom_shadow_clip_gc; /* GC for clipped bottom shadow  */
 
388
    GC          cell_grid_line_gc;
 
389
    GC                cell_top_shadow_clip_gc; /* GC for clipped top shadow             */
 
390
    GC                draw_gc;                /* GC for drawing cells                     */
 
391
    GC          grid_line_gc;                /* GC for grid line                     */
 
392
    GC                label_clip_gc;                /* GC for clipped labels             */
 
393
    GC                label_gc;                /* GC for drawing labels             */
 
394
    GC                pixmap_gc;                /* GC for drawing pixmap cells             */
 
395
    GC                resize_bottom_shadow_gc;
 
396
    GC                resize_top_shadow_gc;
 
397
 
 
398
    ColumnLabelLines column_label_lines; /* structs for multi line labels    */
 
399
                                     
 
400
    XFontStruct        *font_struct;                /* fontStruct from fontList             */
 
401
    XFontStruct        *label_font_struct;        /* fontStruct from fontList             */
 
402
 
 
403
    SmScrollMgr clip_scroll_mgr;        /* ScrollMgr for Clip                     */
 
404
    SmScrollMgr matrix_scroll_mgr;        /* ScrollMgr for Matrix                     */
 
405
 
 
406
    XFontSet        font_set;                /* fontSet from fontList             */
 
407
    short        font_y;
 
408
    short        font_width;
 
409
    short        font_height;
 
410
    Font        fid;
 
411
    XFontSet        label_font_set;                /* fontSet from fontList             */
 
412
    short        label_font_y;
 
413
    short        label_font_width;
 
414
    short        label_font_height;
 
415
    Font        label_fid;
 
416
 
 
417
} XbaeMatrixPart;
 
418
 
 
419
/*
 
420
 * Full instance record declaration
 
421
 */
 
422
typedef struct _XbaeMatrixRec {
 
423
    CorePart                core;
 
424
    CompositePart        composite;
 
425
    ConstraintPart        constraint;
 
426
    XmManagerPart        manager;
 
427
    XbaeMatrixPart        matrix;
 
428
} XbaeMatrixRec;
 
429
 
 
430
/* provide clean-up for those with R4 */
 
431
#ifndef XlibSpecificationRelease
 
432
# undef _Xconst
 
433
# undef _XFUNCPROTOBEGIN
 
434
# undef _XFUNCPROTOEND
 
435
#endif
 
436
 
 
437
#undef P
 
438
#endif /* _Xbae_MatrixP_h */
 
439