101 lines
2.6 KiB
C
101 lines
2.6 KiB
C
|
#ifndef LSSUBL_DEFINED
|
||
|
#define LSSUBL_DEFINED
|
||
|
|
||
|
|
||
|
#include "lsidefs.h"
|
||
|
#include "plsdnode.h"
|
||
|
#include "lstflow.h"
|
||
|
#include "plschcon.h"
|
||
|
#include "posinln.h"
|
||
|
#include "objdim.h"
|
||
|
#include "brkkind.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#define tagLSSUBL Tag('L','S','S','L')
|
||
|
#define FIsLSSUBL(p) FHasTag(p,tagLSSUBL)
|
||
|
|
||
|
|
||
|
typedef struct brkcontext
|
||
|
{
|
||
|
POSINLINE posinlineBreakPrev; /* information about previous break */
|
||
|
OBJDIM objdimBreakPrev;
|
||
|
BRKKIND brkkindForPrev;
|
||
|
BOOL fBreakPrevValid;
|
||
|
|
||
|
POSINLINE posinlineBreakNext; /* information about next break */
|
||
|
OBJDIM objdimBreakNext;
|
||
|
BRKKIND brkkindForNext;
|
||
|
BOOL fBreakNextValid;
|
||
|
|
||
|
POSINLINE posinlineBreakForce; /* information about force break */
|
||
|
OBJDIM objdimBreakForce;
|
||
|
BRKKIND brkkindForForce;
|
||
|
BOOL fBreakForceValid;
|
||
|
}
|
||
|
BRKCONTEXT;
|
||
|
|
||
|
|
||
|
typedef struct lssubl
|
||
|
|
||
|
{
|
||
|
DWORD tag; /* tag for safety checks */
|
||
|
|
||
|
PLSC plsc; /* LineServices context
|
||
|
parameter to CreateSubLine */
|
||
|
LSCP cpFirst; /* cp for the first fetch
|
||
|
parameter to CreateSubLine */
|
||
|
LSTFLOW lstflow; /* text flow of the subline
|
||
|
parameter to CreateSubLine */
|
||
|
|
||
|
long urColumnMax; /* max lenght to fit into a main line
|
||
|
parameter to CreateSubLine */
|
||
|
|
||
|
|
||
|
LSCP cpLim; /* during formatting is a cpFirst for the next fetch
|
||
|
after SetBreak indicates boundary of the line */
|
||
|
|
||
|
LSCP cpLimDisplay; /* doesn't consider splat char */
|
||
|
|
||
|
PLSDNODE plsdnFirst; /* starting dnode in a subline */
|
||
|
|
||
|
PLSDNODE plsdnLast; /* last dnode in a subline
|
||
|
during formatting serves as psdnToAppend */
|
||
|
|
||
|
PLSDNODE plsdnLastDisplay; /* doesn't consider splat dnode */
|
||
|
|
||
|
PLSCHUNKCONTEXT plschunkcontext;
|
||
|
|
||
|
PLSDNODE plsdnUpTemp; /* temporary used for collecting group chunk */
|
||
|
|
||
|
long urCur, vrCur; /* Current pen position in reference units */
|
||
|
|
||
|
BRKCONTEXT* pbrkcontext; /* information about break opportunites */
|
||
|
|
||
|
BYTE fContiguous; /* if TRUE such line has the same coordinate system as main line
|
||
|
and is allowed to have tabs,
|
||
|
otherwise coordinates of the line starts from 0,0
|
||
|
parameter to CreateSubLine */
|
||
|
|
||
|
|
||
|
BYTE fDupInvalid; /* TRUE before preparing line for display */
|
||
|
BYTE fMain; /* is this subline main */
|
||
|
|
||
|
BYTE fAcceptedForDisplay; /* subline was submitted for display and accepted */
|
||
|
|
||
|
BYTE fRightMarginExceeded; /* used for low level subline to avoid double call to
|
||
|
nominal to ideal */
|
||
|
|
||
|
} LSSUBL;
|
||
|
|
||
|
|
||
|
#define LstflowFromSubline(plssubl) ((plssubl)->lstflow)
|
||
|
|
||
|
#define PlschunkcontextFromSubline(plssubl) ((plssubl)->plschunkcontext)
|
||
|
|
||
|
#define FIsSubLineMain(plssubl) (plssubl)->fMain
|
||
|
|
||
|
#endif /* LSSUBL_DEFINED */
|
||
|
|