00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef FP_RUN_H
00026 #define FP_RUN_H
00027
00028 #ifdef FMT_TEST
00029 #include <stdio.h>
00030 #endif
00031
00032 #include "ut_types.h"
00033 #include "ut_misc.h"
00034 #include "pt_Types.h"
00035 #include "ut_assert.h"
00036 #include "xap_Strings.h"
00037 #include "fl_BlockLayout.h"
00038 #include "pp_Revision.h"
00039 #include "ut_string_class.h"
00040 #include "fp_ContainerObject.h"
00041
00042 class UT_GrowBuf;
00043 class fp_Line;
00044 class GR_Graphics;
00045 class GR_Font;
00046 class GR_Image;
00047 class PD_Document;
00048 class PP_AttrProp;
00049 struct dg_DrawArgs;
00050 class fl_CharWidths;
00051 class fd_Field;
00052 class fp_HyperlinkRun;
00053 class fp_AnnotationRun;
00054 class fp_RDFAnchorRun;
00055
00056 struct fp_RunSplitInfo
00057 {
00058 UT_sint32 iLeftWidth;
00059 UT_sint32 iRightWidth;
00060 UT_sint32 iOffset;
00061 };
00062
00063
00064
00065 enum FP_RUN_BREAK_TYPE
00066 {
00067 BREAK_AUTO = 0,
00068 BREAK_AVOID = 1,
00069 BREAK_ALWAYS = 2
00070 };
00071
00072 enum FP_RUN_TYPE
00073 {
00074 FPRUN__FIRST__ = 1,
00075 FPRUN_TEXT = 1,
00076 FPRUN_IMAGE = 2,
00077 FPRUN_TAB = 3,
00078 FPRUN_FORCEDLINEBREAK = 4,
00079 FPRUN_FORCEDCOLUMNBREAK = 5,
00080 FPRUN_FORCEDPAGEBREAK = 6,
00081 FPRUN_FIELD = 7,
00082 FPRUN_FMTMARK = 8,
00083 FPRUN_FIELDSTARTRUN = 9,
00084 FPRUN_FIELDENDRUN = 10,
00085 FPRUN_ENDOFPARAGRAPH = 11,
00086 FPRUN_BOOKMARK = 12,
00087 FPRUN_HYPERLINK = 13,
00088 FPRUN_DIRECTIONMARKER = 14,
00089 FPRUN_DUMMY = 15,
00090 FPRUN_MATH = 16,
00091 FPRUN_EMBED = 17,
00092 FPRUN__LAST__ = 18
00093 };
00094
00095 enum FP_HYPERLINK_TYPE
00096 {
00097 HYPERLINK_NORMAL =1,
00098 HYPERLINK_ANNOTATION = 2,
00099 HYPERLINK_RDFANCHOR = 3
00100 };
00101
00102
00103 enum FPRUN_CLEAR_SCREEN
00104 {
00105 FP_CLEARSCREEN_AUTO,
00106 FP_CLEARSCREEN_FORCE,
00107 FP_CLEARSCREEN_NEVER
00108 };
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139 class ABI_EXPORT fp_Run : fp_ContainerObject
00140 {
00141 friend class fg_FillType;
00142 public:
00143 fp_Run(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst,
00144 UT_uint32 iLen, FP_RUN_TYPE iType);
00145 virtual ~fp_Run();
00146
00147
00148
00149 FP_RUN_TYPE getType() const { return m_iType; }
00150 fp_Line* getLine() const { return m_pLine; }
00151 fl_BlockLayout* getBlock() const { return m_pBL; }
00152 UT_sint32 getX() const { return m_iX; }
00153 UT_sint32 getY() const { return m_iY; }
00154
00155 UT_sint32 getHeight() const;
00156 UT_sint32 getWidth() const;
00157 UT_uint32 getAscent() const;
00158 UT_uint32 getDescent() const;
00159 virtual UT_sint32 getDrawingWidth() const;
00160
00161 fp_Run* getNextRun() const { return m_pNext; }
00162 fp_Run* getPrevRun() const { return m_pPrev; }
00163 bool isInSelectedTOC(void);
00164 virtual fp_ContainerObject * getNext(void) const { return NULL;}
00165 virtual fp_ContainerObject * getPrev(void) const { return NULL;}
00166 virtual fp_Container * getNextContainerInSection(void) const { return NULL;}
00167 virtual fp_Container * getPrevContainerInSection(void) const { return NULL;}
00168 virtual void setNext(fp_ContainerObject * ) {}
00169 virtual void setPrev(fp_ContainerObject * ) {}
00170 virtual void draw(GR_Graphics * ) {}
00171
00172 UT_uint32 getBlockOffset() const { return m_iOffsetFirst; }
00173 UT_uint32 getLength() const { return m_iLen; }
00174 GR_Graphics* getGraphics() const;
00175 fp_HyperlinkRun * getHyperlink() const { return m_pHyperlink;}
00176 #if DEBUG
00177 virtual void printText(void) {};
00178 #endif
00179
00180 void getSpanAP(const PP_AttrProp * &pSpanAP);
00181 const PP_AttrProp * getSpanAP(void);
00182
00183
00184 inline void getBlockAP(const PP_AttrProp * &pBlockAP)
00185 {getBlock()->getAP(pBlockAP);}
00186
00187
00188 void insertIntoRunListBeforeThis(fp_Run& newRun);
00189 void insertIntoRunListAfterThis(fp_Run& newRun);
00190 fd_Field* getField(void) const { return m_pField; }
00191 bool isField(void) const { return (bool) (m_pField != NULL); }
00192 void unlinkFromRunList();
00193
00194 const UT_RGBColor getFGColor(void) const;
00195
00196 virtual bool hasLayoutProperties(void) const;
00197
00198 void setLine(fp_Line*);
00199 void setBlock(fl_BlockLayout * pBL) { _setBlock(pBL); }
00200 virtual void setX(UT_sint32 x, bool bDontClearIfNeeded = false);
00201 void Run_setX(UT_sint32, FPRUN_CLEAR_SCREEN eClearScreen = FP_CLEARSCREEN_AUTO);
00202 virtual void setY(UT_sint32);
00203 void setBlockOffset(UT_uint32);
00204 void setLength(UT_uint32 iLen, bool bRefresh = true);
00205 void setNextRun(fp_Run*, bool bRefresh = true);
00206 void setPrevRun(fp_Run*, bool bRefresh = true);
00207 void setHyperlink(fp_HyperlinkRun * pH);
00208 void markWidthDirty() {m_bRecalcWidth = true;}
00209 bool isFirstRunOnLine(void) const;
00210 bool isLastRunOnLine(void) const;
00211 bool isOnlyRunOnLine(void) const;
00212 bool isFirstVisRunOnLine(void) const;
00213 bool isLastVisRunOnLine(void) const;
00214 void markDrawBufferDirty()
00215 {m_eRefreshDrawBuffer = GRSR_Unknown;}
00216 void orDrawBufferDirty(GRShapingResult eR)
00217 {
00218 m_eRefreshDrawBuffer = (GRShapingResult)((UT_uint32)m_eRefreshDrawBuffer
00219 |(UT_uint32)eR);
00220 }
00221 bool isPrinting(void) const
00222 { return m_bPrinting;}
00223 virtual void draw(dg_DrawArgs*);
00224 virtual void clearScreen(void);
00225 void Run_ClearScreen(bool bFullLineHeightRect = false);
00226 virtual void setWidth(UT_sint32 ) {}
00227 virtual void setHeight(UT_sint32 ) {}
00228 virtual bool isVBreakable(void) {return false;}
00229 virtual bool isHBreakable(void) {return false;}
00230 virtual UT_sint32 wantVBreakAt(UT_sint32 i) {return i;}
00231 virtual UT_sint32 wantHBreakAt(UT_sint32 i) {return i;}
00232 virtual fp_ContainerObject * VBreakAt(UT_sint32) { return NULL;}
00233 virtual fp_ContainerObject * HBreakAt(UT_sint32) { return NULL;}
00234
00235 void markAsDirty(void);
00236 void setCleared(void);
00237 bool isDirty(void) const { return m_bDirty; }
00238 bool canContainPoint(void) const;
00239 bool recalcWidth(void);
00240 virtual void updateOnDelete(UT_uint32 offset, UT_uint32 iLen);
00241 virtual void updateVerticalMetric();
00242
00243 virtual UT_Option<UT_Rect> getScreenRect() const;
00244 virtual void markDirtyOverlappingRuns(const UT_Rect& recScreen);
00245
00246 virtual void _draw(dg_DrawArgs*) = 0;
00247 void _drawTextLine(UT_sint32, UT_sint32, UT_uint32, UT_uint32, UT_UCSChar *);
00248 virtual void _clearScreen(bool bFullLineHeightRect) = 0;
00249 virtual bool canBreakAfter(void) const = 0;
00250 virtual bool canBreakBefore(void) const = 0;
00251 bool letPointPass(void) const;
00252 virtual bool isForcedBreak(void) const { return false; }
00253 virtual bool alwaysFits(void) const { return false; }
00254 virtual bool findMaxLeftFitSplitPoint(UT_sint32 iMaxLeftWidth, fp_RunSplitInfo& si,
00255 bool bForce=false);
00256 void clearPrint(void);
00257 virtual UT_sint32 findTrailingSpaceDistance(void) const { return 0; }
00258 virtual bool findFirstNonBlankSplitPoint(fp_RunSplitInfo& ) { return false; }
00259 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos,
00260 PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC) = 0;
00261
00262 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y,
00263 UT_sint32& x2, UT_sint32& y2, UT_sint32& height,
00264 bool& bDirection) = 0;
00265
00266 void lookupProperties(GR_Graphics * pG=NULL);
00267 virtual bool doesContainNonBlankData(void) const { return true; }
00268 void drawDecors(UT_sint32 xoff, UT_sint32 yoff, GR_Graphics * pG);
00269 virtual bool isSuperscript(void) const { return false; }
00270 virtual bool isSubscript(void) const { return false; }
00271 bool isUnderline(void) const ;
00272 bool isOverline(void) const ;
00273 bool isStrikethrough(void) const ;
00274 bool isTopline(void) const ;
00275 bool isBottomline(void) const ;
00276 void setLinethickness(UT_sint32 max_linethickness);
00277 UT_sint32 getLinethickness(void) const;
00278 void setUnderlineXoff(UT_sint32 xoff);
00279 UT_sint32 getUnderlineXoff(void) const;
00280 void setOverlineXoff(UT_sint32 xoff) ;
00281 UT_sint32 getOverlineXoff(void) const;
00282 void setMaxUnderline(UT_sint32 xoff) ;
00283 UT_sint32 getMaxUnderline(void) const;
00284 void setMinOverline(UT_sint32 xoff) ;
00285 UT_sint32 getMinOverline(void) const;
00286 UT_sint32 getToplineThickness(void) const;
00287
00288 virtual UT_BidiCharType getDirection() const { return m_iDirection; };
00289 UT_BidiCharType getVisDirection() const;
00290 virtual void setDirection(UT_BidiCharType iDirection = UT_BIDI_WS);
00291 void setVisDirection(UT_BidiCharType iDir);
00292 UT_uint32 getVisPosition(UT_uint32 ilogPos) const;
00293 UT_uint32 getVisPosition(UT_uint32 iLogPos, UT_uint32 iLen) const;
00294 UT_uint32 getOffsetFirstVis() const;
00295 UT_uint32 getOffsetLog(UT_uint32 iVisOff) const;
00296 fp_Run * getNextVisual();
00297 fp_Run * getPrevVisual();
00298 UT_sint32 getAuthorNum(void) const
00299 { return m_iAuthorColor;};
00300 void setAuthorNum(UT_sint32 i)
00301 { m_iAuthorColor=i;};
00302
00303 virtual UT_uint32 adjustCaretPosition(UT_uint32 iDocumentPosition, bool )
00304 { return iDocumentPosition;}
00305
00306 virtual void adjustDeletePosition(UT_uint32 & ,
00307 UT_uint32 & ) {}
00308
00309 bool containsRevisions() const { return !!m_pRevisions; }
00310
00311
00312
00313 const std::unique_ptr<PP_RevisionAttr>& getRevisions() const
00314 { return m_pRevisions; }
00315 FPVisibility getVisibility() const {return m_eVisibility;}
00316 bool isHidden() const {return _wouldBeHidden(m_eVisibility);}
00317 void setVisibility(FPVisibility eVis);
00318 void Fill(GR_Graphics * pG, UT_sint32 x, UT_sint32 y,
00319 UT_sint32 width, UT_sint32 height);
00320
00321 fg_FillType & getFillType(void);
00322 const fg_FillType & getFillType(void) const;
00323 fp_Line * getTmpLine(void) const
00324 { return m_pTmpLine;}
00325 void setTmpLine(fp_Line * pLine)
00326 { m_pTmpLine = pLine;}
00327 UT_sint32 getTmpX(void) const
00328 { return m_iTmpX;}
00329 void setTmpX(UT_sint32 iX)
00330 { m_iTmpX = iX;}
00331 UT_sint32 getTmpY(void) const
00332 { return m_iTmpY;}
00333 void setTmpY(UT_sint32 iY)
00334 { m_iTmpY = iY;}
00335 UT_sint32 getTmpWidth(void) const
00336 { return m_iTmpWidth;}
00337 void setTmpWidth(UT_sint32 iWidth)
00338 { m_iTmpWidth = iWidth;}
00339 bool clearIfNeeded(void);
00340
00341
00342
00343
00344
00345
00346 bool deleteFollowingIfAtInsPoint() const;
00347
00348 bool displayAnnotations(void) const;
00349 bool displayRDFAnchors(void) const;
00350
00351 void setSelectionMode(PT_DocPosition posLow, PT_DocPosition posHigh);
00352 void clearSelectionMode(void);
00353 bool isSelectionDraw(void) const;
00354 PT_DocPosition posSelLow(void) const;
00355 PT_DocPosition posSelHigh(void) const;
00356 UT_RGBColor _getColorFG(void) const { return m_pColorFG; }
00357
00358 #ifdef FMT_TEST
00359 virtual void __dump(FILE * fp) const;
00360 #endif
00361 void setMustClearScreen(void)
00362 { m_bMustClearScreen = true;}
00363 bool getMustClearScreen(void)
00364 {return m_bMustClearScreen;}
00365
00366 protected:
00367 virtual bool _deleteFollowingIfAtInsPoint() const;
00368 void _inheritProperties(void);
00369 fp_Run* _findPrevPropertyRun(void) const;
00370
00371 FV_View* _getView(void) const { return getBlock()->getView(); }
00372
00373
00374 UT_RGBColor _getColorPG(void) const { return m_pColorPG; }
00375 UT_RGBColor _getColorHL(void) const { return m_pColorHL; }
00376 void _setColorFG(UT_RGBColor c) { m_pColorFG = c; }
00377 void _setColorHL(UT_RGBColor c) { m_pColorHL = c; }
00378 void _setColorHL(const char *pszColor)
00379 { m_pColorHL.setColor(pszColor); }
00380
00381 void _setLine(fp_Line* pLine) { m_pLine = pLine; }
00382 void _setHeight(UT_sint32 iHeight)
00383 { m_iHeight = iHeight;}
00384 virtual void _setWidth(UT_sint32 iWidth)
00385 { m_iWidth = iWidth; }
00386
00387
00388
00389
00390 UT_sint32 _getWidth() {return m_iWidth;}
00391 UT_sint32 _getHeight(){return m_iHeight;}
00392
00393 void _setBlock(fl_BlockLayout * pBL) { m_pBL = pBL; }
00394 void _setAscent(int iAscent) { m_iAscent = iAscent; }
00395 void _setDescent(int iDescent) {m_iDescent = iDescent;}
00396 void _setX(int iX) { m_iX = iX; }
00397 void _setY(int iY) { m_iY = iY; }
00398 void _setDirection(UT_BidiCharType c) { m_iDirection = c; }
00399 UT_BidiCharType _getDirection(void) const { return m_iDirection; }
00400 UT_BidiCharType _getVisDirection(void) const { return m_iVisDirection; }
00401 const GR_Font * _getFont(void) const;
00402 void _setFont(const GR_Font * f);
00403 unsigned char _getDecorations(void) const { return m_fDecorations; }
00404 void _setDecorations(unsigned char d) {m_fDecorations = d;}
00405
00406 void _orDecorations(unsigned char d) { m_fDecorations |= d; }
00407 UT_sint32 _getLineWidth(void) { return m_iLineWidth; }
00408 bool _setLineWidth(UT_sint32 w)
00409 {
00410 UT_sint32 o = m_iLineWidth;
00411 m_iLineWidth = w;
00412 return o != w;
00413 }
00414 void _setLength(UT_uint32 l) { m_iLen = l; }
00415 void _setRevisions(std::unique_ptr<PP_RevisionAttr>&& p)
00416 { m_pRevisions = std::move(p); }
00417 void _setDirty(bool b);
00418 void _setField(fd_Field * fd) { m_pField = fd; }
00419 void _setHyperlink(fp_HyperlinkRun * pH) { m_pHyperlink = pH; }
00420 bool _getRecalcWidth(void) const { return m_bRecalcWidth; }
00421 void _setRecalcWidth(bool b) { m_bRecalcWidth = b; }
00422
00423 GRShapingResult _getRefreshDrawBuffer(void) const { return m_eRefreshDrawBuffer; }
00424 void _setRefreshDrawBuffer(GRShapingResult eR)
00425 { m_eRefreshDrawBuffer = eR; }
00426 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00427 const PP_AttrProp * pBlockAP,
00428 const PP_AttrProp * pSectionAP,
00429 GR_Graphics * pG = NULL) = 0;
00430
00431 virtual bool _canContainPoint(void) const;
00432 virtual bool _letPointPass(void) const;
00433 virtual bool _recalcWidth(void);
00434 bool _wouldBeHidden(FPVisibility eVis) const;
00435
00436
00437
00438 enum
00439 {
00440 TEXT_DECOR_UNDERLINE = 0x01,
00441 TEXT_DECOR_OVERLINE = 0x02,
00442 TEXT_DECOR_LINETHROUGH = 0x04,
00443 TEXT_DECOR_TOPLINE = 0x08,
00444 TEXT_DECOR_BOTTOMLINE = 0x10
00445 };
00446
00447 private:
00448 fp_Run(const fp_Run&);
00449 void operator=(const fp_Run&);
00450
00451 FP_RUN_TYPE m_iType;
00452 fp_Line* m_pLine;
00453 fl_BlockLayout* m_pBL;
00454 fp_Run* m_pNext;
00455 fp_Run* m_pPrev;
00456 UT_sint32 m_iX;
00457 UT_sint32 m_iOldX;
00458 UT_sint32 m_iY;
00459 UT_sint32 m_iWidth;
00460 UT_sint32 m_iHeight;
00461 UT_uint32 m_iAscent;
00462 UT_uint32 m_iDescent;
00463
00464 UT_uint32 m_iOffsetFirst;
00465 UT_uint32 m_iLen;
00466 bool m_bDirty;
00467 fd_Field* m_pField;
00468 UT_BidiCharType m_iDirection;
00469 UT_BidiCharType m_iVisDirection;
00470 GRShapingResult m_eRefreshDrawBuffer;
00471
00472
00473 UT_RGBColor m_pColorHL;
00474
00475 const GR_Font * m_pFont;
00476
00477 bool m_bRecalcWidth;
00478
00479 unsigned char m_fDecorations;
00480 UT_sint32 m_iLineWidth;
00481 UT_sint32 m_iLinethickness;
00482 UT_sint32 m_iUnderlineXoff;
00483 UT_sint32 m_imaxUnderline;
00484 UT_sint32 m_iminOverline;
00485 UT_sint32 m_iOverlineXoff;
00486 fp_HyperlinkRun * m_pHyperlink;
00487 std::unique_ptr<PP_RevisionAttr> m_pRevisions;
00488
00489
00490 UT_RGBColor m_pColorPG;
00491 UT_RGBColor m_pColorFG;
00492 FPVisibility m_eVisibility;
00493 bool m_bIsCleared;
00494 fg_FillType m_FillType;
00495 bool m_bPrinting;
00496 UT_sint32 m_iTmpX;
00497 UT_sint32 m_iTmpY;
00498 UT_sint32 m_iTmpWidth;
00499 fp_Line * m_pTmpLine;
00500
00501
00502 bool m_bDrawSelection;
00503 PT_DocPosition m_iSelLow;
00504 PT_DocPosition m_iSelHigh;
00505 bool m_bMustClearScreen;
00506 UT_sint32 m_iAuthorColor;
00507 #ifdef DEBUG
00508 UT_uint32 m_iFontAllocNo;
00509 #endif
00510 };
00511
00512 class ABI_EXPORT fp_TabRun : public fp_Run
00513 {
00514 public:
00515 fp_TabRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00516 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00517 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00518 virtual bool canBreakAfter(void) const;
00519 virtual bool canBreakBefore(void) const;
00520 virtual bool hasLayoutProperties(void) const;
00521 void setTabWidth(UT_sint32);
00522 void setLeader(eTabLeader iTabType);
00523 eTabLeader getLeader(void);
00524 void setTabType(eTabType iTabType);
00525 eTabType getTabType(void) const;
00526 bool isTOCTab(void);
00527 void setTOCTab(void)
00528 { m_bIsTOC = true;}
00529 void setTOCTabListLabel(void);
00530 bool isTOCTabListLabel(void) const
00531 { return m_bIsTOCListLabel;}
00532
00533 protected:
00534 virtual void _drawArrow(UT_uint32 iLeft,UT_uint32 iTop,UT_uint32 iWidth, UT_uint32 iHeight);
00535 virtual void _draw(dg_DrawArgs*);
00536 virtual void _clearScreen(bool bFullLineHeightRect);
00537 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00538 const PP_AttrProp * pBlockAP,
00539 const PP_AttrProp * pSectionAP,
00540 GR_Graphics * pG = NULL);
00541
00542 virtual bool _letPointPass(void) const;
00543
00544 private:
00545
00546 private:
00547 eTabLeader m_leader;
00548 eTabType m_TabType;
00549 bool m_bIsTOC;
00550 bool m_bIsTOCListLabel;
00551 };
00552
00553 class ABI_EXPORT fp_ForcedLineBreakRun : public fp_Run
00554 {
00555 public:
00556 fp_ForcedLineBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00557 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00558 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00559 virtual bool canBreakAfter(void) const;
00560 virtual bool canBreakBefore(void) const;
00561 virtual bool isForcedBreak(void) const { return true; }
00562 protected:
00563 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00564 const PP_AttrProp * pBlockAP,
00565 const PP_AttrProp * pSectionAP,
00566 GR_Graphics * pG = NULL);
00567
00568 virtual void _draw(dg_DrawArgs*);
00569 virtual void _clearScreen(bool bFullLineHeightRect);
00570 virtual bool _letPointPass(void) const;
00571 };
00572
00573 class ABI_EXPORT fp_FieldStartRun : public fp_Run
00574 {
00575 public:
00576 fp_FieldStartRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00577 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00578 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00579 virtual bool canBreakAfter(void) const;
00580 virtual bool canBreakBefore(void) const;
00581 virtual bool isForcedBreak(void) const { return true; }
00582 protected:
00583 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00584 const PP_AttrProp * pBlockAP,
00585 const PP_AttrProp * pSectionAP,
00586 GR_Graphics * pG = NULL);
00587
00588 virtual void _draw(dg_DrawArgs*);
00589 virtual void _clearScreen(bool bFullLineHeightRect);
00590 virtual bool _letPointPass(void) const;
00591 };
00592
00593 class ABI_EXPORT fp_FieldEndRun : public fp_Run
00594 {
00595 public:
00596 fp_FieldEndRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00597 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00598 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00599 virtual bool canBreakAfter(void) const;
00600 virtual bool canBreakBefore(void) const;
00601 virtual bool isForcedBreak(void) const { return true; }
00602 protected:
00603 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00604 const PP_AttrProp * pBlockAP,
00605 const PP_AttrProp * pSectionAP,
00606 GR_Graphics * pG = NULL);
00607
00608 virtual void _draw(dg_DrawArgs*);
00609 virtual void _clearScreen(bool bFullLineHeightRect);
00610 virtual bool _letPointPass(void) const;
00611 };
00612
00613 class ABI_EXPORT fp_ForcedColumnBreakRun : public fp_Run
00614 {
00615 public:
00616 fp_ForcedColumnBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00617
00618 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00619 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00620 virtual bool canBreakAfter(void) const;
00621 virtual bool canBreakBefore(void) const;
00622 virtual bool isForcedBreak(void) const { return true; }
00623 protected:
00624 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00625 const PP_AttrProp * pBlockAP,
00626 const PP_AttrProp * pSectionAP,
00627 GR_Graphics * pG = NULL);
00628
00629 virtual void _draw(dg_DrawArgs*);
00630 virtual void _clearScreen(bool bFullLineHeightRect);
00631 virtual bool _letPointPass(void) const;
00632 };
00633
00634 class ABI_EXPORT fp_ForcedPageBreakRun : public fp_Run
00635 {
00636 public:
00637 fp_ForcedPageBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00638 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00639 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00640 virtual bool canBreakAfter(void) const;
00641 virtual bool canBreakBefore(void) const;
00642 virtual bool isForcedBreak(void) const { return true; }
00643
00644 protected:
00645 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00646 const PP_AttrProp * pBlockAP,
00647 const PP_AttrProp * pSectionAP,
00648 GR_Graphics * pG = NULL);
00649
00650 virtual void _draw(dg_DrawArgs*);
00651 virtual void _clearScreen(bool bFullLineHeightRect);
00652 virtual bool _letPointPass(void) const;
00653 };
00654
00655 class ABI_EXPORT fp_EndOfParagraphRun : public fp_Run
00656 {
00657 public:
00658 fp_EndOfParagraphRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00659
00660 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isToc);
00661 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00662 virtual bool canBreakAfter(void) const;
00663 virtual bool canBreakBefore(void) const;
00664 virtual UT_sint32 getDrawingWidth() const { return static_cast<UT_sint32>(m_iDrawWidth);}
00665
00666
00667
00668
00669
00670 protected:
00671 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00672 const PP_AttrProp * pBlockAP,
00673 const PP_AttrProp * pSectionAP,
00674 GR_Graphics * pG = NULL);
00675
00676 virtual void _draw(dg_DrawArgs*);
00677 virtual void _clearScreen(bool bFullLineHeightRect);
00678 virtual bool _letPointPass(void) const;
00679 virtual bool _recalcWidth(void);
00680
00681 private:
00682 UT_uint32 m_iXoffText;
00683 UT_uint32 m_iYoffText;
00684 UT_uint32 m_iDrawWidth;
00685
00686 };
00687
00688 class ABI_EXPORT fp_BookmarkRun : public fp_Run
00689 {
00690 public:
00691 fp_BookmarkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00692
00693 bool isStartOfBookmark() const {return m_bIsStart;};
00694 const gchar * getName() const {return m_pName;};
00695 bool isComrade(fp_BookmarkRun *pBR) const;
00696
00697 virtual bool canBreakAfter(void) const;
00698 virtual bool canBreakBefore(void) const;
00699
00700 virtual void mapXYToPosition(UT_sint32 x,
00701 UT_sint32 y,
00702 PT_DocPosition& pos,
00703 bool& bBOL,
00704 bool& bEOL,
00705 bool & isTOC);
00706
00707 virtual void findPointCoords(UT_uint32 iOffset,
00708 UT_sint32& x,
00709 UT_sint32& y,
00710 UT_sint32& x2,
00711 UT_sint32& y2,
00712 UT_sint32& height,
00713 bool& bDirection);
00714 virtual bool hasLayoutProperties(void) const
00715 { return false; }
00716
00717
00718 virtual bool doesContainNonBlankData(void) const { return false; }
00719
00720 UT_uint32 getBookmarkedDocPosition(bool bAfter) const;
00721
00722
00723 private:
00724 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00725 const PP_AttrProp * pBlockAP,
00726 const PP_AttrProp * pSectionAP,
00727 GR_Graphics * pG = NULL);
00728
00729 virtual void _clearScreen(bool );
00730 virtual void _draw(dg_DrawArgs* );
00731 virtual bool _letPointPass(void) const;
00732 virtual bool _canContainPoint(void) const;
00733 virtual bool _deleteFollowingIfAtInsPoint() const;
00734
00735 bool m_bIsStart;
00736 #define BOOKMARK_NAME_SIZE 30
00737 gchar m_pName[BOOKMARK_NAME_SIZE + 1];
00738 po_Bookmark * m_pBookmark;
00739 };
00740
00741 class ABI_EXPORT fp_HyperlinkRun : public fp_Run
00742 {
00743 public:
00744 fp_HyperlinkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00745 virtual ~fp_HyperlinkRun();
00746 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_NORMAL;}
00747 bool isStartOfHyperlink() const {return m_bIsStart;};
00748 const gchar * getTarget() const {return static_cast<const gchar *>(m_pTarget);};
00749 const gchar * getTitle() const {return static_cast<const gchar *>(m_pTitle);};
00750
00751 virtual bool canBreakAfter(void) const;
00752 virtual bool canBreakBefore(void) const;
00753
00754 virtual void mapXYToPosition(UT_sint32 x,
00755 UT_sint32 y,
00756 PT_DocPosition& pos,
00757 bool& bBOL,
00758 bool& bEOL,
00759 bool &isTOC);
00760
00761 virtual void findPointCoords(UT_uint32 iOffset,
00762 UT_sint32& x,
00763 UT_sint32& y,
00764 UT_sint32& x2,
00765 UT_sint32& y2,
00766 UT_sint32& height,
00767 bool& bDirection);
00768
00769 virtual bool hasLayoutProperties(void) const
00770 { return false; }
00771
00772
00773 virtual bool doesContainNonBlankData(void) const { return false; }
00774
00775 protected:
00776 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00777 const PP_AttrProp * pBlockAP,
00778 const PP_AttrProp * pSectionAP,
00779 GR_Graphics * pG = NULL);
00780
00781 virtual void _clearScreen(bool );
00782 virtual void _draw(dg_DrawArgs* );
00783 virtual bool _letPointPass(void) const;
00784 virtual bool _canContainPoint(void) const;
00785 virtual bool _deleteFollowingIfAtInsPoint() const;
00786 void _setTarget( const gchar * pTarget );
00787 void _setTitle( const gchar * pTitle );
00788 void _setTargetFromAPAttribute( const gchar* pAttrName );
00789 void _setTitleFromAPAttribute( const gchar* pAttrName );
00790 bool m_bIsStart;
00791 gchar * m_pTarget;
00792 gchar * m_pTitle;
00793 };
00794
00795
00796
00797 class ABI_EXPORT fp_AnnotationRun : public fp_HyperlinkRun
00798 {
00799 public:
00800 fp_AnnotationRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00801 virtual ~fp_AnnotationRun();
00802 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_ANNOTATION; }
00803 UT_uint32 getPID(void) { return m_iPID;}
00804 const char * getValue(void);
00805 void recalcValue(void);
00806 virtual bool canBreakAfter(void) const;
00807 virtual bool canBreakBefore(void) const;
00808 UT_sint32 getRealWidth(void) const {return m_iRealWidth;}
00809 void cleanDraw(dg_DrawArgs*);
00810 UT_sint32 calcWidth(void);
00811
00812 protected:
00813 virtual void _draw(dg_DrawArgs*);
00814 virtual void _clearScreen(bool bFullLineHeightRect);
00815 virtual bool _recalcWidth(void);
00816 bool _setValue(void);
00817 virtual void _setWidth(UT_sint32 iWidth);
00818 virtual bool _letPointPass(void) const;
00819 virtual bool _canContainPoint(void) const;
00820 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00821 const PP_AttrProp * pBlockAP,
00822 const PP_AttrProp * pSectionAP,
00823 GR_Graphics * pG);
00824 private:
00825 UT_uint32 m_iPID;
00826 UT_UTF8String m_sValue;
00827 UT_sint32 m_iRealWidth;
00828 };
00829
00830 class ABI_EXPORT fp_RDFAnchorRun : public fp_HyperlinkRun
00831 {
00832 public:
00833 fp_RDFAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00834 virtual ~fp_RDFAnchorRun();
00835 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_RDFANCHOR; }
00836 UT_uint32 getPID(void) { return m_iPID;}
00837 const char * getValue(void);
00838 void recalcValue(void);
00839 virtual bool canBreakAfter(void) const;
00840 virtual bool canBreakBefore(void) const;
00841 UT_sint32 getRealWidth(void) const {return m_iRealWidth;}
00842 void cleanDraw(dg_DrawArgs*);
00843 UT_sint32 calcWidth(void);
00844
00845 std::string getXMLID();
00846
00847 protected:
00848 virtual void _draw(dg_DrawArgs*);
00849 virtual void _clearScreen(bool bFullLineHeightRect);
00850 virtual bool _recalcWidth(void);
00851 bool _setValue(void);
00852 virtual void _setWidth(UT_sint32 iWidth);
00853 virtual bool _letPointPass(void) const;
00854 virtual bool _canContainPoint(void) const;
00855 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00856 const PP_AttrProp * pBlockAP,
00857 const PP_AttrProp * pSectionAP,
00858 GR_Graphics * pG);
00859 private:
00860 UT_uint32 m_iPID;
00861 UT_UTF8String m_sValue;
00862 UT_sint32 m_iRealWidth;
00863 };
00864
00865 class ABI_EXPORT fp_ImageRun : public fp_Run
00866 {
00867 public:
00868 fp_ImageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen, FG_GraphicPtr && pGraphic, pf_Frag_Object* oh);
00869 virtual ~fp_ImageRun();
00870
00871 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00872 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00873 virtual bool canBreakAfter(void) const;
00874 virtual bool canBreakBefore(void) const;
00875 const char * getDataId(void) const;
00876 virtual bool hasLayoutProperties(void) const;
00877 virtual GR_Image * getImage();
00878 void regenerateImage(GR_Graphics * pG);
00879 UT_sint32 getPointHeight(void)
00880 { return m_iPointHeight;}
00881 protected:
00882 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00883 const PP_AttrProp * pBlockAP,
00884 const PP_AttrProp * pSectionAP,
00885 GR_Graphics * pG = NULL);
00886
00887 virtual void _draw(dg_DrawArgs*);
00888 virtual void _clearScreen(bool bFullLineHeightRect);
00889 virtual bool _letPointPass(void) const;
00890
00891 private:
00892 FG_GraphicPtr m_pFGraphic;
00893 GR_Image* m_pImage;
00894 UT_sint32 m_iImageWidth;
00895 UT_sint32 m_iImageHeight;
00896 UT_String m_sCachedWidthProp;
00897 UT_String m_sCachedHeightProp;
00898 UT_sint32 m_iPointHeight;
00899 const PP_AttrProp * m_pSpanAP;
00900 UT_uint32 m_iGraphicTick;
00901 bool m_bImageForPrinter;
00902 pf_Frag_Object* m_OH;
00903 };
00904
00905 #define FPFIELD_MAX_LENGTH 127
00906
00907 #define _FIELD(type,desc,tag)
00908 #define _FIELDTYPE(type,desc) FPFIELDTYPE_##type,
00909
00910 enum fp_FieldTypesEnum { FPFIELDTYPE_START,
00911
00912 #include "fp_Fields.h"
00913
00914 FPFIELDTYPE_END };
00915
00916 #undef _FIELD
00917 #undef _FIELDTYPE
00918
00919 #define _FIELD(type,desc,tag) FPFIELD_##tag,
00920 #define _FIELDTYPE(type,desc)
00921
00922 enum fp_FieldsEnum { FPFIELD_start,
00923
00924 #include "fp_Fields.h"
00925
00926 FPFIELD_end };
00927
00928 #undef _FIELD
00929 #undef _FIELDTYPE
00930
00931
00932 struct fp_FieldTypeData
00933 {
00934 fp_FieldTypesEnum m_Type;
00935 const char* m_Desc;
00936 XAP_String_Id m_DescId;
00937 };
00938
00939 struct fp_FieldData
00940 {
00941 fp_FieldTypesEnum m_Type;
00942 fp_FieldsEnum m_Num;
00943 const char* m_Desc;
00944 const char* m_Tag;
00945 XAP_String_Id m_DescId;
00946 };
00947
00948
00949 extern fp_FieldTypeData fp_FieldTypes[];
00950 extern fp_FieldData fp_FieldFmts[];
00951
00952
00953
00954
00955
00956 #define FIELD_UPDATE_ENDNOTE 3
00957 #define FIELD_UPDATE_TIME 1
00958 #define FIELD_UPDATE_DATE 240
00959 #define FIELD_UPDATE_PAGE 20
00960 #define FIELD_UPDATE_LINE_COUNT 10
00961 #define FIELD_UPDATE_WORD_COUNT 4
00962 #define FIELD_UPDATE_PARA_COUNT 20
00963 #define FIELD_UPDATE_META 10
00964 #define FIELD_UPDATE_MAILMERGE 10
00965
00966 class ABI_EXPORT fp_FieldRun : public fp_Run
00967 {
00968 public:
00969 fp_FieldRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00970 virtual ~fp_FieldRun();
00971
00972 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isTOC);
00973 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00974 virtual bool canBreakAfter(void) const;
00975 virtual fp_FieldsEnum getFieldType(void) const;
00976 virtual bool canBreakBefore(void) const;
00977 virtual bool hasLayoutProperties(void) const;
00978
00979 virtual bool isSuperscript(void) const;
00980 virtual bool isSubscript(void) const;
00981
00982 bool _setValue(const UT_UCSChar *p_new_value);
00983
00984 virtual bool calculateValue(void);
00985 virtual const UT_UCSChar * getValue(void) const { return reinterpret_cast<const UT_UCS4Char *>(m_sFieldValue);}
00986 virtual UT_uint32 needsFrequentUpdates() {return 0;}
00987
00988 protected:
00989 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00990 const PP_AttrProp * pBlockAP,
00991 const PP_AttrProp * pSectionAP,
00992 GR_Graphics * pG = NULL);
00993
00994 virtual void _draw(dg_DrawArgs*) {};
00995 virtual void _defaultDraw(dg_DrawArgs*);
00996 virtual void _clearScreen(bool bFullLineHeightRect);
00997 const gchar * _getParameter() const { return m_pParameter; }
00998 virtual bool _letPointPass(void) const;
00999 virtual bool _recalcWidth(void);
01000
01001 private:
01002
01003
01004 UT_RGBColor m_colorBG;
01005 UT_UCS4Char m_sFieldValue[FPFIELD_MAX_LENGTH];
01006 fp_FieldsEnum m_iFieldType;
01007 const gchar * m_pParameter;
01008 enum
01009 {
01010 TEXT_POSITION_NORMAL,
01011 TEXT_POSITION_SUPERSCRIPT,
01012 TEXT_POSITION_SUBSCRIPT
01013 };
01014 UT_Byte m_fPosition;
01015 };
01016
01017
01018 class ABI_EXPORT fp_FieldEndnoteRefRun : public fp_FieldRun
01019 {
01020 public:
01021
01022 fp_FieldEndnoteRefRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01023
01024 virtual ~fp_FieldEndnoteRefRun(){}
01025
01026 virtual bool calculateValue(void);
01027 virtual bool canBreakBefore(void) const;
01028 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01029 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01030 UT_uint32 getPID() const {return m_iPID;}
01031
01032 private:
01033 UT_uint32 m_iPID;
01034 };
01035
01036
01037 class ABI_EXPORT fp_FieldEndnoteAnchorRun : public fp_FieldRun
01038 {
01039 public:
01040
01041 fp_FieldEndnoteAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01042
01043 virtual ~fp_FieldEndnoteAnchorRun() {}
01044
01045 virtual bool calculateValue(void);
01046 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01047 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01048 UT_uint32 getPID() const {return m_iPID;}
01049
01050 private:
01051 UT_uint32 m_iPID;
01052 };
01053
01054 class ABI_EXPORT fp_FieldFootnoteRefRun : public fp_FieldRun
01055 {
01056 public:
01057
01058 fp_FieldFootnoteRefRun(fl_BlockLayout* pBL,UT_uint32 iOffsetFirst, UT_uint32 iLen);
01059
01060 virtual ~fp_FieldFootnoteRefRun(){}
01061
01062 virtual bool calculateValue(void);
01063 virtual bool canBreakBefore(void) const;
01064 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01065 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01066 UT_uint32 getPID() const {return m_iPID;}
01067
01068 private:
01069 UT_uint32 m_iPID;
01070 };
01071
01072 class ABI_EXPORT fp_FieldFootnoteAnchorRun : public fp_FieldRun
01073 {
01074 public:
01075
01076 fp_FieldFootnoteAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01077
01078 virtual ~fp_FieldFootnoteAnchorRun() {}
01079
01080 virtual bool calculateValue(void);
01081 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01082 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01083 UT_uint32 getPID() const {return m_iPID;}
01084
01085 private:
01086 UT_uint32 m_iPID;
01087 };
01088
01089 class ABI_EXPORT fp_FieldTimeRun : public fp_FieldRun
01090 {
01091 public:
01092
01093 fp_FieldTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01094
01095 virtual ~fp_FieldTimeRun(){}
01096
01097 virtual bool calculateValue(void);
01098 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01099 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01100 };
01101
01102 class ABI_EXPORT fp_FieldPageNumberRun : public fp_FieldRun
01103 {
01104 public:
01105
01106 fp_FieldPageNumberRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01107
01108 virtual ~fp_FieldPageNumberRun() {}
01109
01110 virtual bool calculateValue(void);
01111 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01112 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01113 };
01114
01115 class ABI_EXPORT fp_FieldPageReferenceRun : public fp_FieldRun
01116 {
01117 public:
01118
01119 fp_FieldPageReferenceRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01120
01121 virtual ~fp_FieldPageReferenceRun() {}
01122
01123 virtual bool calculateValue(void);
01124 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01125 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01126 };
01127
01128 class ABI_EXPORT fp_FieldPageCountRun : public fp_FieldRun
01129 {
01130 public:
01131
01132 fp_FieldPageCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01133
01134 virtual ~fp_FieldPageCountRun() {}
01135
01136 virtual bool calculateValue(void);
01137 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01138 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01139 };
01140
01141 class ABI_EXPORT fp_FieldDateRun : public fp_FieldRun
01142 {
01143 public:
01144 fp_FieldDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01145
01146 virtual ~fp_FieldDateRun() {}
01147
01148 virtual bool calculateValue(void);
01149 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01150 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01151 };
01152
01153
01154 class ABI_EXPORT fp_FieldFileNameRun : public fp_FieldRun
01155 {
01156 public:
01157 fp_FieldFileNameRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01158
01159 virtual ~fp_FieldFileNameRun() {}
01160
01161 virtual bool calculateValue(void);
01162 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01163 };
01164
01165 class ABI_EXPORT fp_FieldShortFileNameRun : public fp_FieldRun
01166 {
01167 public:
01168 fp_FieldShortFileNameRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01169
01170 virtual ~fp_FieldShortFileNameRun() {}
01171
01172 virtual bool calculateValue(void);
01173 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01174 };
01175
01176
01177
01178
01179
01180
01181
01182 class ABI_EXPORT fp_FieldCharCountRun : public fp_FieldRun
01183 {
01184 public:
01185 fp_FieldCharCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01186
01187 virtual ~fp_FieldCharCountRun() {}
01188
01189 virtual bool calculateValue(void);
01190 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01191 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01192 };
01193
01194
01195
01196 class ABI_EXPORT fp_FieldNonBlankCharCountRun : public fp_FieldRun
01197 {
01198 public:
01199 fp_FieldNonBlankCharCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01200
01201 virtual ~fp_FieldNonBlankCharCountRun(){}
01202
01203 virtual bool calculateValue(void);
01204 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01205 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01206 };
01207
01208
01209 class ABI_EXPORT fp_FieldLineCountRun : public fp_FieldRun
01210 {
01211 public:
01212 fp_FieldLineCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01213
01214 virtual ~fp_FieldLineCountRun(){}
01215
01216 virtual bool calculateValue(void);
01217 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01218 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_LINE_COUNT;};
01219 };
01220
01221
01222
01223 class ABI_EXPORT fp_FieldTableSumRows : public fp_FieldRun
01224 {
01225 public:
01226 fp_FieldTableSumRows(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01227
01228 virtual ~fp_FieldTableSumRows(){}
01229
01230 virtual bool calculateValue(void);
01231 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01232 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01233 };
01234
01235
01236
01237 class ABI_EXPORT fp_FieldTableSumCols : public fp_FieldRun
01238 {
01239 public:
01240 fp_FieldTableSumCols(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01241
01242 virtual ~fp_FieldTableSumCols(){}
01243
01244 virtual bool calculateValue(void);
01245 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01246 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01247 };
01248
01249
01250 class ABI_EXPORT fp_FieldParaCountRun : public fp_FieldRun
01251 {
01252 public:
01253 fp_FieldParaCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01254
01255 virtual ~fp_FieldParaCountRun(){}
01256
01257 virtual bool calculateValue(void);
01258 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01259 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PARA_COUNT;};
01260 };
01261
01262
01263 class ABI_EXPORT fp_FieldWordCountRun : public fp_FieldRun
01264 {
01265 public:
01266 fp_FieldWordCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01267
01268 virtual ~fp_FieldWordCountRun(){}
01269
01270 virtual bool calculateValue(void);
01271 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01272 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01273 };
01274
01275
01276
01277
01278
01279 class ABI_EXPORT fp_FieldMMDDYYRun : public fp_FieldRun
01280 {
01281 public:
01282 fp_FieldMMDDYYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01283
01284 virtual ~fp_FieldMMDDYYRun(){}
01285
01286 virtual bool calculateValue(void);
01287 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01288 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01289 };
01290
01291
01292 class ABI_EXPORT fp_FieldDDMMYYRun : public fp_FieldRun
01293 {
01294 public:
01295 fp_FieldDDMMYYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01296
01297 virtual ~fp_FieldDDMMYYRun(){}
01298
01299 virtual bool calculateValue(void);
01300 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01301 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01302 };
01303
01304
01305 class ABI_EXPORT fp_FieldMonthDayYearRun : public fp_FieldRun
01306 {
01307 public:
01308 fp_FieldMonthDayYearRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01309
01310 virtual ~fp_FieldMonthDayYearRun(){}
01311
01312 virtual bool calculateValue(void);
01313 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01314 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01315 };
01316
01317
01318 class ABI_EXPORT fp_FieldMthDayYearRun : public fp_FieldRun
01319 {
01320 public:
01321 fp_FieldMthDayYearRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01322
01323 virtual ~fp_FieldMthDayYearRun (){}
01324
01325 virtual bool calculateValue(void);
01326 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01327 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01328 };
01329
01330
01331 class ABI_EXPORT fp_FieldDefaultDateRun : public fp_FieldRun
01332 {
01333 public:
01334 fp_FieldDefaultDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01335
01336 virtual ~fp_FieldDefaultDateRun(){}
01337
01338 virtual bool calculateValue(void);
01339 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01340 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01341 };
01342
01343
01344 class ABI_EXPORT fp_FieldDefaultDateNoTimeRun : public fp_FieldRun
01345 {
01346 public:
01347 fp_FieldDefaultDateNoTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01348
01349 virtual ~fp_FieldDefaultDateNoTimeRun(){}
01350
01351 virtual bool calculateValue(void);
01352 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01353 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01354 };
01355
01356
01357 class ABI_EXPORT fp_FieldWkdayRun : public fp_FieldRun
01358 {
01359 public:
01360 fp_FieldWkdayRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01361
01362 virtual ~fp_FieldWkdayRun(){}
01363
01364 virtual bool calculateValue(void);
01365 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01366 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01367 };
01368
01369
01370 class ABI_EXPORT fp_FieldDOYRun : public fp_FieldRun
01371 {
01372 public:
01373 fp_FieldDOYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01374
01375 virtual ~fp_FieldDOYRun(){}
01376
01377 virtual bool calculateValue(void);
01378 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01379 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01380 };
01381
01382
01383 class ABI_EXPORT fp_FieldMilTimeRun : public fp_FieldRun
01384 {
01385 public:
01386 fp_FieldMilTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01387
01388 virtual ~fp_FieldMilTimeRun(){}
01389
01390 virtual bool calculateValue(void);
01391 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01392 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01393 };
01394
01395
01396 class ABI_EXPORT fp_FieldAMPMRun : public fp_FieldRun
01397 {
01398 public:
01399 fp_FieldAMPMRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01400
01401 virtual ~fp_FieldAMPMRun(){}
01402
01403 virtual bool calculateValue(void);
01404 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01405 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01406 };
01407
01408
01409 class ABI_EXPORT fp_FieldTimeEpochRun : public fp_FieldRun
01410 {
01411 public:
01412 fp_FieldTimeEpochRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01413
01414 virtual ~fp_FieldTimeEpochRun(){}
01415
01416 virtual bool calculateValue(void);
01417 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01418 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01419 };
01420
01421 class ABI_EXPORT fp_FieldDateTimeCustomRun : public fp_FieldRun
01422 {
01423 public:
01424 fp_FieldDateTimeCustomRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01425
01426 virtual ~fp_FieldDateTimeCustomRun(){}
01427
01428 virtual bool calculateValue(void);
01429 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01430 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01431 };
01432
01433
01434 class ABI_EXPORT fp_FieldTimeZoneRun : public fp_FieldRun
01435 {
01436 public:
01437 fp_FieldTimeZoneRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01438
01439 virtual ~fp_FieldTimeZoneRun(){}
01440
01441 virtual bool calculateValue(void);
01442 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01443 };
01444
01445
01446
01447
01448 class ABI_EXPORT fp_FieldBuildIdRun : public fp_FieldRun
01449 {
01450 public:
01451 fp_FieldBuildIdRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01452
01453 virtual ~fp_FieldBuildIdRun(){}
01454
01455 virtual bool calculateValue(void);
01456 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01457 };
01458
01459
01460 class ABI_EXPORT fp_FieldBuildVersionRun : public fp_FieldRun
01461 {
01462 public:
01463 fp_FieldBuildVersionRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01464
01465 virtual ~fp_FieldBuildVersionRun(){}
01466
01467 virtual bool calculateValue(void);
01468 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01469 };
01470
01471 class ABI_EXPORT fp_FieldBuildOptionsRun : public fp_FieldRun
01472 {
01473 public:
01474 fp_FieldBuildOptionsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01475
01476 virtual ~fp_FieldBuildOptionsRun(){}
01477
01478 virtual bool calculateValue(void);
01479 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01480 };
01481
01482 class ABI_EXPORT fp_FieldBuildTargetRun : public fp_FieldRun
01483 {
01484 public:
01485 fp_FieldBuildTargetRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01486
01487 virtual ~fp_FieldBuildTargetRun(){}
01488
01489 virtual bool calculateValue(void);
01490 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01491 };
01492
01493 class ABI_EXPORT fp_FieldBuildCompileDateRun : public fp_FieldRun
01494 {
01495 public:
01496 fp_FieldBuildCompileDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01497
01498 virtual ~fp_FieldBuildCompileDateRun (){}
01499
01500 virtual bool calculateValue(void);
01501 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01502 };
01503
01504 class ABI_EXPORT fp_FieldBuildCompileTimeRun : public fp_FieldRun
01505 {
01506 public:
01507 fp_FieldBuildCompileTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01508
01509 virtual ~fp_FieldBuildCompileTimeRun(){}
01510
01511 virtual bool calculateValue(void);
01512 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01513 };
01514
01515 class ABI_EXPORT fp_FieldMailMergeRun : public fp_FieldRun
01516 {
01517 public:
01518 fp_FieldMailMergeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01519
01520 virtual ~fp_FieldMailMergeRun(){}
01521
01522 virtual bool calculateValue(void);
01523 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01524
01525 virtual UT_uint32 needsFrequentUpdates(){ return FIELD_UPDATE_MAILMERGE; }
01526 };
01527
01528 class ABI_EXPORT fp_FieldMetaRun : public fp_FieldRun
01529 {
01530 public:
01531 fp_FieldMetaRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen, const char * which);
01532
01533 virtual ~fp_FieldMetaRun(){}
01534
01535 virtual bool calculateValue(void);
01536 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01537
01538 virtual UT_uint32 needsFrequentUpdates(){ return FIELD_UPDATE_META;}
01539
01540 private:
01541 std::string m_which;
01542 };
01543
01544 class ABI_EXPORT fp_FieldMetaTitleRun : public fp_FieldMetaRun
01545 {
01546 public:
01547 fp_FieldMetaTitleRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01548 virtual ~fp_FieldMetaTitleRun(){}
01549 };
01550
01551 class ABI_EXPORT fp_FieldMetaCreatorRun : public fp_FieldMetaRun
01552 {
01553 public:
01554 fp_FieldMetaCreatorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01555 virtual ~fp_FieldMetaCreatorRun(){}
01556 };
01557
01558 class ABI_EXPORT fp_FieldMetaSubjectRun : public fp_FieldMetaRun
01559 {
01560 public:
01561 fp_FieldMetaSubjectRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01562 virtual ~fp_FieldMetaSubjectRun(){}
01563 };
01564
01565 class ABI_EXPORT fp_FieldMetaPublisherRun : public fp_FieldMetaRun
01566 {
01567 public:
01568 fp_FieldMetaPublisherRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01569 virtual ~fp_FieldMetaPublisherRun(){}
01570 };
01571
01572 class ABI_EXPORT fp_FieldMetaDateRun : public fp_FieldMetaRun
01573 {
01574 public:
01575 fp_FieldMetaDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01576 virtual ~fp_FieldMetaDateRun(){}
01577 };
01578
01579 class ABI_EXPORT fp_FieldMetaDateLastChangedRun : public fp_FieldMetaRun
01580 {
01581 public:
01582 fp_FieldMetaDateLastChangedRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01583 virtual ~fp_FieldMetaDateLastChangedRun(){}
01584 };
01585
01586 class ABI_EXPORT fp_FieldMetaTypeRun : public fp_FieldMetaRun
01587 {
01588 public:
01589 fp_FieldMetaTypeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01590 virtual ~fp_FieldMetaTypeRun(){}
01591 };
01592
01593 class ABI_EXPORT fp_FieldMetaLanguageRun : public fp_FieldMetaRun
01594 {
01595 public:
01596 fp_FieldMetaLanguageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01597 virtual ~fp_FieldMetaLanguageRun(){}
01598 };
01599
01600 class ABI_EXPORT fp_FieldMetaRightsRun : public fp_FieldMetaRun
01601 {
01602 public:
01603 fp_FieldMetaRightsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01604 virtual ~fp_FieldMetaRightsRun(){}
01605 };
01606
01607 class ABI_EXPORT fp_FieldMetaKeywordsRun : public fp_FieldMetaRun
01608 {
01609 public:
01610 fp_FieldMetaKeywordsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01611 virtual ~fp_FieldMetaKeywordsRun(){}
01612 };
01613
01614 class ABI_EXPORT fp_FieldMetaContributorRun : public fp_FieldMetaRun
01615 {
01616 public:
01617 fp_FieldMetaContributorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01618 virtual ~fp_FieldMetaContributorRun(){}
01619 };
01620
01621 class ABI_EXPORT fp_FieldMetaCoverageRun : public fp_FieldMetaRun
01622 {
01623 public:
01624 fp_FieldMetaCoverageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01625 virtual ~fp_FieldMetaCoverageRun(){}
01626 };
01627
01628 class ABI_EXPORT fp_FieldMetaDescriptionRun : public fp_FieldMetaRun
01629 {
01630 public:
01631 fp_FieldMetaDescriptionRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01632 virtual ~fp_FieldMetaDescriptionRun(){}
01633 };
01634
01635
01636
01637 class ABI_EXPORT fp_FmtMarkRun : public fp_Run
01638 {
01639 public:
01640 fp_FmtMarkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst);
01641
01642 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
01643 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
01644 virtual bool canBreakAfter(void) const;
01645 virtual bool canBreakBefore(void) const;
01646 virtual bool isSuperscript(void) const ;
01647 virtual bool isSubscript(void) const;
01648 virtual bool hasLayoutProperties(void) const {return true;}
01649
01650 protected:
01651 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
01652 const PP_AttrProp * pBlockAP,
01653 const PP_AttrProp * pSectionAP,
01654 GR_Graphics * pG = NULL);
01655
01656 virtual void _draw(dg_DrawArgs*);
01657 virtual void _clearScreen(bool bFullLineHeightRect);
01658 virtual bool _letPointPass(void) const;
01659
01660 private:
01661 enum
01662 {
01663 TEXT_POSITION_NORMAL,
01664 TEXT_POSITION_SUPERSCRIPT,
01665 TEXT_POSITION_SUBSCRIPT
01666 };
01667 UT_Byte m_fPosition;
01668 };
01669
01670
01671 class ABI_EXPORT fp_DummyRun : public fp_Run
01672 {
01673 public:
01674 fp_DummyRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst);
01675
01676 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isTOC);
01677 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
01678 virtual bool canBreakAfter(void) const;
01679 virtual bool canBreakBefore(void) const;
01680 virtual bool isSuperscript(void) const ;
01681 virtual bool isSubscript(void) const;
01682 virtual bool hasLayoutProperties(void) const {return false;}
01683
01684 protected:
01685 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
01686 const PP_AttrProp * pBlockAP,
01687 const PP_AttrProp * pSectionAP,
01688 GR_Graphics * pG = NULL);
01689
01690 virtual void _draw(dg_DrawArgs*);
01691 virtual void _clearScreen(bool bFullLineHeightRect);
01692 virtual bool _letPointPass(void) const;
01693 };
01694
01695 #endif
01696
01697
01698
01699
01700
01701
01702
01703
01704
01705