LCOV - code coverage report
Current view: top level - svx/source/xoutdev - xattrbmp.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 146 295 49.5 %
Date: 2012-08-25 Functions: 23 33 69.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 150 511 29.4 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <com/sun/star/awt/XBitmap.hpp>
      30                 :            : #include <com/sun/star/graphic/XGraphic.hpp>
      31                 :            : #include <tools/stream.hxx>
      32                 :            : #include <vcl/window.hxx>
      33                 :            : #include <vcl/virdev.hxx>
      34                 :            : #include <vcl/bitmapex.hxx>
      35                 :            : #include <toolkit/unohlp.hxx>
      36                 :            : #include <svl/style.hxx>
      37                 :            : #include <editeng/memberids.hrc>
      38                 :            : 
      39                 :            : #include <svx/dialogs.hrc>
      40                 :            : #include "svx/xattr.hxx"
      41                 :            : #include <svx/xtable.hxx>
      42                 :            : #include <svx/xdef.hxx>
      43                 :            : #include <svx/unomid.hxx>
      44                 :            : #include <editeng/unoprnms.hxx>
      45                 :            : 
      46                 :            : #include "svx/unoapi.hxx"
      47                 :            : #include <svx/svdmodel.hxx>
      48                 :            : #include <com/sun/star/beans/PropertyValue.hpp>
      49                 :            : 
      50                 :            : using namespace ::com::sun::star;
      51                 :            : 
      52                 :            : // ---------------
      53                 :            : // class XOBitmap
      54                 :            : // ---------------
      55                 :            : 
      56                 :            : /*************************************************************************
      57                 :            : |*
      58                 :            : |*    XOBitmap::XOBitmap()
      59                 :            : |*
      60                 :            : *************************************************************************/
      61                 :            : 
      62                 :        162 : XOBitmap::XOBitmap() :
      63                 :            :     eType           ( XBITMAP_NONE ),
      64                 :            :     eStyle          ( XBITMAP_STRETCH ),
      65                 :            :     pPixelArray     ( NULL ),
      66                 :        162 :     bGraphicDirty   ( sal_False )
      67                 :            : {
      68                 :        162 : }
      69                 :            : 
      70                 :            : /*************************************************************************
      71                 :            : |*
      72                 :            : |*    XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE )
      73                 :            : |*
      74                 :            : *************************************************************************/
      75                 :            : 
      76                 :       3789 : XOBitmap::XOBitmap( const Bitmap& rBmp, XBitmapStyle eInStyle ) :
      77                 :            :     eType           ( XBITMAP_IMPORT ),
      78                 :            :     eStyle          ( eInStyle ),
      79                 :            :     aGraphicObject  ( rBmp ),
      80                 :            :     pPixelArray     ( NULL ),
      81         [ +  - ]:       3789 :     bGraphicDirty   ( sal_False )
      82                 :            : {
      83                 :       3789 : }
      84                 :            : 
      85                 :            : /*************************************************************************
      86                 :            : |*
      87                 :            : |*    XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE )
      88                 :            : |*
      89                 :            : *************************************************************************/
      90                 :            : 
      91                 :        330 : XOBitmap::XOBitmap( const GraphicObject& rGraphicObject, XBitmapStyle eInStyle ) :
      92                 :            :     eType           ( XBITMAP_IMPORT ),
      93                 :            :     eStyle          ( eInStyle ),
      94                 :            :     aGraphicObject  ( rGraphicObject ),
      95                 :            :     pPixelArray     ( NULL ),
      96                 :        330 :     bGraphicDirty   ( sal_False )
      97                 :            : {
      98                 :        330 : }
      99                 :            : 
     100                 :            : /*************************************************************************
     101                 :            : |*
     102                 :            : |*    XOBitmap::XOBitmap( sal_uInt16* pArray, const Color& aPixelColor,
     103                 :            : |*          const Color& aBckgrColor, const Size& rSize = Size( 8, 8 ),
     104                 :            : |*          XBitmapStyle eStyle = XBITMAP_TILE )
     105                 :            : |*
     106                 :            : *************************************************************************/
     107                 :            : 
     108                 :          0 : XOBitmap::XOBitmap( const sal_uInt16* pArray, const Color& rPixelColor,
     109                 :            :             const Color& rBckgrColor, const Size& rSize,
     110                 :            :             XBitmapStyle eInStyle ) :
     111                 :            :     eStyle          ( eInStyle ),
     112                 :            :     pPixelArray     ( NULL ),
     113                 :            :     aArraySize      ( rSize ),
     114                 :            :     aPixelColor     ( rPixelColor ),
     115                 :            :     aBckgrColor     ( rBckgrColor ),
     116                 :          0 :     bGraphicDirty   ( sal_True )
     117                 :            : 
     118                 :            : {
     119 [ #  # ][ #  # ]:          0 :     if( aArraySize.Width() == 8 && aArraySize.Height() == 8 )
                 [ #  # ]
     120                 :            :     {
     121                 :          0 :         eType = XBITMAP_8X8;
     122         [ #  # ]:          0 :         pPixelArray = new sal_uInt16[ 64 ];
     123                 :            : 
     124         [ #  # ]:          0 :         for( sal_uInt16 i = 0; i < 64; i++ )
     125                 :          0 :             *( pPixelArray + i ) = *( pArray + i );
     126                 :            :     }
     127                 :            :     else
     128                 :            :     {
     129                 :            :         DBG_ASSERT( 0, "Nicht unterstuetzte Bitmapgroesse" );
     130                 :            :     }
     131                 :          0 : }
     132                 :            : 
     133                 :            : /*************************************************************************
     134                 :            : |*
     135                 :            : |*    XOBitmap::XOBitmap( const XOBitmap& rXBmp )
     136                 :            : |*
     137                 :            : *************************************************************************/
     138                 :            : 
     139                 :       5205 : XOBitmap::XOBitmap( const XOBitmap& rXBmp ) :
     140                 :       5205 :     pPixelArray ( NULL )
     141                 :            : {
     142                 :       5205 :     eType = rXBmp.eType;
     143                 :       5205 :     eStyle = rXBmp.eStyle;
     144         [ +  - ]:       5205 :     aGraphicObject = rXBmp.aGraphicObject;
     145                 :       5205 :     aArraySize = rXBmp.aArraySize;
     146                 :       5205 :     aPixelColor = rXBmp.aPixelColor;
     147                 :       5205 :     aBckgrColor = rXBmp.aBckgrColor;
     148                 :       5205 :     bGraphicDirty = rXBmp.bGraphicDirty;
     149                 :            : 
     150         [ -  + ]:       5205 :     if( rXBmp.pPixelArray )
     151                 :            :     {
     152         [ #  # ]:          0 :         if( eType == XBITMAP_8X8 )
     153                 :            :         {
     154         [ #  # ]:          0 :             pPixelArray = new sal_uInt16[ 64 ];
     155                 :            : 
     156         [ #  # ]:          0 :             for( sal_uInt16 i = 0; i < 64; i++ )
     157                 :          0 :                 *( pPixelArray + i ) = *( rXBmp.pPixelArray + i );
     158                 :            :         }
     159                 :            :     }
     160                 :       5205 : }
     161                 :            : 
     162                 :            : /*************************************************************************
     163                 :            : |*
     164                 :            : |*    XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE )
     165                 :            : |*
     166                 :            : *************************************************************************/
     167                 :            : 
     168                 :       9260 : XOBitmap::~XOBitmap()
     169                 :            : {
     170         [ -  + ]:       9260 :     if( pPixelArray )
     171         [ #  # ]:          0 :         delete []pPixelArray;
     172                 :       9260 : }
     173                 :            : 
     174                 :            : /*************************************************************************
     175                 :            : |*
     176                 :            : |*    XOBitmap& XOBitmap::operator=( const XOBitmap& rXBmp )
     177                 :            : |*
     178                 :            : *************************************************************************/
     179                 :            : 
     180                 :        162 : XOBitmap& XOBitmap::operator=( const XOBitmap& rXBmp )
     181                 :            : {
     182                 :        162 :     eType = rXBmp.eType;
     183                 :        162 :     eStyle = rXBmp.eStyle;
     184                 :        162 :     aGraphicObject = rXBmp.aGraphicObject;
     185                 :        162 :     aArraySize = rXBmp.aArraySize;
     186                 :        162 :     aPixelColor = rXBmp.aPixelColor;
     187                 :        162 :     aBckgrColor = rXBmp.aBckgrColor;
     188                 :        162 :     bGraphicDirty = rXBmp.bGraphicDirty;
     189                 :            : 
     190         [ -  + ]:        162 :     if( rXBmp.pPixelArray )
     191                 :            :     {
     192         [ #  # ]:          0 :         if( eType == XBITMAP_8X8 )
     193                 :            :         {
     194                 :          0 :             pPixelArray = new sal_uInt16[ 64 ];
     195                 :            : 
     196         [ #  # ]:          0 :             for( sal_uInt16 i = 0; i < 64; i++ )
     197                 :          0 :                 *( pPixelArray + i ) = *( rXBmp.pPixelArray + i );
     198                 :            :         }
     199                 :            :     }
     200                 :        162 :     return( *this );
     201                 :            : }
     202                 :            : 
     203                 :            : /*************************************************************************
     204                 :            : |*
     205                 :            : |*    int XOBitmap::operator==( const XOBitmap& rXOBitmap ) const
     206                 :            : |*
     207                 :            : *************************************************************************/
     208                 :            : 
     209                 :         11 : int XOBitmap::operator==( const XOBitmap& rXOBitmap ) const
     210                 :            : {
     211 [ +  - ][ +  -  :         55 :     if( eType != rXOBitmap.eType      ||
          +  -  +  -  +  
                -  +  - ]
         [ -  + ][ -  + ]
     212                 :            :         eStyle != rXOBitmap.eStyle         ||
     213                 :         11 :         aGraphicObject != rXOBitmap.aGraphicObject ||
     214                 :         11 :         aArraySize != rXOBitmap.aArraySize     ||
     215                 :         11 :         aPixelColor != rXOBitmap.aPixelColor ||
     216                 :         11 :         aBckgrColor != rXOBitmap.aBckgrColor ||
     217                 :            :         bGraphicDirty != rXOBitmap.bGraphicDirty )
     218                 :            :     {
     219                 :          0 :         return( sal_False );
     220                 :            :     }
     221                 :            : 
     222 [ -  + ][ #  # ]:         11 :     if( pPixelArray && rXOBitmap.pPixelArray )
     223                 :            :     {
     224                 :          0 :         sal_uInt16 nCount = (sal_uInt16) ( aArraySize.Width() * aArraySize.Height() );
     225         [ #  # ]:          0 :         for( sal_uInt16 i = 0; i < nCount; i++ )
     226                 :            :         {
     227         [ #  # ]:          0 :             if( *( pPixelArray + i ) != *( rXOBitmap.pPixelArray + i ) )
     228                 :          0 :                 return( sal_False );
     229                 :            :         }
     230                 :            :     }
     231                 :         11 :     return( sal_True );
     232                 :            : }
     233                 :            : 
     234                 :            : /*************************************************************************
     235                 :            : |*
     236                 :            : |*    void SetPixelArray( const sal_uInt16* pArray )
     237                 :            : |*
     238                 :            : *************************************************************************/
     239                 :            : 
     240                 :          0 : void XOBitmap::SetPixelArray( const sal_uInt16* pArray )
     241                 :            : {
     242         [ #  # ]:          0 :     if( eType == XBITMAP_8X8 )
     243                 :            :     {
     244         [ #  # ]:          0 :         if( pPixelArray )
     245         [ #  # ]:          0 :             delete []pPixelArray;
     246                 :            : 
     247                 :          0 :         pPixelArray = new sal_uInt16[ 64 ];
     248                 :            : 
     249         [ #  # ]:          0 :         for( sal_uInt16 i = 0; i < 64; i++ )
     250                 :          0 :             *( pPixelArray + i ) = *( pArray + i );
     251                 :            : 
     252                 :          0 :         bGraphicDirty = sal_True;
     253                 :            :     }
     254                 :            :     else
     255                 :            :     {
     256                 :            :         DBG_ASSERT( 0, "Nicht unterstuetzter Bitmaptyp" );
     257                 :            :     }
     258                 :          0 : }
     259                 :            : 
     260                 :            : /*************************************************************************
     261                 :            : |*
     262                 :            : |*    Bitmap XOBitmap::GetBitmap()
     263                 :            : |*
     264                 :            : *************************************************************************/
     265                 :            : 
     266                 :        941 : Bitmap XOBitmap::GetBitmap() const
     267                 :            : {
     268 [ +  - ][ +  - ]:        941 :     return GetGraphicObject().GetGraphic().GetBitmap();
                 [ +  - ]
     269                 :            : }
     270                 :            : 
     271                 :            : /*************************************************************************
     272                 :            : |*
     273                 :            : |*    Bitmap XOBitmap::GetGraphicObject()
     274                 :            : |*
     275                 :            : *************************************************************************/
     276                 :            : 
     277                 :       6185 : const GraphicObject& XOBitmap::GetGraphicObject() const
     278                 :            : {
     279         [ -  + ]:       6185 :     if( bGraphicDirty )
     280                 :          0 :         ( (XOBitmap*) this )->Array2Bitmap();
     281                 :            : 
     282                 :       6185 :     return aGraphicObject;
     283                 :            : }
     284                 :            : 
     285                 :            : /*************************************************************************
     286                 :            : |*
     287                 :            : |*    void XOBitmap::Bitmap2Array()
     288                 :            : |*
     289                 :            : |*    Beschreibung      Umwandlung der Bitmap in Array, Hinter- u.
     290                 :            : |*                      Vordergrundfarbe
     291                 :            : |*
     292                 :            : *************************************************************************/
     293                 :            : 
     294                 :          0 : void XOBitmap::Bitmap2Array()
     295                 :            : {
     296         [ #  # ]:          0 :     VirtualDevice   aVD;
     297                 :          0 :     sal_Bool            bPixelColor = sal_False;
     298         [ #  # ]:          0 :     const Bitmap    aBitmap( GetBitmap() );
     299                 :          0 :     const sal_uInt16    nLines = 8; // von Type abhaengig
     300                 :            : 
     301         [ #  # ]:          0 :     if( !pPixelArray )
     302         [ #  # ]:          0 :         pPixelArray = new sal_uInt16[ nLines * nLines ];
     303                 :            : 
     304 [ #  # ][ #  # ]:          0 :     aVD.SetOutputSizePixel( aBitmap.GetSizePixel() );
     305         [ #  # ]:          0 :     aVD.DrawBitmap( Point(), aBitmap );
     306         [ #  # ]:          0 :     aPixelColor = aBckgrColor = aVD.GetPixel( Point() );
     307                 :            : 
     308                 :            :     // Aufbau des Arrays und Ermittlung der Vorder-, bzw.
     309                 :            :     // Hintergrundfarbe
     310         [ #  # ]:          0 :     for( sal_uInt16 i = 0; i < nLines; i++ )
     311                 :            :     {
     312         [ #  # ]:          0 :         for( sal_uInt16 j = 0; j < nLines; j++ )
     313                 :            :         {
     314 [ #  # ][ #  # ]:          0 :             if ( aVD.GetPixel( Point( j, i ) ) == aBckgrColor )
     315                 :          0 :                 *( pPixelArray + j + i * nLines ) = 0;
     316                 :            :             else
     317                 :            :             {
     318                 :          0 :                 *( pPixelArray + j + i * nLines ) = 1;
     319         [ #  # ]:          0 :                 if( !bPixelColor )
     320                 :            :                 {
     321         [ #  # ]:          0 :                     aPixelColor = aVD.GetPixel( Point( j, i ) );
     322                 :          0 :                     bPixelColor = sal_True;
     323                 :            :                 }
     324                 :            :             }
     325                 :            :         }
     326 [ #  # ][ #  # ]:          0 :     }
     327                 :          0 : }
     328                 :            : 
     329                 :            : /*************************************************************************
     330                 :            : |*
     331                 :            : |*    void XOBitmap::Array2Bitmap()
     332                 :            : |*
     333                 :            : |*    Beschreibung      Umwandlung des Arrays, Hinter- u.
     334                 :            : |*                      Vordergrundfarbe in eine Bitmap
     335                 :            : |*
     336                 :            : *************************************************************************/
     337                 :            : 
     338                 :          0 : void XOBitmap::Array2Bitmap()
     339                 :            : {
     340         [ #  # ]:          0 :     VirtualDevice   aVD;
     341                 :          0 :     sal_uInt16          nLines = 8; // von Type abhaengig
     342                 :            : 
     343         [ #  # ]:          0 :     if( !pPixelArray )
     344                 :          0 :         return;
     345                 :            : 
     346         [ #  # ]:          0 :     aVD.SetOutputSizePixel( Size( nLines, nLines ) );
     347                 :            : 
     348                 :            :     // Aufbau der Bitmap
     349         [ #  # ]:          0 :     for( sal_uInt16 i = 0; i < nLines; i++ )
     350                 :            :     {
     351         [ #  # ]:          0 :         for( sal_uInt16 j = 0; j < nLines; j++ )
     352                 :            :         {
     353         [ #  # ]:          0 :             if( *( pPixelArray + j + i * nLines ) == 0 )
     354         [ #  # ]:          0 :                 aVD.DrawPixel( Point( j, i ), aBckgrColor );
     355                 :            :             else
     356         [ #  # ]:          0 :                 aVD.DrawPixel( Point( j, i ), aPixelColor );
     357                 :            :         }
     358                 :            :     }
     359                 :            : 
     360 [ #  # ][ #  # ]:          0 :     aGraphicObject = GraphicObject( aVD.GetBitmap( Point(), Size( nLines, nLines ) ) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     361 [ #  # ][ #  # ]:          0 :     bGraphicDirty = sal_False;
     362                 :            : }
     363                 :            : 
     364                 :            : // -----------------------
     365                 :            : // class XFillBitmapItem
     366                 :            : // -----------------------
     367 [ -  + ][ -  + ]:      18685 : TYPEINIT1_AUTOFACTORY(XFillBitmapItem, NameOrIndex);
                 [ +  - ]
     368                 :            : 
     369                 :            : /*************************************************************************
     370                 :            : |*
     371                 :            : |*    XFillBitmapItem::XFillBitmapItem(const XubString& rName,
     372                 :            : |*                                 const Bitmap& rTheBitmap)
     373                 :            : |*
     374                 :            : *************************************************************************/
     375                 :            : 
     376                 :          0 : XFillBitmapItem::XFillBitmapItem(const XubString& rName,
     377                 :            :                                const XOBitmap& rTheBitmap) :
     378                 :            :     NameOrIndex( XATTR_FILLBITMAP, rName ),
     379         [ #  # ]:          0 :     aXOBitmap( rTheBitmap )
     380                 :            : {
     381                 :          0 : }
     382                 :            : 
     383                 :            : /*************************************************************************
     384                 :            : |*
     385                 :            : |*    XFillBitmapItem::XFillBitmapItem(const XFillBitmapItem& rItem)
     386                 :            : |*
     387                 :            : *************************************************************************/
     388                 :            : 
     389                 :        516 : XFillBitmapItem::XFillBitmapItem(const XFillBitmapItem& rItem) :
     390                 :            :     NameOrIndex( rItem ),
     391         [ +  - ]:        516 :     aXOBitmap( rItem.aXOBitmap )
     392                 :            : {
     393                 :        516 : }
     394                 :            : 
     395                 :            : /*************************************************************************
     396                 :            : |*
     397                 :            : |*    XFillBitmapItem::XFillBitmapItem(SvStream& rIn)
     398                 :            : |*
     399                 :            : *************************************************************************/
     400                 :            : 
     401                 :          0 : XFillBitmapItem::XFillBitmapItem( SvStream& rIn, sal_uInt16 nVer ) :
     402         [ #  # ]:          0 :     NameOrIndex( XATTR_FILLBITMAP, rIn )
     403                 :            : {
     404         [ #  # ]:          0 :     if( nVer == 0 )
     405                 :            :     {
     406         [ #  # ]:          0 :         if (!IsIndex())
     407                 :            :         {
     408                 :            :             // Behandlung der alten Bitmaps
     409         [ #  # ]:          0 :             Bitmap aBmp;
     410                 :            : 
     411         [ #  # ]:          0 :             rIn >> aBmp;
     412                 :            : 
     413         [ #  # ]:          0 :             aXOBitmap.SetBitmap( aBmp );
     414                 :          0 :             aXOBitmap.SetBitmapStyle( XBITMAP_TILE );
     415                 :            : 
     416   [ #  #  #  # ]:          0 :             if( aBmp.GetSizePixel().Width() == 8 &&
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     417 [ #  # ][ #  # ]:          0 :                 aBmp.GetSizePixel().Height() == 8 )
                 [ #  # ]
     418                 :            :             {
     419                 :          0 :                 aXOBitmap.SetBitmapType( XBITMAP_8X8 );
     420         [ #  # ]:          0 :                 aXOBitmap.Bitmap2Array();
     421                 :            :             }
     422                 :            :             else
     423         [ #  # ]:          0 :                 aXOBitmap.SetBitmapType( XBITMAP_IMPORT );
     424                 :            :         }
     425                 :            :     }
     426         [ #  # ]:          0 :     else if( nVer == 1 )
     427                 :            :     {
     428         [ #  # ]:          0 :         if (!IsIndex())
     429                 :            :         {
     430                 :            :             sal_Int16 iTmp;
     431         [ #  # ]:          0 :             rIn >> iTmp;
     432                 :          0 :             aXOBitmap.SetBitmapStyle( (XBitmapStyle) iTmp );
     433         [ #  # ]:          0 :             rIn >> iTmp;
     434                 :          0 :             aXOBitmap.SetBitmapType( (XBitmapType) iTmp );
     435                 :            : 
     436         [ #  # ]:          0 :             if( aXOBitmap.GetBitmapType() == XBITMAP_IMPORT )
     437                 :            :             {
     438         [ #  # ]:          0 :                 Bitmap aBmp;
     439         [ #  # ]:          0 :                 rIn >> aBmp;
     440 [ #  # ][ #  # ]:          0 :                 aXOBitmap.SetBitmap( aBmp );
     441                 :            :             }
     442         [ #  # ]:          0 :             else if( aXOBitmap.GetBitmapType() == XBITMAP_8X8 )
     443                 :            :             {
     444         [ #  # ]:          0 :                 sal_uInt16* pArray = new sal_uInt16[ 64 ];
     445                 :          0 :                 Color   aColor;
     446                 :            : 
     447         [ #  # ]:          0 :                 for( sal_uInt16 i = 0; i < 64; i++ )
     448         [ #  # ]:          0 :                     rIn >> *( pArray + i );
     449         [ #  # ]:          0 :                 aXOBitmap.SetPixelArray( pArray );
     450                 :            : 
     451         [ #  # ]:          0 :                 rIn >> aColor;
     452                 :          0 :                 aXOBitmap.SetPixelColor( aColor );
     453         [ #  # ]:          0 :                 rIn >> aColor;
     454                 :          0 :                 aXOBitmap.SetBackgroundColor( aColor );
     455                 :            : 
     456         [ #  # ]:          0 :                 delete []pArray;
     457                 :            :             }
     458                 :            :         }
     459                 :            :     }
     460                 :            : 
     461                 :            :     // #81908# force bitmap to exist
     462 [ #  # ][ #  # ]:          0 :     aXOBitmap.GetBitmap();
     463                 :          0 : }
     464                 :            : 
     465                 :            : //*************************************************************************
     466                 :            : 
     467                 :       3789 : XFillBitmapItem::XFillBitmapItem( SfxItemPool* /*pPool*/, const XOBitmap& rTheBitmap )
     468                 :            : :   NameOrIndex( XATTR_FILLBITMAP, -1 ),
     469         [ +  - ]:       3789 :     aXOBitmap( rTheBitmap )
     470                 :            : {
     471                 :       3789 : }
     472                 :            : 
     473                 :            : /*************************************************************************
     474                 :            : |*
     475                 :            : |*    XFillBitmapItem::Clone(SfxItemPool* pPool) const
     476                 :            : |*
     477                 :            : *************************************************************************/
     478                 :            : 
     479                 :        516 : SfxPoolItem* XFillBitmapItem::Clone(SfxItemPool* /*pPool*/) const
     480                 :            : {
     481         [ +  - ]:        516 :     return new XFillBitmapItem(*this);
     482                 :            : }
     483                 :            : 
     484                 :            : /*************************************************************************
     485                 :            : |*
     486                 :            : |*    int XFillBitmapItem::operator==(const SfxPoolItem& rItem) const
     487                 :            : |*
     488                 :            : *************************************************************************/
     489                 :            : 
     490                 :         17 : int XFillBitmapItem::operator==(const SfxPoolItem& rItem) const
     491                 :            : {
     492                 :         17 :     return ( NameOrIndex::operator==(rItem) &&
     493 [ +  - ][ +  + ]:         17 :              aXOBitmap == ((const XFillBitmapItem&) rItem).aXOBitmap );
     494                 :            : }
     495                 :            : 
     496                 :            : /*************************************************************************
     497                 :            : |*
     498                 :            : |*    SfxPoolItem* XFillBitmapItem::Create(SvStream& rIn, sal_uInt16 nVer) const
     499                 :            : |*
     500                 :            : *************************************************************************/
     501                 :            : 
     502                 :          0 : SfxPoolItem* XFillBitmapItem::Create(SvStream& rIn, sal_uInt16 nVer) const
     503                 :            : {
     504         [ #  # ]:          0 :     return new XFillBitmapItem( rIn, nVer );
     505                 :            : }
     506                 :            : 
     507                 :            : /*************************************************************************
     508                 :            : |*
     509                 :            : |*    SfxPoolItem* XFillBitmapItem::Store(SvStream& rOut) const
     510                 :            : |*
     511                 :            : *************************************************************************/
     512                 :            : 
     513                 :          0 : SvStream& XFillBitmapItem::Store( SvStream& rOut, sal_uInt16 nItemVersion ) const
     514                 :            : {
     515                 :          0 :     NameOrIndex::Store( rOut, nItemVersion );
     516                 :            : 
     517         [ #  # ]:          0 :     if (!IsIndex())
     518                 :            :     {
     519                 :          0 :         rOut << (sal_Int16) aXOBitmap.GetBitmapStyle();
     520         [ #  # ]:          0 :         if( !aXOBitmap.GetBitmap() )
     521                 :          0 :             rOut << (sal_Int16) XBITMAP_NONE;
     522                 :            :         else
     523                 :            :         {
     524                 :          0 :             rOut << (sal_Int16) aXOBitmap.GetBitmapType();
     525         [ #  # ]:          0 :             if( aXOBitmap.GetBitmapType() == XBITMAP_IMPORT )
     526                 :            :             {
     527                 :          0 :                 const sal_uInt16    nOldComprMode = rOut.GetCompressMode();
     528                 :          0 :                 sal_uInt16          nNewComprMode = nOldComprMode;
     529                 :            : 
     530         [ #  # ]:          0 :                 if( rOut.GetVersion() >= SOFFICE_FILEFORMAT_50 )
     531                 :          0 :                     nNewComprMode |= COMPRESSMODE_ZBITMAP;
     532                 :            :                 else
     533                 :          0 :                     nNewComprMode &= ~COMPRESSMODE_ZBITMAP;
     534                 :            : 
     535                 :          0 :                 rOut.SetCompressMode( nNewComprMode );
     536         [ #  # ]:          0 :                 rOut << aXOBitmap.GetBitmap();
     537                 :          0 :                 rOut.SetCompressMode( nOldComprMode );
     538                 :            :             }
     539         [ #  # ]:          0 :             else if( aXOBitmap.GetBitmapType() == XBITMAP_8X8 )
     540                 :            :             {
     541                 :          0 :                 sal_uInt16* pArray = aXOBitmap.GetPixelArray();
     542         [ #  # ]:          0 :                 for( sal_uInt16 i = 0; i < 64; i++ )
     543                 :          0 :                     rOut << (sal_uInt16) *( pArray + i );
     544                 :            : 
     545         [ #  # ]:          0 :                 rOut << aXOBitmap.GetPixelColor();
     546         [ #  # ]:          0 :                 rOut << aXOBitmap.GetBackgroundColor();
     547                 :            :             }
     548                 :            :         }
     549                 :            :     }
     550                 :            : 
     551                 :          0 :     return rOut;
     552                 :            : }
     553                 :            : 
     554                 :            : /*************************************************************************
     555                 :            : |*
     556                 :            : |*    const Bitmap& XFillBitmapItem::GetValue(const XBitmapTable* pTable) const
     557                 :            : |*
     558                 :            : *************************************************************************/
     559                 :            : 
     560                 :       6185 : const XOBitmap& XFillBitmapItem::GetBitmapValue(
     561                 :            : //    const XBitmapTable* pTable
     562                 :            : ) const // GetValue -> GetBitmapValue
     563                 :            : {
     564                 :            : // Note: we never pass pTable to this method which means that it's NULL. Thus, this code would
     565                 :            : // fail if the Item was a list. I'm guessing that it can't be an Index or the caller makes sure
     566                 :            : // it's not an Index before calling. Either way, I'm just going to return the Bitmap to keep it
     567                 :            : // from failing. This could use some more research. (Joe P. 2011-08-24)
     568                 :            : //    if (!IsIndex())
     569                 :            : //        return aXOBitmap;
     570                 :            : //    else
     571                 :            : //        return pTable->GetBitmap(GetIndex())->GetXBitmap();
     572                 :       6185 :     return aXOBitmap;
     573                 :            : }
     574                 :            : 
     575                 :            : 
     576                 :            : /*************************************************************************
     577                 :            : |*
     578                 :            : |*    sal_uInt16 XFillBitmapItem::GetVersion() const
     579                 :            : |*
     580                 :            : *************************************************************************/
     581                 :            : 
     582                 :          0 : sal_uInt16 XFillBitmapItem::GetVersion( sal_uInt16 /*nFileFormatVersion*/) const
     583                 :            : {
     584                 :            :     // 2. Version
     585                 :          0 :     return( 1 );
     586                 :            : }
     587                 :            : 
     588                 :            : //------------------------------------------------------------------------
     589                 :            : 
     590                 :          0 : SfxItemPresentation XFillBitmapItem::GetPresentation
     591                 :            : (
     592                 :            :     SfxItemPresentation ePres,
     593                 :            :     SfxMapUnit          /*eCoreUnit*/,
     594                 :            :     SfxMapUnit          /*ePresUnit*/,
     595                 :            :     XubString&           rText, const IntlWrapper *
     596                 :            : )   const
     597                 :            : {
     598      [ #  #  # ]:          0 :     switch ( ePres )
     599                 :            :     {
     600                 :            :         case SFX_ITEM_PRESENTATION_NONE:
     601                 :          0 :             rText.Erase();
     602                 :          0 :             return ePres;
     603                 :            :         case SFX_ITEM_PRESENTATION_NAMELESS:
     604                 :            :         case SFX_ITEM_PRESENTATION_COMPLETE:
     605         [ #  # ]:          0 :             rText += GetName();
     606                 :          0 :             return ePres;
     607                 :            :         default:
     608                 :          0 :             return SFX_ITEM_PRESENTATION_NONE;
     609                 :            :     }
     610                 :            : }
     611                 :            : 
     612                 :            : //------------------------------------------------------------------------
     613                 :            : 
     614                 :        798 : bool XFillBitmapItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
     615                 :            : {
     616                 :            : //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     617                 :        798 :     nMemberId &= ~CONVERT_TWIPS;
     618                 :            : 
     619                 :            :     // needed for MID_NAME
     620                 :        798 :     ::rtl::OUString aApiName;
     621                 :            :     // needed for complete item (MID 0)
     622                 :        798 :     ::rtl::OUString aInternalName;
     623                 :            : 
     624                 :        798 :     ::rtl::OUString aURL;
     625                 :        798 :     ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap > xBmp;
     626                 :            : 
     627         [ +  + ]:        798 :     if( nMemberId == MID_NAME )
     628                 :            :     {
     629 [ +  - ][ +  - ]:        216 :          SvxUnogetApiNameForItem( Which(), GetName(), aApiName );
     630                 :            :     }
     631         [ +  + ]:        582 :     else if( nMemberId == 0  )
     632                 :            :     {
     633 [ +  - ][ +  - ]:        150 :         aInternalName = GetName();
                 [ +  - ]
     634                 :            :     }
     635                 :            : 
     636 [ +  + ][ +  + ]:        798 :     if( nMemberId == MID_GRAFURL ||
     637                 :            :         nMemberId == 0 )
     638                 :            :     {
     639 [ +  - ][ +  - ]:        366 :         XOBitmap aLocalXOBitmap( GetBitmapValue() );
     640                 :            :         aURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
     641         [ +  - ]:        366 :             UNO_NAME_GRAPHOBJ_URLPREFIX));
     642                 :            :         aURL += ::rtl::OStringToOUString(
     643         [ +  - ]:        366 :             aLocalXOBitmap.GetGraphicObject().GetUniqueID(),
     644 [ +  - ][ +  - ]:        366 :             RTL_TEXTENCODING_ASCII_US);
                 [ +  - ]
     645                 :            :     }
     646 [ +  + ][ +  + ]:        798 :     if( nMemberId == MID_BITMAP ||
     647                 :            :         nMemberId == 0  )
     648                 :            :     {
     649 [ +  - ][ +  - ]:        366 :         XOBitmap aLocalXOBitmap( GetBitmapValue() );
     650         [ +  - ]:        366 :         Bitmap aBmp( aLocalXOBitmap.GetBitmap() );
     651         [ +  - ]:        366 :         BitmapEx aBmpEx( aBmp );
     652                 :            : 
     653 [ +  - ][ +  - ]:        366 :         xBmp.set( VCLUnoHelper::CreateBitmap( aBmpEx ) );
         [ +  - ][ +  - ]
                 [ +  - ]
     654                 :            :     }
     655                 :            : 
     656         [ +  + ]:        798 :     if( nMemberId == MID_NAME )
     657         [ +  - ]:        216 :         rVal <<= aApiName;
     658         [ +  + ]:        582 :     else if( nMemberId == MID_GRAFURL )
     659         [ +  - ]:        216 :         rVal <<= aURL;
     660         [ +  + ]:        366 :     else if( nMemberId == MID_BITMAP )
     661         [ +  - ]:        216 :         rVal <<= xBmp;
     662                 :            :     else
     663                 :            :     {
     664                 :            :         // member-id 0 => complete item (e.g. for toolbars)
     665                 :            :         DBG_ASSERT( nMemberId == 0, "invalid member-id" );
     666         [ +  - ]:        150 :         uno::Sequence< beans::PropertyValue > aPropSeq( 3 );
     667                 :            : 
     668 [ +  - ][ +  - ]:        150 :         aPropSeq[0].Name  = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ));
     669 [ +  - ][ +  - ]:        150 :         aPropSeq[0].Value = uno::makeAny( aInternalName );
     670 [ +  - ][ +  - ]:        150 :         aPropSeq[1].Name  = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ));
     671 [ +  - ][ +  - ]:        150 :         aPropSeq[1].Value = uno::makeAny( aURL );
     672 [ +  - ][ +  - ]:        150 :         aPropSeq[2].Name  = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Bitmap" ));
     673 [ +  - ][ +  - ]:        150 :         aPropSeq[2].Value = uno::makeAny( xBmp );
     674                 :            : 
     675 [ +  - ][ +  - ]:        150 :         rVal <<= aPropSeq;
     676                 :            :     }
     677                 :            : 
     678                 :        798 :     return true;
     679                 :            : }
     680                 :            : 
     681                 :            : //------------------------------------------------------------------------
     682                 :            : 
     683                 :        162 : bool XFillBitmapItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
     684                 :            : {
     685                 :            : //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     686                 :        162 :     nMemberId &= ~CONVERT_TWIPS;
     687                 :            : 
     688                 :        162 :     ::rtl::OUString aName;
     689                 :        162 :     ::rtl::OUString aURL;
     690                 :        162 :     ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap > xBmp;
     691                 :        162 :     ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > xGraphic;
     692                 :            : 
     693                 :        162 :     bool bSetName   = false;
     694                 :        162 :     bool bSetURL    = false;
     695                 :        162 :     bool bSetBitmap = false;
     696                 :            : 
     697         [ -  + ]:        162 :     if( nMemberId == MID_NAME )
     698                 :          0 :         bSetName = (rVal >>= aName);
     699         [ +  + ]:        162 :     else if( nMemberId == MID_GRAFURL )
     700                 :         12 :         bSetURL = (rVal >>= aURL);
     701         [ -  + ]:        150 :     else if( nMemberId == MID_BITMAP )
     702                 :            :     {
     703         [ #  # ]:          0 :         bSetBitmap = (rVal >>= xBmp);
     704         [ #  # ]:          0 :         if ( !bSetBitmap )
     705         [ #  # ]:          0 :             bSetBitmap = (rVal >>= xGraphic );
     706                 :            :     }
     707                 :            :     else
     708                 :            :     {
     709                 :            :         DBG_ASSERT( nMemberId == 0, "invalid member-id" );
     710         [ +  - ]:        150 :         uno::Sequence< beans::PropertyValue >   aPropSeq;
     711 [ +  - ][ +  - ]:        150 :         if( rVal >>= aPropSeq )
     712                 :            :         {
     713         [ +  + ]:        600 :             for ( sal_Int32 n = 0; n < aPropSeq.getLength(); n++ )
     714                 :            :             {
     715 [ +  - ][ +  + ]:        450 :                 if ( aPropSeq[n].Name == "Name" )
     716         [ +  - ]:        150 :                     bSetName = (aPropSeq[n].Value >>= aName);
     717 [ +  - ][ +  + ]:        300 :                 else if ( aPropSeq[n].Name == "FillBitmapURL" )
     718         [ +  - ]:        150 :                     bSetURL = (aPropSeq[n].Value >>= aURL);
     719 [ +  - ][ +  - ]:        150 :                 else if ( aPropSeq[n].Name == "Bitmap" )
     720 [ +  - ][ +  - ]:        150 :                     bSetBitmap = (aPropSeq[n].Value >>= xBmp);
     721                 :            :             }
     722         [ +  - ]:        150 :         }
     723                 :            :     }
     724                 :            : 
     725         [ +  + ]:        162 :     if( bSetName )
     726                 :            :     {
     727 [ +  - ][ +  - ]:        150 :         SetName( aName );
                 [ +  - ]
     728                 :            :     }
     729         [ +  - ]:        162 :     if( bSetURL )
     730                 :            :     {
     731         [ +  - ]:        162 :         GraphicObject aGrafObj( GraphicObject::CreateGraphicObjectFromURL( aURL ) );
     732         [ +  - ]:        162 :         XOBitmap aBMP( aGrafObj );
     733 [ +  - ][ +  - ]:        162 :         SetBitmapValue( aBMP );
                 [ +  - ]
     734                 :            :     }
     735         [ +  + ]:        162 :     if( bSetBitmap )
     736                 :            :     {
     737         [ +  - ]:        150 :         Bitmap aInput;
     738         [ +  - ]:        150 :         if ( xBmp.is() )
     739                 :            :         {
     740         [ +  - ]:        150 :             BitmapEx aInputEx( VCLUnoHelper::GetBitmap( xBmp ) );
     741 [ +  - ][ +  - ]:        150 :             aInput = aInputEx.GetBitmap();
         [ +  - ][ +  - ]
     742                 :            :         }
     743         [ #  # ]:          0 :         else if ( xGraphic.is() )
     744                 :            :         {
     745         [ #  # ]:          0 :             Graphic aGraphic( xGraphic );
     746 [ #  # ][ #  # ]:          0 :             aInput = aGraphic.GetBitmap();
         [ #  # ][ #  # ]
     747                 :            :         }
     748                 :            : 
     749                 :            :         // note: aXOBitmap is the member bitmap
     750         [ +  - ]:        150 :         aXOBitmap.SetBitmap( aInput );
     751                 :        150 :         aXOBitmap.SetBitmapType(XBITMAP_IMPORT);
     752                 :            : 
     753   [ -  +  #  # ]:        300 :         if(aInput.GetSizePixel().Width() == 8
         [ #  # ][ +  - ]
           [ -  +  #  # ]
                 [ +  - ]
     754 [ #  # ][ -  + ]:        150 :            && aInput.GetSizePixel().Height() == 8
                 [ #  # ]
     755         [ #  # ]:          0 :            && aInput.GetColorCount() == 2)
     756                 :            :         {
     757         [ #  # ]:          0 :             aXOBitmap.Bitmap2Array();
     758                 :          0 :             aXOBitmap.SetBitmapType(XBITMAP_8X8);
     759         [ #  # ]:          0 :             aXOBitmap.SetPixelSize(aInput.GetSizePixel());
     760         [ +  - ]:        150 :         }
     761                 :            :     }
     762                 :            : 
     763 [ +  + ][ -  + ]:        162 :     return (bSetName || bSetURL || bSetBitmap);
                 [ #  # ]
     764                 :            : }
     765                 :            : 
     766                 :       2433 : sal_Bool XFillBitmapItem::CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 )
     767                 :            : {
     768 [ +  - ][ +  - ]:       2433 :     return ((XFillBitmapItem*)p1)->GetBitmapValue().GetGraphicObject().GetUniqueID() ==
     769         [ +  - ]:       4866 :            ((XFillBitmapItem*)p2)->GetBitmapValue().GetGraphicObject().GetUniqueID();
     770                 :            : }
     771                 :            : 
     772                 :       2433 : XFillBitmapItem* XFillBitmapItem::checkForUniqueItem( SdrModel* pModel ) const
     773                 :            : {
     774         [ +  - ]:       2433 :     if( pModel )
     775                 :            :     {
     776                 :            :         const String aUniqueName = NameOrIndex::CheckNamedItem(
     777                 :       2433 :                 this, XATTR_FILLBITMAP, &pModel->GetItemPool(),
     778 [ +  - ][ #  # ]:       2433 :                 pModel->GetStyleSheetPool() ? &pModel->GetStyleSheetPool()->GetPool() : NULL,
     779                 :            :                 XFillBitmapItem::CompareValueFunc, RID_SVXSTR_BMP21,
     780 [ +  - ][ -  + ]:       7299 :                 pModel->GetPropertyList( XBITMAP_LIST ) );
         [ #  # ][ +  - ]
     781                 :            : 
     782                 :            :         // if the given name is not valid, replace it!
     783 [ +  - ][ +  - ]:       2433 :         if( aUniqueName != GetName() )
         [ -  + ][ +  - ]
     784 [ #  # ][ #  # ]:       2433 :             return new XFillBitmapItem( aUniqueName, aXOBitmap );
         [ +  - ][ +  - ]
     785                 :            :     }
     786                 :            : 
     787                 :       2433 :     return (XFillBitmapItem*)this;
     788                 :            : }
     789                 :            : 
     790                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10