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: */
|