97 lines
3.2 KiB
C
97 lines
3.2 KiB
C
|
#ifndef DISPMISC_DEFINED
|
||
|
#define DISPMISC_DEFINED
|
||
|
|
||
|
#include "lsidefs.h"
|
||
|
#include "plsdnode.h"
|
||
|
#include "plssubl.h"
|
||
|
#include "lstflow.h"
|
||
|
|
||
|
|
||
|
// Rectangle (usually clip rectangle) in local coordinate system
|
||
|
//
|
||
|
// U grows to the right, v grows up, so normally upLeft < upRight, vpTop > vpBottom
|
||
|
// Upper left corner belongs to the rectangle, lower right corner doesn't.
|
||
|
// That means:
|
||
|
// upRight - upLeft equals dupLength.
|
||
|
// Rectangle that contains one point (0,0) is {0,0,-1,1}.
|
||
|
// Shading rectangle for dnode starting at (u0,v0) is {u0, v0+dvpAscent, u0+dupLen, v0-dvpDescent}
|
||
|
// Note this last line reflects the big LS convention:
|
||
|
// v0+dvpAscent belongs to line, v0-dvpDescent doesn't.
|
||
|
|
||
|
|
||
|
typedef struct tagRECTUV
|
||
|
{
|
||
|
long upLeft;
|
||
|
long vpTop;
|
||
|
long upRight;
|
||
|
long vpBottom;
|
||
|
} RECTUV;
|
||
|
|
||
|
typedef const RECTUV* PCRECTUV;
|
||
|
typedef RECTUV* PRECTUV;
|
||
|
|
||
|
|
||
|
/* CreateDisplayTree sets plsdnUpTemp in sublines to be displayed with given subline,
|
||
|
* rejects wrong sublines, submitted for display, sets fAcceptedForDisplay in good ones
|
||
|
*/
|
||
|
|
||
|
void CreateDisplayTree(PLSSUBL); /* IN: the uppermost subline */
|
||
|
|
||
|
/* DestroyDisplayTree nulls plsdnUpTemp in sublines displayed with given subline.
|
||
|
*/
|
||
|
|
||
|
void DestroyDisplayTree(PLSSUBL); /* IN: the uppermost subline */
|
||
|
|
||
|
|
||
|
/* AdvanceToNextNode moves to the next dnode to be displayed (maybe changing sublines),
|
||
|
* updating current pen, returning pointer to the next dnode
|
||
|
*/
|
||
|
|
||
|
PLSDNODE AdvanceToNextDnode(PLSDNODE, /* IN: current dnode */
|
||
|
LSTFLOW, /* IN: current (main) text flow */
|
||
|
POINTUV*); /* INOUT: current pen position (u,v) */
|
||
|
|
||
|
PLSDNODE AdvanceToFirstDnode(PLSSUBL, /* IN: main subline */
|
||
|
LSTFLOW, /* IN: current (main) text flow */
|
||
|
POINTUV*); /* INOUT: current pen position (u,v) */
|
||
|
|
||
|
/* AdvanceToNextSubmittingDnode moves to the next dnode which submitted for display,
|
||
|
* updating current pen, returning pointer to the next dnode
|
||
|
*/
|
||
|
|
||
|
PLSDNODE AdvanceToNextSubmittingDnode(
|
||
|
PLSDNODE, /* IN: current dnode */
|
||
|
LSTFLOW, /* IN: current (main) text flow */
|
||
|
POINTUV*); /* INOUT: current pen position (u,v) */
|
||
|
|
||
|
PLSDNODE AdvanceToFirstSubmittingDnode(
|
||
|
PLSSUBL, /* IN: main subline */
|
||
|
LSTFLOW, /* IN: current (main) text flow */
|
||
|
POINTUV*); /* INOUT: current pen position (u,v) */
|
||
|
|
||
|
|
||
|
// NB Victork - following functions were used only for upClipLeft, upClipRight optimization.
|
||
|
// If we'll decide that we do need that optimization after Word integration - I'll uncomment.
|
||
|
|
||
|
|
||
|
#ifdef NEVER
|
||
|
/* RectUVFromRectXY calculates (clip) rectangle in local (u,v) coordinates given
|
||
|
(clip) rectangle in (x,y) and point of origin */
|
||
|
|
||
|
void RectUVFromRectXY(const POINT*, /* IN: point of origin for local coordinates (x,y) */
|
||
|
const RECT*, /* IN: input rectangle (x,y) */
|
||
|
LSTFLOW, /* IN: local text flow */
|
||
|
PRECTUV); /* OUT: output rectangle (u,v) */
|
||
|
|
||
|
|
||
|
/* RectXYFromRectUV calculates rectangle in (x,y) coordinates given
|
||
|
rectangle in local (u,v) coordinates and point of origin (x,y) */
|
||
|
|
||
|
void RectXYFromRectUV(const POINT*, /* IN: point of origin for local coordinates (x,y) */
|
||
|
PCRECTUV, /* IN: input rectangle (u,v) */
|
||
|
LSTFLOW, /* IN: local text flow */
|
||
|
RECT*); /* OUT: output rectangle (x,y) */
|
||
|
#endif /* NEVER */
|
||
|
|
||
|
#endif
|