1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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_INC_CANVASBITMAP_HXX
21 #define INCLUDED_VCL_INC_CANVASBITMAP_HXX
23 #include <cppuhelper/compbase3.hxx>
24 #include <com/sun/star/rendering/XIntegerReadOnlyBitmap.hpp>
25 #include <com/sun/star/rendering/XIntegerBitmapColorSpace.hpp>
26 #include <com/sun/star/rendering/XIntegerBitmap.hpp>
27 #include <com/sun/star/rendering/XBitmapPalette.hpp>
29 #include <vcl/bitmapex.hxx>
30 #include <vcl/bmpacc.hxx>
36 class VCL_DLLPUBLIC VclCanvasBitmap
:
37 public cppu::WeakImplHelper3
< com::sun::star::rendering::XIntegerReadOnlyBitmap
,
38 com::sun::star::rendering::XBitmapPalette
,
39 com::sun::star::rendering::XIntegerBitmapColorSpace
>
45 BitmapReadAccess
* m_pBmpAcc
;
46 BitmapReadAccess
* m_pAlphaAcc
;
47 com::sun::star::uno::Sequence
<sal_Int8
> m_aComponentTags
;
48 com::sun::star::uno::Sequence
<sal_Int32
> m_aComponentBitCounts
;
49 com::sun::star::rendering::IntegerBitmapLayout m_aLayout
;
50 sal_Int32 m_nBitsPerInputPixel
;
51 sal_Int32 m_nBitsPerOutputPixel
;
52 sal_Int32 m_nRedIndex
;
53 sal_Int32 m_nGreenIndex
;
54 sal_Int32 m_nBlueIndex
;
55 sal_Int32 m_nAlphaIndex
;
56 sal_Int32 m_nIndexIndex
;
57 sal_Int8 m_nEndianness
;
60 SAL_DLLPRIVATE
void setComponentInfo( sal_uLong redShift
, sal_uLong greenShift
, sal_uLong blueShift
);
62 virtual ~VclCanvasBitmap();
66 virtual com::sun::star::geometry::IntegerSize2D SAL_CALL
getSize() throw (com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
67 virtual sal_Bool SAL_CALL
hasAlpha( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
68 virtual com::sun::star::uno::Reference
< com::sun::star::rendering::XBitmap
> SAL_CALL
getScaledBitmap( const com::sun::star::geometry::RealSize2D
& newSize
, sal_Bool beFast
) throw (com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
70 // XIntegerReadOnlyBitmap
71 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
getData( ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
, const ::com::sun::star::geometry::IntegerRectangle2D
& rect
) throw (::com::sun::star::lang::IndexOutOfBoundsException
, ::com::sun::star::rendering::VolatileContentDestroyedException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
72 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
getPixel( ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
, const ::com::sun::star::geometry::IntegerPoint2D
& pos
) throw (::com::sun::star::lang::IndexOutOfBoundsException
, ::com::sun::star::rendering::VolatileContentDestroyedException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
73 ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XBitmapPalette
> SAL_CALL
getPalette( ) throw (::com::sun::star::uno::RuntimeException
);
74 virtual ::com::sun::star::rendering::IntegerBitmapLayout SAL_CALL
getMemoryLayout( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
77 virtual sal_Int32 SAL_CALL
getNumberOfEntries() throw (com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
78 virtual sal_Bool SAL_CALL
getIndex( ::com::sun::star::uno::Sequence
< double >& entry
, ::sal_Int32 nIndex
) throw (::com::sun::star::lang::IndexOutOfBoundsException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
79 virtual sal_Bool SAL_CALL
setIndex( const ::com::sun::star::uno::Sequence
< double >& color
, sal_Bool transparency
, ::sal_Int32 nIndex
) throw (::com::sun::star::lang::IndexOutOfBoundsException
, ::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
80 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XColorSpace
> SAL_CALL
getColorSpace( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
82 // XIntegerBitmapColorSpace
83 virtual ::sal_Int8 SAL_CALL
getType( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
84 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getComponentTags( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
85 virtual ::sal_Int8 SAL_CALL
getRenderingIntent( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
86 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> SAL_CALL
getProperties( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
87 virtual ::com::sun::star::uno::Sequence
< double > SAL_CALL
convertColorSpace( const ::com::sun::star::uno::Sequence
< double >& deviceColor
, const ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XColorSpace
>& targetColorSpace
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
88 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::RGBColor
> SAL_CALL
convertToRGB( const ::com::sun::star::uno::Sequence
< double >& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
89 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
> SAL_CALL
convertToARGB( const ::com::sun::star::uno::Sequence
< double >& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
90 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
> SAL_CALL
convertToPARGB( const ::com::sun::star::uno::Sequence
< double >& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
91 virtual ::com::sun::star::uno::Sequence
< double > SAL_CALL
convertFromRGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::RGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
92 virtual ::com::sun::star::uno::Sequence
< double > SAL_CALL
convertFromARGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
93 virtual ::com::sun::star::uno::Sequence
< double > SAL_CALL
convertFromPARGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
94 virtual ::sal_Int32 SAL_CALL
getBitsPerPixel( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
95 virtual ::com::sun::star::uno::Sequence
< ::sal_Int32
> SAL_CALL
getComponentBitCounts( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
96 virtual ::sal_Int8 SAL_CALL
getEndianness( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
97 virtual ::com::sun::star::uno::Sequence
<double> SAL_CALL
convertFromIntegerColorSpace( const ::com::sun::star::uno::Sequence
< ::sal_Int8
>& deviceColor
, const ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XColorSpace
>& targetColorSpace
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
98 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
convertToIntegerColorSpace( const ::com::sun::star::uno::Sequence
< ::sal_Int8
>& deviceColor
, const ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XIntegerBitmapColorSpace
>& targetColorSpace
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
99 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::RGBColor
> SAL_CALL
convertIntegerToRGB( const ::com::sun::star::uno::Sequence
< ::sal_Int8
>& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
100 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
> SAL_CALL
convertIntegerToARGB( const ::com::sun::star::uno::Sequence
< ::sal_Int8
>& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
101 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
> SAL_CALL
convertIntegerToPARGB( const ::com::sun::star::uno::Sequence
< ::sal_Int8
>& deviceColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
102 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
convertIntegerFromRGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::RGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
103 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
convertIntegerFromARGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
104 virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
convertIntegerFromPARGB( const ::com::sun::star::uno::Sequence
< ::com::sun::star::rendering::ARGBColor
>& rgbColor
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
106 /** Create API wrapper for given BitmapEx
109 Bitmap to wrap. As usual, changes to the original bitmap
110 are not reflected in this object (copy on write).
112 explicit VclCanvasBitmap( const BitmapEx
& rBitmap
);
114 /// Retrieve contained bitmap. Call me with locked Solar mutex!
115 BitmapEx
getBitmapEx() const { return m_aBmpEx
;}
122 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */