Files
cdesktop/cde/include/Dt/CanvasSegP.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

539 lines
17 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
*/
/* $XConsortium: CanvasSegP.h /main/19 1996/10/04 18:30:19 rswiston $ */
/*************************************<+>*************************************
*****************************************************************************
**
** File: CanvasSegP.h
**
** Project:
**
** Description: Public Header file for Canvas Engine
**
** (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 _DtCanvasSegP_h
#define _DtCanvasSegP_h
#ifdef __cplusplus
extern "C" {
#endif
/******** Public Defines Declarations ********/
/*****************************************************************************
* Some bits in passed in as a _DtCvFlags and the 'type' in _DtCvSegment
* must match because they are passed straight thought from the segment
* to the application. The following map is to help prevent colisions.
*
* (-------------------------> _DtCvEND_OF_LINE
* | (-----------------------> _DtCvSELECTED_FLAG
* | |
* | | (-------------------------> _DtCvAPP_FLAG4 \
* | | | (-----------------------> _DtCvAPP_FLAG3 \
* | | | | (---------------------> _DtCvAPP_FLAG2 / _DtCvAPP_FIELD
* | | | | | (-------------------> _DtCvAPP_FLAG1 /
* | | | | | |
* | | | | | | (---------------------> _DtCvTRAVERSAL_END
* | | | | | | | (-------------------> _DtCvTRAVERSAL_BEGIN
* | | | | | | | | (-----------------> _DtCvTRAVERSAL_FLAG
* | | | | | | | | |
* | | | | | | | | | (-------------------> _DtCvMARK_ON
* | | | | | | | | | | (-----------------> _DtCvMARK_END
* | | | | | | | | | | | (---------------> _DtCvMARK_BEGIN
* | | | | | | | | | | | | (-------------> _DtCvMARK_FLAG
* | | | | | | | | | | | | |
* | | | | | | | | | | | | | (-------------> _DtCvSEARCH_CURR
* | | | | | | | | | | | | | | (-----------> _DtCvSEARCH_END
* | | | | | | | | | | | | | | | (---------> _DtCvSEARCH_BEGIN
* | | | | | | | | | | | | | | | | (-------> _DtCvSEARCH_FLAG
* | | | | | | | | | | | | | | | | |
* | | | | | | | | | | | | | | | | | (---------> _DtCvLINK_NEW_WINDOW
* | | | | | | | | | | | | | | | | | | (-------> _DtCvLINK_POP_UP
* | | | | | | | | | | | | | | | | | | | (-----> _DtCvLINK_END
* | | | | | | | | | | | | | | | | | | | | (---> _DtCvLINK_BEGIN
* | | | | | | | | | | | | | | | | | | | | | (-> _DtCvLINK_FLAG
* | | | | | | | | | | | | | | | | | | | | | |
* v v v v v v#v v v v v v v v#v v v v v v v v
* 1 0 9 8 7 6#5 4 3 2 1 0 9 8#7 6 5 4 3 2 1 0
* ------------#---------------#----------------
* |.|.|.|.|.|.#.|.|.|.|.|.|.|.#.|.|.|.|.|.|.|.|
* ------------#---------------#----------------
* ^ ^ ^ ^ ^#^ ^ ^ ^ ^ ^ ^ ^#^ ^ ^ ^ ^^^^^
* | | | | | | | | | | | | | | | | | \|/
* | | | | | | | | | | | | | | | | | |
* | | | | | | | | | | | | | | | | | (-> Segment type
* | | | | | | | | | | | | | | | | (-----> _DtCvWIDE_CHAR
* | | | | | | | | | | | | | | | |
* | | | | | | | | | | | | | | | (-----> _DtCvSEARCH_FLAG
* | | | | | | | | | | | | | | (-------> _DtCvSEARCH_BEGIN
* | | | | | | | | | | | | | (---------> _DtCvSEARCH_END
* | | | | | | | | | | | | (-----------> _DtCvSEARCH_CURR
* | | | | | | | | | | | |
* | | | | | | | | | | | (---------> _DtCvCONTROLLER/_DtCvBLOCK_LINE/
* | | | | | | | | | | | _DtCvNEW_LINE
* | | | | | | | | | | (-----------> _DtCvSUB_SCRIPT
* | | | | | | | | | (-------------> _DtCvSUPER_SCRIPT
* | | | | | | | | (---------------> _DtCvGHOST_LINK
* | | | | | | | (-----------------> _DtCvHYPER_TEXT
* | | | | | | (-------------------> _DtCvNON_BREAK
* | | | | | (---------------------> _DtCvIN_LINE
* | | | | |
* | | | | (---------------> _DtCvAPP_FLAG1 \
* | | | (-----------------> _DtCvAPP_FLAG2 \ _DtCvAPP_FIELD
* | | (-------------------> _DtCvAPP_FLAG3 /
* | (---------------------> _DtCvAPP_FLAG4 /
* |
* (------------------> _DtCvPAGE_BREAK
*
*****************************************************************************/
/*
* segment types
*/
#define _DtCvNOOP (0x00)
#define _DtCvCONTAINER (0x01)
#define _DtCvLINE (0x02)
#define _DtCvMARKER (0x03)
#define _DtCvREGION (0x04)
#define _DtCvSTRING (0x05)
#define _DtCvTABLE (0x06)
#define _DtCvPRIMARY_MASK (0x07)
#define _DtCvSHIFT_PAST_PRIMARY 3
/*
* character size manipulation
*/
#define _DtCvWIDE_CHAR (0x01 << _DtCvSHIFT_PAST_PRIMARY)
/*
* segment flags
*/
/* leave a gap for the search flags defined in CanvasP.h */
#define _DtCvSHIFT_TO_FLAGS 9
/* container only */
#define _DtCvCONTROLLER (0x01 << (_DtCvSHIFT_TO_FLAGS + 0))
/* line type */
#define _DtCvBLOCK_LINE (0x01 << (_DtCvSHIFT_TO_FLAGS + 0))
/* string & region (_DtCvNEW_LINE works on _DtCvNOOP too) */
#define _DtCvNEW_LINE (0x01 << (_DtCvSHIFT_TO_FLAGS + 0))
#define _DtCvSUB_SCRIPT (0x01 << (_DtCvSHIFT_TO_FLAGS + 1))
#define _DtCvSUPER_SCRIPT (0x01 << (_DtCvSHIFT_TO_FLAGS + 2))
#define _DtCvGHOST_LINK (0x01 << (_DtCvSHIFT_TO_FLAGS + 3))
#define _DtCvHYPER_TEXT (0x01 << (_DtCvSHIFT_TO_FLAGS + 4))
#define _DtCvNON_BREAK (0x01 << (_DtCvSHIFT_TO_FLAGS + 5))
/* region only */
#define _DtCvIN_LINE (0x01 << (_DtCvSHIFT_TO_FLAGS + 6))
/* application flags - defined in CanvasP.h (starting at 16th bit for 4 bits) */
/* valid on any segment */
#define _DtCvPAGE_BREAK (0x01 << (_DtCvSHIFT_TO_FLAGS + 11))
/* highlight macros */
#define HILITE_OVERLINE 0
#define HILITE_STRIKETHROUGH 1
#define HILITE_UNDERLINE 2
/******** Public Enum Declarations ********/
enum _dtCvFrmtOption
{
_DtCvOPTION_BAD,
/*
* string breaking types
*/
_DtCvLITERAL,
_DtCvDYNAMIC,
/*
* table border types
*/
_DtCvBORDER_NONE,
_DtCvBORDER_FULL,
_DtCvBORDER_HORZ,
_DtCvBORDER_VERT,
_DtCvBORDER_TOP,
_DtCvBORDER_BOTTOM,
_DtCvBORDER_LEFT,
_DtCvBORDER_RIGHT,
_DtCvBORDER_TOP_LEFT,
_DtCvBORDER_TOP_RIGHT,
_DtCvBORDER_BOTTOM_LEFT,
_DtCvBORDER_BOTTOM_RIGHT,
/*
* controller horizontal orientation
*/
_DtCvJUSTIFY_LEFT_CORNER,
_DtCvJUSTIFY_LEFT, /* also container horizontal text placement */
_DtCvJUSTIFY_LEFT_MARGIN,
_DtCvJUSTIFY_CENTER, /* also container horiz/vert text placement */
_DtCvJUSTIFY_RIGHT_MARGIN,
_DtCvJUSTIFY_RIGHT, /* also container horizontal text placement */
_DtCvJUSTIFY_RIGHT_CORNER,
/*
* extra container horizontal text placement
*/
_DtCvJUSTIFY_NUM,
_DtCvJUSTIFY_CHAR,
/*
* inherit the parent's horizontal text placement
*/
_DtCvINHERIT,
/*
* controller vertical orientation, includes _DtCvJUSTIFY_CENTER
*/
_DtCvJUSTIFY_TOP, /* also container vertical text placement */
_DtCvJUSTIFY_BOTTOM, /* also container vertical text placement */
/*
* controller flow types
*/
_DtCvWRAP,
_DtCvWRAP_NONE,
_DtCvWRAP_JOIN
};
typedef enum {
hilite_overline = 0x01 << HILITE_OVERLINE,
hilite_strikethrough = 0x01 << HILITE_STRIKETHROUGH,
hilite_underline = 0x01 << HILITE_UNDERLINE
} text_hilite_t;
/******** Public Enum Typedef Declarations ********/
typedef enum _dtCvFrmtOption _DtCvFrmtOption;
/******** Public Structures Declarations ********/
typedef struct _dtCvLine {
_DtCvUnit width;
_DtCvPointer data;
} _DtCvLine;
typedef struct _dtCvContainer {
char *id;
char *justify_char;
_DtCvFrmtOption type;
_DtCvFrmtOption border;
_DtCvFrmtOption justify;
_DtCvFrmtOption vjustify;
_DtCvFrmtOption orient;
_DtCvFrmtOption vorient;
_DtCvFrmtOption flow;
int percent;
_DtCvUnit leading;
_DtCvUnit fmargin;
_DtCvUnit lmargin;
_DtCvUnit rmargin;
_DtCvUnit tmargin;
_DtCvUnit bmargin;
_DtCvLine bdr_info;
struct _dtCvSegment *seg_list;
} _DtCvContainer;
typedef struct _DtCvString {
void *string;
_DtCvPointer font;
} _DtCvString;
typedef struct _dtCvRegion {
_DtCvPointer info;
_DtCvUnit width;
_DtCvUnit height;
_DtCvUnit ascent;
} _DtCvRegion;
typedef struct _dtCvTable {
int num_cols;
char **col_w;
_DtCvFrmtOption *col_justify;
char *justify_chars;
char **cell_ids;
struct _dtCvSegment **cells;
} _DtCvTable;
typedef union _dtCvSegHandles {
_DtCvContainer container;
_DtCvString string;
_DtCvRegion region;
_DtCvTable table;
_DtCvLine rule;
char *marker;
} _DtCvSegHandles;
struct _dtCvSegment {
unsigned long type;
int link_idx;
_DtCvSegHandles handle;
struct _dtCvSegment *next_seg;
struct _dtCvSegment *next_disp;
_DtCvPointer client_use;
_DtCvPointer internal_use;
};
struct _dtCvSegPts {
struct _dtCvSegment *segment;
int offset;
int len;
};
typedef struct _dtCvTopicInfo {
char *id_str;
struct _dtCvSegment *seg_list;
_DtCvPointInfo **mark_list;
struct _dtCvLinkDb *link_data;
} _DtCvTopicInfo;
typedef struct _dtCvStringClientData {
unsigned int vcc;
unsigned int vclen;
unsigned int hilite_type;
char* bg_color;
char* fg_color;
unsigned long bg_pixel;
unsigned long fg_pixel;
} _DtCvStringClientData;
typedef struct _dtCvRegionClientData {
_DtCvPointer GraphicHandle;
} _DtCvRegionClientData;
typedef union _dtCvClientData {
_DtCvRegionClientData region;
_DtCvStringClientData string;
} _DtCvClientData;
/******** Public Structure Typedef Declarations ********/
/******** Public Prototyped Procedures ********/
/******** Public Macro Declarations ********/
/*
* set segment type
*/
#define _DtCvSetTypeToContainer(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvCONTAINER)
#define _DtCvSetTypeToLine(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvLINE)
#define _DtCvSetTypeToMarker(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvMARKER)
#define _DtCvSetTypeToNoop(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvNOOP)
#define _DtCvSetTypeToRegion(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvREGION)
#define _DtCvSetTypeToString(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvSTRING)
#define _DtCvSetTypeToTable(x) \
(((x) & ~(_DtCvPRIMARY_MASK)) | _DtCvTABLE)
/*
* set segment flags
*/
#define _DtCvSetTypeToBlockLine(x) ((x) | _DtCvBLOCK_LINE)
#define _DtCvSetTypeToController(x) ((x) | _DtCvCONTROLLER)
#define _DtCvSetTypeToGhostLink(x) ((x) | _DtCvGHOST_LINK)
#define _DtCvSetTypeToHyperText(x) ((x) | _DtCvHYPER_TEXT)
#define _DtCvSetTypeToInLine(x) ((x) | _DtCvIN_LINE)
#define _DtCvSetTypeToNewLine(x) ((x) | _DtCvNEW_LINE)
#define _DtCvSetTypeToNonBreak(x) ((x) | _DtCvNON_BREAK)
#define _DtCvSetTypeToSearch(x) ((x) | _DtCvSEARCH_FLAG)
#define _DtCvSetTypeToSearchBegin(x) ((x) | _DtCvSEARCH_BEGIN)
#define _DtCvSetTypeToSearchEnd(x) ((x) | _DtCvSEARCH_END)
#define _DtCvSetTypeToSubScript(x) ((x) | _DtCvSUB_SCRIPT)
#define _DtCvSetTypeToSuperScript(x) ((x) | _DtCvSUPER_SCRIPT)
/*
* set character size
*/
#define _DtCvSetTypeToWideChar(x) ((x) | _DtCvWIDE_CHAR)
/*
* set application flags and/or field
*/
#define _DtCvSetAppFlag1(x) ((x) | _DtCvAPP_FLAG1)
#define _DtCvSetAppFlag2(x) ((x) | _DtCvAPP_FLAG2)
#define _DtCvSetAppFlag3(x) ((x) | _DtCvAPP_FLAG3)
#define _DtCvSetAppFlag4(x) ((x) | _DtCvAPP_FLAG4)
#define _DtCvSetAppField(x,y) \
(((x) & ~(_DtCvAPP_FIELD_MASK)) | \
((y & _DtCvAPP_FIELD_MASK) << _DtCvAPP_FIELD_OFFSET))
#define _DtCvSetAppFieldSmall(x,y) \
(((x) & ~(_DtCvAPP_FIELD_S_MASK)) | \
((y & _DtCvAPP_FIELD_S_MASK) << _DtCvAPP_FIELD_OFFSET))
/*
* get the application field value
*/
#define _DtCvGetAppField(x) \
(((x) & _DtCvAPP_FIELD_MASK) >> _DtCvAPP_FIELD_OFFSET)
#define _DtCvGetAppFieldSmall(x) \
(((x) & _DtCvAPP_FIELD_S_MASK) >> _DtCvAPP_FIELD_OFFSET)
/******** Semi-Public Macro Declarations ********/
/*
* get segment type
*/
#define _DtCvPrimaryTypeOfSeg(x) ((x->type) & _DtCvPRIMARY_MASK)
#define _DtCvIsSegContainer(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvCONTAINER) ? 1 : 0)
#define _DtCvIsSegLine(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvLINE) ? 1 : 0)
#define _DtCvIsSegMarker(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvMARKER) ? 1 : 0)
#define _DtCvIsSegNoop(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvNOOP) ? 1 : 0)
#define _DtCvIsSegRegion(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvREGION) ? 1 : 0)
#define _DtCvIsSegString(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvSTRING) ? 1 : 0)
#define _DtCvIsSegTable(x) \
(((((x)->type) & _DtCvPRIMARY_MASK) == _DtCvTABLE) ? 1 : 0)
/*
* get segment flags
*/
#define _DtCvIsSegController(x) \
((((x)->type) & _DtCvCONTROLLER) ? 1 : 0)
#define _DtCvIsSegBlockLine(x) \
((((x)->type) & _DtCvBLOCK_LINE) ? 1 : 0)
#define _DtCvIsSegGhostLink(x) \
((((x)->type) & _DtCvGHOST_LINK) ? 1 : 0)
#define _DtCvIsSegHyperText(x) \
((((x)->type) & _DtCvHYPER_TEXT) ? 1 : 0)
#define _DtCvIsSegInLine(x) \
((((x)->type) & _DtCvIN_LINE) ? 1 : 0)
#define _DtCvIsSegNewLine(x) \
((((x)->type) & _DtCvNEW_LINE) ? 1 : 0)
#define _DtCvIsSegNonBreakingChar(x) \
((((x)->type) & _DtCvNON_BREAK) ? 1 : 0)
#define _DtCvIsSegPageBreak(x) \
((((x)->type) & _DtCvPAGE_BREAK) ? 1 : 0)
#define _DtCvIsSegRegChar(x) \
((((x)->type) & _DtCvWIDE_CHAR) ? 0 : 1)
#define _DtCvIsSegSubScript(x) \
((((x)->type) & _DtCvSUB_SCRIPT) ? 1 : 0)
#define _DtCvIsSegSuperScript(x) \
((((x)->type) & _DtCvSUPER_SCRIPT) ? 1 : 0)
#define _DtCvIsSegWideChar(x) \
((((x)->type) & _DtCvWIDE_CHAR) ? 1 : 0)
/*
* segment access
*/
#define _DtCvNextSeg(x) ((x)->next_seg)
#define _DtCvNextDisp(x) ((x)->next_disp)
/*
* container access
*/
#define _DtCvContainerOfSeg(x) \
((x)->handle.container)
#define _DtCvContainerBMarginOfSeg(x) \
((x)->handle.container.bmargin)
#define _DtCvContainerBorderOfSeg(x) \
((x)->handle.container.border)
#define _DtCvContainerFlowOfSeg(x) \
((x)->handle.container.flow)
#define _DtCvContainerFMarginOfSeg(x) \
((x)->handle.container.fmargin)
#define _DtCvContainerIdOfSeg(x) \
((x)->handle.container.id)
#define _DtCvContainerJustifyCharOfSeg(x) \
((x)->handle.container.justify_char)
#define _DtCvContainerJustifyOfSeg(x) \
((x)->handle.container.justify)
#define _DtCvContainerLeadingOfSeg(x) \
((x)->handle.container.leading)
#define _DtCvContainerLineWidthOfSeg(x) \
((x)->handle.container.bdr_info.width)
#define _DtCvContainerLineDataOfSeg(x) \
((x)->handle.container.bdr_info.data)
#define _DtCvContainerListOfSeg(x) \
((x)->handle.container.seg_list)
#define _DtCvContainerLMarginOfSeg(x) \
((x)->handle.container.lmargin)
#define _DtCvContainerOrientOfSeg(x) \
((x)->handle.container.orient)
#define _DtCvContainerPercentOfSeg(x) \
((x)->handle.container.percent)
#define _DtCvContainerRMarginOfSeg(x) \
((x)->handle.container.rmargin)
#define _DtCvContainerTMarginOfSeg(x) \
((x)->handle.container.tmargin)
#define _DtCvContainerTypeOfSeg(x) \
((x)->handle.container.type)
#define _DtCvContainerVJustifyOfSeg(x) \
((x)->handle.container.vjustify)
#define _DtCvContainerVOrientOfSeg(x) \
((x)->handle.container.vorient)
/*
* marker access
*/
#define _DtCvIdOfMarkerSeg(x) ((x)->handle.marker)
/*
* marker access
*/
#define _DtCvDataOfLineSeg(x) ((x)->handle.rule.data)
#define _DtCvWidthOfLineSeg(x) ((x)->handle.rule.width)
/*
* string access
*/
#define _DtCvStringOfStringSeg(x) ((x)->handle.string.string)
#define _DtCvFontOfStringSeg(x) ((x)->handle.string.font)
/*
* region access
*/
#define _DtCvInfoOfRegionSeg(x) ((x)->handle.region.info)
#define _DtCvWidthOfRegionSeg(x) ((x)->handle.region.width)
#define _DtCvHeightOfRegionSeg(x) ((x)->handle.region.height)
#define _DtCvAscentOfRegionSeg(x) ((x)->handle.region.ascent)
/*
* table access
*/
#define _DtCvNumColsOfTableSeg(x) ((x)->handle.table.num_cols)
#define _DtCvColWOfTableSeg(x) ((x)->handle.table.col_w)
#define _DtCvColJustifyOfTableSeg(x) ((x)->handle.table.col_justify)
#define _DtCvJustifyCharsOfTableSeg(x) ((x)->handle.table.justify_chars)
#define _DtCvCellIdsOfTableSeg(x) ((x)->handle.table.cell_ids)
#define _DtCvCellsOfTableSeg(x) ((x)->handle.table.cells)
/******** Semi-Public Function Declarations ********/
/******** Public Function Declarations ********/
#ifdef __cplusplus
} /* Close scope of 'extern "C"' declaration which encloses file. */
#endif
#endif /* _DtCanvasSegP_h */
/* DON'T ADD ANYTHING AFTER THIS #endif */