lok: calc - send other views our selection in their co-ordinates.
[LibreOffice.git] / include / vcl / gfxlink.hxx
blobfc21aa296aae8cead744ba577a58440126f01751
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_VCL_GFXLINK_HXX
21 #define INCLUDED_VCL_GFXLINK_HXX
23 #include <rtl/ustring.hxx>
24 #include <tools/gen.hxx>
25 #include <vcl/dllapi.h>
26 #include <vcl/mapmod.hxx>
27 #include <memory>
29 class SvStream;
31 enum class GfxLinkType
33 NONE = 0,
34 EpsBuffer = 1,
35 NativeGif = 2, // Don't forget to update the following defines
36 NativeJpg = 3, // Don't forget to update the following defines
37 NativePng = 4, // Don't forget to update the following defines
38 NativeTif = 5, // Don't forget to update the following defines
39 NativeWmf = 6, // Don't forget to update the following defines
40 NativeMet = 7, // Don't forget to update the following defines
41 NativePct = 8, // Don't forget to update the following defines
42 NativeSvg = 9, // Don't forget to update the following defines
43 NativeMov = 10, // Don't forget to update the following defines
44 NativeBmp = 11,
45 NativePdf = 12 // Don't forget to update the following defines
48 #define GFX_LINK_FIRST_NATIVE_ID GfxLinkType::NativeGif
49 #define GFX_LINK_LAST_NATIVE_ID GfxLinkType::NativePdf
51 class Graphic;
53 class VCL_DLLPUBLIC GfxLink
55 private:
56 GfxLinkType meType;
57 sal_uInt32 mnUserId;
59 mutable std::shared_ptr<sal_uInt8> mpSwapInData;
61 sal_uInt32 mnSwapInDataSize;
62 MapMode maPrefMapMode;
63 Size maPrefSize;
64 bool mbPrefMapModeValid;
65 bool mbPrefSizeValid;
67 SAL_DLLPRIVATE std::shared_ptr<sal_uInt8> GetSwapInData() const;
68 public:
69 GfxLink();
71 // pBuff = The Graphic data. This class takes ownership of this
72 GfxLink( std::unique_ptr<sal_uInt8[]> pBuf, sal_uInt32 nBufSize, GfxLinkType nType );
74 bool operator==( const GfxLink& ) const;
76 GfxLinkType GetType() const { return meType;}
78 void SetUserId( sal_uInt32 nUserId ) { mnUserId = nUserId; }
79 sal_uInt32 GetUserId() const { return mnUserId; }
81 sal_uInt32 GetDataSize() const { return mnSwapInDataSize;}
82 const sal_uInt8* GetData() const;
84 const Size& GetPrefSize() const { return maPrefSize;}
85 void SetPrefSize( const Size& rPrefSize );
86 bool IsPrefSizeValid() const { return mbPrefSizeValid;}
88 const MapMode& GetPrefMapMode() const { return maPrefMapMode;}
89 void SetPrefMapMode( const MapMode& rPrefMapMode );
90 bool IsPrefMapModeValid() const { return mbPrefMapModeValid;}
92 bool IsNative() const;
94 bool LoadNative( Graphic& rGraphic );
96 bool ExportNative( SvStream& rOStream ) const;
98 bool IsEMF() const; // WMF & EMF stored under the same type (NativeWmf)
99 public:
101 friend SvStream& WriteGfxLink( SvStream& rOStream, const GfxLink& rGfxLink );
102 friend SvStream& ReadGfxLink( SvStream& rIStream, GfxLink& rGfxLink );
105 #endif
107 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */