summaryrefslogtreecommitdiff
path: root/writerfilter/source/doctok/WW8Sttbf.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/doctok/WW8Sttbf.cxx')
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.cxx79
1 files changed, 79 insertions, 0 deletions
diff --git a/writerfilter/source/doctok/WW8Sttbf.cxx b/writerfilter/source/doctok/WW8Sttbf.cxx
index e5d87b9aeaa0..36e2e805436d 100644
--- a/writerfilter/source/doctok/WW8Sttbf.cxx
+++ b/writerfilter/source/doctok/WW8Sttbf.cxx
@@ -26,6 +26,7 @@
************************************************************************/
#include <WW8Sttbf.hxx>
+#include <resources.hxx>
namespace writerfilter {
namespace doctok
@@ -86,4 +87,82 @@ WW8StructBase::Pointer_t WW8Sttbf::getExtraData(sal_uInt32 nPos)
(new WW8StructBase(*this, getExtraOffset(nPos), mnExtraDataCount));
}
+WW8SttbTableResource::WW8SttbTableResource(WW8Sttbf::Pointer_t pSttbf)
+: mpSttbf(pSttbf)
+{
+}
+
+WW8SttbTableResource::~WW8SttbTableResource()
+{
+}
+
+void WW8SttbTableResource::resolve(Table & rTable)
+{
+ sal_uInt32 nCount = mpSttbf->getEntryCount();
+
+ for (sal_uInt32 n = 0; n < nCount; n++)
+ {
+ WW8StringValue::Pointer_t pVal(new WW8StringValue(mpSttbf->getEntry(n)));
+ ::writerfilter::Reference<Properties>::Pointer_t pProps(new WW8StringProperty(0, pVal));
+
+ rTable.entry(n, pProps);
+ }
+}
+
+string WW8SttbTableResource::getType() const
+{
+ return "WW8SttbTableResource";
+}
+
+WW8StringProperty::WW8StringProperty(sal_uInt32 nId, WW8StringValue::Pointer_t pValue)
+: mnId(nId), mpValue(pValue)
+{
+}
+
+WW8StringProperty::~WW8StringProperty()
+{
+}
+
+void WW8StringProperty::resolve(Properties & rProperties)
+{
+ rProperties.attribute(mnId, *mpValue);
+}
+
+string WW8StringProperty::getType() const
+{
+ return "WW8StringProperty";
+}
+
+sal_uInt32 WW8SttbRgtplc::getEntryCount()
+{
+ return getU16(2);
+}
+
+::writerfilter::Reference<Properties>::Pointer_t
+WW8SttbRgtplc::getEntry(sal_uInt32 nIndex)
+{
+ ::writerfilter::Reference<Properties>::Pointer_t pResult;
+
+ sal_uInt32 nOffset = 6;
+
+ while (nIndex > 0)
+ {
+ sal_uInt16 nCount = getU16(nOffset);
+
+ nOffset = nOffset + 2 + nCount;
+ ++nIndex;
+ }
+
+ sal_uInt16 nCount = getU16(nOffset);
+
+ if (nCount > 0)
+ {
+ WW8Tplc * pTplc = new WW8Tplc(*this, nOffset + 2, nCount);
+
+ pResult.reset(pTplc);
+ }
+
+ return pResult;
+}
+
}}