editeng/source/editeng/editobj.cxx | 74 +++++++++++++++++++------------- editeng/source/editeng/editobj2.hxx | 22 +++++---- editeng/source/editeng/fieldupdater.cxx | 2 editeng/source/editeng/impedit4.cxx | 6 +- 4 files changed, 63 insertions(+), 41 deletions(-)
New commits: commit df89e038095bbd834aae355f52cf1176bdf67e5f Author: Noel Grandin <n...@peralex.com> Date: Tue Sep 13 15:57:09 2016 +0200 rename ContentInfo attribs field and methods to charAttribs to match naming higher up the call stack Change-Id: I8a89625de5d834b32fd6ea863ebc4152956a21fe diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx index 7b8f00b..18dd3a4 100644 --- a/editeng/source/editeng/editobj.cxx +++ b/editeng/source/editeng/editobj.cxx @@ -127,12 +127,12 @@ ContentInfo::ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse // this should ensure that the Items end up in the correct Pool! aParaAttribs.Set( rCopyFrom.GetParaAttribs() ); - for (const auto & aAttrib : rCopyFrom.aAttribs) + for (const auto & aAttrib : rCopyFrom.maCharAttribs) { const XEditAttribute& rAttr = *aAttrib.get(); XEditAttribute* pMyAttr = MakeXEditAttribute( rPoolToUse, *rAttr.GetItem(), rAttr.GetStart(), rAttr.GetEnd()); - aAttribs.push_back(std::unique_ptr<XEditAttribute>(pMyAttr)); + maCharAttribs.push_back(std::unique_ptr<XEditAttribute>(pMyAttr)); } if ( rCopyFrom.GetWrongList() ) @@ -141,10 +141,10 @@ ContentInfo::ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse ContentInfo::~ContentInfo() { - XEditAttributesType::iterator it = aAttribs.begin(), itEnd = aAttribs.end(); + XEditAttributesType::iterator it = maCharAttribs.begin(), itEnd = maCharAttribs.end(); for (; it != itEnd; ++it) aParaAttribs.GetPool()->Remove(*(*it)->GetItem()); - aAttribs.clear(); + maCharAttribs.clear(); } void ContentInfo::NormalizeString( svl::SharedStringPool& rPool ) @@ -172,12 +172,12 @@ void ContentInfo::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterWriteString(pWriter, BAD_CAST(GetText().toUtf8().getStr())); xmlTextWriterEndElement(pWriter); aParaAttribs.dumpAsXml(pWriter); - for (size_t i=0; i<aAttribs.size(); ++i) + for (size_t i=0; i<maCharAttribs.size(); ++i) { xmlTextWriterStartElement(pWriter, BAD_CAST("attribs")); - xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("start"), "%d", aAttribs[i]->GetStart()); - xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("end"), "%d", aAttribs[i]->GetEnd()); - aAttribs[i]->GetItem()->dumpAsXml(pWriter); + xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("start"), "%d", maCharAttribs[i]->GetStart()); + xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("end"), "%d", maCharAttribs[i]->GetEnd()); + maCharAttribs[i]->GetItem()->dumpAsXml(pWriter); xmlTextWriterEndElement(pWriter); } xmlTextWriterEndElement(pWriter); @@ -731,7 +731,7 @@ void EditTextObjectImpl::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttr rLst.clear(); const ContentInfo& rC = *aContents[nPara].get(); - for (const auto & aAttrib : rC.aAttribs) + for (const auto & aAttrib : rC.maCharAttribs) { const XEditAttribute& rAttr = *aAttrib.get(); EECharAttrib aEEAttr; @@ -755,10 +755,10 @@ const SvxFieldItem* EditTextObjectImpl::GetField() const const ContentInfo& rC = *aContents[0].get(); if (rC.GetText().getLength() == 1) { - size_t nAttribs = rC.aAttribs.size(); + size_t nAttribs = rC.maCharAttribs.size(); for (size_t nAttr = nAttribs; nAttr; ) { - const XEditAttribute& rX = *rC.aAttribs[--nAttr].get(); + const XEditAttribute& rX = *rC.maCharAttribs[--nAttr].get(); if (rX.GetItem()->Which() == EE_FEATURE_FIELD) return static_cast<const SvxFieldItem*>(rX.GetItem()); } @@ -773,11 +773,11 @@ const SvxFieldData* EditTextObjectImpl::GetFieldData(sal_Int32 nPara, size_t nPo return nullptr; const ContentInfo& rC = *aContents[nPara].get(); - if (nPos >= rC.aAttribs.size()) + if (nPos >= rC.maCharAttribs.size()) // URL position is out-of-bound. return nullptr; - ContentInfo::XEditAttributesType::const_iterator it = rC.aAttribs.begin(), itEnd = rC.aAttribs.end(); + ContentInfo::XEditAttributesType::const_iterator it = rC.maCharAttribs.begin(), itEnd = rC.maCharAttribs.end(); size_t nCurPos = 0; for (; it != itEnd; ++it) { @@ -808,10 +808,10 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const for (size_t nPara = 0; nPara < nParagraphs; ++nPara) { const ContentInfo& rC = *aContents[nPara].get(); - size_t nAttrs = rC.aAttribs.size(); + size_t nAttrs = rC.maCharAttribs.size(); for (size_t nAttr = 0; nAttr < nAttrs; ++nAttr) { - const XEditAttribute& rAttr = *rC.aAttribs[nAttr].get(); + const XEditAttribute& rAttr = *rC.maCharAttribs[nAttr].get(); if (rAttr.GetItem()->Which() != EE_FEATURE_FIELD) continue; @@ -841,13 +841,13 @@ bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich ) { ContentInfo& rC = *aContents[--nPara].get(); - for (size_t nAttr = rC.aAttribs.size(); nAttr; ) + for (size_t nAttr = rC.maCharAttribs.size(); nAttr; ) { - XEditAttribute& rAttr = *rC.aAttribs[--nAttr].get(); + XEditAttribute& rAttr = *rC.maCharAttribs[--nAttr].get(); if ( !_nWhich || (rAttr.GetItem()->Which() == _nWhich) ) { pPool->Remove(*rAttr.GetItem()); - rC.aAttribs.erase(rC.aAttribs.begin()+nAttr); + rC.maCharAttribs.erase(rC.maCharAttribs.begin()+nAttr); bChanged = true; } } @@ -899,7 +899,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs ) SectionBordersType& rBorders = aParaBorders[nPara]; rBorders.push_back(0); rBorders.push_back(rC.GetText().getLength()); - for (const auto & aAttrib : rC.aAttribs) + for (const auto & aAttrib : rC.maCharAttribs) { const XEditAttribute& rAttr = *aAttrib.get(); const SfxPoolItem* pItem = rAttr.GetItem(); @@ -965,7 +965,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs ) return; } - for (const auto & aAttrib : rC.aAttribs) + for (const auto & aAttrib : rC.maCharAttribs) { const XEditAttribute& rXAttr = *aAttrib.get(); const SfxPoolItem* pItem = rXAttr.GetItem(); @@ -1131,9 +1131,9 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const bSymbolPara = true; } } - for (size_t nA = 0; nA < rC.aAttribs.size(); ++nA) + for (size_t nA = 0; nA < rC.maCharAttribs.size(); ++nA) { - const XEditAttribute& rAttr = *rC.aAttribs[nA].get(); + const XEditAttribute& rAttr = *rC.maCharAttribs[nA].get(); if (rAttr.GetItem()->Which() == EE_CHAR_FONTINFO) { @@ -1179,7 +1179,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const { for ( sal_uInt16 nChar = 0; nChar < rC.GetText().getLength(); nChar++ ) { - const ContentInfo::XEditAttributesType& rAttribs = rC.aAttribs; + const ContentInfo::XEditAttributesType& rAttribs = rC.maCharAttribs; if ( std::none_of(rAttribs.begin(), rAttribs.end(), FindAttribByChar(EE_CHAR_FONTINFO, nChar)) ) { @@ -1207,7 +1207,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const rC.GetParaAttribs().Store( rOStream ); // The number of attributes ... - size_t nAttribs = rC.aAttribs.size(); + size_t nAttribs = rC.maCharAttribs.size(); rOStream.WriteUInt16( nAttribs ); // And the individual attributes @@ -1215,7 +1215,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const // Which = 2; Surregat = 2; Start = 2; End = 2; for (size_t nAttr = 0; nAttr < nAttribs; ++nAttr) { - const XEditAttribute& rX = *rC.aAttribs[nAttr].get(); + const XEditAttribute& rX = *rC.maCharAttribs[nAttr].get(); rOStream.WriteUInt16( rX.GetItem()->Which() ); GetPool()->StoreSurrogate(rOStream, rX.GetItem()); @@ -1355,7 +1355,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) else { XEditAttribute* pAttr = new XEditAttribute( *pItem, nStart, nEnd ); - pC->aAttribs.push_back(std::unique_ptr<XEditAttribute>(pAttr)); + pC->maCharAttribs.push_back(std::unique_ptr<XEditAttribute>(pAttr)); if ( ( _nWhich >= EE_FEATURE_START ) && ( _nWhich <= EE_FEATURE_END ) ) { @@ -1382,9 +1382,9 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) } } - for (size_t nAttr = pC->aAttribs.size(); nAttr; ) + for (size_t nAttr = pC->maCharAttribs.size(); nAttr; ) { - const XEditAttribute& rAttr = *pC->aAttribs[--nAttr].get(); + const XEditAttribute& rAttr = *pC->maCharAttribs[--nAttr].get(); if ( rAttr.GetItem()->Which() == EE_CHAR_FONTINFO ) { const SvxFontItem& rFontItem = static_cast<const SvxFontItem&>(*rAttr.GetItem()); @@ -1408,8 +1408,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) XEditAttribute* pNewAttr = CreateAttrib(aNewFontItem, rAttr.GetStart(), rAttr.GetEnd()); pPool->Remove(*rAttr.GetItem()); - pC->aAttribs.erase(pC->aAttribs.begin()+nAttr); - pC->aAttribs.insert(pC->aAttribs.begin()+nAttr, std::unique_ptr<XEditAttribute>(pNewAttr)); + pC->maCharAttribs[nAttr] = std::unique_ptr<XEditAttribute>(pNewAttr); for ( sal_uInt16 nChar = pNewAttr->GetStart(); nChar < pNewAttr->GetEnd(); nChar++ ) { @@ -1440,7 +1439,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) for ( sal_uInt16 nChar = 0; nChar < pC->GetText().getLength(); nChar++ ) { - const ContentInfo::XEditAttributesType& rAttribs = pC->aAttribs; + const ContentInfo::XEditAttributesType& rAttribs = pC->maCharAttribs; if ( std::none_of(rAttribs.begin(), rAttribs.end(), FindAttribByChar(EE_CHAR_FONTINFO, nChar)) ) { diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx index 20558a1..736e7cd7 100644 --- a/editeng/source/editeng/editobj2.hxx +++ b/editeng/source/editeng/editobj2.hxx @@ -48,8 +48,8 @@ class XEditAttribute { private: const SfxPoolItem* pItem; - sal_uInt16 nStart; - sal_uInt16 nEnd; + sal_uInt16 nStart; + sal_uInt16 nEnd; XEditAttribute( const XEditAttribute& rCopyFrom ) = delete; @@ -57,7 +57,7 @@ public: XEditAttribute( const SfxPoolItem& rAttr, sal_uInt16 nStart, sal_uInt16 nEnd ); ~XEditAttribute(); - const SfxPoolItem* GetItem() const { return pItem; } + const SfxPoolItem* GetItem() const { return pItem; } sal_uInt16& GetStart() { return nStart; } sal_uInt16& GetEnd() { return nEnd; } @@ -74,7 +74,7 @@ public: struct XParaPortion { long nHeight; - sal_uInt16 nFirstLineOffset; + sal_uInt16 nFirstLineOffset; EditLineList aLines; TextPortionList aTextPortions; @@ -117,7 +117,7 @@ private: svl::SharedString maText; OUString aStyle; - XEditAttributesType aAttribs; + XEditAttributesType maCharAttribs; SfxStyleFamily eFamily; SfxItemSet aParaAttribs; std::unique_ptr<WrongList> @@ -138,8 +138,8 @@ public: void dumpAsXml(struct _xmlTextWriter* pWriter) const; - const XEditAttributesType& GetAttribs() const { return aAttribs; } - XEditAttributesType& GetAttribs() { return aAttribs; } + const XEditAttributesType& GetCharAttribs() const { return maCharAttribs; } + XEditAttributesType& GetCharAttribs() { return maCharAttribs; } const OUString& GetStyle() const { return aStyle; } const SfxItemSet& GetParaAttribs() const { return aParaAttribs; } diff --git a/editeng/source/editeng/fieldupdater.cxx b/editeng/source/editeng/fieldupdater.cxx index 5a2e937..022d008 100644 --- a/editeng/source/editeng/fieldupdater.cxx +++ b/editeng/source/editeng/fieldupdater.cxx @@ -32,7 +32,7 @@ public: for (std::unique_ptr<ContentInfo> & i : rContents) { ContentInfo& rContent = *i.get(); - ContentInfo::XEditAttributesType& rAttribs = rContent.GetAttribs(); + ContentInfo::XEditAttributesType& rAttribs = rContent.GetCharAttribs(); for (std::unique_ptr<XEditAttribute> & rAttrib : rAttribs) { XEditAttribute& rAttr = *rAttrib.get(); diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index c231c84..d30d025 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -1111,7 +1111,7 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel, SfxItemPool if ( !pX->GetLen() && !bEmptyPara ) pTxtObj->mpImpl->DestroyAttrib(pX); else - pC->GetAttribs().push_back(std::unique_ptr<XEditAttribute>(pX)); + pC->GetCharAttribs().push_back(std::unique_ptr<XEditAttribute>(pX)); } nAttr++; pAttr = GetAttrib( pNode->GetCharAttribs().GetAttribs(), nAttr ); @@ -1253,13 +1253,13 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject // Character attributes ... bool bAllreadyHasAttribs = aPaM.GetNode()->GetCharAttribs().Count() != 0; - size_t nNewAttribs = pC->GetAttribs().size(); + size_t nNewAttribs = pC->GetCharAttribs().size(); if ( nNewAttribs ) { bool bUpdateFields = false; for (size_t nAttr = 0; nAttr < nNewAttribs; ++nAttr) { - const XEditAttribute& rX = *pC->GetAttribs()[nAttr].get(); + const XEditAttribute& rX = *pC->GetCharAttribs()[nAttr].get(); // Can happen when paragraphs > 16K, it is simply wrapped. if ( rX.GetEnd() <= aPaM.GetNode()->Len() ) { commit c010ed6ba4302534ac712efc923a8a8bf1d0896b Author: Noel Grandin <n...@peralex.com> Date: Tue Sep 13 10:28:14 2016 +0200 impress: extend dumpAsXml to style information in ContentInfo nodes Change-Id: I783f6ad9b71f18c070537e4806381a103960b6eb diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx index 6637a34..7b8f00b 100644 --- a/editeng/source/editeng/editobj.cxx +++ b/editeng/source/editeng/editobj.cxx @@ -164,6 +164,25 @@ void ContentInfo::SetText( const OUString& rStr ) maText = svl::SharedString(rStr.pData, nullptr); } +void ContentInfo::dumpAsXml(xmlTextWriterPtr pWriter) const +{ + xmlTextWriterStartElement(pWriter, BAD_CAST("contentInfo")); + xmlTextWriterWriteAttribute(pWriter, BAD_CAST("style"), BAD_CAST(aStyle.toUtf8().getStr())); + xmlTextWriterStartElement(pWriter, BAD_CAST("text")); + xmlTextWriterWriteString(pWriter, BAD_CAST(GetText().toUtf8().getStr())); + xmlTextWriterEndElement(pWriter); + aParaAttribs.dumpAsXml(pWriter); + for (size_t i=0; i<aAttribs.size(); ++i) + { + xmlTextWriterStartElement(pWriter, BAD_CAST("attribs")); + xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("start"), "%d", aAttribs[i]->GetStart()); + xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("end"), "%d", aAttribs[i]->GetEnd()); + aAttribs[i]->GetItem()->dumpAsXml(pWriter); + xmlTextWriterEndElement(pWriter); + } + xmlTextWriterEndElement(pWriter); +} + const WrongList* ContentInfo::GetWrongList() const { return mpWrongs.get(); @@ -444,7 +463,7 @@ void EditTextObject::dumpAsXml(xmlTextWriterPtr pWriter) const for (sal_Int32 i = 0; i < nCount; ++i) { xmlTextWriterStartElement(pWriter, BAD_CAST("paragraph")); - xmlTextWriterWriteString(pWriter, BAD_CAST(GetText(i).toUtf8().getStr())); + mpImpl->aContents[i]->dumpAsXml(pWriter); xmlTextWriterEndElement(pWriter); } xmlTextWriterEndElement(pWriter); diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx index cd5d53a..20558a1 100644 --- a/editeng/source/editeng/editobj2.hxx +++ b/editeng/source/editeng/editobj2.hxx @@ -114,13 +114,14 @@ public: typedef std::vector<std::unique_ptr<XEditAttribute> > XEditAttributesType; private: - svl::SharedString maText; + svl::SharedString maText; OUString aStyle; XEditAttributesType aAttribs; SfxStyleFamily eFamily; SfxItemSet aParaAttribs; - std::unique_ptr<WrongList> mpWrongs; + std::unique_ptr<WrongList> + mpWrongs; ContentInfo( SfxItemPool& rPool ); ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse ); @@ -135,6 +136,8 @@ public: OUString GetText() const; void SetText( const OUString& rStr ); + void dumpAsXml(struct _xmlTextWriter* pWriter) const; + const XEditAttributesType& GetAttribs() const { return aAttribs; } XEditAttributesType& GetAttribs() { return aAttribs; } @@ -159,6 +162,7 @@ public: class EditTextObjectImpl { +friend class EditTextObject; public: typedef std::vector<std::unique_ptr<ContentInfo> > ContentInfosType; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits