FileUtils.c: fix CERT VU#575804
[oweals/cde.git] / cde / lib / DtHelp / CanvasP.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $TOG: CanvasP.h /main/17 1999/10/14 13:19:41 mgreess $ */
24 /*************************************<+>*************************************
25  *****************************************************************************
26  **
27  **  File:         CanvasP.h
28  **
29  **  Project:      Cde Help System
30  **
31  **  Description:  Private Header file for the UI independent core engine
32  **                of the help system. It contains function prototypes,
33  **                structure definitions, typedefs, etc.
34  **
35  **  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 Hewlett-Packard Company
36  **
37  **  (c) Copyright 1993, 1994 Hewlett-Packard Company
38  **  (c) Copyright 1993, 1994 International Business Machines Corp.
39  **  (c) Copyright 1993, 1994 Sun Microsystems, Inc.
40  **  (c) Copyright 1993, 1994 Novell, Inc.
41  *****************************************************************************
42  *************************************<+>*************************************/
43 #ifndef _DtCanvasP_h
44 #define _DtCanvasP_h
45
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50
51 /********    Public Re-defines   ********/
52 #if !defined(_AIX) && !defined(USL)
53 #define _DtCvStrCaseCmp(s1,s2)          strcasecmp(s1,s2)
54 #define _DtCvStrNCaseCmp(s1,s2, n)      strncasecmp(s1,s2,n)
55 #else
56 #define _DtCvStrCaseCmp(s1,s2)          _DtHelpCeStrCaseCmp(s1,s2)
57 #define _DtCvStrNCaseCmp(s1,s2,n)       _DtHelpCeStrNCaseCmp(s1,s2, n)
58 #endif /* _AIX  or USL */
59
60 /********    Public Defines Declarations    ********/
61 /*
62  * true, false and null
63  */
64 #ifndef Null
65 #define Null    0
66 #endif
67 #ifndef NULL
68 #define NULL    0
69 #endif
70 #ifndef False
71 #define False   0
72 #endif
73 #ifndef True
74 #define True    1
75 #endif
76 #ifndef FALSE
77 #define FALSE   0
78 #endif
79 #ifndef TRUE
80 #define TRUE    1
81 #endif
82
83 /*
84  * Get Selection Type Declarations
85  */
86 #define _DtCvSELECTED_TEXT      (1 << 0)
87 #define _DtCvSELECTED_REGION    (1 << 1)
88 #define _DtCvSELECTED_ALL       (~((unsigned int) 0))
89
90 /*
91  * hypertext link types
92  */
93 #define _DtCvLinkType_Execute      3
94 #define _DtCvLinkType_ManPage      4
95 #define _DtCvLinkType_AppDefine    5
96 #define _DtCvLinkType_SameVolume   6
97 #define _DtCvLinkType_CrossLink    7
98 #define _DtCvLinkType_TextFile     8
99
100 /*
101  * hypertext window hints
102  */
103 #define _DtCvWindowHint_PopupWindow        1
104 #define _DtCvWindowHint_CurrentWindow      2
105 #define _DtCvWindowHint_NewWindow          3
106 #define _DtCvWindowHint_Original           4
107
108 /*********************
109  * Rendering flags
110  *********************/
111
112 /*
113  * Rendering flags - Link
114  */
115 #define _DtCvLINK_FLAG          (0x01 <<  0)
116 #define _DtCvLINK_BEGIN         (0x01 <<  1)
117 #define _DtCvLINK_END           (0x01 <<  2)
118
119 #define _DtCvLINK_POP_UP        (0x01 <<  3)
120 #define _DtCvLINK_NEW_WINDOW    (0x01 <<  4)
121
122 /*
123  * Rendering flags - Search
124  *
125  * a gap is left for the search flags on a segment in CanvasSegP.h.  If these
126  * change value, the other values must move to accommodate it.  */
127 #define _DtCvSEARCH_FLAG        (0x01 <<  5)
128 #define _DtCvSEARCH_BEGIN       (0x01 <<  6)
129 #define _DtCvSEARCH_END         (0x01 <<  7)
130 #define _DtCvSEARCH_CURR        (0x01 <<  8)
131
132 /*
133  * Rendering flags - Mark
134  */
135 #define _DtCvMARK_FLAG          (0x01 <<  9)
136 #define _DtCvMARK_BEGIN         (0x01 << 10)
137 #define _DtCvMARK_END           (0x01 << 11)
138 #define _DtCvMARK_ON            (0x01 << 12)
139
140 /*
141  * Rendering flags - Traversal
142  */
143 #define _DtCvTRAVERSAL_FLAG     (0x01 << 13)
144 #define _DtCvTRAVERSAL_BEGIN    (0x01 << 14)
145 #define _DtCvTRAVERSAL_END      (0x01 << 15)
146
147 /*
148  * Rendering flags - Application defined flags.
149  */
150 #define _DtCvAPP_FIELD_OFFSET   (16)
151 #define _DtCvAPP_FIELD_MASK     (0x0f << _DtCvAPP_FIELD_OFFSET)
152 #define _DtCvAPP_FIELD_S_MASK   (0x03 << _DtCvAPP_FIELD_OFFSET)
153 #define _DtCvAPP_FLAG1          (0x01 << (_DtCvAPP_FIELD_OFFSET + 0))
154 #define _DtCvAPP_FLAG2          (0x01 << (_DtCvAPP_FIELD_OFFSET + 1))
155 #define _DtCvAPP_FLAG3          (0x01 << (_DtCvAPP_FIELD_OFFSET + 2))
156 #define _DtCvAPP_FLAG4          (0x01 << (_DtCvAPP_FIELD_OFFSET + 3))
157
158 /*
159  * Rendering flags - Selection
160  */
161 #define _DtCvSELECTED_FLAG      (0x01 << 20)
162 #define _DtCvEND_OF_LINE        (0x01 << 21)
163
164 /*
165  * Activation masks
166  */
167 #define _DtCvACTIVATE_SELECTION (0x01 << 0)
168 #define _DtCvACTIVATE_MARK      (0x01 << 1)
169 #define _DtCvDEACTIVATE         (0x01 << 2)
170 #define _DtCvACTIVATE_MARK_ON   (0x01 << 3)
171 #define _DtCvACTIVATE_MARK_OFF  (0x01 << 4)
172
173 /********    Public Enum Declarations    ********/
174
175 /*
176  * Element types
177  */
178 enum    _dtCvElemType
179   {
180     _DtCvBAD_TYPE,
181     _DtCvCANVAS_TYPE,
182     _DtCvLINE_TYPE,
183     _DtCvLINK_TYPE,
184     _DtCvLOCALE_TYPE,
185     _DtCvMARK_TYPE,
186     _DtCvREGION_TYPE,
187     _DtCvSTRING_TYPE,
188     _DtCvTRAVERSAL_TYPE
189   };
190
191 typedef enum _dtCvElemType      _DtCvElemType;
192
193 /*
194  * Canvas Engine values. Either parameters or return values.
195  */
196 enum    _dtCvValue
197   {
198 /*
199  * status types. i.e. True/False, Ok/Bad, etc.
200  */
201     _DtCvFALSE      = False,
202     _DtCvSTATUS_OK  = False,
203     _DtCvTRUE       = True,
204     _DtCvSTATUS_BAD = True,
205     _DtCvSTATUS_ID_BAD,
206     _DtCvSTATUS_NONE,
207     _DtCvSTATUS_LINK,
208     _DtCvSTATUS_MARK,
209 /*
210  * Render types
211  */
212     _DtCvRENDER_PARTIAL,
213     _DtCvRENDER_COMPLETE,
214 /*
215  * Traversal defines
216  */
217     _DtCvTRAVERSAL_OFF,
218     _DtCvTRAVERSAL_ON,
219     _DtCvTRAVERSAL_TOP,
220     _DtCvTRAVERSAL_NEXT,
221     _DtCvTRAVERSAL_PREV,
222     _DtCvTRAVERSAL_BOTTOM,
223     _DtCvTRAVERSAL_ID,
224     _DtCvTRAVERSAL_MARK,
225 /*
226  * processing a selection types
227  */
228     _DtCvSELECTION_CLEAR,
229     _DtCvSELECTION_START,
230     _DtCvSELECTION_UPDATE,
231     _DtCvSELECTION_END,
232 /*
233  * honor the right boundary when laying out information
234  */
235     _DtCvUSE_BOUNDARY,
236     _DtCvUSE_BOUNDARY_MOVE,
237     _DtCvIGNORE_BOUNDARY
238   };
239
240 typedef enum _dtCvValue _DtCvValue;
241 typedef enum _dtCvValue _DtCvStatus;
242 typedef enum _dtCvValue _DtCvRenderType;
243 typedef enum _dtCvValue _DtCvTraversalCmd;
244 typedef enum _dtCvValue _DtCvSelectMode;
245
246 /*
247  * line wrap mode types.
248  */
249 enum    _dtCvModeType
250   {
251     _DtCvModeWrapNone,
252     _DtCvModeWrapDown,
253     _DtCvModeWrapUp
254   };
255
256 typedef enum _dtCvModeType      _DtCvModeType;
257
258 /********    Public Typedef Declarations    ********/
259 typedef void*   _DtCvPointer;
260 typedef void*   _DtCvHandle;
261
262 typedef int     _DtCvUnit;
263
264 typedef unsigned long   _DtCvFlags;
265
266 typedef struct  _dtCvSegPts     _DtCvSegPts;
267 typedef struct  _dtCvSegment    _DtCvSegment;
268
269 /********    Public Structures Declarations    ********/
270 typedef struct  _dtCvMetrics {
271         _DtCvUnit       width;          /* max width of canvas area  */
272         _DtCvUnit       height;         /* max height of canvas area */
273         _DtCvUnit       top_margin;     /* top margin to allow for   */
274         _DtCvUnit       side_margin;    /* left margin to allow for  */
275         _DtCvUnit       line_height;    /* the height of an average line of */
276                                         /* text                             */
277         _DtCvUnit       horiz_pad_hint; /* the optimul spacing to use if    */
278                                         /* lines have to be squeezed for    */
279                                         /* _DtCvUSE_BOUNDARY                */
280 } _DtCvMetrics;
281
282 typedef struct  _dtCvSpaceMetrics {
283         _DtCvUnit       space_before;
284         _DtCvUnit       space_after;
285         _DtCvUnit       space_above;
286         _DtCvUnit       space_below;
287 } _DtCvSpaceMetrics;
288
289 typedef struct  _dtCvLocale {
290         _DtCvModeType    line_wrap_mode;        /* specifies the wrap mode  */
291         const wchar_t   *cant_begin_chars;      /* specifies the characters */
292                                                 /* that can't begin a line  */
293         const wchar_t   *cant_end_chars;        /* specifies the characters */
294                                                 /* that can't end a line    */
295 } _DtCvLocale;
296
297 typedef struct  _dtCvStringInfo {
298         const void      *string;
299         int              byte_len;
300         int              wc;
301         _DtCvPointer     font_ptr;
302         _DtCvPointer     csd;
303 } _DtCvStringInfo;
304
305 typedef struct  _dtCvLineInfo {
306         _DtCvUnit       x2;
307         _DtCvUnit       y2;
308         _DtCvUnit       width;
309         _DtCvPointer    data;
310 } _DtCvLineInfo;
311
312 typedef struct  _dtCvRenderInfo {
313         _DtCvPointer    info;
314         _DtCvUnit       box_x;
315         _DtCvUnit       box_y;
316         _DtCvUnit       box_height;
317         _DtCvUnit       box_width;
318 } _DtCvRenderInfo;
319
320 typedef struct  _dtCvLinkInfo {
321         char            *specification;
322         char            *description;
323         int              hyper_type;
324         int              win_hint;
325         _DtCvUnit        offset_x;
326         _DtCvUnit        offset_y;
327 } _DtCvLinkInfo;
328
329 typedef struct  _dtCvPointInfo {
330         _DtCvPointer      client_data;
331         _DtCvSegPts     **segs;
332 } _DtCvPointInfo;
333
334 /********    Public Structure Typedef Declarations    ********/
335 typedef struct _dtCvTopicInfo*  _DtCvTopicPtr;
336
337 /********    Public Prototyped Procedures    ********/
338 typedef void (*_DtCvGetMetrics)(
339     _DtCvPointer                /* client_data   */,
340     _DtCvElemType               /* elem_type     */,
341     _DtCvPointer                /* ret_metrics   */
342 );
343
344 typedef void (*_DtCvRenderElem)(
345     _DtCvPointer        /* client_data */,
346     _DtCvElemType       /* elem_type   */,
347     _DtCvUnit           /* x           */,
348     _DtCvUnit           /* y           */,
349     int                 /* link_type   */, 
350     _DtCvFlags          /* old_flags   */,
351     _DtCvFlags          /* new_flags   */,
352     _DtCvElemType       /* trav_type   */,
353     _DtCvPointer        /* trav_data   */,
354     _DtCvPointer        /* data        */
355 );
356
357 typedef _DtCvUnit (*_DtCvGetElemWidth)(
358     _DtCvPointer        /* client_data   */,
359     _DtCvElemType       /* elem_type   */,
360     _DtCvPointer        /* data        */
361 );
362
363 typedef void (*_DtCvGetFontMetrics)(
364     _DtCvPointer        /* client_data   */,
365     _DtCvPointer        /* font_ptr      */,
366     _DtCvUnit*          /* *ret_ascent   */,
367     _DtCvUnit*          /* *ret_descent  */,
368     _DtCvUnit*          /* *ret_width    */,
369     _DtCvUnit*          /* *ret_super    */,
370     _DtCvUnit*          /* *ret_sub      */
371 );
372
373 typedef _DtCvStatus (*_DtCvBuildSelection)(
374     _DtCvPointer        /* client_data   */,
375     _DtCvElemType       /* elem_type     */,
376     unsigned int        /* mask          */,
377     _DtCvPointer*       /* prev_info     */,
378     _DtCvUnit           /* space         */,
379     _DtCvUnit           /* width         */,
380     _DtCvFlags          /* flags         */,
381     _DtCvPointer        /* data          */
382 );
383
384 typedef int (*_DtCvFilterExecCmd)(
385     _DtCvPointer        /* client_data   */,
386     const char*         /* cmd           */,
387     char**              /* ret_cmd       */
388 );
389
390 /********    Public Structures Declarations    ********/
391 typedef struct _dtCvVirtualInfo {
392         _DtCvGetMetrics         get_metrics;
393         _DtCvRenderElem         render_elem;
394         _DtCvGetElemWidth       get_width;
395         _DtCvGetFontMetrics     get_font_metrics;
396         _DtCvBuildSelection     build_selection;
397         _DtCvFilterExecCmd      exec_cmd_filter;
398 } _DtCvVirtualInfo;
399
400 typedef struct  _dtCvMarkPos {
401         _DtCvPointer    client_data;
402         _DtCvUnit       x1;
403         _DtCvUnit       y1;
404         _DtCvUnit       baseline1;
405         _DtCvUnit       x2;
406         _DtCvUnit       y2;
407         _DtCvUnit       baseline2;
408 } _DtCvMarkPos;
409
410 /********    Public Macro Declarations    ********/
411
412 /********    Semi-Public Function Declarations    ********/
413 extern int              _DtCvGetSearchLineMetrics(
414                                 _DtCvHandle     canvas_handle,
415                                 int             search_hit_index,
416                                 _DtCvUnit*      baseline,
417                                 _DtCvUnit*      descent,
418                                 _DtCvUnit*      ascent);
419
420 /********    Public Function Declarations    ********/
421 extern  _DtCvStatus     _DtCanvasActivatePts(
422                                 _DtCvHandle      canvas_handle,
423                                 unsigned int      mask,
424                                 _DtCvPointInfo  *info,
425                                 _DtCvUnit        *ret_y1,
426                                 _DtCvUnit        *ret_y2);
427 extern  void            _DtCanvasClean(
428                                 _DtCvHandle      canvas_handle);
429 extern  _DtCvHandle     _DtCanvasCreate(
430                                 _DtCvVirtualInfo virt_info,
431                                 _DtCvPointer     client_data);
432 extern  void            _DtCanvasDestroy(
433                                 _DtCvHandle      canvas_handle);
434 extern  _DtCvStatus     _DtCanvasGetCurLink(
435                                 _DtCvHandle      canvas_handle,
436                                 _DtCvLinkInfo   *ret_info);
437 extern  _DtCvStatus     _DtCanvasGetCurTraversal(
438                                 _DtCvHandle      canvas_handle,
439                                 _DtCvLinkInfo   *ret_info,
440                                 _DtCvPointer    *ret_data);
441 extern  _DtCvStatus     _DtCanvasGetMarkPositions(
442                                 _DtCvHandle      canvas_handle,
443                                 _DtCvMarkPos    ***ret_pos);
444 extern  _DtCvStatus     _DtCanvasGetPosLink(
445                                 _DtCvHandle      canvas_handle,
446                                 _DtCvUnit        x1,
447                                 _DtCvUnit        y1,
448                                 _DtCvUnit        x2,
449                                 _DtCvUnit        y2,
450                                 _DtCvLinkInfo   *ret_info);
451 extern  _DtCvStatus     _DtCanvasGetSelection(
452                                 _DtCvHandle      canvas_handle,
453                                 unsigned int     mask,
454                                 _DtCvPointer    *ret_select);
455 extern  _DtCvStatus     _DtCanvasGetSelectionPoints(
456                                 _DtCvHandle        canvas_handle,
457                                 _DtCvSegPts     ***ret_segs,
458                                 _DtCvUnit         *ret_y1,
459                                 _DtCvUnit         *ret_y2);
460 extern  _DtCvStatus     _DtCanvasGetSpotInfo(
461                                 _DtCvHandle        canvas_handle,
462                                 _DtCvUnit          x,
463                                 _DtCvUnit          y,
464                                 _DtCvSegment     **ret_seg,
465                                 _DtCvUnit         *ret_offx,
466                                 _DtCvUnit         *ret_offy,
467                                 _DtCvElemType     *ret_element);
468 extern  _DtCvStatus     _DtCanvasMoveTraversal(
469                                 _DtCvHandle      canvas_handle,
470                                 _DtCvTraversalCmd cmd,
471                                 _DtCvValue       wrap,
472                                 _DtCvValue       render,
473                                 _DtCvPointer     rid,
474                                 _DtCvUnit       *ret_x,
475                                 _DtCvUnit       *ret_y,
476                                 _DtCvUnit       *ret_baseline,
477                                 _DtCvUnit       *ret_height);
478 extern  void            _DtCanvasProcessSelection (
479                                 _DtCvHandle     canvas_handle,
480                                 _DtCvUnit        x,
481                                 _DtCvUnit        y,
482                                 _DtCvSelectMode  mode);
483 extern  void            _DtCanvasRender(
484                                 _DtCvHandle      canvas_handle,
485                                 _DtCvUnit        x1,
486                                 _DtCvUnit        y1,
487                                 _DtCvUnit        x2,
488                                 _DtCvUnit        y2,
489                                 _DtCvRenderType  flag,
490                                 _DtCvValue       pg_break,
491                                 _DtCvUnit       *max_y,
492                                 _DtCvUnit       *next_y);
493 extern  _DtCvStatus     _DtCanvasResize(
494                                 _DtCvHandle      canvas_handle,
495                                 _DtCvValue       force,
496                                 _DtCvUnit       *ret_width,
497                                 _DtCvUnit       *ret_height);
498 extern  _DtCvStatus     _DtCanvasSetTopic(
499                                 _DtCvHandle     canvas_handle,
500                                 _DtCvTopicPtr    topic_handle,
501                                 _DtCvValue       honor_size,
502                                 _DtCvUnit       *ret_width,
503                                 _DtCvUnit       *ret_height,
504                                 _DtCvUnit       *ret_y);
505 extern  void            _DtCanvasLoadMetrics(
506                                 _DtCvHandle     canvas_handle);
507
508 #ifdef __cplusplus
509 }  /* Close scope of 'extern "C"' declaration which encloses file. */
510 #endif
511
512
513 #endif /* _DtCanvasP_h */
514 /* DON'T ADD ANYTHING AFTER THIS #endif */