• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

fl_DocLayout.h

Go to the documentation of this file.
00001 /* AbiWord
00002  * Copyright (C) 1998 AbiSource, Inc.
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00017  * 02110-1301 USA.
00018  */
00019 
00020 #ifndef DOCLAYOUT_H
00021 #define DOCLAYOUT_H
00022 
00023 #ifdef HAVE_CONFIG_H
00024 #include "config.h"
00025 #endif
00026 
00027 #include <stdio.h>
00028 #include "ut_types.h"
00029 #include "ut_vector.h"
00030 #include "ut_hash.h"
00031 #include "pt_Types.h"
00032 #include "fp_PageSize.h"
00033 #include "fl_Layout.h"
00034 #include "fl_PartOfBlock.h"
00035 #include "ut_units.h"
00036 #include "xav_Listener.h"
00037 
00038 
00039 typedef enum _FootnoteType
00040 {
00041     FOOTNOTE_TYPE_NUMERIC = 0,
00042     FOOTNOTE_TYPE_NUMERIC_SQUARE_BRACKETS,
00043     FOOTNOTE_TYPE_NUMERIC_PAREN,
00044     FOOTNOTE_TYPE_NUMERIC_OPEN_PAREN,
00045     FOOTNOTE_TYPE_LOWER,
00046     FOOTNOTE_TYPE_LOWER_PAREN,
00047     FOOTNOTE_TYPE_LOWER_OPEN_PAREN,
00048     FOOTNOTE_TYPE_UPPER,
00049     FOOTNOTE_TYPE_UPPER_PAREN,
00050     FOOTNOTE_TYPE_UPPER_OPEN_PAREN,
00051     FOOTNOTE_TYPE_LOWER_ROMAN,
00052     FOOTNOTE_TYPE_LOWER_ROMAN_PAREN,
00053     FOOTNOTE_TYPE_UPPER_ROMAN,
00054     FOOTNOTE_TYPE_UPPER_ROMAN_PAREN,
00055     _FOOTNOTE_TYPE_INVALID = 10000
00056 } FootnoteType;
00057 
00059 typedef struct {
00060     FootnoteType n;        
00061     const char * label;    
00062     const char * prop;     
00063 } FootnoteTypeDesc;
00064 
00065 extern const FootnoteTypeDesc s_FootnoteTypeDesc[];
00066 
00067 class FV_View;
00068 class fl_DocListener;
00069 class fl_SectionLayout;
00070 class fl_DocSectionLayout;
00071 class fl_BlockLayout;
00072 class fl_TOCLayout;
00073 class fp_Page;
00074 class PD_Document;
00075 class PP_AttrProp;
00076 class GR_Graphics;
00077 class GR_Font;
00078 class UT_Timer;
00079 class UT_Worker;
00080 class PX_ChangeRecord_StruxChange;
00081 class fl_FootnoteLayout;
00082 class fl_AnnotationLayout;
00083 class fl_EndnoteLayout;
00084 class fp_EndnoteContainer;
00085 class GR_EmbedManager;
00086 class fl_FrameLayout;
00087 class fp_FrameContainer;
00088 class fp_Container;
00089 
00090 // the following get used by view and layout code,
00091 // since they're private to the formatter, we stick 'em here
00092 #define fl_PAGEVIEW_PAGE_SEP    m_pG->tlu(20)       // must be <= MARGIN_Y
00093 #define fl_PAGEVIEW_MARGIN_X    m_pG->tlu(25)
00094 #define fl_PAGEVIEW_MARGIN_Y    m_pG->tlu(25)
00095 
00096 // ----------------------------------------------------------------
00097 
00098 // Note: Here used to be an overview of the classes in this
00099 // directory. That has been moved to README.TXT since a newcomer would
00100 // not know which source file to look in for that
00101 // information. README.TXT on the other hand stands clearly out from
00102 // the rest of the files.                           jskov 2000.12.29
00103 
00104 class ABI_EXPORT FL_DocLayout
00105 {
00106     friend class fl_DocListener;
00107     friend class fl_BlockLayout;
00108 public:
00109     FL_DocLayout(PD_Document* doc, GR_Graphics* pG);
00110     ~FL_DocLayout();
00111 
00112     void fillLayouts(void);
00113     bool loadPendingObjects(void);
00114     bool AnchoredObjectHelper(double x, double y, UT_sint32 iPage, UT_UTF8String & allProps, PT_DocPosition & pos, fp_Page *& pPage);
00115     void setView(FV_View*);
00116 
00117     inline FV_View * getView(void) const { return m_pView; }
00118     inline GR_Graphics* getGraphics(void) const { return m_pG; }
00119     void setGraphics(GR_Graphics * pG);
00120     UT_uint32           getGraphicTick(void) const { return m_iGraphicTick;}
00121     void                incrementGraphicTick(void) { m_iGraphicTick++;}
00122     inline PD_Document* getDocument(void) const { return m_pDoc; }
00123 #ifdef ENABLE_SPELL
00124     inline const fl_BlockLayout* getPendingBlockForSpell(void) const { return m_pPendingBlockForSpell; };
00125     inline const fl_PartOfBlockPtr& getPendingWordForSpell(void) const { return m_pPendingWordForSpell; };
00126 #endif
00127 
00128     // The smart quote stuff works by listening for insertions (typing
00129     // and paste) and motion.  It needs one character of type-ahead
00130     // before working the algorithm, so a single quote character going
00131     // by is remembered as "pending".  After the type-ahead (or
00132     // motion) occurs, the pending quote is considered for promotion.
00133     // For an insertion of multiple characters (which probably just
00134     // means a paste), all smart quote consideration can be done
00135     // immediately except for a quote occuring in the very last
00136     // character of the stuff being inserted.
00137     inline fl_BlockLayout* getPendingBlockForSmartQuote(void) const { return m_pPendingBlockForSmartQuote; };
00138     inline UT_uint32 getOffsetForSmartQuote(void) const { return m_uOffsetForSmartQuote; };
00139     void setPendingSmartQuote(fl_BlockLayout *block, UT_uint32 offset);
00140     void considerSmartQuoteCandidateAt(fl_BlockLayout *block, UT_uint32 offset);
00141     inline void considerPendingSmartQuoteCandidate() {considerSmartQuoteCandidateAt(m_pPendingBlockForSmartQuote, m_uOffsetForSmartQuote); }
00142 
00143     void            notifyBlockIsBeingDeleted(fl_BlockLayout *pBlock);
00144     void            setSkipUpdates(UT_uint32 numSkips) {m_iSkipUpdates = numSkips;}
00145     UT_uint32       getSkipUpdates(void) { return m_iSkipUpdates;}
00146     void            setNeedsRedraw(void);
00147     UT_sint32       getHeight() const;
00148     UT_sint32       getWidth() const;
00149     void            refreshRunProperties(void);
00150     const GR_Font*  findFont(const PP_AttrProp * pSpanAP,
00151                              const PP_AttrProp * pBlockAP,
00152                              const PP_AttrProp * pSectionAP,
00153                              bool isField = false
00154         ) const;
00155 
00156     const GR_Font*  findFont(const PP_AttrProp * pSpanAP,
00157                  const PP_AttrProp * pBlockAP,
00158                  const PP_AttrProp * pSectionAP,
00159                  GR_Graphics * pG,
00160                  bool isField = false
00161         ) const;
00162 
00163     void        changeDocSections(const PX_ChangeRecord_StruxChange * pcrx, fl_DocSectionLayout * pDSL);
00164     fp_Page*    addNewPage(fl_DocSectionLayout* pOwner, bool bNoUpdate=false);
00165     fp_Page*    getFirstPage() const;
00166     fp_Page*    getLastPage() const;
00167     fp_Page*    getNthPage(int n) const;
00168     UT_sint32   countPages() const;
00169     UT_sint32   findPage(const fp_Page * pPage) const;
00170     void            setFramePageNumbers(UT_sint32 iStartPage);
00171     fl_FrameLayout* relocateFrame(fl_FrameLayout * pFL, fl_BlockLayout * newBlock,
00172                       const PP_PropertyVector & attributes = PP_NOPROPS, const PP_PropertyVector & properties = PP_NOPROPS);
00173     void            clearAllCountWraps(void);
00174     bool addFramesToBeInserted(fp_FrameContainer * pFrame);
00175     bool removeFramesToBeInserted(fp_FrameContainer * pFrame);
00176     fp_FrameContainer * findFramesToBeInserted(fp_Page * pPage);
00177 
00178     UT_sint32   getPercentFilled(void) const
00179         { return m_iFilled;}
00180     void         setPercentFilled(UT_sint32 iFill)
00181         { m_iFilled = iFill;}
00182     void        setLayoutIsFilling(bool bisFill) { m_bisLayoutFilling = bisFill;}
00183     bool        isLayoutFilling(void) const { return m_bisLayoutFilling;}
00184     fl_BlockLayout* findBlockAtPosition(PT_DocPosition pos, bool bLookOnlyBefore = false) const;
00185     fl_BlockLayout* findBlockAtPositionReverse(PT_DocPosition pos) const;
00186     void        deletePage(fp_Page* pPage, bool bDontNotify);
00187 
00188     void        formatAll();
00189     void        updateLayout();
00190     void        updateOnViewModeChange();
00191     void        rebuildFromHere(fl_DocSectionLayout * pDSL);
00192     void        updateColor();
00193 
00194 #ifdef ENABLE_SPELL
00195     bool        isPendingWordForSpell(void) const;
00196     bool        touchesPendingWordForSpell(fl_BlockLayout *pBlock,
00197                                            UT_sint32 iOffset,
00198                                            UT_sint32 chg) const;
00199     void        setPendingWordForSpell(const fl_BlockLayout *pBlock,
00200                            const fl_PartOfBlockPtr& pWord);
00201     bool        checkPendingWordForSpell(void);
00202     void        dequeueAll(void);
00203     void        queueAll(UT_uint32 iReason);
00204     void        queueBlockForBackgroundCheck(UT_uint32 reason, fl_BlockLayout *pBlock, bool bHead=false);
00205     bool        dequeueBlockForBackgroundCheck(fl_BlockLayout *pBlock);
00206 
00207     fl_BlockLayout *spellQueueHead(void) const
00208         {
00209             return m_toSpellCheckHead;
00210         }
00211     void        setSpellQueueHead(fl_BlockLayout *h)
00212         {
00213             m_toSpellCheckHead = h;
00214         }
00215     fl_BlockLayout *spellQueueTail(void) const
00216         {
00217             return m_toSpellCheckTail;
00218         }
00219     void        setSpellQueueTail(fl_BlockLayout *t)
00220         {
00221             m_toSpellCheckTail = t;
00222         }
00223 #endif
00224     void        addSection(fl_DocSectionLayout*);
00225     void        removeSection(fl_DocSectionLayout*);
00226     void        insertSectionAfter(fl_DocSectionLayout* pAfter, fl_DocSectionLayout* pNewSL);
00227     void        addHdrFtrSection(fl_SectionLayout* pHdrFtrSL);
00228     void        removeHdrFtrSection(fl_SectionLayout* pHdrFtrSL);
00229 
00230     inline      fl_DocSectionLayout* getFirstSection(void) const { return m_pFirstSection; }
00231     inline      fl_DocSectionLayout* getLastSection(void) const { return m_pLastSection; }
00232 
00233     fl_DocSectionLayout*    findSectionForHdrFtr(const char* pszHdrFtrID) const;
00234     void                deleteEmptyColumnsAndPages(void);
00235     void                deleteEmptyPages( bool bDontNotify = false);
00236     GR_EmbedManager * getEmbedManager(const char * szEmbedType);
00237     UT_sint32       getDocPageHeight(void) const {return m_iPageHeight;}
00238     UT_sint32       getDocPageWidth(void) const {return m_iPageWidth;}
00239 
00240 // --------------------------------------------------------------------
00241 // Footnote Methods
00242 // fl_DocLAyout stores this Vector of footnotes to speed things up and
00243 // to provide convience routines for other classes and methods
00244 //
00245     UT_uint32           countFootnotes(void) const;
00246     void                addFootnote(fl_FootnoteLayout *);
00247     void                removeFootnote(fl_FootnoteLayout *);
00248     fl_FootnoteLayout * getNthFootnote(UT_sint32 i) const;
00249     UT_sint32           getFootnoteVal(UT_uint32 footpid) const;
00250     fl_FootnoteLayout * findFootnoteLayout(UT_uint32 footpid) const;
00251     FootnoteType        getFootnoteType(void) const;
00252     void                getStringFromFootnoteVal(UT_String & sVal, UT_sint32 iVal, FootnoteType iFootType) const;
00253 
00254     UT_sint32           getInitialFootVal(void) const
00255         { return m_iFootnoteVal;}
00256     bool                getRestartFootOnSection(void) const
00257         { return m_bRestartFootSection;}
00258     bool                getRestartFootOnPage(void) const
00259         { return m_bRestartFootPage;}
00260     FootnoteType        FootnoteTypeFromString( const gchar * pszStr);
00261 // EndNotes
00262     void                insertEndnoteContainer(fp_EndnoteContainer * pECon);
00263     void                removeEndnoteContainer(fp_EndnoteContainer * pECon);
00264     fl_DocSectionLayout * getDocSecForEndnote(fp_EndnoteContainer * pECon  ) const;
00265     UT_uint32           countEndnotes(void) const;
00266     void                addEndnote(fl_EndnoteLayout *);
00267     void                removeEndnote(fl_EndnoteLayout *);
00268     fl_EndnoteLayout *  getNthEndnote(UT_sint32 i) const;
00269     UT_sint32           getEndnoteVal(UT_uint32 endpid) const;
00270     fl_EndnoteLayout * findEndnoteLayout(UT_uint32 endpid) const;
00271 
00272     FootnoteType        getEndnoteType(void) const
00273         { return m_EndnoteType; }
00274     UT_sint32           getInitialEndVal(void) const
00275         { return m_iEndnoteVal;}
00276     bool                getRestartEndOnSection(void) const
00277         { return m_bRestartEndSection;}
00278     bool                getPlaceEndAtDocEnd(void) const
00279         { return m_bPlaceAtDocEnd;}
00280     bool                getPlaceEndAtSecEnd(void) const
00281         { return m_bPlaceAtSecEnd;}
00282 // --------------------------------------------------------------------
00283 // Annotation Methods
00284 // fl_DocLAyout stores this Vector of Anntations to speed things up and
00285 // to provide convience routines for other classes and methods
00286 //
00287     UT_uint32           countAnnotations(void) const;
00288     void                addAnnotation(fl_AnnotationLayout * pAL);
00289     void                removeAnnotation(fl_AnnotationLayout * pAL);
00290     fl_AnnotationLayout * getNthAnnotation(UT_sint32 i) const;
00291     UT_sint32           getAnnotationVal(UT_uint32 footpid) const;
00292     fl_AnnotationLayout * findAnnotationLayout(UT_uint32 footpid) const;
00293     bool                displayAnnotations(void) const;
00294     void                setDisplayAnnotations(bool bDisplayAnnotations);
00295     bool                collapseAnnotations(void);
00296 
00297 // --------------------------------------------------------------------
00298 // RDF Anchor Methods
00299     bool                displayRDFAnchors(void) const;
00300     void                setDisplayRDFAnchors(bool v);
00301 
00302 // ---------------------------------------------------
00303 // Table of contents
00304 //----------------------------------------------------
00305     UT_sint32           getNumTOCs(void) const;
00306     fl_TOCLayout *      getNthTOC(UT_sint32 i) const;
00307     bool                addOrRemoveBlockFromTOC(fl_BlockLayout * pBlock);
00308     bool                removeBlockFromTOC(fl_BlockLayout * pBlock);
00309     bool                isBlockInTOC(fl_BlockLayout * pBlock) const;
00310     bool                getMatchingBlocksFromTOCs(fl_BlockLayout * pBlock,  UT_GenericVector<fl_BlockLayout*>* pVecBlock) const;
00311     bool                addTOC(fl_TOCLayout * pTOC);
00312     bool                removeTOC(fl_TOCLayout * pTOC);
00313     void                recalculateTOCFields(void);
00314     bool                updateTOCsOnBookmarkChange(const gchar * pBookmark);
00315 // --------------------------------------------------------------------
00316 #ifdef ENABLE_SPELL
00317     bool        getAutoSpellCheck(void) const { return (hasBackgroundCheckReason(bgcrSpelling)); }
00318     bool        getAutoGrammarCheck(void) const { return (hasBackgroundCheckReason(bgcrGrammar)); }
00319     bool        getSpellCheckCaps(void) const { return m_bSpellCheckCaps; }
00320     bool        getSpellCheckNumbers(void) const { return m_bSpellCheckNumbers; }
00321     bool        getSpellCheckInternet(void) const { return m_bSpellCheckInternet; }
00322     void        recheckIgnoredWords();
00323 #endif
00324 // --------------------------------------------------------------------
00325     bool        getSmartQuotes(void) const { return (hasBackgroundCheckReason(bgcrSmartQuotes)); }
00326 // --------------------------------------------------------------------
00327 
00328     inline void         addBackgroundCheckReason(UT_uint32 reason) {m_uDocBackgroundCheckReasons |= reason;}
00329     inline void         removeBackgroundCheckReason(UT_uint32 reason) {m_uDocBackgroundCheckReasons &= ~reason;}
00330     inline bool     hasBackgroundCheckReason(UT_uint32 reason) const {return ((m_uDocBackgroundCheckReasons & reason) ? true : false);}
00331     inline UT_uint32    getBackgroundCheckReasons() const {return (m_uDocBackgroundCheckReasons);}
00332 
00333 #ifdef ENABLE_SPELL
00334     fl_BlockLayout *        getPendingBlockForGrammar(void) const
00335       {
00336         return m_PendingBlockForGrammar;
00337       }
00338     void        setPendingBlockForGrammar(fl_BlockLayout * pBL);
00339 #endif
00340     void        triggerPendingBlock(fl_BlockLayout * pBL);
00341 
00342     // These are used as bit flags in a UT_uint32.  The enum is here just
00343     // to get the namespace protection.
00344     enum backgroundCheckReason
00345     {
00346         bgcrNone         = 0,
00347         bgcrDebugFlash   = (1 <<  0),
00348         bgcrSpelling     = (1 <<  1),
00349         bgcrSmartQuotes  = (1 <<  2),   // ha!  we're not using background checks for this after all
00350         bgcrGrammar     = (1 <<  3)
00351     };
00352 
00353     // New List Guts
00354     inline fl_AutoNumPtr    getListByID(UT_uint32 id) const;
00355     inline fl_AutoNumPtr    getNthList(UT_uint32 i) const; // { return m_vecLists[i]; }
00356     inline UT_uint32    getListsCount(void) const; // { return m_vecLists.getItemCount(); }
00357     inline void     addList(const fl_AutoNumPtr & pAutoNum);
00358     bool            isLayoutDeleting(void) const {return m_bDeletingLayout;}
00359     UT_uint32       getRedrawCount() const {return m_iRedrawCount;}
00360 
00361 
00362     void            updatePropsNoRebuild(void);
00363     void            updatePropsRebuild(void);
00364     PT_DocPosition  getDocSize(void) const
00365         { return m_iDocSize;}
00366     UT_uint32       getLID(void) const
00367         { return m_lid;}
00368     void            notifyListeners(AV_ChangeMask mask);
00369     void            setQuickPrint(GR_Graphics * pGraphics);
00370     GR_Graphics *   getQuickPrintGraphics(void) const;
00371     bool            isQuickPrint(void) const
00372     { return m_bIsQuickPrint;}
00373     GR_EmbedManager * getQuickPrintEmbedManager(const char * szEmbedType);
00374     fp_PageSize m_docViewPageSize;
00375     bool            setDocViewPageSize(const PP_AttrProp * pAP);
00376         void            setSaveContainerPointer( fp_Container * pContainer);
00377     void            setRebuiltBlock(fl_BlockLayout *pBlock);
00378     fl_BlockLayout* getRebuiltBlock(void) const;
00379     fp_Container *  getSavedContainerPointer(void) const;
00380 
00381 #ifdef FMT_TEST
00382 
00383     static      FL_DocLayout* m_pDocLayout;
00384 
00385     void        __dump(FILE * fp) const;
00386 #endif
00387 
00388 protected:
00389     static void         _backgroundCheck(UT_Worker * pTimer);
00390 #ifdef ENABLE_SPELL
00391     void                _toggleAutoSpell(bool bSpell);
00392     void                _toggleAutoGrammar(bool bGrammar);
00393 #endif
00394     void                _toggleAutoSmartQuotes(bool bSQ);
00395 
00396     static void         _prefsListener(class XAP_Prefs *,
00397                                        UT_StringPtrMap *, void *);
00398 
00399 
00400     static void         _redrawUpdate(UT_Worker * pTimer);
00401     void                _setDocPageDimensions(void);
00402 
00403 private:
00404     void                _lookupProperties(void);
00405     GR_Graphics*        m_pG;
00406     PD_Document*        m_pDoc;
00407     FV_View*            m_pView;
00408     fl_DocListener*     m_pDocListener;
00409     PL_ListenerId       m_lid;
00410 
00411     UT_GenericVector<fp_Page *> m_vecPages;
00412     fl_DocSectionLayout*m_pFirstSection;
00413     fl_DocSectionLayout*m_pLastSection;
00414 
00415     // spell check stuff
00416     // UT_GenericVector<fl_BlockLayout *> m_vecUncheckedBlocks;
00417     fl_BlockLayout      *m_toSpellCheckHead;
00418     fl_BlockLayout      *m_toSpellCheckTail;
00419     const fl_BlockLayout*       m_pPendingBlockForSpell;    // if NULL, then ignore m_pPendingWordForSpell
00420     fl_PartOfBlockPtr       m_pPendingWordForSpell;
00421     bool                m_bSpellCheckCaps;
00422     bool                m_bSpellCheckNumbers;
00423     bool                m_bSpellCheckInternet;
00424     bool                m_bAutoSpellCheck;
00425     UT_uint32                       m_uDocBackgroundCheckReasons;
00426     bool                         m_bStopSpellChecking; // Handshaking
00427     bool                         m_bImSpellCheckingNow; // Variables
00428     // smart quote latent instance
00429     fl_BlockLayout*     m_pPendingBlockForSmartQuote;  // if NULL, ignore m_uOffsetForSmartQuote
00430     UT_uint32           m_uOffsetForSmartQuote;
00431     char                m_szCurrentTransparentColor[10];
00432     UT_Worker*          m_pBackgroundCheckTimer;
00433 
00434     XAP_Prefs *         m_pPrefs;
00435 
00436     UT_Timer*           m_pRedrawUpdateTimer;
00437     UT_uint32           m_iSkipUpdates;
00438     bool                m_bDeletingLayout;
00439     bool                m_bisLayoutFilling;
00440     UT_uint32           m_iRedrawCount;
00441     UT_sint32           m_iPageWidth;
00442     UT_sint32           m_iPageHeight;
00443     UT_GenericVector<fl_FootnoteLayout *> m_vecFootnotes;
00444     UT_GenericVector<fl_AnnotationLayout *> m_vecAnnotations;
00445     UT_GenericVector<fl_EndnoteLayout *> m_vecEndnotes;
00446     FootnoteType        m_FootnoteType;
00447     UT_sint32           m_iFootnoteVal;
00448     bool                m_bRestartFootSection;
00449     bool                m_bRestartFootPage;
00450     UT_sint32           m_iEndnoteVal;
00451     FootnoteType        m_EndnoteType;
00452     bool                m_bRestartEndSection;
00453     bool                m_bPlaceAtDocEnd;
00454     bool                m_bPlaceAtSecEnd;
00455     UT_uint32           m_iGraphicTick;
00456     UT_GenericVector<fl_TOCLayout *> m_vecTOC;
00457     PT_DocPosition      m_iDocSize;
00458     UT_sint32           m_iFilled;
00459     bool                m_bSpellCheckInProgress;
00460     std::map<std::string, GR_EmbedManager *> m_mapEmbedManager;
00461     bool                m_bAutoGrammarCheck;
00462     fl_BlockLayout  *   m_PendingBlockForGrammar;
00463     UT_sint32           m_iGrammarCount;
00464     bool                m_bFinishedInitialCheck;
00465     PT_DocPosition      m_iPrevPos;
00466     std::map<std::string, GR_EmbedManager *> m_mapQuickPrintEmbedManager;
00467     GR_Graphics *       m_pQuickPrintGraphics;
00468     bool                m_bIsQuickPrint;
00469     bool                m_bDisplayAnnotations;
00470     bool                m_bDisplayRDFAnchors;
00471         fp_Container *      m_pSavedContainer;
00472     fl_BlockLayout *    m_pRebuiltBlockLayout;
00473     UT_GenericVector<fp_FrameContainer *> m_vecFramesToBeInserted;
00474 };
00475 
00476 #endif /* DOCLAYOUT_H */
00477 
00478 

Generated on Sun Feb 14 2021 for AbiWord by  doxygen 1.7.1