Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef FL_DOCLISTENER_H
00021 #define FL_DOCLISTENER_H
00022
00023 #include "ut_types.h"
00024 #include "pt_Types.h"
00025 #include "ut_stack.h"
00026 #include "xav_Listener.h"
00027 #include "pl_Listener.h"
00028
00029 class FL_DocLayout;
00030 class PD_Document;
00031 class fl_SectionLayout;
00032 class UT_Stack;
00033 class fl_ContainerLayout;
00034 class AP_StatusBar;
00035
00041 class ABI_EXPORT fl_DocListener : public PL_Listener
00042 {
00043 public:
00044 fl_DocListener(PD_Document* doc, FL_DocLayout *pLayout);
00045 virtual ~fl_DocListener();
00046
00047 virtual bool populate(fl_ContainerLayout* sfh,
00048 const PX_ChangeRecord * pcr);
00049
00050 virtual bool populateStrux(pf_Frag_Strux* sdh,
00051 const PX_ChangeRecord * pcr,
00052 fl_ContainerLayout* * psfh);
00053
00054 virtual bool change(fl_ContainerLayout* sfh,
00055 const PX_ChangeRecord * pcr);
00056
00057
00058 virtual void deferNotifications(void);
00059 virtual void processDeferredNotifications(void);
00060
00061 virtual bool insertStrux(fl_ContainerLayout* sfh,
00062 const PX_ChangeRecord * pcr,
00063 pf_Frag_Strux* sdh,
00064 PL_ListenerId lid,
00065 void (* pfnBindHandles)(pf_Frag_Strux* sdhNew,
00066 PL_ListenerId lid,
00067 fl_ContainerLayout* sfhNew));
00068 void setHoldTableLayout(bool bHold) {m_bHoldTableLayout = bHold;}
00069 bool holdTableLayout(void) { return m_bHoldTableLayout;}
00070 virtual bool signal(UT_uint32 iSignal);
00071 virtual PLListenerType getType() const {return PTL_DocLayout;}
00072
00073 const FL_DocLayout* getLayout() const {return (const FL_DocLayout*) m_pLayout;}
00074
00075 private:
00076 fl_ContainerLayout * popContainerLayout(void);
00077 void pushContainerLayout(fl_ContainerLayout * pCL);
00078 fl_ContainerLayout * getTopContainerLayout(void);
00079
00081 PD_Document* m_pDoc;
00083 FL_DocLayout* m_pLayout;
00085 bool m_bScreen;
00086 bool m_bHoldTableLayout;
00089 UT_uint32 m_iGlobCounter;
00092 fl_SectionLayout* m_pCurrentSL;
00093 UT_Stack m_sLastContainerLayout;
00094 bool m_bFootnoteInProgress;
00095 bool m_bEndFootnoteProcessedInBlock;
00096 AV_ChangeMask m_chgMaskCached;
00097 bool m_bCacheChanges;
00098 AP_StatusBar * m_pStatusBar;
00099 UT_sint32 m_iFilled;
00100 };
00101
00102 #endif
00103
00104