diff options
Diffstat (limited to '')
-rw-r--r-- | offapi/com/sun/star/rendering/XColorSpace.idl | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rendering/XColorSpace.idl b/offapi/com/sun/star/rendering/XColorSpace.idl new file mode 100644 index 000000000..12d9c2705 --- /dev/null +++ b/offapi/com/sun/star/rendering/XColorSpace.idl @@ -0,0 +1,244 @@ +/* -*- 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 __com_sun_star_rendering_XColorSpace_idl__ +#define __com_sun_star_rendering_XColorSpace_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/beans/PropertyValue.idl> +#include <com/sun/star/rendering/ColorProfile.idl> +#include <com/sun/star/rendering/ColorComponent.idl> +#include <com/sun/star/rendering/RGBColor.idl> +#include <com/sun/star/rendering/ARGBColor.idl> + +module com { module sun { module star { module rendering { + +/** Information how to interpret certain color data.<p> + + This interface encapsulates all information that is necessary to + interpret color data, by defining a describing color space, like + for example CMYK or sRGB. You can either convert between this and + an arbitrary other color space, or into the standard RGB or ARGB + formats (because those are so overwhelmingly common in computer + graphics).<p> + + All canvas interfaces standardize to sequences of IEEE doubles for + color representation. As this is overly verbose when used for + bitmap data, derived interfaces exist, + e.g. XIntegerBitmapColorSpace, which use sequences of + integers for color representation.<p> + */ +interface XColorSpace +{ + /** Query type of this color space.<p> + + @return a value from the ColorSpaceType constant + group. + */ + byte getType(); + + /** Query the kind for each color component.<p> + + Color space components tend to correspond to physical + attributes like the amount of one specific colorant contained + in the final output color. This method returns a sequence of + tags, specifying for each component of a color value, to what + color attribute (if any) it corresponds. The values must be + one of the ColorComponentTag constants.<p> + + At the same time, the number of elements in this sequence + corresponds to the number of color channels for this color + space.<p> + + @remark For the standard RGB color space, ComponentTags + consists of three elements, containing RGB_RED, RGB_GREEN and + RGB_BLUE tags, respectively + */ + sequence<byte> getComponentTags(); + + /** Query rendering intent of this color space.<p> + + @return a value from the RenderingIntent constant + group. + */ + byte getRenderingIntent(); + + /** Query various optional properties from the color space.<p> + + If this color space has an ICC color profile, the sequence + contains an element named ICCProfile. Some color spaces also + have properties Gamma, Whitepoint and Blackpoint. Background + information for these is available <a + href="http://en.wikipedia.org/wiki/Color_temperature">here</a>. + */ + sequence< ::com::sun::star::beans::PropertyValue > getProperties(); + + + + /** Convert to color of another 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. + + @param targetColorSpace the color space to convert to. + + @return the corresponding sequence of device colors in the + target color space (e.g. `sequence<double>` or + `sequence<byte>`). + + @throws a + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format + (e.g. if the number of components is wrong) + */ + sequence<ColorComponent> convertColorSpace( [in] sequence<ColorComponent> deviceColor, [in] XColorSpace 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 RGBColor + struct is discarded during the conversion. This includes alpha + information. + + @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 colors in the sRGB color + space. + + @throws a + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + + @see convertToARGB() + */ + sequence<RGBColor> convertToRGB( [in] sequence<ColorComponent> 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. + + @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 colors in the sRGB color + space. + + @throws a + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + */ + sequence<ARGBColor> convertToARGB( [in] sequence<ColorComponent> 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. 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 colors in the sRGB color + space. + + @throws a + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + */ + sequence<ARGBColor> convertToPARGB( [in] sequence<ColorComponent> deviceColor ) + raises (com::sun::star::lang::IllegalArgumentException); + + /** Convert sRGB color to a 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. + + @param rgbColor 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 + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + */ + sequence<ColorComponent> convertFromRGB( [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. + + @param rgbColor 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 + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + */ + sequence<ColorComponent> convertFromARGB( [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. + + @param rgbColor 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 color values are assumed to be premultiplied by the + alpha value. + + @return the corresponding sequence of device colors. + + @throws a + com::sun::star::lang::IllegalArgumentException, + if the input sequence does not match the device color format. + */ + sequence<ColorComponent> convertFromPARGB( [in] sequence<ARGBColor> rgbColor ) + raises (com::sun::star::lang::IllegalArgumentException); +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |