#ifndef LSFETCH_DEFINED #define LSFETCH_DEFINED #include "lsdefs.h" #include "lsfrun.h" #include "lsesc.h" #include "fmtres.h" #include "plsdnode.h" #include "lstflow.h" #include "plssubl.h" #include "tabutils.h" #include "chnutils.h" #include "lsffi.h" #define InitFormattingContext(plsc, urLeft, cpLimStart) \ InitLineTabsContext((plsc)->lstabscontext,(plsc)->urRightMarginBreak, \ (cpLimStart),\ (plsc)->grpfManager & fFmiResolveTabsAsWord97);\ InitSublineChunkContext((plsc)->plslineCur->lssubl.plschunkcontext,\ urLeft, 0);\ (plsc)->lslistcontext.plsdnToFinish = NULL;\ (plsc)->lslistcontext.plssublCurrent = &((plsc)->plslineCur->lssubl);\ (plsc)->lslistcontext.plssublCurrent->cpLim = (cpLimStart);\ (plsc)->lslistcontext.plssublCurrent->urCur = (urLeft);\ (plsc)->lslistcontext.plssublCurrent->urColumnMax = (plsc)->urRightMarginBreak;\ (plsc)->lslistcontext.nDepthFormatLineCurrent = 1;\ Assert((plsc)->lslistcontext.plssublCurrent->vrCur == 0);\ Assert((plsc)->lslistcontext.plssublCurrent->plsdnLast == NULL); LSERR FetchAppendEscResumeCore( PLSC plsc, /* IN: LineServices context */ long urColumnMax, /* IN: urColumnMax */ const LSESC* plsesc, /* IN: escape characters */ DWORD clsesc, /* IN: # of escape characters */ const BREAKREC* rgbreakrec, /* IN: input array of break records */ DWORD cbreakrec, /* IN: number of records in input array */ FMTRES* pfmtres, /* OUT: result of last formatter*/ LSCP* pcpLim, /* OUT: cpLim */ PLSDNODE* pplsdnFirst, /* OUT: plsdnFirst */ PLSDNODE* pplsdnLast, /* OUT: plsdnLast */ long* pur); /* OUT: result pen position */ LSERR FetchAppendEscCore( PLSC plsc, /* IN: LineServices context */ long urColumnMax, /* IN: urColumnMax */ const LSESC* plsesc, /* IN: escape characters */ DWORD clsesc, /* IN: # of escape characters */ FMTRES* pfmtres, /* OUT: result of last formatter*/ LSCP* pcpLim, /* OUT: cpLim */ PLSDNODE* pplsdnFirst, /* OUT: plsdnFirst */ PLSDNODE* pplsdnLast, /* OUT: plsdnLast */ long* pur); /* OUT: result pen position */ LSERR QuickFormatting( PLSC plsc, /* IN: LineServices context */ LSFRUN* plsfrun, /* IN: already featched run */ long urColumnMax, /* IN: urColumnMax */ BOOL* pfGeneral, /* OUT: quick formatting was stopped: we should general formatting */ BOOL* pfHardStop, /* OUT: formatting has been stoped due to special situation, not because exceeded margin*/ LSCP* pcpLim, /* OUT: cpLim */ long* pur); /* OUT: result pen position */ LSERR ProcessOneRun( PLSC plsc, /* IN: LineServices context */ long urColumnMax, /* IN: urColumnMax */ const LSFRUN* plsfrun, /* IN: given run */ const BREAKREC* rgbreakrec, /* IN: input array of break records */ DWORD cbreakrec, /* IN: number of records in input array */ FMTRES* pfmtres); /* OUT: result of last formatter*/ LSERR CreateSublineCore( PLSC plsc, /* IN: LS context */ LSCP cpFirst, /* IN: cpFirst */ long urColumnMax, /* IN: urColumnMax */ LSTFLOW lstflow, /* IN: text flow */ BOOL); /* IN: fContiguos */ LSERR FinishSublineCore( PLSSUBL); /* IN: subline to finish */ LSERR FormatAnm( PLSC plsc, /* IN: LS context */ PLSFRUN plsfrunMainText); LSERR InitializeAutoDecTab( PLSC plsc, /* IN: LS context */ long durAutoDecimalTab); /* IN:auto decimal tab offset */ LSERR HandleTab( PLSC plsc); /* IN: LS context */ LSERR CloseCurrentBorder(PLSC plsc); /* IN: LS context */ long RightMarginIncreasing(PLSC plsc, long urColumnMax); #endif /* LSFETCH_DEFINED */