diff options
Diffstat (limited to 'writerfilter/source/doctok/WW8Sttbf.cxx')
-rw-r--r-- | writerfilter/source/doctok/WW8Sttbf.cxx | 79 |
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; +} + }} |