LCOV - code coverage report
Current view: top level - libreoffice/vcl/source/gdi - wall.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 106 247 42.9 %
Date: 2012-12-27 Functions: 19 34 55.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include <tools/stream.hxx>
      22             : #include <tools/vcompat.hxx>
      23             : #include <tools/debug.hxx>
      24             : 
      25             : #include <vcl/bitmapex.hxx>
      26             : #include <vcl/gradient.hxx>
      27             : #include <vcl/wall.hxx>
      28             : #include <vcl/svapp.hxx>
      29             : 
      30             : #include <wall2.hxx>
      31             : 
      32             : 
      33             : DBG_NAME( Wallpaper )
      34             : 
      35             : // -----------------------------------------------------------------------
      36             : 
      37       25293 : ImplWallpaper::ImplWallpaper() :
      38       25293 :     maColor( COL_TRANSPARENT )
      39             : {
      40       25293 :     mnRefCount      = 1;
      41       25293 :     mpBitmap        = NULL;
      42       25293 :     mpCache         = NULL;
      43       25293 :     mpGradient      = NULL;
      44       25293 :     mpRect          = NULL;
      45       25293 :     meStyle         = WALLPAPER_NULL;
      46       25293 : }
      47             : 
      48             : // -----------------------------------------------------------------------
      49             : 
      50        2156 : ImplWallpaper::ImplWallpaper( const ImplWallpaper& rImplWallpaper ) :
      51        2156 :     maColor( rImplWallpaper.maColor )
      52             : {
      53        2156 :     mnRefCount = 1;
      54        2156 :     meStyle = rImplWallpaper.meStyle;
      55             : 
      56        2156 :     if ( rImplWallpaper.mpBitmap )
      57           0 :         mpBitmap = new BitmapEx( *rImplWallpaper.mpBitmap );
      58             :     else
      59        2156 :         mpBitmap = NULL;
      60        2156 :     if( rImplWallpaper.mpCache )
      61           0 :         mpCache = new BitmapEx( *rImplWallpaper.mpCache );
      62             :     else
      63        2156 :         mpCache = NULL;
      64        2156 :     if ( rImplWallpaper.mpGradient )
      65           0 :         mpGradient = new Gradient( *rImplWallpaper.mpGradient );
      66             :     else
      67        2156 :         mpGradient = NULL;
      68        2156 :     if ( rImplWallpaper.mpRect )
      69           0 :         mpRect = new Rectangle( *rImplWallpaper.mpRect );
      70             :     else
      71        2156 :         mpRect = NULL;
      72        2156 : }
      73             : 
      74             : // -----------------------------------------------------------------------
      75             : 
      76       21671 : ImplWallpaper::~ImplWallpaper()
      77             : {
      78       21671 :     delete mpBitmap;
      79       21671 :     delete mpCache;
      80       21671 :     delete mpGradient;
      81       21671 :     delete mpRect;
      82       21671 : }
      83             : 
      84             : // -----------------------------------------------------------------------
      85             : 
      86           0 : void ImplWallpaper::ImplSetCachedBitmap( BitmapEx& rBmp )
      87             : {
      88           0 :     if( !mpCache )
      89           0 :         mpCache = new BitmapEx( rBmp );
      90             :     else
      91           0 :         *mpCache = rBmp;
      92           0 : }
      93             : 
      94             : // -----------------------------------------------------------------------
      95             : 
      96        2156 : void ImplWallpaper::ImplReleaseCachedBitmap()
      97             : {
      98        2156 :     delete mpCache;
      99        2156 :     mpCache = NULL;
     100        2156 : }
     101             : 
     102             : // -----------------------------------------------------------------------
     103             : 
     104           0 : SvStream& operator>>( SvStream& rIStm, ImplWallpaper& rImplWallpaper )
     105             : {
     106           0 :     VersionCompat   aCompat( rIStm, STREAM_READ );
     107             :     sal_uInt16          nTmp16;
     108             : 
     109           0 :     delete rImplWallpaper.mpRect;
     110           0 :     rImplWallpaper.mpRect = NULL;
     111             : 
     112           0 :     delete rImplWallpaper.mpGradient;
     113           0 :     rImplWallpaper.mpGradient = NULL;
     114             : 
     115           0 :     delete rImplWallpaper.mpBitmap;
     116           0 :     rImplWallpaper.mpBitmap = NULL;
     117             : 
     118             :     // version 1
     119           0 :     rIStm >> rImplWallpaper.maColor;
     120           0 :     rIStm >> nTmp16; rImplWallpaper.meStyle = (WallpaperStyle) nTmp16;
     121             : 
     122             :     // version 2
     123           0 :     if( aCompat.GetVersion() >= 2 )
     124             :     {
     125             :         sal_Bool bRect, bGrad, bBmp, bDummy;
     126             : 
     127           0 :         rIStm >> bRect >> bGrad >> bBmp >> bDummy >> bDummy >> bDummy;
     128             : 
     129           0 :         if( bRect )
     130             :         {
     131           0 :             rImplWallpaper.mpRect = new Rectangle;
     132           0 :             rIStm >> *rImplWallpaper.mpRect;
     133             :         }
     134             : 
     135           0 :         if( bGrad )
     136             :         {
     137           0 :             rImplWallpaper.mpGradient = new Gradient;
     138           0 :             rIStm >> *rImplWallpaper.mpGradient;
     139             :         }
     140             : 
     141           0 :         if( bBmp )
     142             :         {
     143           0 :             rImplWallpaper.mpBitmap = new BitmapEx;
     144           0 :             rIStm >> *rImplWallpaper.mpBitmap;
     145             :         }
     146             : 
     147             :         // version 3 (new color format)
     148           0 :         if( aCompat.GetVersion() >= 3 )
     149             :         {
     150           0 :             rImplWallpaper.maColor.Read( rIStm, sal_True );
     151             :         }
     152             :     }
     153             : 
     154           0 :     return rIStm;
     155             : }
     156             : 
     157             : // -----------------------------------------------------------------------
     158             : 
     159           0 : SvStream& operator<<( SvStream& rOStm, const ImplWallpaper& rImplWallpaper )
     160             : {
     161           0 :     VersionCompat   aCompat( rOStm, STREAM_WRITE, 3 );
     162           0 :     sal_Bool            bRect = ( rImplWallpaper.mpRect != NULL );
     163           0 :     sal_Bool            bGrad = ( rImplWallpaper.mpGradient != NULL );
     164           0 :     sal_Bool            bBmp = ( rImplWallpaper.mpBitmap != NULL );
     165           0 :     sal_Bool            bDummy = sal_False;
     166             : 
     167             :     // version 1
     168           0 :     rOStm << rImplWallpaper.maColor << (sal_uInt16) rImplWallpaper.meStyle;
     169             : 
     170             :     // version 2
     171           0 :     rOStm << bRect << bGrad << bBmp << bDummy << bDummy << bDummy;
     172             : 
     173           0 :     if( bRect )
     174           0 :         rOStm << *rImplWallpaper.mpRect;
     175             : 
     176           0 :     if( bGrad )
     177           0 :         rOStm << *rImplWallpaper.mpGradient;
     178             : 
     179           0 :     if( bBmp )
     180           0 :         rOStm << *rImplWallpaper.mpBitmap;
     181             : 
     182             :     // version 3 (new color format)
     183           0 :     ( (Color&) rImplWallpaper.maColor ).Write( rOStm, sal_True );
     184             : 
     185           0 :     return rOStm;
     186             : }
     187             : 
     188             : // -----------------------------------------------------------------------
     189             : 
     190        4312 : inline void Wallpaper::ImplMakeUnique( sal_Bool bReleaseCache )
     191             : {
     192             :     // Falls noch andere Referenzen bestehen, dann kopieren
     193        4312 :     if ( mpImplWallpaper->mnRefCount != 1 )
     194             :     {
     195        2156 :         if ( mpImplWallpaper->mnRefCount )
     196           0 :             mpImplWallpaper->mnRefCount--;
     197        2156 :         mpImplWallpaper = new ImplWallpaper( *(mpImplWallpaper) );
     198             :     }
     199             : 
     200        4312 :     if( bReleaseCache )
     201        2156 :         mpImplWallpaper->ImplReleaseCachedBitmap();
     202        4312 : }
     203             : 
     204             : // -----------------------------------------------------------------------
     205             : 
     206       23609 : Wallpaper::Wallpaper()
     207             : {
     208             :     DBG_CTOR( Wallpaper, NULL );
     209             : 
     210       23609 :     static ImplWallpaper aStaticImplWallpaper;
     211             : 
     212       23609 :     aStaticImplWallpaper.mnRefCount = 0;
     213       23609 :     mpImplWallpaper = &aStaticImplWallpaper;
     214       23609 : }
     215             : 
     216             : // -----------------------------------------------------------------------
     217             : 
     218        1559 : Wallpaper::Wallpaper( const Wallpaper& rWallpaper )
     219             : {
     220             :     DBG_CTOR( Wallpaper, NULL );
     221             :     DBG_CHKOBJ( &rWallpaper, Wallpaper, NULL );
     222             :     DBG_ASSERT( rWallpaper.mpImplWallpaper->mnRefCount < 0xFFFFFFFE, "Wallpaper: RefCount overflow" );
     223             : 
     224             :     // Instance Daten uebernehmen und Referenzcounter erhoehen
     225        1559 :     mpImplWallpaper = rWallpaper.mpImplWallpaper;
     226             :     // RefCount == 0 fuer statische Objekte
     227        1559 :     if ( mpImplWallpaper->mnRefCount )
     228        1559 :         mpImplWallpaper->mnRefCount++;
     229        1559 : }
     230             : 
     231             : // -----------------------------------------------------------------------
     232             : 
     233       25232 : Wallpaper::Wallpaper( const Color& rColor )
     234             : {
     235             :     DBG_CTOR( Wallpaper, NULL );
     236             : 
     237       25232 :     mpImplWallpaper             = new ImplWallpaper;
     238       25232 :     mpImplWallpaper->maColor    = rColor;
     239       25232 :     mpImplWallpaper->meStyle    = WALLPAPER_TILE;
     240       25232 : }
     241             : 
     242             : // -----------------------------------------------------------------------
     243             : 
     244           0 : Wallpaper::Wallpaper( const BitmapEx& rBmpEx )
     245             : {
     246             :     DBG_CTOR( Wallpaper, NULL );
     247             : 
     248           0 :     mpImplWallpaper             = new ImplWallpaper;
     249           0 :     mpImplWallpaper->mpBitmap   = new BitmapEx( rBmpEx );
     250           0 :     mpImplWallpaper->meStyle    = WALLPAPER_TILE;
     251           0 : }
     252             : 
     253             : // -----------------------------------------------------------------------
     254             : 
     255          35 : Wallpaper::Wallpaper( const Gradient& rGradient )
     256             : {
     257             :     DBG_CTOR( Wallpaper, NULL );
     258             : 
     259          35 :     mpImplWallpaper             = new ImplWallpaper;
     260          35 :     mpImplWallpaper->mpGradient = new Gradient( rGradient );
     261          35 :     mpImplWallpaper->meStyle    = WALLPAPER_TILE;
     262          35 : }
     263             : 
     264             : // -----------------------------------------------------------------------
     265             : 
     266       41069 : Wallpaper::~Wallpaper()
     267             : {
     268             :     DBG_DTOR( Wallpaper, NULL );
     269             : 
     270             :     // Wenn es keine statischen ImpDaten sind, dann loeschen, wenn es
     271             :     // die letzte Referenz ist, sonst Referenzcounter decrementieren
     272       41069 :     if ( mpImplWallpaper->mnRefCount )
     273             :     {
     274       36803 :         if ( mpImplWallpaper->mnRefCount == 1 )
     275        7601 :             delete mpImplWallpaper;
     276             :         else
     277       29202 :             mpImplWallpaper->mnRefCount--;
     278             :     }
     279       41069 : }
     280             : 
     281             : // -----------------------------------------------------------------------
     282             : 
     283           0 : void Wallpaper::SetColor( const Color& rColor )
     284             : {
     285             :     DBG_CHKTHIS( Wallpaper, NULL );
     286             : 
     287           0 :     ImplMakeUnique();
     288           0 :     mpImplWallpaper->maColor = rColor;
     289             : 
     290           0 :     if( WALLPAPER_NULL == mpImplWallpaper->meStyle || WALLPAPER_APPLICATIONGRADIENT == mpImplWallpaper->meStyle )
     291           0 :         mpImplWallpaper->meStyle = WALLPAPER_TILE;
     292           0 : }
     293             : 
     294             : // -----------------------------------------------------------------------
     295             : 
     296       42650 : const Color& Wallpaper::GetColor() const
     297             : {
     298             :     DBG_CHKTHIS( Wallpaper, NULL );
     299             : 
     300       42650 :     return mpImplWallpaper->maColor;
     301             : }
     302             : 
     303             : // -----------------------------------------------------------------------
     304             : 
     305        2156 : void Wallpaper::SetStyle( WallpaperStyle eStyle )
     306             : {
     307             :     DBG_CHKTHIS( Wallpaper, NULL );
     308             : 
     309        2156 :     ImplMakeUnique( sal_False );
     310             : 
     311        2156 :     if( eStyle == WALLPAPER_APPLICATIONGRADIENT )
     312             :         // set a dummy gradient, the correct gradient
     313             :         // will be created dynamically in GetGradient()
     314        2156 :         SetGradient( ImplGetApplicationGradient() );
     315             : 
     316        2156 :     mpImplWallpaper->meStyle = eStyle;
     317        2156 : }
     318             : 
     319             : // -----------------------------------------------------------------------
     320             : 
     321       29912 : WallpaperStyle Wallpaper::GetStyle() const
     322             : {
     323             :     DBG_CHKTHIS( Wallpaper, NULL );
     324             : 
     325       29912 :     return mpImplWallpaper->meStyle;
     326             : }
     327             : 
     328             : // -----------------------------------------------------------------------
     329             : 
     330           0 : void Wallpaper::SetBitmap( const BitmapEx& rBitmap )
     331             : {
     332             :     DBG_CHKTHIS( Wallpaper, NULL );
     333             : 
     334           0 :     if ( !rBitmap )
     335             :     {
     336           0 :         if ( mpImplWallpaper->mpBitmap )
     337             :         {
     338           0 :             ImplMakeUnique();
     339           0 :             delete mpImplWallpaper->mpBitmap;
     340           0 :             mpImplWallpaper->mpBitmap = NULL;
     341             :         }
     342             :     }
     343             :     else
     344             :     {
     345           0 :         ImplMakeUnique();
     346           0 :         if ( mpImplWallpaper->mpBitmap )
     347           0 :             *(mpImplWallpaper->mpBitmap) = rBitmap;
     348             :         else
     349           0 :             mpImplWallpaper->mpBitmap = new BitmapEx( rBitmap );
     350             :     }
     351             : 
     352           0 :     if( WALLPAPER_NULL == mpImplWallpaper->meStyle || WALLPAPER_APPLICATIONGRADIENT == mpImplWallpaper->meStyle)
     353           0 :         mpImplWallpaper->meStyle = WALLPAPER_TILE;
     354           0 : }
     355             : 
     356             : // -----------------------------------------------------------------------
     357             : 
     358           0 : BitmapEx Wallpaper::GetBitmap() const
     359             : {
     360             :     DBG_CHKTHIS( Wallpaper, NULL );
     361             : 
     362           0 :     if ( mpImplWallpaper->mpBitmap )
     363           0 :         return *(mpImplWallpaper->mpBitmap);
     364             :     else
     365             :     {
     366           0 :         BitmapEx aBmp;
     367           0 :         return aBmp;
     368             :     }
     369             : }
     370             : 
     371             : // -----------------------------------------------------------------------
     372             : 
     373       12536 : sal_Bool Wallpaper::IsBitmap() const
     374             : {
     375             :     DBG_CHKTHIS( Wallpaper, NULL );
     376             : 
     377       12536 :     return (mpImplWallpaper->mpBitmap != 0);
     378             : }
     379             : 
     380             : 
     381             : // -----------------------------------------------------------------------
     382             : 
     383        2156 : void Wallpaper::SetGradient( const Gradient& rGradient )
     384             : {
     385             :     DBG_CHKTHIS( Wallpaper, NULL );
     386             : 
     387        2156 :     ImplMakeUnique();
     388             : 
     389        2156 :     if ( mpImplWallpaper->mpGradient )
     390           0 :         *(mpImplWallpaper->mpGradient) = rGradient;
     391             :     else
     392        2156 :         mpImplWallpaper->mpGradient = new Gradient( rGradient );
     393             : 
     394        2156 :     if( WALLPAPER_NULL == mpImplWallpaper->meStyle || WALLPAPER_APPLICATIONGRADIENT == mpImplWallpaper->meStyle )
     395        2156 :         mpImplWallpaper->meStyle = WALLPAPER_TILE;
     396        2156 : }
     397             : 
     398             : // -----------------------------------------------------------------------
     399             : 
     400         612 : Gradient Wallpaper::GetGradient() const
     401             : {
     402             :     DBG_CHKTHIS( Wallpaper, NULL );
     403             : 
     404         612 :     if( WALLPAPER_APPLICATIONGRADIENT == mpImplWallpaper->meStyle )
     405         612 :         return ImplGetApplicationGradient();
     406           0 :     else if ( mpImplWallpaper->mpGradient )
     407           0 :         return *(mpImplWallpaper->mpGradient);
     408             :     else
     409             :     {
     410           0 :         Gradient aGradient;
     411           0 :         return aGradient;
     412             :     }
     413             : }
     414             : 
     415             : // -----------------------------------------------------------------------
     416             : 
     417       23010 : sal_Bool Wallpaper::IsGradient() const
     418             : {
     419             :     DBG_CHKTHIS( Wallpaper, NULL );
     420             : 
     421       23010 :     return (mpImplWallpaper->mpGradient != 0);
     422             : }
     423             : 
     424             : 
     425             : // -----------------------------------------------------------------------
     426             : 
     427        2768 : Gradient Wallpaper::ImplGetApplicationGradient() const
     428             : {
     429        2768 :     Gradient g;
     430        2768 :     g.SetAngle( 900 );
     431        2768 :     g.SetStyle( GradientStyle_LINEAR );
     432        2768 :     g.SetStartColor( Application::GetSettings().GetStyleSettings().GetFaceColor() );
     433             :     // no 'extreme' gradient when high contrast
     434        2768 :     if( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
     435           0 :         g.SetEndColor( Application::GetSettings().GetStyleSettings().GetFaceColor() );
     436             :     else
     437        2768 :         g.SetEndColor( Application::GetSettings().GetStyleSettings().GetFaceGradientColor() );
     438        2768 :     return g;
     439             : }
     440             : 
     441             : // -----------------------------------------------------------------------
     442             : 
     443           0 : void Wallpaper::SetRect( const Rectangle& rRect )
     444             : {
     445             :     DBG_CHKTHIS( Wallpaper, NULL );
     446             : 
     447           0 :     ImplMakeUnique( sal_False );
     448             : 
     449           0 :     if ( rRect.IsEmpty() )
     450             :     {
     451           0 :         if ( mpImplWallpaper->mpRect )
     452             :         {
     453           0 :             delete mpImplWallpaper->mpRect;
     454           0 :             mpImplWallpaper->mpRect = NULL;
     455             :         }
     456             :     }
     457             :     else
     458             :     {
     459           0 :         if ( mpImplWallpaper->mpRect )
     460           0 :             *(mpImplWallpaper->mpRect) = rRect;
     461             :         else
     462           0 :             mpImplWallpaper->mpRect = new Rectangle( rRect );
     463             :     }
     464           0 : }
     465             : 
     466             : // -----------------------------------------------------------------------
     467             : 
     468           0 : Rectangle Wallpaper::GetRect() const
     469             : {
     470             :     DBG_CHKTHIS( Wallpaper, NULL );
     471             : 
     472           0 :     if ( mpImplWallpaper->mpRect )
     473           0 :         return *(mpImplWallpaper->mpRect);
     474             :     else
     475             :     {
     476           0 :         Rectangle aRect;
     477           0 :         return aRect;
     478             :     }
     479             : }
     480             : 
     481             : // -----------------------------------------------------------------------
     482             : 
     483           0 : sal_Bool Wallpaper::IsRect() const
     484             : {
     485             :     DBG_CHKTHIS( Wallpaper, NULL );
     486             : 
     487           0 :     return (mpImplWallpaper->mpRect != 0);
     488             : }
     489             : 
     490             : 
     491             : // -----------------------------------------------------------------------
     492             : 
     493           0 : sal_Bool Wallpaper::IsFixed() const
     494             : {
     495           0 :     if ( mpImplWallpaper->meStyle == WALLPAPER_NULL )
     496           0 :         return sal_False;
     497             :     else
     498           0 :         return (!mpImplWallpaper->mpBitmap && !mpImplWallpaper->mpGradient);
     499             : }
     500             : 
     501             : // -----------------------------------------------------------------------
     502             : 
     503           0 : sal_Bool Wallpaper::IsScrollable() const
     504             : {
     505           0 :     if ( mpImplWallpaper->meStyle == WALLPAPER_NULL )
     506           0 :         return sal_False;
     507           0 :     else if ( !mpImplWallpaper->mpBitmap && !mpImplWallpaper->mpGradient )
     508           0 :         return sal_True;
     509           0 :     else if ( mpImplWallpaper->mpBitmap )
     510           0 :         return (mpImplWallpaper->meStyle == WALLPAPER_TILE);
     511             :     else
     512           0 :         return sal_False;
     513             : }
     514             : 
     515             : // -----------------------------------------------------------------------
     516             : 
     517       31298 : Wallpaper& Wallpaper::operator=( const Wallpaper& rWallpaper )
     518             : {
     519             :     DBG_CHKTHIS( Wallpaper, NULL );
     520             :     DBG_CHKOBJ( &rWallpaper, Wallpaper, NULL );
     521             :     DBG_ASSERT( rWallpaper.mpImplWallpaper->mnRefCount < 0xFFFFFFFE, "Wallpaper: RefCount overflow" );
     522             : 
     523             :     // Zuerst Referenzcounter erhoehen, damit man sich selbst zuweisen kann
     524       31298 :     if ( rWallpaper.mpImplWallpaper->mnRefCount )
     525       28371 :         rWallpaper.mpImplWallpaper->mnRefCount++;
     526             : 
     527             :     // Wenn es keine statischen ImpDaten sind, dann loeschen, wenn es
     528             :     // die letzte Referenz ist, sonst Referenzcounter decrementieren
     529       31298 :     if ( mpImplWallpaper->mnRefCount )
     530             :     {
     531       14053 :         if ( mpImplWallpaper->mnRefCount == 1 )
     532       14044 :             delete mpImplWallpaper;
     533             :         else
     534           9 :             mpImplWallpaper->mnRefCount--;
     535             :     }
     536             : 
     537       31298 :     mpImplWallpaper = rWallpaper.mpImplWallpaper;
     538             : 
     539       31298 :     return *this;
     540             : }
     541             : 
     542             : // -----------------------------------------------------------------------
     543             : 
     544           0 : sal_Bool Wallpaper::operator==( const Wallpaper& rWallpaper ) const
     545             : {
     546             :     DBG_CHKTHIS( Wallpaper, NULL );
     547             :     DBG_CHKOBJ( &rWallpaper, Wallpaper, NULL );
     548             : 
     549           0 :     if ( mpImplWallpaper == rWallpaper.mpImplWallpaper )
     550           0 :         return sal_True;
     551             : 
     552           0 :     if ( ( mpImplWallpaper->meStyle != rWallpaper.mpImplWallpaper->meStyle ) ||
     553           0 :          ( mpImplWallpaper->maColor != rWallpaper.mpImplWallpaper->maColor ) )
     554           0 :         return sal_False;
     555             : 
     556           0 :     if ( mpImplWallpaper->mpRect != rWallpaper.mpImplWallpaper->mpRect
     557           0 :          && ( !mpImplWallpaper->mpRect
     558           0 :               || !rWallpaper.mpImplWallpaper->mpRect
     559           0 :               || *(mpImplWallpaper->mpRect) != *(rWallpaper.mpImplWallpaper->mpRect) ) )
     560           0 :         return sal_False;
     561             : 
     562           0 :     if ( mpImplWallpaper->mpBitmap != rWallpaper.mpImplWallpaper->mpBitmap
     563           0 :          && ( !mpImplWallpaper->mpBitmap
     564           0 :               || !rWallpaper.mpImplWallpaper->mpBitmap
     565           0 :               || *(mpImplWallpaper->mpBitmap) != *(rWallpaper.mpImplWallpaper->mpBitmap) ) )
     566           0 :         return sal_False;
     567             : 
     568           0 :     if ( mpImplWallpaper->mpGradient != rWallpaper.mpImplWallpaper->mpGradient
     569           0 :          && ( !mpImplWallpaper->mpGradient
     570           0 :               || !rWallpaper.mpImplWallpaper->mpGradient
     571           0 :               || *(mpImplWallpaper->mpGradient) != *(rWallpaper.mpImplWallpaper->mpGradient) ) )
     572           0 :         return sal_False;
     573             : 
     574           0 :     return sal_True;
     575             : }
     576             : 
     577             : // -----------------------------------------------------------------------
     578             : 
     579           0 : SvStream& operator>>( SvStream& rIStm, Wallpaper& rWallpaper )
     580             : {
     581           0 :     rWallpaper.ImplMakeUnique();
     582           0 :     return( rIStm >> *rWallpaper.mpImplWallpaper );
     583             : }
     584             : 
     585             : // -----------------------------------------------------------------------
     586             : 
     587           0 : SvStream& operator<<( SvStream& rOStm, const Wallpaper& rWallpaper )
     588             : {
     589           0 :     return( rOStm << *rWallpaper.mpImplWallpaper );
     590             : }
     591             : 
     592             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10