Files
cdesktop/cde/include/Dt/CanvasP.h
Jon Trulson 369308b737 The great includes migration of 2019 (autotools)
Ok - so one of the steps in building CDE is an early phase called the
includes phase (make includes).  At this point, all of the public
header files are exported to exports/include/Dt, DtI, ...

Then, the software is built using that include dir.

This of course does not work in autotools.  Much of the software does
things like #include <Dt/something.h>, so in order for the build to
succeed, this behavior must be represented/replicated in some way.

It seems the usual way of dealing with this is to place all public
headers (and in some projects, ALL headers) into a toplevel include
directory.

We now do this for all public headers - they have been moved from
wherever they were and placed in the appropriate spot in includes/

This will break the Imake 'make includes' phase unless the Imakefiles
are fixed (remove the HEADERS = stuff, and the incdir defines).  This
has not been done at this point since in reality, once autotools works
properly, there will be no need for the Imake stuff anymore, and I
intend to get rid of it.

This is just a warning for now - Imake builds in this tree will now
fail at the 'includes' stage.

This commit is only the migration.  In upcoming commits, libtt will be
fixed so that the hack being used before to get around this problem is
removed as there will no longer be any need.

And then the autotools work continues...
2019-10-25 17:01:34 -06:00

515 lines
14 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $TOG: CanvasP.h /main/17 1999/10/14 13:19:41 mgreess $ */
/*************************************<+>*************************************
*****************************************************************************
**
** File: CanvasP.h
**
** Project: Cde Help System
**
** Description: Private Header file for the UI independent core engine
** of the help system. It contains function prototypes,
** structure definitions, typedefs, etc.
**
** (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 Hewlett-Packard Company
**
** (c) Copyright 1993, 1994 Hewlett-Packard Company
** (c) Copyright 1993, 1994 International Business Machines Corp.
** (c) Copyright 1993, 1994 Sun Microsystems, Inc.
** (c) Copyright 1993, 1994 Novell, Inc.
*****************************************************************************
*************************************<+>*************************************/
#ifndef _DtCanvasP_h
#define _DtCanvasP_h
#ifdef __cplusplus
extern "C" {
#endif
/******** Public Re-defines ********/
#if !defined(_AIX)
#define _DtCvStrCaseCmp(s1,s2) strcasecmp(s1,s2)
#define _DtCvStrNCaseCmp(s1,s2, n) strncasecmp(s1,s2,n)
#else
#define _DtCvStrCaseCmp(s1,s2) _DtHelpCeStrCaseCmp(s1,s2)
#define _DtCvStrNCaseCmp(s1,s2,n) _DtHelpCeStrNCaseCmp(s1,s2, n)
#endif /* _AIX */
/******** Public Defines Declarations ********/
/*
* true, false and null
*/
#ifndef Null
#define Null 0
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef False
#define False 0
#endif
#ifndef True
#define True 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
/*
* Get Selection Type Declarations
*/
#define _DtCvSELECTED_TEXT (1 << 0)
#define _DtCvSELECTED_REGION (1 << 1)
#define _DtCvSELECTED_ALL (~((unsigned int) 0))
/*
* hypertext link types
*/
#define _DtCvLinkType_Execute 3
#define _DtCvLinkType_ManPage 4
#define _DtCvLinkType_AppDefine 5
#define _DtCvLinkType_SameVolume 6
#define _DtCvLinkType_CrossLink 7
#define _DtCvLinkType_TextFile 8
/*
* hypertext window hints
*/
#define _DtCvWindowHint_PopupWindow 1
#define _DtCvWindowHint_CurrentWindow 2
#define _DtCvWindowHint_NewWindow 3
#define _DtCvWindowHint_Original 4
/*********************
* Rendering flags
*********************/
/*
* Rendering flags - Link
*/
#define _DtCvLINK_FLAG (0x01 << 0)
#define _DtCvLINK_BEGIN (0x01 << 1)
#define _DtCvLINK_END (0x01 << 2)
#define _DtCvLINK_POP_UP (0x01 << 3)
#define _DtCvLINK_NEW_WINDOW (0x01 << 4)
/*
* Rendering flags - Search
*
* a gap is left for the search flags on a segment in CanvasSegP.h. If these
* change value, the other values must move to accommodate it. */
#define _DtCvSEARCH_FLAG (0x01 << 5)
#define _DtCvSEARCH_BEGIN (0x01 << 6)
#define _DtCvSEARCH_END (0x01 << 7)
#define _DtCvSEARCH_CURR (0x01 << 8)
/*
* Rendering flags - Mark
*/
#define _DtCvMARK_FLAG (0x01 << 9)
#define _DtCvMARK_BEGIN (0x01 << 10)
#define _DtCvMARK_END (0x01 << 11)
#define _DtCvMARK_ON (0x01 << 12)
/*
* Rendering flags - Traversal
*/
#define _DtCvTRAVERSAL_FLAG (0x01 << 13)
#define _DtCvTRAVERSAL_BEGIN (0x01 << 14)
#define _DtCvTRAVERSAL_END (0x01 << 15)
/*
* Rendering flags - Application defined flags.
*/
#define _DtCvAPP_FIELD_OFFSET (16)
#define _DtCvAPP_FIELD_MASK (0x0f << _DtCvAPP_FIELD_OFFSET)
#define _DtCvAPP_FIELD_S_MASK (0x03 << _DtCvAPP_FIELD_OFFSET)
#define _DtCvAPP_FLAG1 (0x01 << (_DtCvAPP_FIELD_OFFSET + 0))
#define _DtCvAPP_FLAG2 (0x01 << (_DtCvAPP_FIELD_OFFSET + 1))
#define _DtCvAPP_FLAG3 (0x01 << (_DtCvAPP_FIELD_OFFSET + 2))
#define _DtCvAPP_FLAG4 (0x01 << (_DtCvAPP_FIELD_OFFSET + 3))
/*
* Rendering flags - Selection
*/
#define _DtCvSELECTED_FLAG (0x01 << 20)
#define _DtCvEND_OF_LINE (0x01 << 21)
/*
* Activation masks
*/
#define _DtCvACTIVATE_SELECTION (0x01 << 0)
#define _DtCvACTIVATE_MARK (0x01 << 1)
#define _DtCvDEACTIVATE (0x01 << 2)
#define _DtCvACTIVATE_MARK_ON (0x01 << 3)
#define _DtCvACTIVATE_MARK_OFF (0x01 << 4)
/******** Public Enum Declarations ********/
/*
* Element types
*/
enum _dtCvElemType
{
_DtCvBAD_TYPE,
_DtCvCANVAS_TYPE,
_DtCvLINE_TYPE,
_DtCvLINK_TYPE,
_DtCvLOCALE_TYPE,
_DtCvMARK_TYPE,
_DtCvREGION_TYPE,
_DtCvSTRING_TYPE,
_DtCvTRAVERSAL_TYPE
};
typedef enum _dtCvElemType _DtCvElemType;
/*
* Canvas Engine values. Either parameters or return values.
*/
enum _dtCvValue
{
/*
* status types. i.e. True/False, Ok/Bad, etc.
*/
_DtCvFALSE = False,
_DtCvSTATUS_OK = False,
_DtCvTRUE = True,
_DtCvSTATUS_BAD = True,
_DtCvSTATUS_ID_BAD,
_DtCvSTATUS_NONE,
_DtCvSTATUS_LINK,
_DtCvSTATUS_MARK,
/*
* Render types
*/
_DtCvRENDER_PARTIAL,
_DtCvRENDER_COMPLETE,
/*
* Traversal defines
*/
_DtCvTRAVERSAL_OFF,
_DtCvTRAVERSAL_ON,
_DtCvTRAVERSAL_TOP,
_DtCvTRAVERSAL_NEXT,
_DtCvTRAVERSAL_PREV,
_DtCvTRAVERSAL_BOTTOM,
_DtCvTRAVERSAL_ID,
_DtCvTRAVERSAL_MARK,
/*
* processing a selection types
*/
_DtCvSELECTION_CLEAR,
_DtCvSELECTION_START,
_DtCvSELECTION_UPDATE,
_DtCvSELECTION_END,
/*
* honor the right boundary when laying out information
*/
_DtCvUSE_BOUNDARY,
_DtCvUSE_BOUNDARY_MOVE,
_DtCvIGNORE_BOUNDARY
};
typedef enum _dtCvValue _DtCvValue;
typedef enum _dtCvValue _DtCvStatus;
typedef enum _dtCvValue _DtCvRenderType;
typedef enum _dtCvValue _DtCvTraversalCmd;
typedef enum _dtCvValue _DtCvSelectMode;
/*
* line wrap mode types.
*/
enum _dtCvModeType
{
_DtCvModeWrapNone,
_DtCvModeWrapDown,
_DtCvModeWrapUp
};
typedef enum _dtCvModeType _DtCvModeType;
/******** Public Typedef Declarations ********/
typedef void* _DtCvPointer;
typedef void* _DtCvHandle;
typedef int _DtCvUnit;
typedef unsigned long _DtCvFlags;
typedef struct _dtCvSegPts _DtCvSegPts;
typedef struct _dtCvSegment _DtCvSegment;
/******** Public Structures Declarations ********/
typedef struct _dtCvMetrics {
_DtCvUnit width; /* max width of canvas area */
_DtCvUnit height; /* max height of canvas area */
_DtCvUnit top_margin; /* top margin to allow for */
_DtCvUnit side_margin; /* left margin to allow for */
_DtCvUnit line_height; /* the height of an average line of */
/* text */
_DtCvUnit horiz_pad_hint; /* the optimul spacing to use if */
/* lines have to be squeezed for */
/* _DtCvUSE_BOUNDARY */
} _DtCvMetrics;
typedef struct _dtCvSpaceMetrics {
_DtCvUnit space_before;
_DtCvUnit space_after;
_DtCvUnit space_above;
_DtCvUnit space_below;
} _DtCvSpaceMetrics;
typedef struct _dtCvLocale {
_DtCvModeType line_wrap_mode; /* specifies the wrap mode */
const wchar_t *cant_begin_chars; /* specifies the characters */
/* that can't begin a line */
const wchar_t *cant_end_chars; /* specifies the characters */
/* that can't end a line */
} _DtCvLocale;
typedef struct _dtCvStringInfo {
const void *string;
int byte_len;
int wc;
_DtCvPointer font_ptr;
_DtCvPointer csd;
} _DtCvStringInfo;
typedef struct _dtCvLineInfo {
_DtCvUnit x2;
_DtCvUnit y2;
_DtCvUnit width;
_DtCvPointer data;
} _DtCvLineInfo;
typedef struct _dtCvRenderInfo {
_DtCvPointer info;
_DtCvUnit box_x;
_DtCvUnit box_y;
_DtCvUnit box_height;
_DtCvUnit box_width;
} _DtCvRenderInfo;
typedef struct _dtCvLinkInfo {
char *specification;
char *description;
int hyper_type;
int win_hint;
_DtCvUnit offset_x;
_DtCvUnit offset_y;
} _DtCvLinkInfo;
typedef struct _dtCvPointInfo {
_DtCvPointer client_data;
_DtCvSegPts **segs;
} _DtCvPointInfo;
/******** Public Structure Typedef Declarations ********/
typedef struct _dtCvTopicInfo* _DtCvTopicPtr;
/******** Public Prototyped Procedures ********/
typedef void (*_DtCvGetMetrics)(
_DtCvPointer /* client_data */,
_DtCvElemType /* elem_type */,
_DtCvPointer /* ret_metrics */
);
typedef void (*_DtCvRenderElem)(
_DtCvPointer /* client_data */,
_DtCvElemType /* elem_type */,
_DtCvUnit /* x */,
_DtCvUnit /* y */,
int /* link_type */,
_DtCvFlags /* old_flags */,
_DtCvFlags /* new_flags */,
_DtCvElemType /* trav_type */,
_DtCvPointer /* trav_data */,
_DtCvPointer /* data */
);
typedef _DtCvUnit (*_DtCvGetElemWidth)(
_DtCvPointer /* client_data */,
_DtCvElemType /* elem_type */,
_DtCvPointer /* data */
);
typedef void (*_DtCvGetFontMetrics)(
_DtCvPointer /* client_data */,
_DtCvPointer /* font_ptr */,
_DtCvUnit* /* *ret_ascent */,
_DtCvUnit* /* *ret_descent */,
_DtCvUnit* /* *ret_width */,
_DtCvUnit* /* *ret_super */,
_DtCvUnit* /* *ret_sub */
);
typedef _DtCvStatus (*_DtCvBuildSelection)(
_DtCvPointer /* client_data */,
_DtCvElemType /* elem_type */,
unsigned int /* mask */,
_DtCvPointer* /* prev_info */,
_DtCvUnit /* space */,
_DtCvUnit /* width */,
_DtCvFlags /* flags */,
_DtCvPointer /* data */
);
typedef int (*_DtCvFilterExecCmd)(
_DtCvPointer /* client_data */,
const char* /* cmd */,
char** /* ret_cmd */
);
/******** Public Structures Declarations ********/
typedef struct _dtCvVirtualInfo {
_DtCvGetMetrics get_metrics;
_DtCvRenderElem render_elem;
_DtCvGetElemWidth get_width;
_DtCvGetFontMetrics get_font_metrics;
_DtCvBuildSelection build_selection;
_DtCvFilterExecCmd exec_cmd_filter;
} _DtCvVirtualInfo;
typedef struct _dtCvMarkPos {
_DtCvPointer client_data;
_DtCvUnit x1;
_DtCvUnit y1;
_DtCvUnit baseline1;
_DtCvUnit x2;
_DtCvUnit y2;
_DtCvUnit baseline2;
} _DtCvMarkPos;
/******** Public Macro Declarations ********/
/******** Semi-Public Function Declarations ********/
extern int _DtCvGetSearchLineMetrics(
_DtCvHandle canvas_handle,
int search_hit_index,
_DtCvUnit* baseline,
_DtCvUnit* descent,
_DtCvUnit* ascent);
/******** Public Function Declarations ********/
extern _DtCvStatus _DtCanvasActivatePts(
_DtCvHandle canvas_handle,
unsigned int mask,
_DtCvPointInfo *info,
_DtCvUnit *ret_y1,
_DtCvUnit *ret_y2);
extern void _DtCanvasClean(
_DtCvHandle canvas_handle);
extern _DtCvHandle _DtCanvasCreate(
_DtCvVirtualInfo virt_info,
_DtCvPointer client_data);
extern void _DtCanvasDestroy(
_DtCvHandle canvas_handle);
extern _DtCvStatus _DtCanvasGetCurLink(
_DtCvHandle canvas_handle,
_DtCvLinkInfo *ret_info);
extern _DtCvStatus _DtCanvasGetCurTraversal(
_DtCvHandle canvas_handle,
_DtCvLinkInfo *ret_info,
_DtCvPointer *ret_data);
extern _DtCvStatus _DtCanvasGetMarkPositions(
_DtCvHandle canvas_handle,
_DtCvMarkPos ***ret_pos);
extern _DtCvStatus _DtCanvasGetPosLink(
_DtCvHandle canvas_handle,
_DtCvUnit x1,
_DtCvUnit y1,
_DtCvUnit x2,
_DtCvUnit y2,
_DtCvLinkInfo *ret_info);
extern _DtCvStatus _DtCanvasGetSelection(
_DtCvHandle canvas_handle,
unsigned int mask,
_DtCvPointer *ret_select);
extern _DtCvStatus _DtCanvasGetSelectionPoints(
_DtCvHandle canvas_handle,
_DtCvSegPts ***ret_segs,
_DtCvUnit *ret_y1,
_DtCvUnit *ret_y2);
extern _DtCvStatus _DtCanvasGetSpotInfo(
_DtCvHandle canvas_handle,
_DtCvUnit x,
_DtCvUnit y,
_DtCvSegment **ret_seg,
_DtCvUnit *ret_offx,
_DtCvUnit *ret_offy,
_DtCvElemType *ret_element);
extern _DtCvStatus _DtCanvasMoveTraversal(
_DtCvHandle canvas_handle,
_DtCvTraversalCmd cmd,
_DtCvValue wrap,
_DtCvValue render,
_DtCvPointer rid,
_DtCvUnit *ret_x,
_DtCvUnit *ret_y,
_DtCvUnit *ret_baseline,
_DtCvUnit *ret_height);
extern void _DtCanvasProcessSelection (
_DtCvHandle canvas_handle,
_DtCvUnit x,
_DtCvUnit y,
_DtCvSelectMode mode);
extern void _DtCanvasRender(
_DtCvHandle canvas_handle,
_DtCvUnit x1,
_DtCvUnit y1,
_DtCvUnit x2,
_DtCvUnit y2,
_DtCvRenderType flag,
_DtCvValue pg_break,
_DtCvUnit *max_y,
_DtCvUnit *next_y);
extern _DtCvStatus _DtCanvasResize(
_DtCvHandle canvas_handle,
_DtCvValue force,
_DtCvUnit *ret_width,
_DtCvUnit *ret_height);
extern _DtCvStatus _DtCanvasSetTopic(
_DtCvHandle canvas_handle,
_DtCvTopicPtr topic_handle,
_DtCvValue honor_size,
_DtCvUnit *ret_width,
_DtCvUnit *ret_height,
_DtCvUnit *ret_y);
extern void _DtCanvasLoadMetrics(
_DtCvHandle canvas_handle);
#ifdef __cplusplus
} /* Close scope of 'extern "C"' declaration which encloses file. */
#endif
#endif /* _DtCanvasP_h */
/* DON'T ADD ANYTHING AFTER THIS #endif */