sw/source/filter/ww8/ww8par.cxx | 57 +++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 27 deletions(-)
New commits: commit b16eb2a11359d6dfd330a46dd70a0142d6b722a2 Author: Oliver-Rainer Wittmann <o...@apache.org> Date: Tue Aug 20 08:00:27 2013 +0000 123021: import of graphic bullets - consider empty graphic frames in graphic bullet area diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 70dbea9..ebf14756 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -4680,42 +4680,43 @@ sal_uLong SwWW8ImplReader::CoreLoad(WW8Glossary *pGloss, const SwPosition &rPos) delete mpRedlineStack; DeleteAnchorStk(); DeleteRefStks(); + //For i120928,achieve the graphics from the special bookmark with is for graphic bullet { std::vector<const SwGrfNode*> vecBulletGrf; std::vector<SwFrmFmt*> vecFrmFmt; IDocumentMarkAccess* const pMarkAccess = - rDoc.getIDocumentMarkAccess(); + rDoc.getIDocumentMarkAccess(); if ( pMarkAccess ) { - IDocumentMarkAccess::const_iterator_t ppBkmk = - pMarkAccess->findBookmark( C2U("_PictureBullets") ); - //for(IDocumentMarkAccess::const_iterator_t ppBookmark = ppBkmk->begin(); - // ppBookmark != ppBkmk->end(); ppBookmark++) - if ( ppBkmk != pMarkAccess->getBookmarksEnd() && - IDocumentMarkAccess::GetType( *(ppBkmk->get()) ) - == IDocumentMarkAccess::BOOKMARK ) - { + IDocumentMarkAccess::const_iterator_t ppBkmk = + pMarkAccess->findBookmark( C2U("_PictureBullets") ); + if ( ppBkmk != pMarkAccess->getBookmarksEnd() + && IDocumentMarkAccess::GetType( *(ppBkmk->get()) ) == IDocumentMarkAccess::BOOKMARK ) + { SwTxtNode* pTxtNode = ppBkmk->get()->GetMarkStart().nNode.GetNode().GetTxtNode(); - if ( pTxtNode ) + if ( pTxtNode ) { - const SwpHints *pHints = pTxtNode->GetpSwpHints(); - for(int nHintPos = 0; pHints && nHintPos < pHints->Count(); ++nHintPos) + const SwpHints* pHints = pTxtNode->GetpSwpHints(); + for( sal_uInt16 nHintPos = 0; pHints && nHintPos < pHints->Count(); ++nHintPos) { const SwTxtAttr *pHt = (*pHints)[nHintPos]; - xub_StrLen st = *(pHt->GetStart()); - if(pHt && pHt->Which() == RES_TXTATR_FLYCNT && (st >= ppBkmk->get()->GetMarkStart().nContent.GetIndex())) + const xub_StrLen st = *(pHt->GetStart()); + if( pHt + && pHt->Which() == RES_TXTATR_FLYCNT + && (st >= ppBkmk->get()->GetMarkStart().nContent.GetIndex()) ) { - SwFrmFmt *pFrmFmt = pHt->GetFlyCnt().GetFrmFmt(); - const SwNodeIndex *pNdIdx = pFrmFmt->GetCntnt().GetCntntIdx(); - const SwNodes &nos = pNdIdx->GetNodes(); - const SwGrfNode *pGrf = dynamic_cast<const SwGrfNode*>(nos[pNdIdx->GetIndex() + 1]); - if (pGrf) - { - vecBulletGrf.push_back(pGrf); - vecFrmFmt.push_back(pFrmFmt); - } + SwFrmFmt* pFrmFmt = pHt->GetFlyCnt().GetFrmFmt(); + vecFrmFmt.push_back(pFrmFmt); + const SwNodeIndex* pNdIdx = pFrmFmt->GetCntnt().GetCntntIdx(); + const SwNodes* pNodesArray = (pNdIdx != NULL) + ? &(pNdIdx->GetNodes()) + : NULL; + const SwGrfNode *pGrf = (pNodesArray != NULL) + ? dynamic_cast<const SwGrfNode*>((*pNodesArray)[pNdIdx->GetIndex() + 1]) + : NULL; + vecBulletGrf.push_back(pGrf); } } // update graphic bullet information @@ -4726,14 +4727,16 @@ sal_uLong SwWW8ImplReader::CoreLoad(WW8Glossary *pGloss, const SwPosition &rPos) for (sal_uInt16 j = 0; j < MAXLEVEL; ++j) { SwNumFmt aNumFmt(pRule->Get(j)); - sal_Int16 nType = aNumFmt.GetNumberingType(); - sal_uInt16 nGrfBulletCP = aNumFmt.GetGrfBulletCP(); - if (nType == SVX_NUM_BITMAP && vecBulletGrf.size() > nGrfBulletCP) + const sal_Int16 nType = aNumFmt.GetNumberingType(); + const sal_uInt16 nGrfBulletCP = aNumFmt.GetGrfBulletCP(); + if ( nType == SVX_NUM_BITMAP + && vecBulletGrf.size() > nGrfBulletCP + && vecBulletGrf[nGrfBulletCP] != NULL ) { Graphic aGraphic = vecBulletGrf[nGrfBulletCP]->GetGrf(); SvxBrushItem aBrush(aGraphic, GPOS_AREA, SID_ATTR_BRUSH); Font aFont = numfunc::GetDefBulletFont(); - int nHeight = aFont.GetHeight() * 12;//20; + int nHeight = aFont.GetHeight() * 12; Size aPrefSize( aGraphic.GetPrefSize()); if (aPrefSize.Height() * aPrefSize.Width() != 0 ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits