Author: orw
Date: Tue Aug 20 08:00:27 2013
New Revision: 1515732

URL: http://svn.apache.org/r1515732
Log:
123021: import of graphic bullets - consider empty graphic frames in graphic 
bullet area

Modified:
    openoffice/trunk/main/sw/source/filter/ww8/ww8par.cxx

Modified: openoffice/trunk/main/sw/source/filter/ww8/ww8par.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/filter/ww8/ww8par.cxx?rev=1515732&r1=1515731&r2=1515732&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/filter/ww8/ww8par.cxx (original)
+++ openoffice/trunk/main/sw/source/filter/ww8/ww8par.cxx Tue Aug 20 08:00:27 
2013
@@ -4680,87 +4680,90 @@ sal_uLong SwWW8ImplReader::CoreLoad(WW8G
     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();
-               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 )          
     
-                       {                       
-                               SwTxtNode* pTxtNode = 
ppBkmk->get()->GetMarkStart().nNode.GetNode().GetTxtNode();
-                            if ( pTxtNode )                        
-                               {
-                                       const SwpHints *pHints = 
pTxtNode->GetpSwpHints();
-                                       for(int 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()))
-                                               {
-                                                       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);
-                                                       }
-                                               }
-                                       }
-                                       // update graphic bullet information
-                                       sal_uInt16 nCount = 
pLstManager->GetWW8LSTInfoNum();
-                                       for (sal_uInt16 i = 0; i < nCount; ++i)
-                                       {
-                                               SwNumRule* pRule = 
pLstManager->GetNumRule(i);
-                                               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)
-                                                       {
-                                                               Graphic 
aGraphic = vecBulletGrf[nGrfBulletCP]->GetGrf();
-                                                               SvxBrushItem 
aBrush(aGraphic, GPOS_AREA, SID_ATTR_BRUSH);
-                                                               Font aFont = 
numfunc::GetDefBulletFont();
-                                                               int nHeight = 
aFont.GetHeight() * 12;//20;
-                                                               Size aPrefSize( 
aGraphic.GetPrefSize());                                                        
-                                                               if 
(aPrefSize.Height() * aPrefSize.Width() != 0 )                                  
                     
-                                                               {
-                                                                       int 
nWidth = (nHeight * aPrefSize.Width()) / aPrefSize.Height();
-                                                                       Size 
aSize(nWidth, nHeight);
-                                                                       
aNumFmt.SetGraphicBrush(&aBrush, &aSize);
-                                                               }
-                                                               else
-                                                               {
-                                                                       
aNumFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
-                                                                       
aNumFmt.SetBulletChar(0x2190);
-                                                               }
-                                                               pRule->Set( j, 
aNumFmt );
-                                                       }
-                                               }
-                                       }
-                                       // Remove additional pictures
-                                       for (sal_uInt16 i = 0; i < 
vecFrmFmt.size(); ++i)
-                                       {
-                                               rDoc.DelLayoutFmt(vecFrmFmt[i]);
-                                       }
-                               }
-                       }
-                       DELETEZ( pLstManager );
-               }
-       }
-       
+
+    //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();
+        if ( pMarkAccess )
+        {
+            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 )
+                {
+                    const SwpHints* pHints = pTxtNode->GetpSwpHints();
+                    for( sal_uInt16 nHintPos = 0; pHints && nHintPos < 
pHints->Count(); ++nHintPos)
+                    {
+                        const SwTxtAttr *pHt = (*pHints)[nHintPos];
+                        const xub_StrLen st = *(pHt->GetStart());
+                        if( pHt
+                            && pHt->Which() == RES_TXTATR_FLYCNT
+                            && (st >= 
ppBkmk->get()->GetMarkStart().nContent.GetIndex()) )
+                        {
+                            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
+                    sal_uInt16 nCount = pLstManager->GetWW8LSTInfoNum();
+                    for (sal_uInt16 i = 0; i < nCount; ++i)
+                    {
+                        SwNumRule* pRule = pLstManager->GetNumRule(i);
+                        for (sal_uInt16 j = 0; j < MAXLEVEL; ++j)
+                        {
+                            SwNumFmt aNumFmt(pRule->Get(j));
+                            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;
+                                Size aPrefSize( aGraphic.GetPrefSize());
+                                if (aPrefSize.Height() * aPrefSize.Width() != 
0 )
+                                {
+                                    int nWidth = (nHeight * aPrefSize.Width()) 
/ aPrefSize.Height();
+                                    Size aSize(nWidth, nHeight);
+                                    aNumFmt.SetGraphicBrush(&aBrush, &aSize);
+                                }
+                                else
+                                {
+                                    
aNumFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
+                                    aNumFmt.SetBulletChar(0x2190);
+                                }
+                                pRule->Set( j, aNumFmt );
+                            }
+                        }
+                    }
+                    // Remove additional pictures
+                    for (sal_uInt16 i = 0; i < vecFrmFmt.size(); ++i)
+                    {
+                        rDoc.DelLayoutFmt(vecFrmFmt[i]);
+                    }
+                }
+            }
+            DELETEZ( pLstManager );
+        }
+    }
+
     UpdateFields();
 
     // delete the pam before the call for hide all redlines (Bug 73683)


Reply via email to