summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl')
-rw-r--r--offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl276
1 files changed, 276 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl b/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl
new file mode 100644
index 000000000000..f05c7a4b1303
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl
@@ -0,0 +1,276 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef __com_sun_star_rendering_XIntegerBitmapColorSpace_idl__
+#define __com_sun_star_rendering_XIntegerBitmapColorSpace_idl__
+
+#ifndef __com_sun_star_rendering_XColorSpace_idl__
+#include <com/sun/star/rendering/XColorSpace.idl>
+#endif
+
+module com { module sun { module star { module rendering {
+
+/** A color space for integer bitmap formats<p>
+
+ This interface encapsulates all information specific to a certain
+ integer bitmap color space, like for example 1555 ARGB. Note that
+ the individual elements of the integer color representation
+ sequence need not correspond to the color space's components -
+ instead, the color components might be packed back-to-back into
+ those bytes, as they appear in the raw bitmap data.<p>
+ */
+interface XIntegerBitmapColorSpace : XColorSpace
+{
+ /** Query number of bits used per bitmap pixel.<p>
+
+ This method yields the total number of bits used for a color
+ value. At the associated <type>XIntegerBitmap</type>, the
+ <member>XIntegerBitmap::setPixel()</member> method will expect
+ a sequence of ceil(BitsPerPixel/8) bytes, and the
+ <member>XIntegerReadOnlyBitmap::getPixel()</member> will
+ return that number of bytes. Similarly, the color conversion
+ expect input data in multiples of ceil(BitsPerPixel/8), and
+ also return converted data in chunks of this.<p>
+ */
+ long getBitsPerPixel();
+
+ /** Query the number of bits used for each component.<p>
+
+ This method returnes a sequence of integers, each denoting the
+ number of bits occupied by the respective component. The sum
+ of all component bits must be less or equal than the value
+ returned from <member>getBitsPerPixel()</member>. If the sum is
+ less, excess bits are always kept in the most significant bits
+ of a pixel. Color components will appear in the byte sequences
+ returned from the <type>XIntegerBitmap</type> methods in the
+ order defined here, with the first element starting from the
+ least significant bits of the pixel, etc.<p>
+
+ @example For the typical 32 bit RGBA color data, the four
+ values would all contain the value eight. For a 16 bit 1555
+ ARGB format, with mask values 0x8000 for alpha, 0x7C for red,
+ 0x3E for green and 0x1F for blue, the values would be 5, 5, 5,
+ 1, in that order.
+ */
+ sequence<long> getComponentBitCounts();
+
+ /** Query whether color data bytes need to be swapped.<p>
+
+ @return <TRUE/>, This method returns the endiannes of the color
+ data. The value is one of the <type>Endianness</type>
+ constants. If color data is represented using more than one
+ byte, the actual channel positions are specified using bit
+ positions. Therefore, depending on the architecture, the
+ actual color data bytes might need to get swapped, for the
+ bits to align properly.<p>
+
+ @example with a 16 bit 565 RGB format, written on a big endian
+ architecture, a destination machine using little endian CPU
+ will need to swap the bytes, in order to keep the green
+ channel bits together.
+ */
+ byte getEndianness();
+
+
+ /** Convert integer bitmap color to generic IEEE double device
+ color of another color space.<p>
+
+ Color values are properly rounded and clipped, to be valid in
+ the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.<p>
+
+ @return the corresponding sequence of device colors in the
+ target color space
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ColorComponent> convertFromIntegerColorSpace( [in] sequence<byte> deviceColor, [in] XColorSpace targetColorSpace )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert integer bitmap color to integer bitmap color of
+ another integer bitmap color space.<p>
+
+ Color values are properly rounded and clipped, to be valid in
+ the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.<p>
+
+ @return the corresponding sequence of device colors in the
+ target color space
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertToIntegerColorSpace( [in] sequence<byte> deviceColor, [in] XIntegerBitmapColorSpace targetColorSpace )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values.<p>
+
+ Any information not representable in the <type>RGBColor</type>
+ struct is discarded during the conversion. This includes alpha
+ information. Color values are properly rounded and clipped,
+ to be valid in the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @see <member>XIntegerBitmapColorSpace::convertIntegerToARGB</member>
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<RGBColor> convertIntegerToRGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values,
+ with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertIntegerToARGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to premultiplied sRGB
+ color values, with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space. The resulting individual RGB color values are
+ premultiplied by the alpha value (e.g. if alpha is 0.5, each
+ color value has only half of the original intensity).<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertIntegerToPARGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color to an integer representation in this color
+ space.<p>
+
+ If this color space conveys alpha information, it is assumed
+ be fully opaque for the given rgb color value. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space.<p>
+
+ @param deviceColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromRGB( [in] sequence<RGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color with linear alpha into this color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored. Color values are
+ properly rounded and clipped, to be valid in the target color
+ space.<p>
+
+ @param deviceColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert premultiplied sRGB color with linear alpha into this
+ color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored. Color values are
+ properly rounded and clipped, to be valid in the target color
+ space.<p>
+
+ @param deviceColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible. The
+ individual RGB color values are assumed to be premultiplied by
+ the alpha value already.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ <type>com::sun::star::lang::IllegalArgumentException</type>,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromPARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+};
+
+}; }; }; };
+
+#endif