[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - include/svx svx/source
matteocam
matteo.campanelli at gmail.com
Thu Jun 18 12:25:46 PDT 2015
include/svx/textchain.hxx | 24 ++++++++++++++++-----
svx/source/svdraw/textchain.cxx | 44 +++++++++++++++++++++++++++++++++++++---
2 files changed, 59 insertions(+), 9 deletions(-)
New commits:
commit d674ed2e472d555a0eb4ec46c7d104ae85907794
Author: matteocam <matteo.campanelli at gmail.com>
Date: Thu Jun 18 15:24:10 2015 -0400
Prototype of TextChain having support for overwrite on overflow
Change-Id: I6ea6e4053663ecdb3e484d857e0a9dd3b7fc1dae
diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx
index b3eda9b..01798d5 100644
--- a/include/svx/textchain.hxx
+++ b/include/svx/textchain.hxx
@@ -29,16 +29,19 @@ namespace rtl {
class OUString;
}
-typedef std::map< rtl::OUString, ImpChainLinkProperties > LinkPropertiesMaps;
+typedef rtl::OUString ChainLinkId;
+typedef std::map< ChainLinkId, ImpChainLinkProperties *> LinkPropertiesMap;
class ImpChainLinkProperties
{
- public:
+ protected:
friend class TextChain;
- private:
- // all kind of stuff such has MergeableFirstParagraphs or if overflapping should occurr on overflow
+ ImpChainLinkProperties();
+
+ bool bOverwriteOnOverflow;
+ // all kind of stuff such has MergeableFirstParagraphs or if overwrite should occurr on overflow
};
@@ -46,13 +49,22 @@ class TextChain {
public:
TextChain();
+ ~TextChain();
+
void AppendLink(SdrTextObj *);
- SdrTextObj *GetNextLink(SdrTextObj *);
+ bool IsLinkInChain(SdrTextObj *) const;
+ SdrTextObj *GetNextLink(SdrTextObj *) const;
+
+ ChainLinkId GetId(SdrTextObj *) const;
+ ImpChainLinkProperties *GetLinkProperties(SdrTextObj *);
// return whether a paragraph is split between the two links in the argument
- bool GetLinksHaveMergeableFirstPara(SdrTextObj *pPrevLink, SdrTextObj *pNextLink);
+ bool GetLinksHaveMergeableFirstPara(SdrTextObj *, SdrTextObj *);
void SetOverwriteOnOverflow(SdrTextObj *, bool );
bool GetOverwriteOnOverflow(SdrTextObj *pTarget);
+
+ protected:
+ LinkPropertiesMap maLinkPropertiesMap;
};
#endif // INCLUDED_SVX_TEXTCHAIN_HXX
diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx
index 709d562..3637d45 100644
--- a/svx/source/svdraw/textchain.cxx
+++ b/svx/source/svdraw/textchain.cxx
@@ -20,20 +20,40 @@
#include <svx/textchain.hxx>
#include <svx/svdotext.hxx>
+
+ImpChainLinkProperties::ImpChainLinkProperties()
+{
+ // give defaults
+ bOverwriteOnOverflow = false;
+}
+
+// XXX: All getters in the class assume that the guy is in the chain
+
TextChain::TextChain()
{
}
+TextChain::~TextChain()
+{
+ // XXX: Should free all LinkProperties
+}
+
+bool TextChain::IsLinkInChain(SdrTextObj *) const
+{
+ return true; // XXX: Should make an actual check
+}
+
void TextChain::AppendLink(SdrTextObj *)
{
+ // XXX
}
-SdrTextObj *TextChain::GetNextLink(SdrTextObj *)
+SdrTextObj *TextChain::GetNextLink(SdrTextObj *) const
{
- return NULL; // XXX
+ return NULL; // XXX: To be changed. It'd be a mess to implement now
}
-bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj *pPrevLink, SdrTextObj *pNextLink)
+bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj* /* pPrevLink */, SdrTextObj* /* pNextLink */)
{
// XXX
return false;
@@ -41,12 +61,30 @@ bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj *pPrevLink, SdrTextObj
void TextChain::SetOverwriteOnOverflow(SdrTextObj *pTarget, bool bOverwrite)
{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ pLinkProperties->bOverwriteOnOverflow = bOverwrite;
+}
+
+ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink)
+{
+ // if the guy does not already have properties in the map make them
+ ChainLinkId aLinkId = GetId(pLink);
+ if (maLinkPropertiesMap.find(aLinkId) == maLinkPropertiesMap.end()) {
+ maLinkPropertiesMap[aLinkId] = new ImpChainLinkProperties;
+ }
+ return maLinkPropertiesMap[aLinkId];
}
bool TextChain::GetOverwriteOnOverflow(SdrTextObj *pTarget)
{
+ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+ return pLinkProperties->bOverwriteOnOverflow;
+}
+ChainLinkId TextChain::GetId(SdrTextObj *pLink) const
+{
+ return pLink->GetName();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list