This file is indexed.

/usr/include/Xbae/MatrixP.h is in libxbae-dev 4.60.4-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
/*
 * Copyright(c) 1992 Bell Communications Research, Inc. (Bellcore)
 * Copyright(c) 1995-99 Andrew Lister
 * Copyright © 1999, 2000, 2001, 2002, 2003, 2004 by the LessTif Developers.
 *
 *                        All rights reserved
 * Permission to use, copy, modify and distribute this material for
 * any purpose and without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies, and that the name of Bellcore not be used in advertising
 * or publicity pertaining to this material without the specific,
 * prior written permission of an authorized representative of
 * Bellcore.
 *
 * BELLCORE MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES, EX-
 * PRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, INCLUDING, BUT
 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR ANY PARTICULAR PURPOSE, AND THE WARRANTY AGAINST IN-
 * FRINGEMENT OF PATENTS OR OTHER INTELLECTUAL PROPERTY RIGHTS.  THE
 * SOFTWARE IS PROVIDED "AS IS", AND IN NO EVENT SHALL BELLCORE OR
 * ANY OF ITS AFFILIATES BE LIABLE FOR ANY DAMAGES, INCLUDING ANY
 * LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES RELAT-
 * ING TO THE SOFTWARE.
 *
 * MatrixWidget Author: Andrew Wason, Bellcore, aw@bae.bellcore.com
 *
 * $Id: MatrixP.h,v 1.81 2006/05/16 19:59:53 tobiasoed Exp $
 */

/*
 * MatrixP.h - Private definitions for Matrix widget
 */

#ifndef _Xbae_MatrixP_h
#define _Xbae_MatrixP_h

#include <Xm/ManagerP.h>
#include <Xbae/Matrix.h>

#ifdef __cplusplus
extern "C" {
#endif


/*
 * New types for the class methods
 */

typedef void (*XbaeMatrixSetCellProc)(XbaeMatrixWidget, int, int,
					 const String, Boolean);

typedef String (*XbaeMatrixGetCellProc)(XbaeMatrixWidget, int, int);

typedef void (*XbaeMatrixEditCellProc)(XbaeMatrixWidget, XEvent *,
					  int, int, String *, Cardinal);

typedef void (*XbaeMatrixSelectCellProc)(XbaeMatrixWidget, int, int);

typedef void (*XbaeMatrixSelectRowProc)(XbaeMatrixWidget, int);

typedef void (*XbaeMatrixShowColumnArrowsProc)(XbaeMatrixWidget, int, Boolean);

typedef void (*XbaeMatrixSelectColumnProc)(XbaeMatrixWidget, int);

typedef void (*XbaeMatrixDeselectAllProc)(XbaeMatrixWidget);

typedef void (*XbaeMatrixSelectAllProc)(XbaeMatrixWidget);

typedef void (*XbaeMatrixDeselectCellProc)(XbaeMatrixWidget, int, int);

typedef void (*XbaeMatrixDeselectRowProc)(XbaeMatrixWidget, int);

typedef void (*XbaeMatrixDeselectColumnProc)(XbaeMatrixWidget, int);

typedef Boolean (*XbaeMatrixCommitEditProc)(XbaeMatrixWidget, XEvent *,
					       Boolean);

typedef void (*XbaeMatrixCancelEditProc)(XbaeMatrixWidget, Boolean);

typedef void (*XbaeMatrixAddRowsProc)(XbaeMatrixWidget, int, String *,
					 String *, Pixel *, Pixel *, int);

typedef void (*XbaeMatrixAddVarRowsProc)(XbaeMatrixWidget, int, String *,
				      String *, short *, int *,
				      unsigned char*, unsigned char *,
				      Pixel *, Pixel *, int);

typedef void (*XbaeMatrixDeleteRowsProc)(XbaeMatrixWidget, int, int);

typedef void (*XbaeMatrixAddColumnsProc)(XbaeMatrixWidget, int, String *,
					    String *, short *, int *,
					    unsigned char*, unsigned char *,
					    Pixel *, Pixel *, int);

typedef void (*XbaeMatrixDeleteColumnsProc)(XbaeMatrixWidget, int, int);

typedef void (*XbaeMatrixSetRowColorsProc)(XbaeMatrixWidget, int, Pixel *,
					      int, Boolean);

typedef void (*XbaeMatrixSetColumnColorsProc)(XbaeMatrixWidget, int,
						 Pixel *, int, Boolean);

typedef void (*XbaeMatrixSetCellColorProc)(XbaeMatrixWidget, int, int,
					      Pixel, Boolean);


/*
 * New fields for the Matrix widget class record
 */
typedef struct {
    XbaeMatrixSetCellProc		set_cell;
    XbaeMatrixGetCellProc		get_cell;
    XbaeMatrixEditCellProc		edit_cell;
    XbaeMatrixSelectCellProc		select_cell;
    XbaeMatrixShowColumnArrowsProc         set_show_column_arrows;
    XbaeMatrixSelectRowProc		select_row;
    XbaeMatrixSelectColumnProc		select_column;
    XbaeMatrixDeselectAllProc		deselect_all;
    XbaeMatrixSelectAllProc		select_all;
    XbaeMatrixDeselectCellProc		deselect_cell;
    XbaeMatrixDeselectRowProc		deselect_row;
    XbaeMatrixDeselectColumnProc	deselect_column;
    XbaeMatrixCommitEditProc		commit_edit;
    XbaeMatrixCancelEditProc		cancel_edit;
    XbaeMatrixAddRowsProc		add_rows;
    XbaeMatrixAddVarRowsProc		add_var_rows;
    XbaeMatrixDeleteRowsProc		delete_rows;
    XbaeMatrixAddColumnsProc		add_columns;
    XbaeMatrixDeleteColumnsProc		delete_columns;
    XbaeMatrixSetRowColorsProc		set_row_colors;
    XbaeMatrixSetColumnColorsProc	set_column_colors;
    XbaeMatrixSetCellColorProc		set_cell_color;
    XtPointer				extension;
    
    XrmQuark QPointer;
    XrmQuark QLeft;
    XrmQuark QRight;
    XrmQuark QUp;
    XrmQuark QDown;
    XrmQuark QPageUp;
    XrmQuark QPageDown;
    XrmQuark QFocus;
    XrmQuark QLoosingFocus;
    XrmQuark default_qtag;
    
} XbaeMatrixClassPart;

/*
 * Full class record declaration
 */
typedef struct _XbaeMatrixClassRec {
    CoreClassPart           core_class;
    CompositeClassPart      composite_class;
    ConstraintClassPart     constraint_class;
    XmManagerClassPart      manager_class;
    XbaeMatrixClassPart     matrix_class;
} XbaeMatrixClassRec;

externalref XbaeMatrixClassRec xbaeMatrixClassRec;

/*
 * Inheritance constants for set/get/edit methods
 */
#define XbaeInheritGetCell ((XbaeMatrixGetCellProc) _XtInherit)
#define XbaeInheritSetCell ((XbaeMatrixSetCellProc) _XtInherit)
#define XbaeInheritEditCell ((XbaeMatrixEditCellProc) _XtInherit)
#define XbaeInheritSelectCell ((XbaeMatrixSelectCellProc) _XtInherit)
#define XbaeInheritShowColumnArrows ((XbaeMatrixShowColumnArrowsProc) _XtInherit)
#define XbaeInheritSelectRow ((XbaeMatrixSelectRowProc) _XtInherit)
#define XbaeInheritSelectColumn ((XbaeMatrixSelectColumnProc) _XtInherit)
#define XbaeInheritHighlightCell ((XbaeMatrixHighlightCellProc) _XtInherit)
#define XbaeInheritHighlightRow ((XbaeMatrixHighlightRowProc) _XtInherit)
#define XbaeInheritHighlightColumn ((XbaeMatrixHighlightColumnProc) _XtInherit)
#define XbaeInheritDeselectAll ((XbaeMatrixDeselectAllProc) _XtInherit)
#define XbaeInheritSelectAll ((XbaeMatrixSelectAllProc) _XtInherit)
#define XbaeInheritDeselectCell ((XbaeMatrixDeselectCellProc) _XtInherit)
#define XbaeInheritDeselectRow ((XbaeMatrixDeselectRowProc) _XtInherit)
#define XbaeInheritDeselectColumn ((XbaeMatrixDeselectColumnProc) _XtInherit)
#define XbaeInheritCommitEdit ((XbaeMatrixCommitEditProc) _XtInherit)
#define XbaeInheritCancelEdit ((XbaeMatrixCancelEditProc) _XtInherit)
#define XbaeInheritAddRows ((XbaeMatrixAddRowsProc) _XtInherit)
#define XbaeInheritAddVarRows ((XbaeMatrixAddVarRowsProc) _XtInherit)
#define XbaeInheritDeleteRows ((XbaeMatrixDeleteRowsProc) _XtInherit)
#define XbaeInheritAddColumns ((XbaeMatrixAddColumnsProc) _XtInherit)
#define XbaeInheritDeleteColumns ((XbaeMatrixDeleteColumnsProc)_XtInherit)
#define XbaeInheritSetRowColors ((XbaeMatrixSetRowColorsProc)_XtInherit)
#define XbaeInheritSetColumnColors ((XbaeMatrixSetColumnColorsProc)_XtInherit)
#define XbaeInheritSetCellColor ((XbaeMatrixSetCellColorProc)_XtInherit)

/*
 * Bundle per cell attributes into one structure
 * This bundles all the "2D array"s that were previously in the XbaeMatrixPart.
 */
typedef struct _XbaeMatrixPerCellRec {
	unsigned char	shadow_type;	/* Per cell shadow type		*/
	unsigned char	highlighted;	/* Is the cell highlighted ?	*/
	Boolean		selected;	/* Is the cell selected ?	*/
	Boolean		underlined;	/* Is the cell underlined ?	*/
	XtPointer	user_data;	/* userdata; cant be edited in xbae */
	Pixel		background;	/* Background pixel per cell	*/
	Pixel		color;		/* Foreground pixel per cell	*/
	Widget		widget;		/* So-called cell widgets	*/
	Pixmap		pixmap;		/* pixmap; cant be edited in xbae */
	Pixmap		mask;		/* clipmask; cant be edited in xbae */
	String		CellValue;	/* String */
	XrmQuark    qtag;       /* The quarkified tag of the font used to draw the CellValue */
} XbaeMatrixPerCellRec;

typedef struct {
    XmFontType type;
    union {
        XFontStruct *font_struct;
        XFontSet font_set;
    } fontp;
    short width;
    short height;
    short y;
    Font id;
} XbaeMatrixFontInfo;

/*
 * New fields for the Matrix widget record
 */
typedef struct {
    /*
     * resources
     */
    Boolean allow_column_resize;        /* Public: can columns dynamically resize?   */
    Boolean allow_row_resize;           /* Public: can rows dynamically resize?   */

    Boolean fill;                       /* Public: fill available space?      */
    Boolean horz_fill;                  /* Public: when filled, extend the 'last' column to fill available space? */
    Boolean vert_fill;                  /* Public: when filled, extend the 'last' row to fill available space? */
    Boolean non_fixed_detached_left;    /* Public: when filled, put empty space after fixed columns */
    Boolean non_fixed_detached_top;     /* Public: when filled, put empty space after fixed rows */
    Boolean trailing_attached_right;    /* Public: when filled, put trailing columns fixed to right */
    Boolean trailing_attached_bottom;   /* Public: when filled, put trailing rows fixed to bottom   */

    Boolean bold_labels;                /* Public: draw bold row/column labels?      */
    Boolean useXbaeInput;               /* Public: Whether to use XbaeInput widget */
    Boolean reverse_select;             /* Public: reverse colours - selected cells? */
    Boolean scroll_select;              /* Public: flag to scroll a selected cell    */
    Boolean traverse_fixed;             /* Public: allow traversal to fixed cells?   */
    Boolean calc_cursor_position;       /* Public: calculate insert pos from click   */
    Boolean text_field_is_mapped;       /* Private: Is the text field on top of a cell? */
    unsigned int disable_redisplay;     /* Private: disable redisplay counter      */

    Boolean show_arrows;                /* Public: sow arrows when text obscured?    */
    Boolean *show_column_arrows;        /* Public: which columns will show arrows    */
    Boolean *column_font_bold;          /* Public: which columns have bold fonts     */

    Boolean button_labels;              /* Public: draw labels as buttons?      */
    Boolean *column_button_labels;      /* Public: which column labels are buttons   */
    Boolean *row_button_labels;         /* Public: which row labels are buttons      */

    Boolean column_width_in_pixels;     /* Public: column width mesured in pixels?    */
    Boolean row_height_in_pixels;       /* Public: row height mesured in pixels?    */
    short row_label_width;              /* Public: max width of row labels in chars  */
    short *column_widths;               /* Public: width of each column in chars or pixels */
    short *row_heights;                 /* Public: height of each row in chars or pixels */
    int *column_positions;              /* Private: pixel position of each column     */
    int *row_positions;                 /* Private: pixel position of each row */
    
    int visible_fixed_column_width;
    int visible_fixed_row_height;
    int visible_trailing_fixed_column_width;
    int visible_trailing_fixed_row_height;
    int visible_non_fixed_height;
    int visible_non_fixed_width;

    int *column_max_lengths;            /* Public: max length of each col in chars   */

    Boolean multi_line_cell;            /* Public: Whether to draw more than one line in a cell */
    unsigned char wrap_type;            /* Public: How to wrap the lines in multi_line_cell mode */

    unsigned char scrollbar_placement;  /* Public: placement of the scrollbars      */
    unsigned char selection_policy;     /* Public: as for XmList */
    unsigned char grid_type;            /* Public: shadowed in/shadowed out/plain    */
    unsigned char shadow_type;          /* Public: matrix window shadow type      */
    unsigned char cell_shadow_type;     /* Public: cell shadow type       */

    unsigned char hsb_display_policy;   /* Public: horiz scroll bar display policy   */
    unsigned char vsb_display_policy;   /* Public: vert scroll bar display policy    */

    unsigned char row_label_alignment;  /* Public: alignment of row labels      */
    unsigned char *column_label_alignments;/* Public: alignment of each column label */
    unsigned char *column_alignments;   /* Public: alignment of each column      */

    unsigned char *column_shadow_types; /* Public: 1D array of per col shadow types  */
    unsigned char *row_shadow_types;    /* Public: 1D array of per row shadow types  */

    XmString *xmcolumn_labels;          /* Public: array of xmlabels above each column */
    XmString *xmrow_labels;             /* Public: array of xmlabels next to each row  */
    String *column_labels;              /* Public: array of labels above each column   */
    String *row_labels;                 /* Public: array of labels next to each row    */
    int column_label_maxlines;         /* Private: max number of lines in column labels */
    int row_label_maxlength;           /* Private: max line length of row labels        */

    XtPointer *column_user_data;        /* Public: 1D array of per column user data  */
    XtPointer *row_user_data;           /* Public: 1D array of per row user data     */

    int columns;                        /* Public: number of cells per row      */
    int rows;                           /* Public: number of rows per column      */
    Dimension fixed_columns;            /* Public: number of leading fixed columns   */
    Dimension fixed_rows;               /* Public: number of leading fixed rows      */
    Dimension trailing_fixed_columns;   /* Public: number of trailing fixed columns  */
    Dimension trailing_fixed_rows;      /* Public: number of trailing fixed rows     */
    Dimension visible_columns;          /* Public: number of columns to make visible */
    Dimension visible_rows;             /* Public: number of rows to make visible    */

    Dimension cell_margin_height;       /* Public: margin height for textField      */
    Dimension cell_margin_width;        /* Public: margin width for textField      */
    Dimension cell_highlight_thickness; /* Public: highlight thickness for textField  */
    Dimension cell_shadow_thickness;    /* Public: shadow thickness for each cell    */
    Dimension text_shadow_thickness;    /* Public: shadow thickness for text field   */
    Dimension space;                    /* Public: spacing for scrollbars      */
    Dimension underline_width;          /* Public:  number of pixels thick the underline is */

    int alt_row_count;                  /* Public: # of rows for e/o background      */
    Pixel even_row_background;          /* Public: even row background color      */
    Pixel odd_row_background;           /* Public: odd row background color      */

    Pixel column_label_color;           /* Public: color of column label      */
    Pixel row_label_color;              /* Public: color of row label       */

    Pixel button_label_background;      /* Public: color of button label background */
    Pixel grid_line_color;              /* Public: color of grid, for XmGrid_LINE    */
    Pixel selected_background;          /* Public: background for selected cells     */
    Pixel selected_foreground;          /* Public: foreground for selected cells     */
    Pixel scroll_background;            /* Public: bacground for scrollbar */
    Pixel text_background;              /* Public: background for the text field   */
    Boolean text_background_is_cell;    /* Public: background for the text field when text_background is undefined */

    Position underline_position;        /* Public: number of pixels below the text baseline */

    XtTranslations text_translations;   /* Public: translations for textField widget */

    XtCallbackList default_action_callback; /* Public: called for a double click     */
    XtCallbackList draw_cell_callback;      /* Public: called when a cell is drawn      */
    XtCallbackList enter_cell_callback;     /* Public: called when a cell is entered     */
    XtCallbackList track_cell_callback;     /* Public: called when a cell is crossed     */
    XtCallbackList label_activate_callback; /* Public: called when label pressed     */
    XtCallbackList leave_cell_callback;     /* Public: called when a cell is left      */
    XtCallbackList modify_verify_callback;  /* Public: verify change to textField     */
                                            /* Public: and a draw_cell_callback is set   */
    XtCallbackList process_drag_callback;   /* Public: called when a drag is initiated */
    XtCallbackList resize_callback;         /* Public: called when Matrix is resized     */
    XtCallbackList resize_row_callback;     /* Public: called when row is resized  */
    XtCallbackList resize_column_callback;  /* Public:  called when column is resized  */
    XtCallbackList select_cell_callback;    /* Public: called when cells are selected   */
    XtCallbackList traverse_cell_callback;  /* Public: next cell to traverse to      */
    XtCallbackList value_changed_callback;  /* Public: same as XmText(3)                    */
    XtCallbackList write_cell_callback;     /* Public: called when a cell needs to be set */

    #if XmVERSION >= 2
    XmRenderTable render_table;             /* Public: renderTable from which we get the fonts used to draw cells/labels */
    #endif
    
    XmFontList font_list;                   /* Public: fontList of widget and textField */
    XmFontList label_font_list;             /* Public: fontList of labels          */
    XbaeMatrixFontInfo cell_font;           /* Private: Cashed info on the font used to draw cells with no tags */
    XbaeMatrixFontInfo label_font;          /* Private: Cashed info on the font used to draw labels */
    XbaeMatrixFontInfo current_draw_font;   /* Private: Cashed info on the font currently in draw_gc */
    XrmQuark current_draw_qtag;             /* Private: The quarkified tag of the font in the draw_gc */
    XrmQuark current_text_qtag;             /* Private: The quarkified tag of the rendition installed on the text field */

    /*
     * private state
     */
    Dimension desired_height;       /* Private: height widget wants to be      */
    Dimension desired_width;        /* Private: width widget wants to be      */

    int  num_selected_cells;        /* Private: The number selected cells      */

    int  horiz_origin;              /* Private: horiz origin (in pixel space)     */
    int  vert_origin;               /* Private: vert origin (in pixel space)     */

    int  row_label_baseline;        /* Private: baseline of row labels       */
    int  cell_baseline;             /* Private: baseline of text in each cell     */

    Time last_click_time;           /* Private: Used to detect double clicks    */
    int double_click_interval;      /* Public: interval between clicks      */
    int last_column;                /* Private: Used to detect double clicks    */
    int last_row;                   /* Private: Used to detect double clicks    */

    int prev_column;                /* Private: Used to compare tracking callback */
    int prev_row;                   /* Private: Used to compare tracking callback */

    Widget text_field;              /* Private: the text field       */
    Widget horizontal_sb;           /* Private: the horizontal scrollbar      */
    Widget vertical_sb;             /* Private: the vertical scrollbar    */

    Widget center_clip;             /* Private: the clips           */
    Widget left_clip;
    Widget right_clip;
    Widget top_clip;
    Widget bottom_clip;
    Widget row_label_clip;
    Widget column_label_clip;

    GC  grid_line_gc;               /* Private: GC for grid line           */
    GC  draw_gc;                    /* Private: GC for drawing cells       */
    GC  label_gc;                   /* Private: GC for drawing labels      */
    GC  pixmap_gc;                  /* Private: GC for drawing pixmap cells   */
    GC  resize_bottom_shadow_gc;
    GC  resize_top_shadow_gc;

    Cursor cursor;   /* Used to be global static */

    XbaeMatrixPerCellRec **per_cell; /* Private: 2D array */

/* Unused: */

    Pixmap *row_pixmaps;    /* Private: array of pixmaps next to each row  */
    Pixmap *column_pixmaps; /* Private: array of pixmaps next to each column  */
} XbaeMatrixPart;

/*
 * Full instance record declaration
 */
typedef struct _XbaeMatrixRec {
    CorePart        core;
    CompositePart   composite;
    ConstraintPart  constraint;
    XmManagerPart   manager;
    XbaeMatrixPart  matrix;
} XbaeMatrixRec;

/*
 * Constraint resources
 */
typedef struct {
    int row;
    int column;
} XbaeMatrixConstraintsRec;

/*
 * End of array indicator for converters of strings
 */
extern char xbaeBadString;

/*
 * Macro replacements
 */
Widget _XbaeGetShellAncestor(Widget w);

#ifdef __cplusplus
}
#endif

#endif /* _Xbae_MatrixP_h */