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_Rect * getScreenRect();
00244 virtual void markDirtyOverlappingRuns(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 != NULL);}
00310
00311
00312
00313 PP_RevisionAttr * getRevisions() const {return m_pRevisions;}
00314 FPVisibility getVisibility() const {return m_eVisibility;}
00315 bool isHidden() const {return _wouldBeHidden(m_eVisibility);}
00316 void setVisibility(FPVisibility eVis);
00317 void Fill(GR_Graphics * pG, UT_sint32 x, UT_sint32 y,
00318 UT_sint32 width, UT_sint32 height);
00319
00320 fg_FillType & getFillType(void);
00321 const fg_FillType & getFillType(void) const;
00322 fp_Line * getTmpLine(void) const
00323 { return m_pTmpLine;}
00324 void setTmpLine(fp_Line * pLine)
00325 { m_pTmpLine = pLine;}
00326 UT_sint32 getTmpX(void) const
00327 { return m_iTmpX;}
00328 void setTmpX(UT_sint32 iX)
00329 { m_iTmpX = iX;}
00330 UT_sint32 getTmpY(void) const
00331 { return m_iTmpY;}
00332 void setTmpY(UT_sint32 iY)
00333 { m_iTmpY = iY;}
00334 UT_sint32 getTmpWidth(void) const
00335 { return m_iTmpWidth;}
00336 void setTmpWidth(UT_sint32 iWidth)
00337 { m_iTmpWidth = iWidth;}
00338 bool clearIfNeeded(void);
00339
00340
00341
00342
00343
00344
00345 bool deleteFollowingIfAtInsPoint() const;
00346
00347 bool displayAnnotations(void) const;
00348 bool displayRDFAnchors(void) const;
00349
00350 void setSelectionMode(PT_DocPosition posLow, PT_DocPosition posHigh);
00351 void clearSelectionMode(void);
00352 bool isSelectionDraw(void) const;
00353 PT_DocPosition posSelLow(void) const;
00354 PT_DocPosition posSelHigh(void) const;
00355 UT_RGBColor _getColorFG(void) const { return m_pColorFG; }
00356
00357 #ifdef FMT_TEST
00358 virtual void __dump(FILE * fp) const;
00359 #endif
00360 void setMustClearScreen(void)
00361 { m_bMustClearScreen = true;}
00362 bool getMustClearScreen(void)
00363 {return m_bMustClearScreen;}
00364
00365 protected:
00366 virtual bool _deleteFollowingIfAtInsPoint() const;
00367 void _inheritProperties(void);
00368 fp_Run* _findPrevPropertyRun(void) const;
00369
00370 FV_View* _getView(void) const { return getBlock()->getView(); }
00371
00372
00373 UT_RGBColor _getColorPG(void) const { return m_pColorPG; }
00374 UT_RGBColor _getColorHL(void) const { return m_pColorHL; }
00375 void _setColorFG(UT_RGBColor c) { m_pColorFG = c; }
00376 void _setColorHL(UT_RGBColor c) { m_pColorHL = c; }
00377 void _setColorHL(const char *pszColor)
00378 { m_pColorHL.setColor(pszColor); }
00379
00380 void _setLine(fp_Line* pLine) { m_pLine = pLine; }
00381 void _setHeight(UT_sint32 iHeight)
00382 { m_iHeight = iHeight;}
00383 virtual void _setWidth(UT_sint32 iWidth)
00384 { m_iWidth = iWidth; }
00385
00386
00387
00388
00389 UT_sint32 _getWidth() {return m_iWidth;}
00390 UT_sint32 _getHeight(){return m_iHeight;}
00391
00392 void _setBlock(fl_BlockLayout * pBL) { m_pBL = pBL; }
00393 void _setAscent(int iAscent) { m_iAscent = iAscent; }
00394 void _setDescent(int iDescent) {m_iDescent = iDescent;}
00395 void _setX(int iX) { m_iX = iX; }
00396 void _setY(int iY) { m_iY = iY; }
00397 void _setDirection(UT_BidiCharType c) { m_iDirection = c; }
00398 UT_BidiCharType _getDirection(void) const { return m_iDirection; }
00399 UT_BidiCharType _getVisDirection(void) const { return m_iVisDirection; }
00400 const GR_Font * _getFont(void) const;
00401 void _setFont(const GR_Font * f);
00402 unsigned char _getDecorations(void) const { return m_fDecorations; }
00403 void _setDecorations(unsigned char d) {m_fDecorations = d;}
00404
00405 void _orDecorations(unsigned char d) { m_fDecorations |= d; }
00406 UT_sint32 _getLineWidth(void) { return m_iLineWidth; }
00407 bool _setLineWidth(UT_sint32 w)
00408 {
00409 UT_sint32 o = m_iLineWidth;
00410 m_iLineWidth = w;
00411 return o != w;
00412 }
00413 void _setLength(UT_uint32 l) { m_iLen = l; }
00414 void _setRevisions(PP_RevisionAttr * p) { m_pRevisions = p; }
00415 void _setDirty(bool b);
00416 void _setField(fd_Field * fd) { m_pField = fd; }
00417 void _setHyperlink(fp_HyperlinkRun * pH) { m_pHyperlink = pH; }
00418 bool _getRecalcWidth(void) const { return m_bRecalcWidth; }
00419 void _setRecalcWidth(bool b) { m_bRecalcWidth = b; }
00420
00421 GRShapingResult _getRefreshDrawBuffer(void) const { return m_eRefreshDrawBuffer; }
00422 void _setRefreshDrawBuffer(GRShapingResult eR)
00423 { m_eRefreshDrawBuffer = eR; }
00424 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00425 const PP_AttrProp * pBlockAP,
00426 const PP_AttrProp * pSectionAP,
00427 GR_Graphics * pG = NULL) = 0;
00428
00429 virtual bool _canContainPoint(void) const;
00430 virtual bool _letPointPass(void) const;
00431 virtual bool _recalcWidth(void);
00432 bool _wouldBeHidden(FPVisibility eVis) const;
00433
00434
00435
00436 enum
00437 {
00438 TEXT_DECOR_UNDERLINE = 0x01,
00439 TEXT_DECOR_OVERLINE = 0x02,
00440 TEXT_DECOR_LINETHROUGH = 0x04,
00441 TEXT_DECOR_TOPLINE = 0x08,
00442 TEXT_DECOR_BOTTOMLINE = 0x10
00443 };
00444
00445 private:
00446 fp_Run(const fp_Run&);
00447 void operator=(const fp_Run&);
00448
00449 FP_RUN_TYPE m_iType;
00450 fp_Line* m_pLine;
00451 fl_BlockLayout* m_pBL;
00452 fp_Run* m_pNext;
00453 fp_Run* m_pPrev;
00454 UT_sint32 m_iX;
00455 UT_sint32 m_iOldX;
00456 UT_sint32 m_iY;
00457 UT_sint32 m_iWidth;
00458 UT_sint32 m_iHeight;
00459 UT_uint32 m_iAscent;
00460 UT_uint32 m_iDescent;
00461
00462 UT_uint32 m_iOffsetFirst;
00463 UT_uint32 m_iLen;
00464 bool m_bDirty;
00465 fd_Field* m_pField;
00466 UT_BidiCharType m_iDirection;
00467 UT_BidiCharType m_iVisDirection;
00468 GRShapingResult m_eRefreshDrawBuffer;
00469
00470
00471 UT_RGBColor m_pColorHL;
00472
00473 const GR_Font * m_pFont;
00474
00475 bool m_bRecalcWidth;
00476
00477 unsigned char m_fDecorations;
00478 UT_sint32 m_iLineWidth;
00479 UT_sint32 m_iLinethickness;
00480 UT_sint32 m_iUnderlineXoff;
00481 UT_sint32 m_imaxUnderline;
00482 UT_sint32 m_iminOverline;
00483 UT_sint32 m_iOverlineXoff;
00484 fp_HyperlinkRun * m_pHyperlink;
00485 PP_RevisionAttr * m_pRevisions;
00486
00487
00488 UT_RGBColor m_pColorPG;
00489 UT_RGBColor m_pColorFG;
00490 FPVisibility m_eVisibility;
00491 bool m_bIsCleared;
00492 fg_FillType m_FillType;
00493 bool m_bPrinting;
00494 UT_sint32 m_iTmpX;
00495 UT_sint32 m_iTmpY;
00496 UT_sint32 m_iTmpWidth;
00497 fp_Line * m_pTmpLine;
00498
00499
00500 bool m_bDrawSelection;
00501 PT_DocPosition m_iSelLow;
00502 PT_DocPosition m_iSelHigh;
00503 bool m_bMustClearScreen;
00504 UT_sint32 m_iAuthorColor;
00505 #ifdef DEBUG
00506 UT_uint32 m_iFontAllocNo;
00507 #endif
00508 };
00509
00510 class ABI_EXPORT fp_TabRun : public fp_Run
00511 {
00512 public:
00513 fp_TabRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00514 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00515 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00516 virtual bool canBreakAfter(void) const;
00517 virtual bool canBreakBefore(void) const;
00518 virtual bool hasLayoutProperties(void) const;
00519 void setTabWidth(UT_sint32);
00520 void setLeader(eTabLeader iTabType);
00521 eTabLeader getLeader(void);
00522 void setTabType(eTabType iTabType);
00523 eTabType getTabType(void) const;
00524 bool isTOCTab(void);
00525 void setTOCTab(void)
00526 { m_bIsTOC = true;}
00527 void setTOCTabListLabel(void);
00528 bool isTOCTabListLabel(void) const
00529 { return m_bIsTOCListLabel;}
00530
00531 protected:
00532 virtual void _drawArrow(UT_uint32 iLeft,UT_uint32 iTop,UT_uint32 iWidth, UT_uint32 iHeight);
00533 virtual void _draw(dg_DrawArgs*);
00534 virtual void _clearScreen(bool bFullLineHeightRect);
00535 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00536 const PP_AttrProp * pBlockAP,
00537 const PP_AttrProp * pSectionAP,
00538 GR_Graphics * pG = NULL);
00539
00540 virtual bool _letPointPass(void) const;
00541
00542 private:
00543
00544 private:
00545 eTabLeader m_leader;
00546 eTabType m_TabType;
00547 bool m_bIsTOC;
00548 bool m_bIsTOCListLabel;
00549 };
00550
00551 class ABI_EXPORT fp_ForcedLineBreakRun : public fp_Run
00552 {
00553 public:
00554 fp_ForcedLineBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00555 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00556 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00557 virtual bool canBreakAfter(void) const;
00558 virtual bool canBreakBefore(void) const;
00559 virtual bool isForcedBreak(void) const { return true; }
00560 protected:
00561 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00562 const PP_AttrProp * pBlockAP,
00563 const PP_AttrProp * pSectionAP,
00564 GR_Graphics * pG = NULL);
00565
00566 virtual void _draw(dg_DrawArgs*);
00567 virtual void _clearScreen(bool bFullLineHeightRect);
00568 virtual bool _letPointPass(void) const;
00569 };
00570
00571 class ABI_EXPORT fp_FieldStartRun : public fp_Run
00572 {
00573 public:
00574 fp_FieldStartRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00575 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00576 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00577 virtual bool canBreakAfter(void) const;
00578 virtual bool canBreakBefore(void) const;
00579 virtual bool isForcedBreak(void) const { return true; }
00580 protected:
00581 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00582 const PP_AttrProp * pBlockAP,
00583 const PP_AttrProp * pSectionAP,
00584 GR_Graphics * pG = NULL);
00585
00586 virtual void _draw(dg_DrawArgs*);
00587 virtual void _clearScreen(bool bFullLineHeightRect);
00588 virtual bool _letPointPass(void) const;
00589 };
00590
00591 class ABI_EXPORT fp_FieldEndRun : public fp_Run
00592 {
00593 public:
00594 fp_FieldEndRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00595 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00596 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00597 virtual bool canBreakAfter(void) const;
00598 virtual bool canBreakBefore(void) const;
00599 virtual bool isForcedBreak(void) const { return true; }
00600 protected:
00601 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00602 const PP_AttrProp * pBlockAP,
00603 const PP_AttrProp * pSectionAP,
00604 GR_Graphics * pG = NULL);
00605
00606 virtual void _draw(dg_DrawArgs*);
00607 virtual void _clearScreen(bool bFullLineHeightRect);
00608 virtual bool _letPointPass(void) const;
00609 };
00610
00611 class ABI_EXPORT fp_ForcedColumnBreakRun : public fp_Run
00612 {
00613 public:
00614 fp_ForcedColumnBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00615
00616 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00617 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00618 virtual bool canBreakAfter(void) const;
00619 virtual bool canBreakBefore(void) const;
00620 virtual bool isForcedBreak(void) const { return true; }
00621 protected:
00622 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00623 const PP_AttrProp * pBlockAP,
00624 const PP_AttrProp * pSectionAP,
00625 GR_Graphics * pG = NULL);
00626
00627 virtual void _draw(dg_DrawArgs*);
00628 virtual void _clearScreen(bool bFullLineHeightRect);
00629 virtual bool _letPointPass(void) const;
00630 };
00631
00632 class ABI_EXPORT fp_ForcedPageBreakRun : public fp_Run
00633 {
00634 public:
00635 fp_ForcedPageBreakRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00636 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00637 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00638 virtual bool canBreakAfter(void) const;
00639 virtual bool canBreakBefore(void) const;
00640 virtual bool isForcedBreak(void) const { return true; }
00641
00642 protected:
00643 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00644 const PP_AttrProp * pBlockAP,
00645 const PP_AttrProp * pSectionAP,
00646 GR_Graphics * pG = NULL);
00647
00648 virtual void _draw(dg_DrawArgs*);
00649 virtual void _clearScreen(bool bFullLineHeightRect);
00650 virtual bool _letPointPass(void) const;
00651 };
00652
00653 class ABI_EXPORT fp_EndOfParagraphRun : public fp_Run
00654 {
00655 public:
00656 fp_EndOfParagraphRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00657
00658 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isToc);
00659 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00660 virtual bool canBreakAfter(void) const;
00661 virtual bool canBreakBefore(void) const;
00662 virtual UT_sint32 getDrawingWidth() const { return static_cast<UT_sint32>(m_iDrawWidth);}
00663
00664
00665
00666
00667
00668 protected:
00669 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00670 const PP_AttrProp * pBlockAP,
00671 const PP_AttrProp * pSectionAP,
00672 GR_Graphics * pG = NULL);
00673
00674 virtual void _draw(dg_DrawArgs*);
00675 virtual void _clearScreen(bool bFullLineHeightRect);
00676 virtual bool _letPointPass(void) const;
00677 virtual bool _recalcWidth(void);
00678
00679 private:
00680 UT_uint32 m_iXoffText;
00681 UT_uint32 m_iYoffText;
00682 UT_uint32 m_iDrawWidth;
00683
00684 };
00685
00686 class ABI_EXPORT fp_BookmarkRun : public fp_Run
00687 {
00688 public:
00689 fp_BookmarkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00690
00691 bool isStartOfBookmark() const {return m_bIsStart;};
00692 const gchar * getName() const {return m_pName;};
00693 bool isComrade(fp_BookmarkRun *pBR) const;
00694
00695 virtual bool canBreakAfter(void) const;
00696 virtual bool canBreakBefore(void) const;
00697
00698 virtual void mapXYToPosition(UT_sint32 x,
00699 UT_sint32 y,
00700 PT_DocPosition& pos,
00701 bool& bBOL,
00702 bool& bEOL,
00703 bool & isTOC);
00704
00705 virtual void findPointCoords(UT_uint32 iOffset,
00706 UT_sint32& x,
00707 UT_sint32& y,
00708 UT_sint32& x2,
00709 UT_sint32& y2,
00710 UT_sint32& height,
00711 bool& bDirection);
00712 virtual bool hasLayoutProperties(void) const
00713 { return false; }
00714
00715
00716 virtual bool doesContainNonBlankData(void) const { return false; }
00717
00718 UT_uint32 getBookmarkedDocPosition(bool bAfter) const;
00719
00720
00721 private:
00722 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00723 const PP_AttrProp * pBlockAP,
00724 const PP_AttrProp * pSectionAP,
00725 GR_Graphics * pG = NULL);
00726
00727 virtual void _clearScreen(bool );
00728 virtual void _draw(dg_DrawArgs* );
00729 virtual bool _letPointPass(void) const;
00730 virtual bool _canContainPoint(void) const;
00731 virtual bool _deleteFollowingIfAtInsPoint() const;
00732
00733 bool m_bIsStart;
00734 #define BOOKMARK_NAME_SIZE 30
00735 gchar m_pName[BOOKMARK_NAME_SIZE + 1];
00736 po_Bookmark * m_pBookmark;
00737 };
00738
00739 class ABI_EXPORT fp_HyperlinkRun : public fp_Run
00740 {
00741 public:
00742 fp_HyperlinkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00743 virtual ~fp_HyperlinkRun();
00744 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_NORMAL;}
00745 bool isStartOfHyperlink() const {return m_bIsStart;};
00746 const gchar * getTarget() const {return static_cast<const gchar *>(m_pTarget);};
00747
00748 virtual bool canBreakAfter(void) const;
00749 virtual bool canBreakBefore(void) const;
00750
00751 virtual void mapXYToPosition(UT_sint32 x,
00752 UT_sint32 y,
00753 PT_DocPosition& pos,
00754 bool& bBOL,
00755 bool& bEOL,
00756 bool &isTOC);
00757
00758 virtual void findPointCoords(UT_uint32 iOffset,
00759 UT_sint32& x,
00760 UT_sint32& y,
00761 UT_sint32& x2,
00762 UT_sint32& y2,
00763 UT_sint32& height,
00764 bool& bDirection);
00765
00766 virtual bool hasLayoutProperties(void) const
00767 { return false; }
00768
00769
00770 virtual bool doesContainNonBlankData(void) const { return false; }
00771
00772 protected:
00773 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00774 const PP_AttrProp * pBlockAP,
00775 const PP_AttrProp * pSectionAP,
00776 GR_Graphics * pG = NULL);
00777
00778 virtual void _clearScreen(bool );
00779 virtual void _draw(dg_DrawArgs* );
00780 virtual bool _letPointPass(void) const;
00781 virtual bool _canContainPoint(void) const;
00782 virtual bool _deleteFollowingIfAtInsPoint() const;
00783 void _setTarget( const gchar * pTarget );
00784 void _setTargetFromAPAttribute( const gchar* pAttrName );
00785
00786 bool m_bIsStart;
00787 gchar * m_pTarget;
00788 };
00789
00790
00791
00792 class ABI_EXPORT fp_AnnotationRun : public fp_HyperlinkRun
00793 {
00794 public:
00795 fp_AnnotationRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00796 virtual ~fp_AnnotationRun();
00797 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_ANNOTATION; }
00798 UT_uint32 getPID(void) { return m_iPID;}
00799 const char * getValue(void);
00800 void recalcValue(void);
00801 virtual bool canBreakAfter(void) const;
00802 virtual bool canBreakBefore(void) const;
00803 UT_sint32 getRealWidth(void) const {return m_iRealWidth;}
00804 void cleanDraw(dg_DrawArgs*);
00805 UT_sint32 calcWidth(void);
00806
00807 protected:
00808 virtual void _draw(dg_DrawArgs*);
00809 virtual void _clearScreen(bool bFullLineHeightRect);
00810 virtual bool _recalcWidth(void);
00811 bool _setValue(void);
00812 virtual void _setWidth(UT_sint32 iWidth);
00813 virtual bool _letPointPass(void) const;
00814 virtual bool _canContainPoint(void) const;
00815 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00816 const PP_AttrProp * pBlockAP,
00817 const PP_AttrProp * pSectionAP,
00818 GR_Graphics * pG);
00819 private:
00820 UT_uint32 m_iPID;
00821 UT_UTF8String m_sValue;
00822 UT_sint32 m_iRealWidth;
00823 };
00824
00825 class ABI_EXPORT fp_RDFAnchorRun : public fp_HyperlinkRun
00826 {
00827 public:
00828 fp_RDFAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00829 virtual ~fp_RDFAnchorRun();
00830 virtual FP_HYPERLINK_TYPE getHyperlinkType(void) const { return HYPERLINK_RDFANCHOR; }
00831 UT_uint32 getPID(void) { return m_iPID;}
00832 const char * getValue(void);
00833 void recalcValue(void);
00834 virtual bool canBreakAfter(void) const;
00835 virtual bool canBreakBefore(void) const;
00836 UT_sint32 getRealWidth(void) const {return m_iRealWidth;}
00837 void cleanDraw(dg_DrawArgs*);
00838 UT_sint32 calcWidth(void);
00839
00840 std::string getXMLID();
00841
00842 protected:
00843 virtual void _draw(dg_DrawArgs*);
00844 virtual void _clearScreen(bool bFullLineHeightRect);
00845 virtual bool _recalcWidth(void);
00846 bool _setValue(void);
00847 virtual void _setWidth(UT_sint32 iWidth);
00848 virtual bool _letPointPass(void) const;
00849 virtual bool _canContainPoint(void) const;
00850 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00851 const PP_AttrProp * pBlockAP,
00852 const PP_AttrProp * pSectionAP,
00853 GR_Graphics * pG);
00854 private:
00855 UT_uint32 m_iPID;
00856 UT_UTF8String m_sValue;
00857 UT_sint32 m_iRealWidth;
00858 };
00859
00860 class ABI_EXPORT fp_ImageRun : public fp_Run
00861 {
00862 public:
00863 fp_ImageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen, FG_Graphic * pGraphic, pf_Frag_Object* oh);
00864 virtual ~fp_ImageRun();
00865
00866 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
00867 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00868 virtual bool canBreakAfter(void) const;
00869 virtual bool canBreakBefore(void) const;
00870 const char * getDataId(void) const;
00871 virtual bool hasLayoutProperties(void) const;
00872 virtual GR_Image * getImage();
00873 void regenerateImage(GR_Graphics * pG);
00874 UT_sint32 getPointHeight(void)
00875 { return m_iPointHeight;}
00876 protected:
00877 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00878 const PP_AttrProp * pBlockAP,
00879 const PP_AttrProp * pSectionAP,
00880 GR_Graphics * pG = NULL);
00881
00882 virtual void _draw(dg_DrawArgs*);
00883 virtual void _clearScreen(bool bFullLineHeightRect);
00884 virtual bool _letPointPass(void) const;
00885
00886 private:
00887 FG_Graphic * m_pFGraphic;
00888 GR_Image* m_pImage;
00889 UT_sint32 m_iImageWidth;
00890 UT_sint32 m_iImageHeight;
00891 UT_String m_sCachedWidthProp;
00892 UT_String m_sCachedHeightProp;
00893 UT_sint32 m_iPointHeight;
00894 const PP_AttrProp * m_pSpanAP;
00895 UT_uint32 m_iGraphicTick;
00896 bool m_bImageForPrinter;
00897 pf_Frag_Object* m_OH;
00898 };
00899
00900 #define FPFIELD_MAX_LENGTH 127
00901
00902 #define _FIELD(type,desc,tag)
00903 #define _FIELDTYPE(type,desc) FPFIELDTYPE_##type,
00904
00905 enum fp_FieldTypesEnum { FPFIELDTYPE_START,
00906
00907 #include "fp_Fields.h"
00908
00909 FPFIELDTYPE_END };
00910
00911 #undef _FIELD
00912 #undef _FIELDTYPE
00913
00914 #define _FIELD(type,desc,tag) FPFIELD_##tag,
00915 #define _FIELDTYPE(type,desc)
00916
00917 enum fp_FieldsEnum { FPFIELD_start,
00918
00919 #include "fp_Fields.h"
00920
00921 FPFIELD_end };
00922
00923 #undef _FIELD
00924 #undef _FIELDTYPE
00925
00926
00927 struct fp_FieldTypeData
00928 {
00929 fp_FieldTypesEnum m_Type;
00930 const char* m_Desc;
00931 XAP_String_Id m_DescId;
00932 };
00933
00934 struct fp_FieldData
00935 {
00936 fp_FieldTypesEnum m_Type;
00937 fp_FieldsEnum m_Num;
00938 const char* m_Desc;
00939 const char* m_Tag;
00940 XAP_String_Id m_DescId;
00941 };
00942
00943
00944 extern fp_FieldTypeData fp_FieldTypes[];
00945 extern fp_FieldData fp_FieldFmts[];
00946
00947
00948
00949
00950
00951 #define FIELD_UPDATE_ENDNOTE 3
00952 #define FIELD_UPDATE_TIME 1
00953 #define FIELD_UPDATE_DATE 240
00954 #define FIELD_UPDATE_PAGE 20
00955 #define FIELD_UPDATE_LINE_COUNT 10
00956 #define FIELD_UPDATE_WORD_COUNT 4
00957 #define FIELD_UPDATE_PARA_COUNT 20
00958 #define FIELD_UPDATE_META 10
00959 #define FIELD_UPDATE_MAILMERGE 10
00960
00961 class ABI_EXPORT fp_FieldRun : public fp_Run
00962 {
00963 public:
00964 fp_FieldRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
00965 virtual ~fp_FieldRun();
00966
00967 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isTOC);
00968 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
00969 virtual bool canBreakAfter(void) const;
00970 virtual fp_FieldsEnum getFieldType(void) const;
00971 virtual bool canBreakBefore(void) const;
00972 virtual bool hasLayoutProperties(void) const;
00973
00974 virtual bool isSuperscript(void) const;
00975 virtual bool isSubscript(void) const;
00976
00977 bool _setValue(const UT_UCSChar *p_new_value);
00978
00979 virtual bool calculateValue(void);
00980 virtual const UT_UCSChar * getValue(void) const { return reinterpret_cast<const UT_UCS4Char *>(m_sFieldValue);}
00981 virtual UT_uint32 needsFrequentUpdates() {return 0;}
00982
00983 protected:
00984 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
00985 const PP_AttrProp * pBlockAP,
00986 const PP_AttrProp * pSectionAP,
00987 GR_Graphics * pG = NULL);
00988
00989 virtual void _draw(dg_DrawArgs*) {};
00990 virtual void _defaultDraw(dg_DrawArgs*);
00991 virtual void _clearScreen(bool bFullLineHeightRect);
00992 const gchar * _getParameter() const { return m_pParameter; }
00993 virtual bool _letPointPass(void) const;
00994 virtual bool _recalcWidth(void);
00995
00996 private:
00997
00998
00999 UT_RGBColor m_colorBG;
01000 UT_UCS4Char m_sFieldValue[FPFIELD_MAX_LENGTH];
01001 fp_FieldsEnum m_iFieldType;
01002 const gchar * m_pParameter;
01003 enum
01004 {
01005 TEXT_POSITION_NORMAL,
01006 TEXT_POSITION_SUPERSCRIPT,
01007 TEXT_POSITION_SUBSCRIPT
01008 };
01009 UT_Byte m_fPosition;
01010 };
01011
01012
01013 class ABI_EXPORT fp_FieldEndnoteRefRun : public fp_FieldRun
01014 {
01015 public:
01016
01017 fp_FieldEndnoteRefRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01018
01019 virtual ~fp_FieldEndnoteRefRun(){}
01020
01021 virtual bool calculateValue(void);
01022 virtual bool canBreakBefore(void) const;
01023 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01024 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01025 UT_uint32 getPID() const {return m_iPID;}
01026
01027 private:
01028 UT_uint32 m_iPID;
01029 };
01030
01031
01032 class ABI_EXPORT fp_FieldEndnoteAnchorRun : public fp_FieldRun
01033 {
01034 public:
01035
01036 fp_FieldEndnoteAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01037
01038 virtual ~fp_FieldEndnoteAnchorRun() {}
01039
01040 virtual bool calculateValue(void);
01041 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01042 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01043 UT_uint32 getPID() const {return m_iPID;}
01044
01045 private:
01046 UT_uint32 m_iPID;
01047 };
01048
01049 class ABI_EXPORT fp_FieldFootnoteRefRun : public fp_FieldRun
01050 {
01051 public:
01052
01053 fp_FieldFootnoteRefRun(fl_BlockLayout* pBL,UT_uint32 iOffsetFirst, UT_uint32 iLen);
01054
01055 virtual ~fp_FieldFootnoteRefRun(){}
01056
01057 virtual bool calculateValue(void);
01058 virtual bool canBreakBefore(void) const;
01059 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01060 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01061 UT_uint32 getPID() const {return m_iPID;}
01062
01063 private:
01064 UT_uint32 m_iPID;
01065 };
01066
01067 class ABI_EXPORT fp_FieldFootnoteAnchorRun : public fp_FieldRun
01068 {
01069 public:
01070
01071 fp_FieldFootnoteAnchorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01072
01073 virtual ~fp_FieldFootnoteAnchorRun() {}
01074
01075 virtual bool calculateValue(void);
01076 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01077 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_ENDNOTE;};
01078 UT_uint32 getPID() const {return m_iPID;}
01079
01080 private:
01081 UT_uint32 m_iPID;
01082 };
01083
01084 class ABI_EXPORT fp_FieldTimeRun : public fp_FieldRun
01085 {
01086 public:
01087
01088 fp_FieldTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01089
01090 virtual ~fp_FieldTimeRun(){}
01091
01092 virtual bool calculateValue(void);
01093 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01094 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01095 };
01096
01097 class ABI_EXPORT fp_FieldPageNumberRun : public fp_FieldRun
01098 {
01099 public:
01100
01101 fp_FieldPageNumberRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01102
01103 virtual ~fp_FieldPageNumberRun() {}
01104
01105 virtual bool calculateValue(void);
01106 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01107 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01108 };
01109
01110 class ABI_EXPORT fp_FieldPageReferenceRun : public fp_FieldRun
01111 {
01112 public:
01113
01114 fp_FieldPageReferenceRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01115
01116 virtual ~fp_FieldPageReferenceRun() {}
01117
01118 virtual bool calculateValue(void);
01119 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01120 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01121 };
01122
01123 class ABI_EXPORT fp_FieldPageCountRun : public fp_FieldRun
01124 {
01125 public:
01126
01127 fp_FieldPageCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01128
01129 virtual ~fp_FieldPageCountRun() {}
01130
01131 virtual bool calculateValue(void);
01132 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01133 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PAGE;};
01134 };
01135
01136 class ABI_EXPORT fp_FieldDateRun : public fp_FieldRun
01137 {
01138 public:
01139 fp_FieldDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01140
01141 virtual ~fp_FieldDateRun() {}
01142
01143 virtual bool calculateValue(void);
01144 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01145 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01146 };
01147
01148
01149 class ABI_EXPORT fp_FieldFileNameRun : public fp_FieldRun
01150 {
01151 public:
01152 fp_FieldFileNameRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01153
01154 virtual ~fp_FieldFileNameRun() {}
01155
01156 virtual bool calculateValue(void);
01157 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01158 };
01159
01160
01161
01162
01163
01164
01165
01166 class ABI_EXPORT fp_FieldCharCountRun : public fp_FieldRun
01167 {
01168 public:
01169 fp_FieldCharCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01170
01171 virtual ~fp_FieldCharCountRun() {}
01172
01173 virtual bool calculateValue(void);
01174 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01175 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01176 };
01177
01178
01179
01180 class ABI_EXPORT fp_FieldNonBlankCharCountRun : public fp_FieldRun
01181 {
01182 public:
01183 fp_FieldNonBlankCharCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01184
01185 virtual ~fp_FieldNonBlankCharCountRun(){}
01186
01187 virtual bool calculateValue(void);
01188 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01189 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01190 };
01191
01192
01193 class ABI_EXPORT fp_FieldLineCountRun : public fp_FieldRun
01194 {
01195 public:
01196 fp_FieldLineCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01197
01198 virtual ~fp_FieldLineCountRun(){}
01199
01200 virtual bool calculateValue(void);
01201 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01202 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_LINE_COUNT;};
01203 };
01204
01205
01206
01207 class ABI_EXPORT fp_FieldTableSumRows : public fp_FieldRun
01208 {
01209 public:
01210 fp_FieldTableSumRows(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01211
01212 virtual ~fp_FieldTableSumRows(){}
01213
01214 virtual bool calculateValue(void);
01215 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01216 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01217 };
01218
01219
01220
01221 class ABI_EXPORT fp_FieldTableSumCols : public fp_FieldRun
01222 {
01223 public:
01224 fp_FieldTableSumCols(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01225
01226 virtual ~fp_FieldTableSumCols(){}
01227
01228 virtual bool calculateValue(void);
01229 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01230 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01231 };
01232
01233
01234 class ABI_EXPORT fp_FieldParaCountRun : public fp_FieldRun
01235 {
01236 public:
01237 fp_FieldParaCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01238
01239 virtual ~fp_FieldParaCountRun(){}
01240
01241 virtual bool calculateValue(void);
01242 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01243 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_PARA_COUNT;};
01244 };
01245
01246
01247 class ABI_EXPORT fp_FieldWordCountRun : public fp_FieldRun
01248 {
01249 public:
01250 fp_FieldWordCountRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01251
01252 virtual ~fp_FieldWordCountRun(){}
01253
01254 virtual bool calculateValue(void);
01255 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01256 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_WORD_COUNT;};
01257 };
01258
01259
01260
01261
01262
01263 class ABI_EXPORT fp_FieldMMDDYYRun : public fp_FieldRun
01264 {
01265 public:
01266 fp_FieldMMDDYYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01267
01268 virtual ~fp_FieldMMDDYYRun(){}
01269
01270 virtual bool calculateValue(void);
01271 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01272 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01273 };
01274
01275
01276 class ABI_EXPORT fp_FieldDDMMYYRun : public fp_FieldRun
01277 {
01278 public:
01279 fp_FieldDDMMYYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01280
01281 virtual ~fp_FieldDDMMYYRun(){}
01282
01283 virtual bool calculateValue(void);
01284 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01285 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01286 };
01287
01288
01289 class ABI_EXPORT fp_FieldMonthDayYearRun : public fp_FieldRun
01290 {
01291 public:
01292 fp_FieldMonthDayYearRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01293
01294 virtual ~fp_FieldMonthDayYearRun(){}
01295
01296 virtual bool calculateValue(void);
01297 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01298 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01299 };
01300
01301
01302 class ABI_EXPORT fp_FieldMthDayYearRun : public fp_FieldRun
01303 {
01304 public:
01305 fp_FieldMthDayYearRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01306
01307 virtual ~fp_FieldMthDayYearRun (){}
01308
01309 virtual bool calculateValue(void);
01310 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01311 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01312 };
01313
01314
01315 class ABI_EXPORT fp_FieldDefaultDateRun : public fp_FieldRun
01316 {
01317 public:
01318 fp_FieldDefaultDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01319
01320 virtual ~fp_FieldDefaultDateRun(){}
01321
01322 virtual bool calculateValue(void);
01323 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01324 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01325 };
01326
01327
01328 class ABI_EXPORT fp_FieldDefaultDateNoTimeRun : public fp_FieldRun
01329 {
01330 public:
01331 fp_FieldDefaultDateNoTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01332
01333 virtual ~fp_FieldDefaultDateNoTimeRun(){}
01334
01335 virtual bool calculateValue(void);
01336 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01337 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01338 };
01339
01340
01341 class ABI_EXPORT fp_FieldWkdayRun : public fp_FieldRun
01342 {
01343 public:
01344 fp_FieldWkdayRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01345
01346 virtual ~fp_FieldWkdayRun(){}
01347
01348 virtual bool calculateValue(void);
01349 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01350 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01351 };
01352
01353
01354 class ABI_EXPORT fp_FieldDOYRun : public fp_FieldRun
01355 {
01356 public:
01357 fp_FieldDOYRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01358
01359 virtual ~fp_FieldDOYRun(){}
01360
01361 virtual bool calculateValue(void);
01362 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01363 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01364 };
01365
01366
01367 class ABI_EXPORT fp_FieldMilTimeRun : public fp_FieldRun
01368 {
01369 public:
01370 fp_FieldMilTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01371
01372 virtual ~fp_FieldMilTimeRun(){}
01373
01374 virtual bool calculateValue(void);
01375 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01376 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01377 };
01378
01379
01380 class ABI_EXPORT fp_FieldAMPMRun : public fp_FieldRun
01381 {
01382 public:
01383 fp_FieldAMPMRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01384
01385 virtual ~fp_FieldAMPMRun(){}
01386
01387 virtual bool calculateValue(void);
01388 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01389 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_DATE;};
01390 };
01391
01392
01393 class ABI_EXPORT fp_FieldTimeEpochRun : public fp_FieldRun
01394 {
01395 public:
01396 fp_FieldTimeEpochRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01397
01398 virtual ~fp_FieldTimeEpochRun(){}
01399
01400 virtual bool calculateValue(void);
01401 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01402 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01403 };
01404
01405 class ABI_EXPORT fp_FieldDateTimeCustomRun : public fp_FieldRun
01406 {
01407 public:
01408 fp_FieldDateTimeCustomRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01409
01410 virtual ~fp_FieldDateTimeCustomRun(){}
01411
01412 virtual bool calculateValue(void);
01413 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01414 virtual UT_uint32 needsFrequentUpdates(){return FIELD_UPDATE_TIME;};
01415 };
01416
01417
01418 class ABI_EXPORT fp_FieldTimeZoneRun : public fp_FieldRun
01419 {
01420 public:
01421 fp_FieldTimeZoneRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01422
01423 virtual ~fp_FieldTimeZoneRun(){}
01424
01425 virtual bool calculateValue(void);
01426 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01427 };
01428
01429
01430
01431
01432 class ABI_EXPORT fp_FieldBuildIdRun : public fp_FieldRun
01433 {
01434 public:
01435 fp_FieldBuildIdRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01436
01437 virtual ~fp_FieldBuildIdRun(){}
01438
01439 virtual bool calculateValue(void);
01440 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01441 };
01442
01443
01444 class ABI_EXPORT fp_FieldBuildVersionRun : public fp_FieldRun
01445 {
01446 public:
01447 fp_FieldBuildVersionRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01448
01449 virtual ~fp_FieldBuildVersionRun(){}
01450
01451 virtual bool calculateValue(void);
01452 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01453 };
01454
01455 class ABI_EXPORT fp_FieldBuildOptionsRun : public fp_FieldRun
01456 {
01457 public:
01458 fp_FieldBuildOptionsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01459
01460 virtual ~fp_FieldBuildOptionsRun(){}
01461
01462 virtual bool calculateValue(void);
01463 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01464 };
01465
01466 class ABI_EXPORT fp_FieldBuildTargetRun : public fp_FieldRun
01467 {
01468 public:
01469 fp_FieldBuildTargetRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01470
01471 virtual ~fp_FieldBuildTargetRun(){}
01472
01473 virtual bool calculateValue(void);
01474 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01475 };
01476
01477 class ABI_EXPORT fp_FieldBuildCompileDateRun : public fp_FieldRun
01478 {
01479 public:
01480 fp_FieldBuildCompileDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01481
01482 virtual ~fp_FieldBuildCompileDateRun (){}
01483
01484 virtual bool calculateValue(void);
01485 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01486 };
01487
01488 class ABI_EXPORT fp_FieldBuildCompileTimeRun : public fp_FieldRun
01489 {
01490 public:
01491 fp_FieldBuildCompileTimeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01492
01493 virtual ~fp_FieldBuildCompileTimeRun(){}
01494
01495 virtual bool calculateValue(void);
01496 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01497 };
01498
01499 class ABI_EXPORT fp_FieldMailMergeRun : public fp_FieldRun
01500 {
01501 public:
01502 fp_FieldMailMergeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01503
01504 virtual ~fp_FieldMailMergeRun(){}
01505
01506 virtual bool calculateValue(void);
01507 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01508
01509 virtual UT_uint32 needsFrequentUpdates(){ return FIELD_UPDATE_MAILMERGE; }
01510 };
01511
01512 class ABI_EXPORT fp_FieldMetaRun : public fp_FieldRun
01513 {
01514 public:
01515 fp_FieldMetaRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen, const char * which);
01516
01517 virtual ~fp_FieldMetaRun(){}
01518
01519 virtual bool calculateValue(void);
01520 virtual void _draw(dg_DrawArgs* pDA) { _defaultDraw(pDA); }
01521
01522 virtual UT_uint32 needsFrequentUpdates(){ return FIELD_UPDATE_META;}
01523
01524 private:
01525 std::string m_which;
01526 };
01527
01528 class ABI_EXPORT fp_FieldMetaTitleRun : public fp_FieldMetaRun
01529 {
01530 public:
01531 fp_FieldMetaTitleRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01532 virtual ~fp_FieldMetaTitleRun(){}
01533 };
01534
01535 class ABI_EXPORT fp_FieldMetaCreatorRun : public fp_FieldMetaRun
01536 {
01537 public:
01538 fp_FieldMetaCreatorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01539 virtual ~fp_FieldMetaCreatorRun(){}
01540 };
01541
01542 class ABI_EXPORT fp_FieldMetaSubjectRun : public fp_FieldMetaRun
01543 {
01544 public:
01545 fp_FieldMetaSubjectRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01546 virtual ~fp_FieldMetaSubjectRun(){}
01547 };
01548
01549 class ABI_EXPORT fp_FieldMetaPublisherRun : public fp_FieldMetaRun
01550 {
01551 public:
01552 fp_FieldMetaPublisherRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01553 virtual ~fp_FieldMetaPublisherRun(){}
01554 };
01555
01556 class ABI_EXPORT fp_FieldMetaDateRun : public fp_FieldMetaRun
01557 {
01558 public:
01559 fp_FieldMetaDateRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01560 virtual ~fp_FieldMetaDateRun(){}
01561 };
01562
01563 class ABI_EXPORT fp_FieldMetaTypeRun : public fp_FieldMetaRun
01564 {
01565 public:
01566 fp_FieldMetaTypeRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01567 virtual ~fp_FieldMetaTypeRun(){}
01568 };
01569
01570 class ABI_EXPORT fp_FieldMetaLanguageRun : public fp_FieldMetaRun
01571 {
01572 public:
01573 fp_FieldMetaLanguageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01574 virtual ~fp_FieldMetaLanguageRun(){}
01575 };
01576
01577 class ABI_EXPORT fp_FieldMetaRightsRun : public fp_FieldMetaRun
01578 {
01579 public:
01580 fp_FieldMetaRightsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01581 virtual ~fp_FieldMetaRightsRun(){}
01582 };
01583
01584 class ABI_EXPORT fp_FieldMetaKeywordsRun : public fp_FieldMetaRun
01585 {
01586 public:
01587 fp_FieldMetaKeywordsRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01588 virtual ~fp_FieldMetaKeywordsRun(){}
01589 };
01590
01591 class ABI_EXPORT fp_FieldMetaContributorRun : public fp_FieldMetaRun
01592 {
01593 public:
01594 fp_FieldMetaContributorRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01595 virtual ~fp_FieldMetaContributorRun(){}
01596 };
01597
01598 class ABI_EXPORT fp_FieldMetaCoverageRun : public fp_FieldMetaRun
01599 {
01600 public:
01601 fp_FieldMetaCoverageRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01602 virtual ~fp_FieldMetaCoverageRun(){}
01603 };
01604
01605 class ABI_EXPORT fp_FieldMetaDescriptionRun : public fp_FieldMetaRun
01606 {
01607 public:
01608 fp_FieldMetaDescriptionRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst, UT_uint32 iLen);
01609 virtual ~fp_FieldMetaDescriptionRun(){}
01610 };
01611
01612
01613
01614 class ABI_EXPORT fp_FmtMarkRun : public fp_Run
01615 {
01616 public:
01617 fp_FmtMarkRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst);
01618
01619 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool & isTOC);
01620 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
01621 virtual bool canBreakAfter(void) const;
01622 virtual bool canBreakBefore(void) const;
01623 virtual bool isSuperscript(void) const ;
01624 virtual bool isSubscript(void) const;
01625 virtual bool hasLayoutProperties(void) const {return true;}
01626
01627 protected:
01628 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
01629 const PP_AttrProp * pBlockAP,
01630 const PP_AttrProp * pSectionAP,
01631 GR_Graphics * pG = NULL);
01632
01633 virtual void _draw(dg_DrawArgs*);
01634 virtual void _clearScreen(bool bFullLineHeightRect);
01635 virtual bool _letPointPass(void) const;
01636
01637 private:
01638 enum
01639 {
01640 TEXT_POSITION_NORMAL,
01641 TEXT_POSITION_SUPERSCRIPT,
01642 TEXT_POSITION_SUBSCRIPT
01643 };
01644 UT_Byte m_fPosition;
01645 };
01646
01647
01648 class ABI_EXPORT fp_DummyRun : public fp_Run
01649 {
01650 public:
01651 fp_DummyRun(fl_BlockLayout* pBL, UT_uint32 iOffsetFirst);
01652
01653 virtual void mapXYToPosition(UT_sint32 xPos, UT_sint32 yPos, PT_DocPosition& pos, bool& bBOL, bool& bEOL, bool &isTOC);
01654 virtual void findPointCoords(UT_uint32 iOffset, UT_sint32& x, UT_sint32& y, UT_sint32& x2, UT_sint32& y2, UT_sint32& height, bool& bDirection);
01655 virtual bool canBreakAfter(void) const;
01656 virtual bool canBreakBefore(void) const;
01657 virtual bool isSuperscript(void) const ;
01658 virtual bool isSubscript(void) const;
01659 virtual bool hasLayoutProperties(void) const {return false;}
01660
01661 protected:
01662 virtual void _lookupProperties(const PP_AttrProp * pSpanAP,
01663 const PP_AttrProp * pBlockAP,
01664 const PP_AttrProp * pSectionAP,
01665 GR_Graphics * pG = NULL);
01666
01667 virtual void _draw(dg_DrawArgs*);
01668 virtual void _clearScreen(bool bFullLineHeightRect);
01669 virtual bool _letPointPass(void) const;
01670 };
01671
01672 #endif
01673
01674
01675
01676
01677
01678
01679
01680
01681
01682