1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_CompositeOperation_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_rendering_CompositeOperation_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module rendering {
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski/** These constants determine how the primitive color is combined with
29*b1cdbd2cSJim Jagielski    the background.<p>
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski	When performing this calculations, it is assumed that all color
32*b1cdbd2cSJim Jagielski	values are premultiplied with the corresponding alpha values (if
33*b1cdbd2cSJim Jagielski	no alpha is specified, 1.0 is assumed). Then, the following
34*b1cdbd2cSJim Jagielski	general compositing operation is performed:
35*b1cdbd2cSJim Jagielski    <p>
36*b1cdbd2cSJim Jagielski    C = Ca * Fa + Cb * Fb
37*b1cdbd2cSJim Jagielski    <p>
38*b1cdbd2cSJim Jagielski    where C is the result color, Ca and Cb are the input colors,
39*b1cdbd2cSJim Jagielski    premultiplied with alpha, and Fa and Fb are described for the
40*b1cdbd2cSJim Jagielski    different composite modes (wherein Aa and Ab denote source and
41*b1cdbd2cSJim Jagielski    destination alpha, respectively).<p>
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski    @since OpenOffice 2.0
44*b1cdbd2cSJim Jagielski */
45*b1cdbd2cSJim Jagielskiconstants CompositeOperation
46*b1cdbd2cSJim Jagielski{
47*b1cdbd2cSJim Jagielski    /** Clear the destination.<p>
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski    	Clear the destination area. The function values are: Fa = Fb =
50*b1cdbd2cSJim Jagielski    	0.<p>
51*b1cdbd2cSJim Jagielski     */
52*b1cdbd2cSJim Jagielski	const byte CLEAR = 0;
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski    /** Copy source as-is to the destination.<p>
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski    	Copy source as-is to the destination. The function values are:
57*b1cdbd2cSJim Jagielski    	Fa = 1, Fb = 0.<p>
58*b1cdbd2cSJim Jagielski     */
59*b1cdbd2cSJim Jagielski    const byte SOURCE = 1;
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski    /** Leave the destination as-is.<p>
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski    	Leave the destination as-is. The function values are: Fa = 0,
64*b1cdbd2cSJim Jagielski    	Fb = 1.<p>
65*b1cdbd2cSJim Jagielski     */
66*b1cdbd2cSJim Jagielski    const byte DESTINATION = 2;
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski    /** Copy the source over the destination.<p>
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski	    Copy the source over the destination. The function values are:
71*b1cdbd2cSJim Jagielski	    Fa = 1, Fb = 1-Aa.<p>
72*b1cdbd2cSJim Jagielski     */
73*b1cdbd2cSJim Jagielski    const byte OVER = 3;
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski    /** Copy the source under the destination.<p>
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski    	Copy the source under the destination. The function values
78*b1cdbd2cSJim Jagielski    	are: Fa = 1-Ab, Fb = 1.<p>
79*b1cdbd2cSJim Jagielski     */
80*b1cdbd2cSJim Jagielski    const byte UNDER = 4;
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski    /** Copy the source to the destination.<p>
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski    	Copy the source to the destination, but limited to where the
85*b1cdbd2cSJim Jagielski    	destination is. The function values are: Fa = Ab, Fb = 0.<p>
86*b1cdbd2cSJim Jagielski     */
87*b1cdbd2cSJim Jagielski    const byte INSIDE = 5;
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski    /** Leave the destination as is.<p>
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski    	Leave the destination as is, but only where the source
92*b1cdbd2cSJim Jagielski    	was. The function values are: Fa = 0, Fb = Aa.<p>
93*b1cdbd2cSJim Jagielski     */
94*b1cdbd2cSJim Jagielski    const byte INSIDE_REVERSE = 6;
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski    /** Copy the source to the destination<p>
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski    	Copy the source to the destination, but limited to where the
99*b1cdbd2cSJim Jagielski    	destination is not. The function values are: Fa = 1-Ab, Fb =
100*b1cdbd2cSJim Jagielski    	0.<p>
101*b1cdbd2cSJim Jagielski     */
102*b1cdbd2cSJim Jagielski    const byte OUTSIDE = 7;
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski    /** Leave the destination as is.<p>
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski    	Leave the destination as is, but only where the source has not
107*b1cdbd2cSJim Jagielski    	been. The function values are: Fa = 0, Fb = 1-Aa.<p>
108*b1cdbd2cSJim Jagielski     */
109*b1cdbd2cSJim Jagielski    const byte OUTSIDE_REVERSE = 8;
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski    /** Copy the source over the destination<p>
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski    	Copy the source over the destination, but only where the
114*b1cdbd2cSJim Jagielski    	destination is. Keep the destination. The function values are:
115*b1cdbd2cSJim Jagielski    	Fa = Ab, Fb = 1-Aa.<p>
116*b1cdbd2cSJim Jagielski     */
117*b1cdbd2cSJim Jagielski    const byte ATOP = 9;
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski    /** Copy the destination over the source.<p>
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski    	Copy the destination over the source, but only where the
122*b1cdbd2cSJim Jagielski    	source is. Keep the source. The function values are: Fa =
123*b1cdbd2cSJim Jagielski    	1-Ab, Fb = Aa.<p>
124*b1cdbd2cSJim Jagielski     */
125*b1cdbd2cSJim Jagielski    const byte ATOP_REVERSE = 10;
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski    /** Combine source and destination by exclusive or.<p>
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski    	Take only the parts where either source or destination, but
130*b1cdbd2cSJim Jagielski    	not both visible. The function values are: Fa = 1-Ab, Fb =
131*b1cdbd2cSJim Jagielski    	1-Aa.<p>
132*b1cdbd2cSJim Jagielski     */
133*b1cdbd2cSJim Jagielski    const byte XOR = 11;
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski    /** Add source and destination values.<p>
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski    	Simply add contributions of both source and destination. The
138*b1cdbd2cSJim Jagielski    	resulting color values are limited to the permissible color
139*b1cdbd2cSJim Jagielski    	range, and clipped to the maximal value, if exceeded. The
140*b1cdbd2cSJim Jagielski    	function values are: Fa = 1, Fb = 1.<p>
141*b1cdbd2cSJim Jagielski    */
142*b1cdbd2cSJim Jagielski    const byte ADD = 12;
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski    /** Saturate source and destination.<p>
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski    	Saturate destination with source values. The function values
147*b1cdbd2cSJim Jagielski    	are: Fa = min(1,(1-Ab)/Aa), Fb = 1<p>
148*b1cdbd2cSJim Jagielski     */
149*b1cdbd2cSJim Jagielski    const byte SATURATE = 13;
150*b1cdbd2cSJim Jagielski};
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski}; }; }; };
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski#endif
155