LibreOffice Module svx (master)  1
galobj.cxx
Go to the documentation of this file.
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 <com/sun/star/lang/XUnoTunnel.hpp>
22 #include <sfx2/objsh.hxx>
23 #include <sfx2/docfac.hxx>
24 #include <comphelper/fileformat.h>
25 #include <comphelper/classids.hxx>
26 #include <unotools/pathoptions.hxx>
27 #include <unotools/resmgr.hxx>
28 #include <tools/vcompat.hxx>
29 #include <tools/helpers.hxx>
30 #include <vcl/virdev.hxx>
31 #include <svl/itempool.hxx>
32 #include <svx/fmmodel.hxx>
33 #include <svx/fmview.hxx>
34 #include <svx/fmpage.hxx>
35 #include <svx/galmisc.hxx>
36 #include <galobj.hxx>
37 #include <vcl/svapp.hxx>
38 #include <vcl/settings.hxx>
39 #include <vcl/dibtools.hxx>
40 #include "gallerydrawmodel.hxx"
41 #include <memory>
42 #include <bitmaps.hlst>
43 
44 using namespace ::com::sun::star;
45 
47 : bIsValid ( false ),
48  bIsThumbBmp ( true )
49 {
50 }
51 
53 {
54  BitmapEx aRetval;
55 
56  if(rSizePixel.Width() && rSizePixel.Height())
57  {
59  {
60  aRetval = BitmapEx(RID_SVXBMP_GALLERY_MEDIA);
61  }
62  else if(IsThumbBitmap())
63  {
64  aRetval = GetThumbBmp();
65  }
66  else
67  {
68  const Graphic aGraphic(GetThumbMtf());
69 
70  aRetval = aGraphic.GetBitmapEx();
71  }
72 
73  if(!aRetval.IsEmpty())
74  {
75  const Size aCurrentSizePixel(aRetval.GetSizePixel());
76  const double fScaleX(static_cast<double>(rSizePixel.Width()) / static_cast<double>(aCurrentSizePixel.Width()));
77  const double fScaleY(static_cast<double>(rSizePixel.Height()) / static_cast<double>(aCurrentSizePixel.Height()));
78  const double fScale(std::min(fScaleX, fScaleY));
79 
80  // only scale when need to decrease, no need to make bigger as original. Also
81  // prevent scaling close to 1.0 which is not needed for pixel graphics
82  if(fScale < 1.0 && fabs(1.0 - fScale) > 0.005)
83  {
84  aRetval.Scale(fScale, fScale, BmpScaleFlag::BestQuality);
85  }
86  }
87  }
88 
89  return aRetval;
90 }
91 
92 bool SgaObject::CreateThumb( const Graphic& rGraphic )
93 {
94  bool bRet = false;
95 
96  if( rGraphic.GetType() == GraphicType::Bitmap )
97  {
98  BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
99  Size aBmpSize( aBmpEx.GetSizePixel() );
100 
101  if( aBmpSize.Width() && aBmpSize.Height() )
102  {
103  if( aBmpEx.GetPrefMapMode().GetMapUnit() != MapUnit::MapPixel &&
104  aBmpEx.GetPrefSize().Width() > 0 &&
105  aBmpEx.GetPrefSize().Height() > 0 )
106  {
107  Size aLogSize( OutputDevice::LogicToLogic(aBmpEx.GetPrefSize(), aBmpEx.GetPrefMapMode(), MapMode(MapUnit::Map100thMM)) );
108 
109  if( aLogSize.Width() > 0 && aLogSize.Height() > 0 )
110  {
111  double fFactorLog = static_cast< double >( aLogSize.Width() ) / aLogSize.Height();
112  double fFactorPix = static_cast< double >( aBmpSize.Width() ) / aBmpSize.Height();
113 
114  if( fFactorPix > fFactorLog )
115  aBmpSize.setWidth( FRound( aBmpSize.Height() * fFactorLog ) );
116  else
117  aBmpSize.setHeight( FRound( aBmpSize.Width() / fFactorLog ) );
118 
119  aBmpEx.Scale(aBmpSize, BmpScaleFlag::BestQuality);
120  }
121  }
122 
123  // take over BitmapEx
124  aThumbBmp = aBmpEx;
125 
126  if( ( aBmpSize.Width() <= S_THUMB ) && ( aBmpSize.Height() <= S_THUMB ) )
127  {
128  aThumbBmp.Convert( BmpConversion::N8BitColors );
129  bRet = true;
130  }
131  else
132  {
133  const float fFactor = static_cast<float>(aBmpSize.Width()) / aBmpSize.Height();
134  const Size aNewSize( std::max( static_cast<long>(fFactor < 1. ? S_THUMB * fFactor : S_THUMB), 8L ),
135  std::max( static_cast<long>(fFactor < 1. ? S_THUMB : S_THUMB / fFactor), 8L ) );
136  if(aThumbBmp.Scale(
137  static_cast<double>(aNewSize.Width()) / aBmpSize.Width(),
138  static_cast<double>(aNewSize.Height()) / aBmpSize.Height(),
139  BmpScaleFlag::BestQuality ) )
140  {
141  aThumbBmp.Convert( BmpConversion::N8BitColors );
142  bRet = true;
143  }
144  }
145  }
146  }
147  else if( rGraphic.GetType() == GraphicType::GdiMetafile )
148  {
149  const Size aPrefSize( rGraphic.GetPrefSize() );
150  const double fFactor = static_cast<double>(aPrefSize.Width()) / static_cast<double>(aPrefSize.Height());
151  Size aSize( S_THUMB, S_THUMB );
152  if ( fFactor < 1.0 )
153  aSize.setWidth( static_cast<sal_Int32>( S_THUMB * fFactor ) );
154  else
155  aSize.setHeight( static_cast<sal_Int32>( S_THUMB / fFactor ) );
156 
157  const GraphicConversionParameters aParameters(aSize, false, true, true /*TODO: extra ", true" post-#i121194#*/);
158  aThumbBmp = rGraphic.GetBitmapEx(aParameters);
159 
160  if( !aThumbBmp.IsEmpty() )
161  {
162  aThumbBmp.Convert( BmpConversion::N8BitColors );
163  bRet = true;
164  }
165  }
166 
167  return bRet;
168 }
169 
170 void SgaObject::WriteData( SvStream& rOut, const OUString& rDestDir ) const
171 {
172  static const sal_uInt32 nInventor = COMPAT_FORMAT( 'S', 'G', 'A', '3' );
173 
174  rOut.WriteUInt32( nInventor ).WriteUInt16( 0x0004 ).WriteUInt16( GetVersion() ).WriteUInt16( static_cast<sal_uInt16>(GetObjKind()) );
175  rOut.WriteBool( bIsThumbBmp );
176 
177  if( bIsThumbBmp )
178  {
179  const SvStreamCompressFlags nOldCompressMode = rOut.GetCompressMode();
180  const sal_uIntPtr nOldVersion = rOut.GetVersion();
181 
182  rOut.SetCompressMode( SvStreamCompressFlags::ZBITMAP );
184 
186 
187  rOut.SetVersion( nOldVersion );
188  rOut.SetCompressMode( nOldCompressMode );
189  }
190  else
191  WriteGDIMetaFile( rOut, aThumbMtf );
192 
193  OUString aURLWithoutDestDir = aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE );
194  aURLWithoutDestDir = aURLWithoutDestDir.replaceFirst(rDestDir, "");
195  write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, aURLWithoutDestDir, RTL_TEXTENCODING_UTF8);
196 }
197 
198 void SgaObject::ReadData(SvStream& rIn, sal_uInt16& rReadVersion )
199 {
200  sal_uInt32 nTmp32;
201  sal_uInt16 nTmp16;
202 
203  rIn.ReadUInt32( nTmp32 ).ReadUInt16( nTmp16 ).ReadUInt16( rReadVersion ).ReadUInt16( nTmp16 ).ReadCharAsBool( bIsThumbBmp );
204 
205  if( bIsThumbBmp )
206  {
208  }
209  else
210  {
211  ReadGDIMetaFile( rIn, aThumbMtf );
212  }
213 
214  OUString aTmpStr = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn, RTL_TEXTENCODING_UTF8);
215  aURL = INetURLObject(aTmpStr);
216 }
217 
218 OUString const & SgaObject::GetTitle() const
219 {
220  return aTitle;
221 }
222 
223 void SgaObject::SetTitle( const OUString& rTitle )
224 {
225  aTitle = rTitle;
226 }
227 
229 {
230  rObj.WriteData( rOut, "" );
231  return rOut;
232 }
233 
235 {
236  sal_uInt16 nReadVersion;
237 
238  rObj.ReadData( rIn, nReadVersion );
239  rObj.bIsValid = ( rIn.GetError() == ERRCODE_NONE );
240 
241  return rIn;
242 }
243 
245 {
246 }
247 
249 {
250  Graphic aGraphic;
251  OUString aFilter;
252 
253  if ( GalleryGraphicImportRet::IMPORT_NONE != GalleryGraphicImport( rURL, aGraphic, aFilter ) )
254  Init( aGraphic, rURL );
255 }
256 
257 SgaObjectBmp::SgaObjectBmp( const Graphic& rGraphic, const INetURLObject& rURL )
258 {
259  if( FileExists( rURL ) )
260  Init( rGraphic, rURL );
261 }
262 
263 void SgaObjectBmp::Init( const Graphic& rGraphic, const INetURLObject& rURL )
264 {
265  aURL = rURL;
266  bIsValid = CreateThumb( rGraphic );
267 }
268 
269 void SgaObjectBmp::WriteData( SvStream& rOut, const OUString& rDestDir ) const
270 {
271  // Set version
272  SgaObject::WriteData( rOut, rDestDir );
273  char const aDummy[ 10 ] = { 0 };
274  rOut.WriteBytes(aDummy, 10);
275  write_uInt16_lenPrefixed_uInt8s_FromOString(rOut, OString()); //dummy
276  write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, aTitle, RTL_TEXTENCODING_UTF8);
277 }
278 
279 void SgaObjectBmp::ReadData( SvStream& rIn, sal_uInt16& rReadVersion )
280 {
281 
282  SgaObject::ReadData( rIn, rReadVersion );
283  rIn.SeekRel( 10 ); // 16, 16, 32, 16
285 
286  if( rReadVersion >= 5 )
287  aTitle = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn, RTL_TEXTENCODING_UTF8);
288 }
289 
290 
292  eSoundType( SOUND_STANDARD )
293 {
294 }
295 
297  eSoundType( SOUND_STANDARD )
298 {
299 
300  if( FileExists( rURL ) )
301  {
302  aURL = rURL;
303  aThumbBmp = Bitmap( Size( 1, 1 ), 1 );
304  bIsValid = true;
305  }
306  else
307  bIsValid = false;
308 }
309 
311 {
312 }
313 
315 {
316  OUString sId;
317 
318  switch( eSoundType )
319  {
320  case SOUND_COMPUTER: sId = RID_SVXBMP_GALLERY_SOUND_1; break;
321  case SOUND_MISC: sId = RID_SVXBMP_GALLERY_SOUND_2; break;
322  case SOUND_MUSIC: sId = RID_SVXBMP_GALLERY_SOUND_3; break;
323  case SOUND_NATURE: sId = RID_SVXBMP_GALLERY_SOUND_4; break;
324  case SOUND_SPEECH: sId = RID_SVXBMP_GALLERY_SOUND_5; break;
325  case SOUND_TECHNIC: sId = RID_SVXBMP_GALLERY_SOUND_6; break;
326  case SOUND_ANIMAL: sId = RID_SVXBMP_GALLERY_SOUND_7; break;
327 
328  // standard
329  default:
330  sId = RID_SVXBMP_GALLERY_MEDIA;
331  break;
332  }
333 
334  const BitmapEx aBmpEx(sId);
335 
336  return aBmpEx;
337 }
338 
339 void SgaObjectSound::WriteData( SvStream& rOut, const OUString& rDestDir ) const
340 {
341  SgaObject::WriteData( rOut, rDestDir );
342  rOut.WriteUInt16( eSoundType );
343  write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, aTitle, RTL_TEXTENCODING_UTF8);
344 }
345 
346 void SgaObjectSound::ReadData( SvStream& rIn, sal_uInt16& rReadVersion )
347 {
348  SgaObject::ReadData( rIn, rReadVersion );
349 
350  if( rReadVersion >= 5 )
351  {
352  sal_uInt16 nTmp16;
353 
354  rIn.ReadUInt16( nTmp16 ); eSoundType = static_cast<GalSoundType>(nTmp16);
355 
356  if( rReadVersion >= 6 )
357  aTitle = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn, RTL_TEXTENCODING_UTF8);
358  }
359 }
360 
362 {
363 }
364 
366  const INetURLObject& rURL )
367 {
368  aURL = rURL;
369  bIsValid = CreateThumb( rGraphic );
370 }
371 
373 {
374 }
375 
376 SgaObjectINet::SgaObjectINet( const Graphic& rGraphic, const INetURLObject& rURL ) :
377  SgaObjectAnim ( rGraphic, rURL )
378 {
379 }
380 
382 {
383 }
384 
386 {
387  aURL = rURL;
388  bIsValid = CreateThumb( rModel );
389 }
390 
391 
393 : mpFormModel( nullptr )
394 {
395 
396  const OUString sFactoryURL("sdraw");
397 
399 
400  if( mxDoc.Is() )
401  {
402  mxDoc->DoInitNew();
403 
404  uno::Reference< lang::XUnoTunnel > xTunnel( mxDoc->GetModel(), uno::UNO_QUERY );
405  if( xTunnel.is() )
406  {
407  mpFormModel = dynamic_cast< FmFormModel* >(
408  reinterpret_cast<SdrModel*>(xTunnel->getSomething(SdrModel::getUnoTunnelId())));
409  if( mpFormModel )
410  {
412  }
413  }
414  }
415 }
416 
418 {
419  if( mxDoc.Is() )
420  mxDoc->DoClose();
421 
422 }
423 
425 {
426  SvxGalleryDrawModel aModel;
427 
428  if( aModel.GetModel() )
429  {
430  if( GallerySvDrawImport( rIStm, *aModel.GetModel() ) )
431  {
432  aURL = rURL;
433  bIsValid = CreateThumb( *aModel.GetModel() );
434  }
435  }
436 }
437 
439 {
440  Graphic aGraphic;
441  ImageMap aImageMap;
442  bool bRet = false;
443 
444  if ( CreateIMapGraphic( rModel, aGraphic, aImageMap ) )
445  {
446  bRet = SgaObject::CreateThumb( aGraphic );
447  }
448  else
449  {
450  const FmFormPage* pPage = static_cast< const FmFormPage* >(rModel.GetPage(0));
451 
452  if(pPage)
453  {
454  const tools::Rectangle aObjRect(pPage->GetAllObjBoundRect());
455 
456  if(aObjRect.GetWidth() && aObjRect.GetHeight())
457  {
459  FmFormView aView(const_cast< FmFormModel& >(rModel), pVDev);
460 
461  aView.ShowSdrPage(const_cast< FmFormPage* >(pPage));
462  aView.MarkAllObj();
464 
465  const Size aDiscreteSize(aThumbBmp.GetSizePixel());
466 
467  if(aDiscreteSize.Width() && aDiscreteSize.Height())
468  {
469  sal_uInt32 nTargetSizeX(S_THUMB);
470  sal_uInt32 nTargetSizeY(S_THUMB);
471 
472  if(aDiscreteSize.Width() > aDiscreteSize.Height())
473  {
474  nTargetSizeY = (aDiscreteSize.Height() * nTargetSizeX) / aDiscreteSize.Width();
475  }
476  else
477  {
478  nTargetSizeX = (aDiscreteSize.Width() * nTargetSizeY) / aDiscreteSize.Height();
479  }
480 
481  if(!!aThumbBmp)
482  {
483  aThumbBmp.Scale(Size(nTargetSizeX, nTargetSizeY), BmpScaleFlag::BestQuality);
484  aThumbBmp.Convert(BmpConversion::N8BitColors);
485  bRet = true;
486  }
487  }
488  }
489  }
490  }
491 
492  return bRet;
493 }
494 
495 void SgaObjectSvDraw::WriteData( SvStream& rOut, const OUString& rDestDir ) const
496 {
497  SgaObject::WriteData( rOut, rDestDir );
498  write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, aTitle, RTL_TEXTENCODING_UTF8);
499 }
500 
501 void SgaObjectSvDraw::ReadData( SvStream& rIn, sal_uInt16& rReadVersion )
502 {
503  SgaObject::ReadData( rIn, rReadVersion );
504 
505  if( rReadVersion >= 5 )
506  aTitle = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn, RTL_TEXTENCODING_UTF8);
507 }
508 
509 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SvStream & WriteBool(bool b)
GDIMetaFile aThumbMtf
Definition: galobj.hxx:54
long Width() const
BitmapEx aThumbBmp
Definition: galobj.hxx:53
const GDIMetaFile & GetThumbMtf() const
Definition: galobj.hxx:73
bool CreateThumb(const Graphic &rGraphic)
Definition: galobj.cxx:92
virtual void ReadData(SvStream &rIn, sal_uInt16 &rReadVersion) override
Definition: galobj.cxx:346
virtual ~SgaObjectSound() override
Definition: galobj.cxx:310
virtual BitmapEx GetThumbBmp() const override
Definition: galobj.cxx:314
SvStream & WriteUInt16(sal_uInt16 nUInt16)
long FRound(double fVal)
virtual BitmapEx GetThumbBmp() const
Definition: galobj.hxx:72
bool CreateIMapGraphic(const FmFormModel &rModel, Graphic &rGraphic, ImageMap &rImageMap)
Definition: galmisc.cxx:138
SvStream & ReadUInt16(sal_uInt16 &rUInt16)
Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
SvStream & ReadSgaObject(SvStream &rIn, SgaObject &rObj)
Definition: galobj.cxx:234
const tools::Rectangle & GetAllObjBoundRect() const
Definition: svdpage.cxx:703
virtual void WriteData(SvStream &rOut, const OUString &rDestDir) const override
Definition: galobj.cxx:339
bool CreateThumb(const FmFormModel &rModel)
Definition: galobj.cxx:438
sal_Int32 GetVersion() const
long Height() const
bool Is() const
virtual void WriteData(SvStream &rOut, const OUString &rDestDir) const override
Definition: galobj.cxx:495
bool Scale(const Size &rNewSize, BmpScaleFlag nScaleFlag=BmpScaleFlag::Default)
virtual void WriteData(SvStream &rOut, const OUString &rDestDir) const
Definition: galobj.cxx:170
SvStream & ReadCharAsBool(bool &rBool)
virtual SdrPageView * ShowSdrPage(SdrPage *pPage) override
Definition: fmview.cxx:311
SvStream & WriteSgaObject(SvStream &rOut, const SgaObject &rObj)
Definition: galobj.cxx:228
INetURLObject aURL
Definition: galobj.hxx:55
FmFormModel * GetModel() const
css::uno::Reference< css::frame::XModel > GetModel() const
FmFormModel * mpFormModel
SvStreamCompressFlags GetCompressMode() const
bool Convert(BmpConversion eConversion)
sal_uInt64 SeekRel(sal_Int64 nPos)
OString read_uInt16_lenPrefixed_uInt8s_ToOString(SvStream &rStrm)
ErrCode GetError() const
BitmapEx GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked=false) const
Definition: svdxcgv.cxx:437
bool ReadDIBBitmapEx(BitmapEx &rTarget, SvStream &rIStm, bool bFileHeader, bool bMSOFormat)
SvStream & WriteGDIMetaFile(SvStream &rOStm, const GDIMetaFile &rGDIMetaFile)
bool IsThumbBitmap() const
Definition: galobj.hxx:76
bool bIsThumbBmp
Definition: galobj.hxx:58
SvStream & WriteUInt32(sal_uInt32 nUInt32)
#define S_THUMB
Definition: galobj.hxx:28
OUString const & GetTitle() const
Definition: galobj.cxx:218
virtual void ReadData(SvStream &rIn, sal_uInt16 &rReadVersion) override
Definition: galobj.cxx:501
SvStream & ReadUInt32(sal_uInt32 &rUInt32)
void MarkAllObj(SdrPageView *pPV=nullptr)
Definition: svdmrkv.cxx:2316
bool IsEmpty() const
virtual void InsertPage(SdrPage *pPage, sal_uInt16 nPos=0xFFFF) override
Definition: fmmodel.cxx:79
BitmapEx createPreviewBitmapEx(const Size &rSizePixel) const
Definition: galobj.cxx:52
#define SOFFICE_FILEFORMAT_50
bool WriteDIBBitmapEx(const BitmapEx &rSource, SvStream &rOStm)
OUString read_uInt16_lenPrefixed_uInt8s_ToOUString(SvStream &rStrm, rtl_TextEncoding eEnc)
GalleryGraphicImportRet GalleryGraphicImport(const INetURLObject &rURL, Graphic &rGraphic, OUString &rFilterName)
Definition: galmisc.cxx:69
GraphicType GetType() const
sal_uInt32 COMPAT_FORMAT(char char1, char char2, char char3, char char4)
static SfxObjectShell * CreateObjectByFactoryName(const OUString &rURL, SfxObjectCreateMode=SfxObjectCreateMode::STANDARD)
virtual void ReadData(SvStream &rIn, sal_uInt16 &rReadVersion) override
Definition: galobj.cxx:279
const SdrPage * GetPage(sal_uInt16 nPgNum) const
Definition: svdmodel.cxx:1917
std::size_t WriteBytes(const void *pData, std::size_t nSize)
SvStreamCompressFlags
BitmapEx GetBitmapEx(const GraphicConversionParameters &rParameters=GraphicConversionParameters()) const
virtual void ReadData(SvStream &rIn, sal_uInt16 &rReadVersion)
Definition: galobj.cxx:198
void SetVersion(sal_Int32 n)
std::size_t write_uInt16_lenPrefixed_uInt8s_FromOString(SvStream &rStrm, const OString &rStr)
GalSoundType eSoundType
Definition: galobj.hxx:91
void Init(const Graphic &rGraphic, const INetURLObject &rURL)
Definition: galobj.cxx:263
bool GallerySvDrawImport(SvStream &rIStm, SdrModel &rModel)
Definition: galmisc.cxx:94
virtual sal_uInt16 GetVersion() const =0
GalSoundType
Definition: galobj.hxx:31
Size GetPrefSize() const
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
virtual void WriteData(SvStream &rOut, const OUString &rDestDir) const override
Definition: galobj.cxx:269
virtual SgaObjKind GetObjKind() const =0
#define ERRCODE_NONE
void SetTitle(const OUString &rTitle)
Definition: galobj.cxx:223
SvStream & ReadGDIMetaFile(SvStream &rIStm, GDIMetaFile &rGDIMetaFile, ImplMetaReadData *pData)
bool DoInitNew(SfxMedium *pMedium=nullptr)
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
Definition: svdmodel.cxx:2010
SfxObjectShellLock mxDoc
OUString sId
OUString aTitle
Definition: galobj.hxx:56
void SetCompressMode(SvStreamCompressFlags nNewMode)
std::size_t write_uInt16_lenPrefixed_uInt8s_FromOUString(SvStream &rStrm, const OUString &rStr, rtl_TextEncoding eEnc)
const Size & GetSizePixel() const
SgaObject()
Definition: galobj.cxx:46
virtual SdrPage * AllocPage(bool bMasterPage) override
Definition: fmmodel.cxx:74
void setWidth(long nWidth)
static bool FileExists(const INetURLObject &rURL, const OUString &rExt)
Definition: gallery1.cxx:56
bool bIsValid
Definition: galobj.hxx:57
void setHeight(long nHeight)