#ifndef OBJHELP_DEFINED #define OBJHELP_DEFINED #include "lsdefs.h" #include "lstflow.h" #include "pobjdim.h" #include "plssubl.h" #include "lsesc.h" #include "plsdnode.h" #include "fmtres.h" #include "plsqin.h" #include "plsqout.h" #include "breakrec.h" #include "plnobj.h" #include "pdobj.h" #include "pfmti.h" #include "plsrun.h" #include "pheights.h" #include "mwcls.h" #include "brkkind.h" #include "pbrko.h" #define ZeroMemory(a, b) memset(a, 0, b); #ifdef DEBUG #define Undefined(pvar) \ {int i; for (i=0; ilscbk.pfnNewPtr((pilsobj)->pols, (cb))) #define FreeMemory(pilsobj, ptr) (pilsobj)->lscbk.pfnDisposePtr((pilsobj)->pols, (ptr)) #define NBreaksToSave 3 /* Number of break records to store in objects */ /* * Proc: GetBreakRecordIndex * Return number of break record based on brkkind enumeration. * */ DWORD GetBreakRecordIndex (BRKKIND brkkind); /* * Proc: GetBreakRecordIndex * Fill trailing info in BRKOUT as if there is no trailing spaces * */ LSERR FormatLine( PLSC plsc, LSCP cpStart, long durColMax, LSTFLOW lstflow, PLSSUBL *pplssubl, DWORD cdwlsesc, const LSESC *plsesc, POBJDIM pobjdim, LSCP *pcpOut, PLSDNODE *pplsdnStart, PLSDNODE *pplsdnEnd, FMTRES *pfmtres); LSERR FormatResumedLine( PLSC plsc, LSCP cpStart, long durColMax, LSTFLOW lstflow, PLSSUBL *pplssubl, DWORD cdwlsesc, const LSESC *plsesc, POBJDIM pobjdim, LSCP *pcpOut, PLSDNODE *pplsdnStart, PLSDNODE *pplsdnEnd, FMTRES *pfmtres, const BREAKREC *pbreakrec, DWORD cbreakrec); LSERR CreateQueryResult( PLSSUBL plssubl, /*(IN): subline of ruby */ long dupAdj, /*(IN): u offset of start of subline */ long dvpAdj, /*(IN): v offset of start of subline */ PCLSQIN plsqin, /*(IN): query input */ PLSQOUT plsqout); /*(OUT): query output */ /* * Implementation of LSIMETHOD for objects that do not support the resuming * of formatting. Ruby, Tatenakayoko and Hih are examples of this kind of * object. */ LSERR WINAPI ObjHelpFmtResume( PLNOBJ plnobj, /* (IN): object lnobj */ const BREAKREC *rgBreakRecord, /* (IN): array of break records */ DWORD nBreakRecord, /* (IN): size of the break records array */ PCFMTIN pcfmtin, /* (IN): formatting input */ FMTRES *pfmtres); /* (OUT): formatting result */ /* * Implementation of LSIMETHOD for objects that do nothing for mod width. * Tatenakayoko and Hih are examples of this kind of object. */ LSERR WINAPI ObjHelpGetModWidthChar( PDOBJ pdobj, /* (IN): dobj */ PLSRUN plsrun, /* (IN): plsrun of the object */ PLSRUN plsrunText, /* (IN): plsrun of the preceding char */ PCHEIGHTS pcheightsRef, /* (IN): height info about character */ WCHAR wchar, /* (IN): preceding character */ MWCLS mwcls, /* (IN): ModWidth class of preceding character */ long *pdurChange); /* (OUT): amount by which width of the preceding char is to be changed */ /* * Implementation of LSIMETHOD for objects that do nothing for SetBreak. * Tatenakayoko and Hih are examples of this kind of object. */ LSERR WINAPI ObjHelpSetBreak( PDOBJ pdobj, /* (IN): dobj which is broken */ BRKKIND brkkind, /* (IN): Previous / Next / Force / Imposed was chosen */ DWORD cBreakRecord, /* (IN): size of array */ BREAKREC *rgBreakRecord, /* (IN): array of break records */ DWORD *pcActualBreakRecord); /* (IN): actual number of used elements in array */ /* * Default implementation of LSIMETHOD for objects that do not * allow expanding the previous character. */ LSERR WINAPI ObjHelpFExpandWithPrecedingChar( PDOBJ pdobj, /* (IN): dobj */ PLSRUN plsrun, /* (IN): plsrun of the object */ PLSRUN plsrunText, /* (IN): plsrun of the preceding char */ WCHAR wchar, /* (IN): preceding character */ MWCLS mwcls, /* (IN): ModWidth class of preceding character*/ BOOL *pfExpand); /* (OUT): (OUT): expand preceding character? */ /* * Default implementation of LSIMETHOD for objects that do not * allow expanding themselves. */ LSERR WINAPI ObjHelpFExpandWithFollowingChar( PDOBJ pdobj, /* (IN): dobj */ PLSRUN plsrun, /* (IN): plsrun of the object */ PLSRUN plsrunText, /* (IN): plsrun of the following char */ WCHAR wchar, /* (IN): following character */ MWCLS mwcls, /* (IN): ModWidth class of following character*/ BOOL *pfExpand); /* (OUT): expand object? */ #endif /* !OBJHELP_DEFINED */