LCOV - code coverage report
Current view: top level - libreoffice/vcl/source/gdi - graph.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 158 300 52.7 %
Date: 2012-12-27 Functions: 48 69 69.6 %
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             : #include <vcl/outdev.hxx>
      21             : #include <vcl/svapp.hxx>
      22             : #include <vcl/graph.hxx>
      23             : #include <vcl/metaact.hxx>
      24             : #include <impgraph.hxx>
      25             : #include <comphelper/processfactory.hxx>
      26             : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      27             : #include <com/sun/star/graphic/GraphicProvider.hpp>
      28             : #include <com/sun/star/graphic/XGraphicProvider.hpp>
      29             : #include <com/sun/star/lang/XUnoTunnel.hpp>
      30             : #include <com/sun/star/lang/XTypeProvider.hpp>
      31             : #include <com/sun/star/graphic/XGraphic.hpp>
      32             : 
      33             : using namespace ::com::sun::star;
      34             : 
      35             : // -----------------------
      36             : // - Default-Drawmethode -
      37             : // -----------------------
      38             : 
      39           0 : static void ImplDrawDefault( OutputDevice* pOutDev, const UniString* pText,
      40             :                              Font* pFont, const Bitmap* pBitmap, const BitmapEx* pBitmapEx,
      41             :                              const Point& rDestPt, const Size& rDestSize )
      42             : {
      43           0 :     sal_uInt16      nPixel = (sal_uInt16) pOutDev->PixelToLogic( Size( 1, 1 ) ).Width();
      44           0 :     sal_uInt16      nPixelWidth = nPixel;
      45           0 :     Point       aPoint( rDestPt.X() + nPixelWidth, rDestPt.Y() + nPixelWidth );
      46           0 :     Size        aSize( rDestSize.Width() - ( nPixelWidth << 1 ), rDestSize.Height() - ( nPixelWidth << 1 ) );
      47           0 :     sal_Bool        bFilled = ( pBitmap != NULL || pBitmapEx != NULL || pFont != NULL );
      48           0 :     Rectangle   aBorderRect( aPoint, aSize );
      49             : 
      50           0 :     pOutDev->Push();
      51             : 
      52           0 :     pOutDev->SetFillColor();
      53             : 
      54             :     // Auf dem Drucker ein schwarzes Rechteck und auf dem Bildschirm eins mit 3D-Effekt
      55           0 :     if ( pOutDev->GetOutDevType() == OUTDEV_PRINTER )
      56           0 :         pOutDev->SetLineColor( COL_BLACK );
      57             :     else
      58             :     {
      59           0 :         aBorderRect.Left() += nPixel;
      60           0 :         aBorderRect.Top() += nPixel;
      61             : 
      62           0 :         pOutDev->SetLineColor( COL_LIGHTGRAY );
      63           0 :         pOutDev->DrawRect( aBorderRect );
      64             : 
      65           0 :         aBorderRect.Left() -= nPixel;
      66           0 :         aBorderRect.Top() -= nPixel;
      67           0 :         aBorderRect.Right() -= nPixel;
      68           0 :         aBorderRect.Bottom() -= nPixel;
      69           0 :         pOutDev->SetLineColor( COL_GRAY );
      70             :     }
      71             : 
      72           0 :     pOutDev->DrawRect( aBorderRect );
      73             : 
      74           0 :     aPoint.X() += nPixelWidth + 2*nPixel;
      75           0 :     aPoint.Y() += nPixelWidth + 2*nPixel;
      76           0 :     aSize.Width() -= 2*nPixelWidth + 4*nPixel;
      77           0 :     aSize.Height() -= 2*nPixelWidth + 4*nPixel;
      78             : 
      79           0 :     if( aSize.Width() > 0 && aSize.Height() > 0
      80           0 :         && (  ( pBitmap && !!*pBitmap ) || ( pBitmapEx && !!*pBitmapEx ) ) )
      81             :     {
      82           0 :         Size aBitmapSize( pOutDev->PixelToLogic( pBitmap ? pBitmap->GetSizePixel() : pBitmapEx->GetSizePixel() ) );
      83             : 
      84           0 :         if( aSize.Height() > aBitmapSize.Height() && aSize.Width() > aBitmapSize.Width() )
      85             :         {
      86           0 :             if ( pBitmap )
      87           0 :                 pOutDev->DrawBitmap( aPoint, *pBitmap );
      88             :             else
      89           0 :                 pOutDev->DrawBitmapEx( aPoint, *pBitmapEx );
      90           0 :             aPoint.X() += aBitmapSize.Width() + 2*nPixel;
      91           0 :             aSize.Width() -= aBitmapSize.Width() + 2*nPixel;
      92             :         }
      93             :     }
      94             : 
      95           0 :     if ( aSize.Width() > 0 && aSize.Height() > 0 && pFont && pText && pText->Len()
      96           0 :          && !(!pOutDev->IsOutputEnabled() /*&& pOutDev->GetConnectMetaFile() */) )
      97             :     {
      98           0 :         MapMode aMapMode( MAP_POINT );
      99           0 :         Size    aSz = pOutDev->LogicToLogic( Size( 0, 12 ), &aMapMode, NULL );
     100           0 :         long    nThreshold = aSz.Height() / 2;
     101           0 :         long    nStep = nThreshold / 3;
     102             : 
     103           0 :         if ( !nStep )
     104           0 :             nStep = aSz.Height() - nThreshold;
     105             : 
     106           0 :         for(;; aSz.Height() -= nStep )
     107             :         {
     108           0 :             pFont->SetSize( aSz );
     109           0 :             pOutDev->SetFont( *pFont );
     110             : 
     111           0 :             long nTextHeight = pOutDev->GetTextHeight();
     112           0 :             long nTextWidth = pOutDev->GetTextWidth( *pText );
     113           0 :             if ( nTextHeight )
     114             :             {
     115             :                 // Die N"aherung ber"ucksichtigt keine Ungenauigkeiten durch
     116             :                 // Wortumbr"uche
     117           0 :                 long nLines = aSize.Height() / nTextHeight;
     118           0 :                 long nWidth = aSize.Width() * nLines; // N"aherung!!!
     119             : 
     120           0 :                 if ( nTextWidth <= nWidth || aSz.Height() <= nThreshold )
     121             :                 {
     122           0 :                     sal_uInt16 nStart = 0;
     123           0 :                     sal_uInt16 nLen = 0;
     124             : 
     125           0 :                     while( nStart < pText->Len() && pText->GetChar( nStart ) == ' ' )
     126           0 :                         nStart++;
     127           0 :                     while( nStart+nLen < pText->Len() && pText->GetChar( nStart+nLen ) != ' ' )
     128           0 :                         nLen++;
     129           0 :                     while( nStart < pText->Len() && nLines-- )
     130             :                     {
     131           0 :                         sal_uInt16 nNext = nLen;
     132           0 :                         do
     133             :                         {
     134           0 :                             while ( nStart+nNext < pText->Len() && pText->GetChar( nStart+nNext ) == ' ' )
     135           0 :                                 nNext++;
     136           0 :                             while ( nStart+nNext < pText->Len() && pText->GetChar( nStart+nNext ) != ' ' )
     137           0 :                                 nNext++;
     138           0 :                             nTextWidth = pOutDev->GetTextWidth( *pText, nStart, nNext );
     139           0 :                             if ( nTextWidth > aSize.Width() )
     140           0 :                                 break;
     141           0 :                             nLen = nNext;
     142             :                         }
     143           0 :                         while ( nStart+nNext < pText->Len() );
     144             : 
     145           0 :                         sal_uInt16 n = nLen;
     146           0 :                         nTextWidth = pOutDev->GetTextWidth( *pText, nStart, n );
     147           0 :                         while( nTextWidth > aSize.Width() )
     148           0 :                             nTextWidth = pOutDev->GetTextWidth( *pText, nStart, --n );
     149           0 :                         pOutDev->DrawText( aPoint, *pText, nStart, n );
     150             : 
     151           0 :                         aPoint.Y() += nTextHeight;
     152           0 :                         nStart      = sal::static_int_cast<sal_uInt16>(nStart + nLen);
     153           0 :                         nLen        = nNext-nLen;
     154           0 :                         while( nStart < pText->Len() && pText->GetChar( nStart ) == ' ' )
     155             :                         {
     156           0 :                             nStart++;
     157           0 :                             nLen--;
     158             :                         }
     159             :                     }
     160           0 :                     break;
     161             :                 }
     162             :             }
     163             :             else
     164           0 :                 break;
     165           0 :         }
     166             :     }
     167             : 
     168             :     // Falls die Default-Graphik keinen Inhalt hat,
     169             :     // malen wir ein rotes Kreuz
     170           0 :     if( !bFilled )
     171             :     {
     172           0 :         aBorderRect.Left()++;
     173           0 :         aBorderRect.Top()++;
     174           0 :         aBorderRect.Right()--;
     175           0 :         aBorderRect.Bottom()--;
     176             : 
     177           0 :         pOutDev->SetLineColor( COL_LIGHTRED );
     178           0 :         pOutDev->DrawLine( aBorderRect.TopLeft(), aBorderRect.BottomRight() );
     179           0 :         pOutDev->DrawLine( aBorderRect.TopRight(), aBorderRect.BottomLeft() );
     180             :     }
     181             : 
     182           0 :     pOutDev->Pop();
     183           0 : }
     184             : 
     185             : // -----------
     186             : // - Graphic -
     187             : // -----------
     188             : 
     189           0 : TYPEINIT1_AUTOFACTORY( Graphic, SvDataCopyStream );
     190             : 
     191             : // ------------------------------------------------------------------------
     192             : 
     193        3363 : Graphic::Graphic()
     194             : {
     195        3363 :     mpImpGraphic = new ImpGraphic;
     196        3363 : }
     197             : 
     198             : // ------------------------------------------------------------------------
     199             : 
     200         979 : Graphic::Graphic( const Graphic& rGraphic ) :
     201         979 : SvDataCopyStream()
     202             : {
     203         979 :     if( rGraphic.IsAnimated() )
     204           0 :         mpImpGraphic = new ImpGraphic( *rGraphic.mpImpGraphic );
     205             :     else
     206             :     {
     207         979 :         mpImpGraphic = rGraphic.mpImpGraphic;
     208         979 :         mpImpGraphic->mnRefCount++;
     209             :     }
     210         979 : }
     211             : 
     212             : // ------------------------------------------------------------------------
     213             : 
     214         457 : Graphic::Graphic( const Bitmap& rBmp )
     215             : {
     216         457 :     mpImpGraphic = new ImpGraphic( rBmp );
     217         457 : }
     218             : 
     219             : // ------------------------------------------------------------------------
     220             : 
     221        2794 : Graphic::Graphic( const BitmapEx& rBmpEx )
     222             : {
     223        2794 :     mpImpGraphic = new ImpGraphic( rBmpEx );
     224        2794 : }
     225             : 
     226             : // ------------------------------------------------------------------------
     227             : 
     228           0 : Graphic::Graphic(const SvgDataPtr& rSvgDataPtr)
     229             : {
     230           0 :     mpImpGraphic = new ImpGraphic(rSvgDataPtr);
     231           0 : }
     232             : 
     233             : // ------------------------------------------------------------------------
     234             : 
     235           7 : Graphic::Graphic( const Animation& rAnimation )
     236             : {
     237           7 :     mpImpGraphic = new ImpGraphic( rAnimation );
     238           7 : }
     239             : 
     240             : // ------------------------------------------------------------------------
     241             : 
     242          49 : Graphic::Graphic( const GDIMetaFile& rMtf )
     243             : {
     244          49 :     mpImpGraphic = new ImpGraphic( rMtf );
     245          49 : }
     246             : 
     247             : // ------------------------------------------------------------------------
     248             : 
     249        2413 : Graphic::Graphic( const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& rxGraphic )
     250             : {
     251        2413 :     uno::Reference< lang::XUnoTunnel >      xTunnel( rxGraphic, uno::UNO_QUERY );
     252        2413 :     uno::Reference< lang::XTypeProvider >   xProv( rxGraphic, uno::UNO_QUERY );
     253        2466 :     const ::Graphic*                        pGraphic = ( ( xTunnel.is() && xProv.is() ) ?
     254        2519 :                                                          reinterpret_cast< ::Graphic* >( xTunnel->getSomething( xProv->getImplementationId() ) ) :
     255        4985 :                                                           NULL );
     256             : 
     257        2413 :     if( pGraphic )
     258             :     {
     259          53 :         if( pGraphic->IsAnimated() )
     260           0 :             mpImpGraphic = new ImpGraphic( *pGraphic->mpImpGraphic );
     261             :         else
     262             :         {
     263          53 :             mpImpGraphic = pGraphic->mpImpGraphic;
     264          53 :             mpImpGraphic->mnRefCount++;
     265             :         }
     266             :     }
     267             :     else
     268        2360 :         mpImpGraphic = new ImpGraphic;
     269        2413 : }
     270             : 
     271             : // ------------------------------------------------------------------------
     272             : 
     273       21978 : Graphic::~Graphic()
     274             : {
     275        9738 :     if( mpImpGraphic->mnRefCount == 1UL )
     276        7813 :         delete mpImpGraphic;
     277             :     else
     278        1925 :         mpImpGraphic->mnRefCount--;
     279       12240 : }
     280             : 
     281             : // ------------------------------------------------------------------------
     282             : 
     283        3269 : void Graphic::ImplTestRefCount()
     284             : {
     285        3269 :     if( mpImpGraphic->mnRefCount > 1UL )
     286             :     {
     287          31 :         mpImpGraphic->mnRefCount--;
     288          31 :         mpImpGraphic = new ImpGraphic( *mpImpGraphic );
     289             :     }
     290        3269 : }
     291             : 
     292             : // ------------------------------------------------------------------------
     293             : 
     294        1305 : Graphic& Graphic::operator=( const Graphic& rGraphic )
     295             : {
     296        1305 :     if( &rGraphic != this )
     297             :     {
     298        1305 :         if( rGraphic.IsAnimated() )
     299             :         {
     300           7 :             if( mpImpGraphic->mnRefCount == 1UL )
     301           7 :                 delete mpImpGraphic;
     302             :             else
     303           0 :                 mpImpGraphic->mnRefCount--;
     304             : 
     305           7 :             mpImpGraphic = new ImpGraphic( *rGraphic.mpImpGraphic );
     306             :         }
     307             :         else
     308             :         {
     309        1298 :             rGraphic.mpImpGraphic->mnRefCount++;
     310             : 
     311        1298 :             if( mpImpGraphic->mnRefCount == 1UL )
     312         925 :                 delete mpImpGraphic;
     313             :             else
     314         373 :                 mpImpGraphic->mnRefCount--;
     315             : 
     316        1298 :             mpImpGraphic = rGraphic.mpImpGraphic;
     317             :         }
     318             :     }
     319             : 
     320        1305 :     return *this;
     321             : }
     322             : 
     323             : // ------------------------------------------------------------------------
     324             : 
     325          12 : sal_Bool Graphic::operator==( const Graphic& rGraphic ) const
     326             : {
     327          12 :     return( *mpImpGraphic == *rGraphic.mpImpGraphic );
     328             : }
     329             : 
     330             : // ------------------------------------------------------------------------
     331             : 
     332           0 : sal_Bool Graphic::operator!=( const Graphic& rGraphic ) const
     333             : {
     334           0 :     return( *mpImpGraphic != *rGraphic.mpImpGraphic );
     335             : }
     336             : 
     337             : // ------------------------------------------------------------------------
     338             : 
     339           0 : sal_Bool Graphic::operator!() const
     340             : {
     341           0 :     return( GRAPHIC_NONE == mpImpGraphic->ImplGetType() );
     342             : }
     343             : 
     344             : // ------------------------------------------------------------------------
     345             : 
     346           0 : void Graphic::Load( SvStream& rIStm )
     347             : {
     348           0 :     rIStm >> *this;
     349           0 : }
     350             : 
     351             : // ------------------------------------------------------------------------
     352             : 
     353           0 : void Graphic::Save( SvStream& rOStm )
     354             : {
     355           0 :     rOStm << *this;
     356           0 : }
     357             : 
     358             : // ------------------------------------------------------------------------
     359             : 
     360           0 : void Graphic::Assign( const SvDataCopyStream& rCopyStream )
     361             : {
     362           0 :     *this = (const Graphic& ) rCopyStream;
     363           0 : }
     364             : 
     365             : // ------------------------------------------------------------------------
     366             : 
     367          53 : void Graphic::Clear()
     368             : {
     369          53 :     ImplTestRefCount();
     370          53 :     mpImpGraphic->ImplClear();
     371          53 : }
     372             : 
     373             : // ------------------------------------------------------------------------
     374             : 
     375       11019 : GraphicType Graphic::GetType() const
     376             : {
     377       11019 :     return mpImpGraphic->ImplGetType();
     378             : }
     379             : 
     380             : // ------------------------------------------------------------------------
     381             : 
     382          50 : void Graphic::SetDefaultType()
     383             : {
     384          50 :     ImplTestRefCount();
     385          50 :     mpImpGraphic->ImplSetDefaultType();
     386          50 : }
     387             : 
     388             : // ------------------------------------------------------------------------
     389             : 
     390          46 : sal_Bool Graphic::IsSupportedGraphic() const
     391             : {
     392          46 :     return mpImpGraphic->ImplIsSupportedGraphic();
     393             : }
     394             : 
     395             : // ------------------------------------------------------------------------
     396             : 
     397        2076 : sal_Bool Graphic::IsTransparent() const
     398             : {
     399        2076 :     return mpImpGraphic->ImplIsTransparent();
     400             : }
     401             : 
     402             : // ------------------------------------------------------------------------
     403             : 
     404        2076 : sal_Bool Graphic::IsAlpha() const
     405             : {
     406        2076 :     return mpImpGraphic->ImplIsAlpha();
     407             : }
     408             : 
     409             : // ------------------------------------------------------------------------
     410             : 
     411        4549 : sal_Bool Graphic::IsAnimated() const
     412             : {
     413        4549 :     return mpImpGraphic->ImplIsAnimated();
     414             : }
     415             : 
     416             : // ------------------------------------------------------------------------
     417             : 
     418        2076 : sal_Bool Graphic::IsEPS() const
     419             : {
     420        2076 :     return mpImpGraphic->ImplIsEPS();
     421             : }
     422             : 
     423             : // ------------------------------------------------------------------------
     424             : 
     425          72 : Bitmap Graphic::GetBitmap(const GraphicConversionParameters& rParameters) const
     426             : {
     427          72 :     return mpImpGraphic->ImplGetBitmap(rParameters);
     428             : }
     429             : 
     430             : // ------------------------------------------------------------------------
     431             : 
     432        2542 : BitmapEx Graphic::GetBitmapEx(const GraphicConversionParameters& rParameters) const
     433             : {
     434        2542 :     return mpImpGraphic->ImplGetBitmapEx(rParameters);
     435             : }
     436             : 
     437             : // ------------------------------------------------------------------------
     438             : 
     439           0 : Animation Graphic::GetAnimation() const
     440             : {
     441           0 :     return mpImpGraphic->ImplGetAnimation();
     442             : }
     443             : 
     444             : // ------------------------------------------------------------------------
     445             : 
     446          73 : const GDIMetaFile& Graphic::GetGDIMetaFile() const
     447             : {
     448          73 :     return mpImpGraphic->ImplGetGDIMetaFile();
     449             : }
     450             : 
     451             : // ------------------------------------------------------------------------
     452             : 
     453        2448 : uno::Reference< graphic::XGraphic > Graphic::GetXGraphic() const
     454             : {
     455        2448 :     uno::Reference< graphic::XGraphic > xRet;
     456             : 
     457        2448 :     if( GetType() != GRAPHIC_NONE )
     458             :     {
     459          88 :         uno::Reference < uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
     460          88 :         uno::Reference< graphic::XGraphicProvider > xProv( graphic::GraphicProvider::create( xContext ) );
     461             : 
     462          88 :         uno::Sequence< beans::PropertyValue >   aLoadProps( 1 );
     463          88 :         ::rtl::OUString                         aURL( RTL_CONSTASCII_USTRINGPARAM( "private:memorygraphic/" ) );
     464             : 
     465          88 :         aLoadProps[ 0 ].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) );
     466          88 :         aLoadProps[ 0 ].Value <<= ( aURL += ::rtl::OUString::valueOf( reinterpret_cast< sal_Int64 >( this ) ) );
     467             : 
     468          88 :         xRet = xProv->queryGraphic( aLoadProps );
     469             :     }
     470             : 
     471        2448 :     return xRet;
     472             : }
     473             : 
     474             : // ------------------------------------------------------------------------
     475             : 
     476        2628 : Size Graphic::GetPrefSize() const
     477             : {
     478        2628 :     return mpImpGraphic->ImplGetPrefSize();
     479             : }
     480             : 
     481             : // ------------------------------------------------------------------------
     482             : 
     483         326 : void Graphic::SetPrefSize( const Size& rPrefSize )
     484             : {
     485         326 :     ImplTestRefCount();
     486         326 :     mpImpGraphic->ImplSetPrefSize( rPrefSize );
     487         326 : }
     488             : 
     489             : // ------------------------------------------------------------------------
     490             : 
     491        2619 : MapMode Graphic::GetPrefMapMode() const
     492             : {
     493        2619 :     return mpImpGraphic->ImplGetPrefMapMode();
     494             : }
     495             : 
     496             : // ------------------------------------------------------------------------
     497             : 
     498         326 : void Graphic::SetPrefMapMode( const MapMode& rPrefMapMode )
     499             : {
     500         326 :     ImplTestRefCount();
     501         326 :     mpImpGraphic->ImplSetPrefMapMode( rPrefMapMode );
     502         326 : }
     503             : 
     504             : // ------------------------------------------------------------------
     505             : 
     506          74 : Size Graphic::GetSizePixel( const OutputDevice* pRefDevice ) const
     507             : {
     508          74 :     Size aRet;
     509             : 
     510          74 :     if( GRAPHIC_BITMAP == mpImpGraphic->ImplGetType() )
     511          74 :         aRet = mpImpGraphic->ImplGetBitmapEx(GraphicConversionParameters()).GetSizePixel();
     512             :     else
     513           0 :         aRet = ( pRefDevice ? pRefDevice : Application::GetDefaultDevice() )->LogicToPixel( GetPrefSize(), GetPrefMapMode() );
     514             : 
     515          74 :     return aRet;
     516             : }
     517             : 
     518             : // ------------------------------------------------------------------
     519             : 
     520        2079 : sal_uLong Graphic::GetSizeBytes() const
     521             : {
     522        2079 :     return mpImpGraphic->ImplGetSizeBytes();
     523             : }
     524             : 
     525             : // ------------------------------------------------------------------------
     526             : 
     527           0 : void Graphic::Draw( OutputDevice* pOutDev, const Point& rDestPt ) const
     528             : {
     529           0 :     mpImpGraphic->ImplDraw( pOutDev, rDestPt );
     530           0 : }
     531             : 
     532             : // ------------------------------------------------------------------------
     533             : 
     534         175 : void Graphic::Draw( OutputDevice* pOutDev,
     535             :                     const Point& rDestPt, const Size& rDestSz ) const
     536             : {
     537         175 :     if( GRAPHIC_DEFAULT == mpImpGraphic->ImplGetType() )
     538           0 :         ImplDrawDefault( pOutDev, NULL, NULL, NULL, NULL, rDestPt, rDestSz );
     539             :     else
     540         175 :         mpImpGraphic->ImplDraw( pOutDev, rDestPt, rDestSz );
     541         175 : }
     542             : 
     543             : // ------------------------------------------------------------------------
     544             : 
     545           0 : void Graphic::DrawEx( OutputDevice* pOutDev, const String& rText,
     546             :                     Font& rFont, const BitmapEx& rBitmap,
     547             :                     const Point& rDestPt, const Size& rDestSz )
     548             : {
     549           0 :     ImplDrawDefault( pOutDev, &rText, &rFont, NULL, &rBitmap, rDestPt, rDestSz );
     550           0 : }
     551             : 
     552             : // ------------------------------------------------------------------------
     553             : 
     554           0 : void Graphic::StartAnimation( OutputDevice* pOutDev, const Point& rDestPt,
     555             :                               const Size& rDestSz, long nExtraData,
     556             :                               OutputDevice* pFirstFrameOutDev )
     557             : {
     558           0 :     ImplTestRefCount();
     559           0 :     mpImpGraphic->ImplStartAnimation( pOutDev, rDestPt, rDestSz, nExtraData, pFirstFrameOutDev );
     560           0 : }
     561             : 
     562             : // ------------------------------------------------------------------------
     563             : 
     564           0 : void Graphic::StopAnimation( OutputDevice* pOutDev, long nExtraData )
     565             : {
     566           0 :     ImplTestRefCount();
     567           0 :     mpImpGraphic->ImplStopAnimation( pOutDev, nExtraData );
     568           0 : }
     569             : 
     570             : // ------------------------------------------------------------------------
     571             : 
     572         313 : void Graphic::SetAnimationNotifyHdl( const Link& rLink )
     573             : {
     574         313 :     mpImpGraphic->ImplSetAnimationNotifyHdl( rLink );
     575         313 : }
     576             : 
     577             : // ------------------------------------------------------------------------
     578             : 
     579         370 : Link Graphic::GetAnimationNotifyHdl() const
     580             : {
     581         370 :     return mpImpGraphic->ImplGetAnimationNotifyHdl();
     582             : }
     583             : 
     584             : // ------------------------------------------------------------------------
     585             : 
     586           0 : sal_uLong Graphic::GetAnimationLoopCount() const
     587             : {
     588           0 :     return mpImpGraphic->ImplGetAnimationLoopCount();
     589             : }
     590             : 
     591             : // ------------------------------------------------------------------------
     592             : 
     593        2557 : GraphicReader* Graphic::GetContext()
     594             : {
     595        2557 :     return mpImpGraphic->ImplGetContext();
     596             : }
     597             : 
     598             : // ------------------------------------------------------------------------
     599             : 
     600          26 : void Graphic::SetContext( GraphicReader* pReader )
     601             : {
     602          26 :     mpImpGraphic->ImplSetContext( pReader );
     603          26 : }
     604             : 
     605             : // ------------------------------------------------------------------------
     606             : 
     607         313 : void Graphic::SetDocFileName( const String& rName, sal_uLong nFilePos )
     608             : {
     609         313 :     mpImpGraphic->ImplSetDocFileName( rName, nFilePos );
     610         313 : }
     611             : 
     612             : // ------------------------------------------------------------------------
     613             : 
     614         370 : const String& Graphic::GetDocFileName() const
     615             : {
     616         370 :     return mpImpGraphic->ImplGetDocFileName();
     617             : }
     618             : 
     619             : // ------------------------------------------------------------------------
     620             : 
     621         370 : sal_uLong Graphic::GetDocFilePos() const
     622             : {
     623         370 :     return mpImpGraphic->ImplGetDocFilePos();
     624             : }
     625             : 
     626             : // ------------------------------------------------------------------------
     627             : 
     628          10 : sal_Bool Graphic::SwapOut()
     629             : {
     630          10 :     ImplTestRefCount();
     631          10 :     return mpImpGraphic->ImplSwapOut();
     632             : }
     633             : 
     634             : // ------------------------------------------------------------------------
     635             : 
     636           0 : sal_Bool Graphic::SwapOut( SvStream* pOStream )
     637             : {
     638           0 :     ImplTestRefCount();
     639           0 :     return mpImpGraphic->ImplSwapOut( pOStream );
     640             : }
     641             : 
     642             : // ------------------------------------------------------------------------
     643             : 
     644           0 : sal_Bool Graphic::SwapIn()
     645             : {
     646           0 :     ImplTestRefCount();
     647           0 :     return mpImpGraphic->ImplSwapIn();
     648             : }
     649             : 
     650             : // ------------------------------------------------------------------------
     651             : 
     652           0 : sal_Bool Graphic::SwapIn( SvStream* pStrm )
     653             : {
     654           0 :     ImplTestRefCount();
     655           0 :     return mpImpGraphic->ImplSwapIn( pStrm );
     656             : }
     657             : 
     658             : // ------------------------------------------------------------------------
     659             : 
     660        3943 : sal_Bool Graphic::IsSwapOut() const
     661             : {
     662        3943 :     return mpImpGraphic->ImplIsSwapOut();
     663             : }
     664             : 
     665             : // ------------------------------------------------------------------------
     666             : 
     667         210 : void Graphic::SetLink( const GfxLink& rGfxLink )
     668             : {
     669         210 :     ImplTestRefCount();
     670         210 :     mpImpGraphic->ImplSetLink( rGfxLink );
     671         210 : }
     672             : 
     673             : // ------------------------------------------------------------------------
     674             : 
     675          37 : GfxLink Graphic::GetLink() const
     676             : {
     677          37 :     return mpImpGraphic->ImplGetLink();
     678             : }
     679             : 
     680             : // ------------------------------------------------------------------------
     681             : 
     682        4408 : sal_Bool Graphic::IsLink() const
     683             : {
     684        4408 :     return mpImpGraphic->ImplIsLink();
     685             : }
     686             : 
     687             : // ------------------------------------------------------------------------
     688             : 
     689         127 : sal_uLong Graphic::GetChecksum() const
     690             : {
     691         127 :     return mpImpGraphic->ImplGetChecksum();
     692             : }
     693             : 
     694             : // ------------------------------------------------------------------------
     695             : 
     696         147 : sal_Bool Graphic::ExportNative( SvStream& rOStream ) const
     697             : {
     698         147 :     return mpImpGraphic->ImplExportNative( rOStream );
     699             : }
     700             : 
     701             : // ------------------------------------------------------------------------
     702             : 
     703        2294 : SvStream& operator>>( SvStream& rIStream, Graphic& rGraphic )
     704             : {
     705        2294 :     rGraphic.ImplTestRefCount();
     706        2294 :     return rIStream >> *rGraphic.mpImpGraphic;
     707             : }
     708             : 
     709             : // ------------------------------------------------------------------------
     710             : 
     711          19 : SvStream& operator<<( SvStream& rOStream, const Graphic& rGraphic )
     712             : {
     713          19 :     return rOStream << *rGraphic.mpImpGraphic;
     714             : }
     715             : 
     716             : // ------------------------------------------------------------------------
     717             : 
     718         144 : const SvgDataPtr& Graphic::getSvgData() const
     719             : {
     720         144 :     return mpImpGraphic->getSvgData();
     721             : }
     722             : 
     723             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10