diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-04-18 18:26:28 +0200 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-04-23 22:20:31 +0200 |
commit | b9337e22ce1dbf2eba0e8c8db294ae99f4111f91 (patch) | |
tree | 53ee1bd3dfd213815a21579151983cb997922b05 /include/vcl/virdev.hxx | |
parent | f4e1642a1761d5eab6ccdd89928869c2b2f1528a (diff) |
execute move of global headers
see https://gerrit.libreoffice.org/#/c/3367/
and Change-Id: I00c96fa77d04b33a6f8c8cd3490dfcd9bdc9e84a for details
Change-Id: I199a75bc4042af20817265d5ef85b1134a96ff5a
Diffstat (limited to 'include/vcl/virdev.hxx')
-rw-r--r-- | include/vcl/virdev.hxx | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/include/vcl/virdev.hxx b/include/vcl/virdev.hxx new file mode 100644 index 000000000000..5d8a70e8f3dc --- /dev/null +++ b/include/vcl/virdev.hxx @@ -0,0 +1,142 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef _SV_VIRDEV_HXX +#define _SV_VIRDEV_HXX + +#include <tools/solar.h> +#include <vcl/dllapi.h> +#include <vcl/outdev.hxx> +#include <basebmp/bitmapdevice.hxx> + +// ----------------- +// - VirtualDevice - +// ----------------- + +class SalVirtualDevice; +struct SystemGraphicsData; + +class VCL_DLLPUBLIC VirtualDevice : public OutputDevice +{ + friend class Application; + friend class OutputDevice; + +private: + SalVirtualDevice* mpVirDev; + VirtualDevice* mpPrev; + VirtualDevice* mpNext; + sal_uInt16 mnBitCount; + sal_Bool mbScreenComp; + sal_Int8 mnAlphaDepth; + sal_uInt8 meRefDevMode; + + SAL_DLLPRIVATE void ImplInitVirDev( const OutputDevice* pOutDev, long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ); + SAL_DLLPRIVATE sal_Bool InnerImplSetOutputSizePixel( const Size& rNewSize, sal_Bool bErase, const basebmp::RawMemorySharedArray &pBuffer ); + SAL_DLLPRIVATE sal_Bool ImplSetOutputSizePixel( const Size& rNewSize, sal_Bool bErase, const basebmp::RawMemorySharedArray &pBuffer ); + + // Copy assignment is forbidden and not implemented. + VirtualDevice (const VirtualDevice &); + VirtualDevice & operator= (const VirtualDevice &); + + /** Used for alpha VDev, to set areas to opaque + + @since #i32109# + */ + SAL_DLLPRIVATE void ImplFillOpaqueRectangle( const Rectangle& rRect ); + + // TODO: add extra member for refdev backward compatibility options + #define REFDEV_FORCE_ZERO_EXTLEAD 0x80 + SAL_DLLPRIVATE bool ForceZeroExtleadBug() const + { return ((meRefDevMode & REFDEV_FORCE_ZERO_EXTLEAD) != 0); } +public: + /** Create a virtual device of size 1x1 + + @param nBitCount + Bit depth of the generated virtual device. Use 0 here, to + indicate: take default screen depth. Only 0, 1 and 8 + are allowed here, with 1 denoting binary mask and 8 a graylevel mask. + */ + VirtualDevice( sal_uInt16 nBitCount = 0 ); + + /** Create a virtual device of size 1x1 + + @param rCompDev + The generated vdev will be compatible to this device. + + @param nBitCount + Bit depth of the generated virtual device. Use 0 here, to + indicate: take default screen depth. Only 0 and 1 + are allowed here, with 1 denoting binary mask. + */ + VirtualDevice( const OutputDevice& rCompDev, + sal_uInt16 nBitCount = 0 ); + + /** Create a virtual device of size 1x1 with alpha channel + + @param rCompDev + The generated vdev will be compatible to this device. + + @param nBitCount + Bit depth of the generated virtual device. Use 0 here, to + indicate: take default screen depth. Only 0 and 1 + are allowed here, with 1 denoting binary mask. + + @param nAlphaBitCount + Bit depth of the generated virtual device. Use 0 here, to + indicate: take default screen depth. Only 0 and 1 + are allowed here, with 1 denoting binary mask. + */ + VirtualDevice( const OutputDevice& rCompDev, + sal_uInt16 nBitCount, sal_uInt16 nAlphaBitCount ); + + /** Create a virtual device using an existing system dependent device or graphics context + Any rendering will happen directly on the context and not on any intermediate bitmap. + Note: This might not be suported on all platforms ! + */ + VirtualDevice( const SystemGraphicsData *pData, sal_uInt16 nBitCount ); + + virtual ~VirtualDevice(); + + sal_Bool SetOutputSizePixel( const Size& rNewSize, sal_Bool bErase = sal_True ); + sal_Bool SetOutputSizePixelScaleOffsetAndBuffer( const Size& rNewSize, const Fraction& rScale, const Point& rNewOffset, const basebmp::RawMemorySharedArray &pBuffer ); + sal_Bool SetOutputSize( const Size& rNewSize, sal_Bool bErase = sal_True ) + { return SetOutputSizePixel( LogicToPixel( rNewSize ), bErase ); } + + // reference device modes for different compatibility levels + enum RefDevMode { REFDEV_NONE = 0, + REFDEV_MODE06 = 1, // 600 dpi + REFDEV_MODE_MSO1 = 3, + REFDEV_MODE_PDF1 = 4, + REFDEV_CUSTOM = 5 + }; + + void SetReferenceDevice( RefDevMode ); + + void Compat_ZeroExtleadBug(); // enable workaround for #i60495# + + void SetReferenceDevice( sal_Int32 i_nDPIX, sal_Int32 i_nDPIY ); + +private: + SAL_DLLPRIVATE void ImplSetReferenceDevice( RefDevMode, sal_Int32 i_nDPIX, sal_Int32 i_nDPIY ); + +}; + +#endif // _SV_VIRDEV_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |