1*d1766043SAndrew Rist/**************************************************************
2cdf0e10cSrcweir *
3*d1766043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*d1766043SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5*d1766043SAndrew Rist * distributed with this work for additional information
6*d1766043SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7*d1766043SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*d1766043SAndrew Rist * "License"); you may not use this file except in compliance
9*d1766043SAndrew Rist * with the License.  You may obtain a copy of the License at
10*d1766043SAndrew Rist *
11*d1766043SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12*d1766043SAndrew Rist *
13*d1766043SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*d1766043SAndrew Rist * software distributed under the License is distributed on an
15*d1766043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*d1766043SAndrew Rist * KIND, either express or implied.  See the License for the
17*d1766043SAndrew Rist * specific language governing permissions and limitations
18*d1766043SAndrew Rist * under the License.
19*d1766043SAndrew Rist *
20*d1766043SAndrew Rist *************************************************************/
21*d1766043SAndrew Rist
22*d1766043SAndrew Rist
23cdf0e10cSrcweir#ifndef __com_sun_star_rendering_XIntegerReadOnlyBitmap_idl__
24cdf0e10cSrcweir#define __com_sun_star_rendering_XIntegerReadOnlyBitmap_idl__
25cdf0e10cSrcweir
26cdf0e10cSrcweir#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
27cdf0e10cSrcweir#include <com/sun/star/lang/IllegalArgumentException.idl>
28cdf0e10cSrcweir#endif
29cdf0e10cSrcweir#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__
30cdf0e10cSrcweir#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
31cdf0e10cSrcweir#endif
32cdf0e10cSrcweir#ifndef __com_sun_star_geometry_IntegerPoint2D_idl__
33cdf0e10cSrcweir#include <com/sun/star/geometry/IntegerPoint2D.idl>
34cdf0e10cSrcweir#endif
35cdf0e10cSrcweir#ifndef __com_sun_star_geometry_IntegerRectangle2D_idl__
36cdf0e10cSrcweir#include <com/sun/star/geometry/IntegerRectangle2D.idl>
37cdf0e10cSrcweir#endif
38cdf0e10cSrcweir#ifndef __com_sun_star_rendering_IntegerBitmapLayout_idl__
39cdf0e10cSrcweir#include <com/sun/star/rendering/IntegerBitmapLayout.idl>
40cdf0e10cSrcweir#endif
41cdf0e10cSrcweir#ifndef __com_sun_star_rendering_XBitmap_idl__
42cdf0e10cSrcweir#include <com/sun/star/rendering/XBitmap.idl>
43cdf0e10cSrcweir#endif
44cdf0e10cSrcweir#ifndef __com_sun_star_rendering_VolatileContentDestroyedException_idl__
45cdf0e10cSrcweir#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
46cdf0e10cSrcweir#endif
47cdf0e10cSrcweir
48cdf0e10cSrcweir
49cdf0e10cSrcweirmodule com { module sun { module star { module rendering {
50cdf0e10cSrcweir
51cdf0e10cSrcweirinterface XBitmapPalette;
52cdf0e10cSrcweir
53cdf0e10cSrcweir/** This is a specialized interface for bitmaps having integer color
54cdf0e10cSrcweir    channels. In contrast to <type>XIntegerBitmap</type>, this
55cdf0e10cSrcweir    interface only permits read-only access.<p>
56cdf0e10cSrcweir
57cdf0e10cSrcweir    Use this interface for e.g. bitmaps that are calculated
58cdf0e10cSrcweir    on-the-fly, or that are pure functional, and thus cannot be
59cdf0e10cSrcweir    modified.<p>
60cdf0e10cSrcweir
61cdf0e10cSrcweir    If you get passed an instance of
62cdf0e10cSrcweir    <type>XIntegerReadOnlyBitmap</type> that also supports the
63cdf0e10cSrcweir    <type>XVolatileBitmap</type> interface, things become a bit more
64cdf0e10cSrcweir    complicated. When reading data, one has to check for both
65cdf0e10cSrcweir    <type>VolatileContentDestroyedException</type> and mismatching
66cdf0e10cSrcweir    <type>IntegerBitmapLayout</type> return values. If either of them
67cdf0e10cSrcweir    occurs, the whole bitmap read operation should be repeated, if you
68cdf0e10cSrcweir    need consistent information.<p>
69cdf0e10cSrcweir */
70cdf0e10cSrcweirinterface XIntegerReadOnlyBitmap : XBitmap
71cdf0e10cSrcweir{
72cdf0e10cSrcweir	/** Query the raw data of this bitmap.<p>
73cdf0e10cSrcweir
74cdf0e10cSrcweir    	Query the raw data of this bitmap, in the format as defined by
75cdf0e10cSrcweir    	getMemoryLayout(). With the given rectangle, a subset of the
76cdf0e10cSrcweir    	whole bitmap can be queried. If the internal data format's
77cdf0e10cSrcweir    	pixel are not integer multiples of bytes (i.e. if one pixel
78cdf0e10cSrcweir    	occupies less than a byte), the leftover content of the bytes
79cdf0e10cSrcweir    	at the right of each scanline is filled with zeros. The
80cdf0e10cSrcweir    	details of the scanline padding are to be retrieved from the
81cdf0e10cSrcweir    	passed bitmap layout.<p>
82cdf0e10cSrcweir
83cdf0e10cSrcweir        Note that the bitmap memory layout might change over time for
84cdf0e10cSrcweir        volatile bitmaps.<p>
85cdf0e10cSrcweir
86cdf0e10cSrcweir        @param bitmapLayout
87cdf0e10cSrcweir        The memory layout the returned data is in. Note that the color
88cdf0e10cSrcweir        space returned therein needs to always match the current color
89cdf0e10cSrcweir        space as would have been returned by getMemoryLayout(). This
90cdf0e10cSrcweir        is necessary to ensure correct operation under changing
91cdf0e10cSrcweir        <type>XVolatileBitmap</type>.
92cdf0e10cSrcweir
93cdf0e10cSrcweir        @param rect
94cdf0e10cSrcweir        A rectangle, within the bounds of the bitmap, to retrieve the
95cdf0e10cSrcweir        contens from.
96cdf0e10cSrcweir
97cdf0e10cSrcweir        @throws <type>VolatileContentDestroyedException</type>
98cdf0e10cSrcweir        if the bitmap is volatile, and the content has been destroyed by the system.
99cdf0e10cSrcweir
100cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
101cdf0e10cSrcweir        if parts of the given rectangle are outside the permissible
102cdf0e10cSrcweir        bitmap area.
103cdf0e10cSrcweir	 */
104cdf0e10cSrcweir	sequence<byte> 		getData( [out] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
105cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException,
106cdf0e10cSrcweir                VolatileContentDestroyedException);
107cdf0e10cSrcweir
108cdf0e10cSrcweir	//-------------------------------------------------------------------------
109cdf0e10cSrcweir
110cdf0e10cSrcweir	/** Get a single pixel of the bitmap, returning its color
111cdf0e10cSrcweir		value.<p>
112cdf0e10cSrcweir
113cdf0e10cSrcweir		If the internal data format's pixel are not integer multiples
114cdf0e10cSrcweir		of bytes (i.e. if one pixel occupies less than a byte - the
115cdf0e10cSrcweir		case of more than one byte per pixel is not specified), the
116cdf0e10cSrcweir		color value is returned in the least significant bits of the
117cdf0e10cSrcweir		single byte returned as the color. The details of the returned
118cdf0e10cSrcweir		pixel data are to be retrieved from the passed bitmap layout.<p>
119cdf0e10cSrcweir
120cdf0e10cSrcweir        Note that the bitmap memory layout might change for volatile
121cdf0e10cSrcweir        bitmaps.<p>
122cdf0e10cSrcweir
123cdf0e10cSrcweir        @param bitmapLayout
124cdf0e10cSrcweir        The memory layout the returned data is in. Note that the color
125cdf0e10cSrcweir        space returned therein needs to always match the current color
126cdf0e10cSrcweir        space as would have been returned by getMemoryLayout(). This
127cdf0e10cSrcweir        is necessary to ensure correct operation under changing
128cdf0e10cSrcweir        <type>XVolatileBitmap</type>.
129cdf0e10cSrcweir
130cdf0e10cSrcweir        @param pos
131cdf0e10cSrcweir        A position, within the bounds of the bitmap, to retrieve the
132cdf0e10cSrcweir        color from.
133cdf0e10cSrcweir
134cdf0e10cSrcweir        @throws <type>VolatileContentDestroyedException</type>
135cdf0e10cSrcweir        if the bitmap is volatile, and the content has been destroyed by the system.
136cdf0e10cSrcweir
137cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
138cdf0e10cSrcweir        if the given position is outside the permissible bitmap area.
139cdf0e10cSrcweir	 */
140cdf0e10cSrcweir	sequence<byte>		getPixel( [out] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
141cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException,
142cdf0e10cSrcweir                VolatileContentDestroyedException);
143cdf0e10cSrcweir
144cdf0e10cSrcweir	//-------------------------------------------------------------------------
145cdf0e10cSrcweir
146cdf0e10cSrcweir	/** Query the memory layout for this bitmap.<p>
147cdf0e10cSrcweir
148cdf0e10cSrcweir    	Please note that for volatile bitmaps, the memory layout might
149cdf0e10cSrcweir    	change between subsequent calls.<p>
150cdf0e10cSrcweir	 */
151cdf0e10cSrcweir	IntegerBitmapLayout	getMemoryLayout();
152cdf0e10cSrcweir};
153cdf0e10cSrcweir
154cdf0e10cSrcweir}; }; }; };
155cdf0e10cSrcweir
156cdf0e10cSrcweir#endif
157