2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
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)
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
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
23 /* $TOG: CanvasP.h /main/17 1999/10/14 13:19:41 mgreess $ */
24 /*************************************<+>*************************************
25 *****************************************************************************
29 ** Project: Cde Help System
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.
35 ** (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 Hewlett-Packard Company
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 *************************************<+>*************************************/
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)
56 #define _DtCvStrCaseCmp(s1,s2) _DtHelpCeStrCaseCmp(s1,s2)
57 #define _DtCvStrNCaseCmp(s1,s2,n) _DtHelpCeStrNCaseCmp(s1,s2, n)
58 #endif /* _AIX or USL */
60 /******** Public Defines Declarations ********/
62 * true, false and null
84 * Get Selection Type Declarations
86 #define _DtCvSELECTED_TEXT (1 << 0)
87 #define _DtCvSELECTED_REGION (1 << 1)
88 #define _DtCvSELECTED_ALL (~((unsigned int) 0))
91 * hypertext link types
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
101 * hypertext window hints
103 #define _DtCvWindowHint_PopupWindow 1
104 #define _DtCvWindowHint_CurrentWindow 2
105 #define _DtCvWindowHint_NewWindow 3
106 #define _DtCvWindowHint_Original 4
108 /*********************
110 *********************/
113 * Rendering flags - Link
115 #define _DtCvLINK_FLAG (0x01 << 0)
116 #define _DtCvLINK_BEGIN (0x01 << 1)
117 #define _DtCvLINK_END (0x01 << 2)
119 #define _DtCvLINK_POP_UP (0x01 << 3)
120 #define _DtCvLINK_NEW_WINDOW (0x01 << 4)
123 * Rendering flags - Search
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)
133 * Rendering flags - Mark
135 #define _DtCvMARK_FLAG (0x01 << 9)
136 #define _DtCvMARK_BEGIN (0x01 << 10)
137 #define _DtCvMARK_END (0x01 << 11)
138 #define _DtCvMARK_ON (0x01 << 12)
141 * Rendering flags - Traversal
143 #define _DtCvTRAVERSAL_FLAG (0x01 << 13)
144 #define _DtCvTRAVERSAL_BEGIN (0x01 << 14)
145 #define _DtCvTRAVERSAL_END (0x01 << 15)
148 * Rendering flags - Application defined flags.
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))
159 * Rendering flags - Selection
161 #define _DtCvSELECTED_FLAG (0x01 << 20)
162 #define _DtCvEND_OF_LINE (0x01 << 21)
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)
173 /******** Public Enum Declarations ********/
191 typedef enum _dtCvElemType _DtCvElemType;
194 * Canvas Engine values. Either parameters or return values.
199 * status types. i.e. True/False, Ok/Bad, etc.
202 _DtCvSTATUS_OK = False,
204 _DtCvSTATUS_BAD = True,
213 _DtCvRENDER_COMPLETE,
222 _DtCvTRAVERSAL_BOTTOM,
226 * processing a selection types
228 _DtCvSELECTION_CLEAR,
229 _DtCvSELECTION_START,
230 _DtCvSELECTION_UPDATE,
233 * honor the right boundary when laying out information
236 _DtCvUSE_BOUNDARY_MOVE,
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;
247 * line wrap mode types.
256 typedef enum _dtCvModeType _DtCvModeType;
258 /******** Public Typedef Declarations ********/
259 typedef void* _DtCvPointer;
260 typedef void* _DtCvHandle;
262 typedef int _DtCvUnit;
264 typedef unsigned long _DtCvFlags;
266 typedef struct _dtCvSegPts _DtCvSegPts;
267 typedef struct _dtCvSegment _DtCvSegment;
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 */
277 _DtCvUnit horiz_pad_hint; /* the optimul spacing to use if */
278 /* lines have to be squeezed for */
279 /* _DtCvUSE_BOUNDARY */
282 typedef struct _dtCvSpaceMetrics {
283 _DtCvUnit space_before;
284 _DtCvUnit space_after;
285 _DtCvUnit space_above;
286 _DtCvUnit space_below;
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 */
297 typedef struct _dtCvStringInfo {
301 _DtCvPointer font_ptr;
305 typedef struct _dtCvLineInfo {
312 typedef struct _dtCvRenderInfo {
316 _DtCvUnit box_height;
320 typedef struct _dtCvLinkInfo {
329 typedef struct _dtCvPointInfo {
330 _DtCvPointer client_data;
334 /******** Public Structure Typedef Declarations ********/
335 typedef struct _dtCvTopicInfo* _DtCvTopicPtr;
337 /******** Public Prototyped Procedures ********/
338 typedef void (*_DtCvGetMetrics)(
339 _DtCvPointer /* client_data */,
340 _DtCvElemType /* elem_type */,
341 _DtCvPointer /* ret_metrics */
344 typedef void (*_DtCvRenderElem)(
345 _DtCvPointer /* client_data */,
346 _DtCvElemType /* elem_type */,
350 _DtCvFlags /* old_flags */,
351 _DtCvFlags /* new_flags */,
352 _DtCvElemType /* trav_type */,
353 _DtCvPointer /* trav_data */,
354 _DtCvPointer /* data */
357 typedef _DtCvUnit (*_DtCvGetElemWidth)(
358 _DtCvPointer /* client_data */,
359 _DtCvElemType /* elem_type */,
360 _DtCvPointer /* data */
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 */
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 */
384 typedef int (*_DtCvFilterExecCmd)(
385 _DtCvPointer /* client_data */,
386 const char* /* cmd */,
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;
400 typedef struct _dtCvMarkPos {
401 _DtCvPointer client_data;
410 /******** Public Macro Declarations ********/
412 /******** Semi-Public Function Declarations ********/
413 extern int _DtCvGetSearchLineMetrics(
414 _DtCvHandle canvas_handle,
415 int search_hit_index,
420 /******** Public Function Declarations ********/
421 extern _DtCvStatus _DtCanvasActivatePts(
422 _DtCvHandle canvas_handle,
424 _DtCvPointInfo *info,
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,
450 _DtCvLinkInfo *ret_info);
451 extern _DtCvStatus _DtCanvasGetSelection(
452 _DtCvHandle canvas_handle,
454 _DtCvPointer *ret_select);
455 extern _DtCvStatus _DtCanvasGetSelectionPoints(
456 _DtCvHandle canvas_handle,
457 _DtCvSegPts ***ret_segs,
460 extern _DtCvStatus _DtCanvasGetSpotInfo(
461 _DtCvHandle canvas_handle,
464 _DtCvSegment **ret_seg,
467 _DtCvElemType *ret_element);
468 extern _DtCvStatus _DtCanvasMoveTraversal(
469 _DtCvHandle canvas_handle,
470 _DtCvTraversalCmd cmd,
476 _DtCvUnit *ret_baseline,
477 _DtCvUnit *ret_height);
478 extern void _DtCanvasProcessSelection (
479 _DtCvHandle canvas_handle,
482 _DtCvSelectMode mode);
483 extern void _DtCanvasRender(
484 _DtCvHandle canvas_handle,
489 _DtCvRenderType flag,
493 extern _DtCvStatus _DtCanvasResize(
494 _DtCvHandle canvas_handle,
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,
505 extern void _DtCanvasLoadMetrics(
506 _DtCvHandle canvas_handle);
509 } /* Close scope of 'extern "C"' declaration which encloses file. */
513 #endif /* _DtCanvasP_h */
514 /* DON'T ADD ANYTHING AFTER THIS #endif */