summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/textchain.hxx102
-rw-r--r--svx/source/svdraw/textchain.cxx82
2 files changed, 109 insertions, 75 deletions
diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx
index 2a0cc42f6b02..cfb69f6fe85c 100644
--- a/include/svx/textchain.hxx
+++ b/include/svx/textchain.hxx
@@ -23,53 +23,6 @@
#include <editeng/editdata.hxx>
#include <map>
-/*
- * Properties can be accessed and set from a TextChain with:
- * - T TextChain::GetPROPNAME(SdrTextObj *)
- * - void TextChain::SetPROPNAME(SdrTextObj *, T)
- * where T and PROPNAME are respectively type and name of a property.
- *
- * To add a property PROPNAME of type T (and its interface) in TextChain:
- * 1) Add
- * "DECL_CHAIN_PROP(PROPNAME, T)"
- * in class ImpChainLinkProperties;
- * 2) Add
- * "INIT_CHAIN_PROP(PROPNAME, V)"
- * in constructor of ImpChainLinkProperties below
- * (V is the initialization value for PROPNAME)
- *
- * 3) Add
- * "DECL_CHAIN_PROP_INTERFACE(PROPNAME, T)"
- * in class TextChain (under "public:");
- * 4) Add
- * "IMPL_CHAIN_PROP_INTERFACE(PROPNAME, T)"
- * in file "svx/source/svdraw/textchain.cxx"
-*/
-
-#define DECL_CHAIN_PROP(PropName, PropType) \
- PropType a##PropName;
-
-#define INIT_CHAIN_PROP(PropName, PropDefault) \
- a##PropName = (PropDefault);
-
-#define DECL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType const & Get##PropName (const SdrTextObj *); \
- void Set##PropName (const SdrTextObj *, PropType);
-
-#define IMPL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType const & TextChain::Get##PropName (const SdrTextObj *pTarget) { \
- ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
- return pLinkProperties->a##PropName; \
- } \
- void TextChain::Set##PropName (const SdrTextObj *pTarget, PropType aPropParam) \
- { \
- ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
- pLinkProperties->a##PropName = aPropParam; \
- }
-
-/* End Special Properties Macro */
-
-
class ImpChainLinkProperties;
class SdrTextObj;
class SdrModel;
@@ -94,24 +47,24 @@ protected:
friend class TextChain;
ImpChainLinkProperties() {
- INIT_CHAIN_PROP(NilChainingEvent, false)
- INIT_CHAIN_PROP(CursorEvent, CursorChainingEvent::NULL_EVENT)
- INIT_CHAIN_PROP(PreChainingSel, ESelection(0,0,0,0));
- INIT_CHAIN_PROP(PostChainingSel, ESelection(0,0,0,0));
- INIT_CHAIN_PROP(IsPartOfLastParaInNextLink, false) // XXX: Should come from file
- INIT_CHAIN_PROP(PendingOverflowCheck, false)
- INIT_CHAIN_PROP(SwitchingToNextBox, false)
+ aNilChainingEvent = false;
+ aCursorEvent = CursorChainingEvent::NULL_EVENT;
+ aPreChainingSel = ESelection(0,0,0,0);
+ aPostChainingSel = ESelection(0,0,0,0);
+ aIsPartOfLastParaInNextLink = false; // XXX: Should come from file
+ aPendingOverflowCheck = false;
+ aSwitchingToNextBox = false;
}
private:
// NOTE: Remember to set default value in constructor when adding field
- DECL_CHAIN_PROP(NilChainingEvent, bool)
- DECL_CHAIN_PROP(CursorEvent, CursorChainingEvent)
- DECL_CHAIN_PROP(PreChainingSel, ESelection)
- DECL_CHAIN_PROP(PostChainingSel, ESelection)
- DECL_CHAIN_PROP(IsPartOfLastParaInNextLink, bool)
- DECL_CHAIN_PROP(PendingOverflowCheck, bool)
- DECL_CHAIN_PROP(SwitchingToNextBox, bool)
+ bool aNilChainingEvent;
+ CursorChainingEvent aCursorEvent;
+ ESelection aPreChainingSel;
+ ESelection aPostChainingSel;
+ bool aIsPartOfLastParaInNextLink;
+ bool aPendingOverflowCheck;
+ bool aSwitchingToNextBox;
};
@@ -129,16 +82,29 @@ public:
ImpChainLinkProperties *GetLinkProperties(const SdrTextObj *);
// Specific Link Properties
- DECL_CHAIN_PROP_INTERFACE(CursorEvent, CursorChainingEvent)
- DECL_CHAIN_PROP_INTERFACE(NilChainingEvent, bool)
- DECL_CHAIN_PROP_INTERFACE(PreChainingSel, ESelection)
- DECL_CHAIN_PROP_INTERFACE(PostChainingSel, ESelection)
+ CursorChainingEvent const & GetCursorEvent(const SdrTextObj *);
+ void SetCursorEvent(const SdrTextObj *, CursorChainingEvent const &);
+
+ bool GetNilChainingEvent(const SdrTextObj *);
+ void SetNilChainingEvent(const SdrTextObj *, bool);
+
+ ESelection const & GetPreChainingSel(const SdrTextObj *);
+ void SetPreChainingSel(const SdrTextObj *, ESelection const &);
+
+ ESelection const & GetPostChainingSel(const SdrTextObj *);
+ void SetPostChainingSel(const SdrTextObj *, ESelection const &);
+
// return whether a paragraph is split between this box and the next
- DECL_CHAIN_PROP_INTERFACE(IsPartOfLastParaInNextLink, bool)
+ bool GetIsPartOfLastParaInNextLink(const SdrTextObj *);
+ void SetIsPartOfLastParaInNextLink(const SdrTextObj *, bool );
+
// return whether there is a pending overflow check (usually when we move cursor after an overflow in the prev link)
- DECL_CHAIN_PROP_INTERFACE(PendingOverflowCheck, bool)
+ bool GetPendingOverflowCheck(const SdrTextObj *);
+ void SetPendingOverflowCheck(const SdrTextObj *, bool );
+
// return whether we are currently moving the cursor to the next box (useful to know whether we should prevent SetOutlinerParaObject invocations in SdrTextObj::EndTextEdit)
- DECL_CHAIN_PROP_INTERFACE(SwitchingToNextBox, bool)
+ bool GetSwitchingToNextBox(const SdrTextObj *);
+ void SetSwitchingToNextBox(const SdrTextObj *, bool);
protected:
TextChain();
diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx
index f6873093cffe..4160b37e9951 100644
--- a/svx/source/svdraw/textchain.cxx
+++ b/svx/source/svdraw/textchain.cxx
@@ -25,14 +25,82 @@
* Definition of Properties Interface
*/
-IMPL_CHAIN_PROP_INTERFACE(CursorEvent, CursorChainingEvent)
-IMPL_CHAIN_PROP_INTERFACE(NilChainingEvent, bool)
-IMPL_CHAIN_PROP_INTERFACE(PreChainingSel, ESelection)
-IMPL_CHAIN_PROP_INTERFACE(PostChainingSel, ESelection)
-IMPL_CHAIN_PROP_INTERFACE(IsPartOfLastParaInNextLink, bool)
-IMPL_CHAIN_PROP_INTERFACE(PendingOverflowCheck, bool)
-IMPL_CHAIN_PROP_INTERFACE(SwitchingToNextBox, bool)
+CursorChainingEvent const & TextChain::GetCursorEvent(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aCursorEvent;
+}
+void TextChain::SetCursorEvent(const SdrTextObj *pTarget, CursorChainingEvent const & rPropParam)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aCursorEvent = rPropParam;
+}
+
+bool TextChain::GetNilChainingEvent(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aNilChainingEvent;
+}
+void TextChain::SetNilChainingEvent(const SdrTextObj *pTarget, bool b)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aNilChainingEvent = b;
+}
+ESelection const & TextChain::GetPreChainingSel(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aPreChainingSel;
+}
+void TextChain::SetPreChainingSel(const SdrTextObj *pTarget, ESelection const & rPropParam)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aPreChainingSel = rPropParam;
+}
+
+ESelection const & TextChain::GetPostChainingSel(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aPostChainingSel;
+}
+void TextChain::SetPostChainingSel(const SdrTextObj *pTarget, ESelection const & rPropParam)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aPostChainingSel = rPropParam;
+}
+
+bool TextChain::GetIsPartOfLastParaInNextLink(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aIsPartOfLastParaInNextLink;
+}
+void TextChain::SetIsPartOfLastParaInNextLink(const SdrTextObj *pTarget, bool b)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aIsPartOfLastParaInNextLink = b;
+}
+
+bool TextChain::GetPendingOverflowCheck(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aPendingOverflowCheck;
+}
+void TextChain::SetPendingOverflowCheck(const SdrTextObj *pTarget, bool b)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aPendingOverflowCheck = b;
+}
+
+bool TextChain::GetSwitchingToNextBox(const SdrTextObj *pTarget)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->aSwitchingToNextBox;
+}
+void TextChain::SetSwitchingToNextBox(const SdrTextObj *pTarget, bool b)
+{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->aSwitchingToNextBox = b;
+}
/* End Definition of Properties Interface */