1#
2# Copyright (C) 2015 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17header:
18summary: Conversion Functions
19description:
20 The functions below convert from a numerical vector type to another, or from one color
21 representation to another.
22end:
23
24function: convert_#3#1
25version: 9
26attrib: const
27w: 2, 3, 4
28t: u8, u16, u32, i8, i16, i32, f32
29t: u8, u16, u32, i8, i16, i32, f32
30ret: #3#1
31arg: #2#1 v, compatible(#3)
32summary: Convert numerical vectors
33description:
34 Converts a vector from one numerical type to another.  The conversion are done entry per entry.
35
36 E.g calling <code>a = convert_short3(b);</code> is equivalent to doing
37 <code>a.x = (short)b.x; a.y = (short)b.y; a.z = (short)b.z;</code>.
38
39 Converting floating point values to integer types truncates.
40
41 Converting numbers too large to fit the destination type yields undefined results.
42 For example, converting a float that contains 1.0e18 to a short is undefined.
43 Use @clamp() to avoid this.
44end:
45
46function: convert_#3#1
47version: 21
48attrib: const
49w: 2, 3, 4
50t: u64, i64, f64
51t: u64, i64, f64
52ret: #3#1
53arg: #2#1 v, compatible(#3)
54end:
55
56function: convert_#3#1
57version: 21
58attrib: const
59w: 2, 3, 4
60t: u64, i64, f64
61t: u8, u16, u32, i8, i16, i32, f32
62ret: #3#1
63arg: #2#1 v, compatible(#3)
64end:
65
66function: convert_#3#1
67version: 21
68attrib: const
69w: 2, 3, 4
70t: u8, u16, u32, i8, i16, i32, f32
71t: u64, i64, f64
72ret: #3#1
73arg: #2#1 v, compatible(#3)
74end:
75
76function: convert_#3#1
77version: 24
78attrib: const
79w: 2, 3, 4
80t: f16
81t: u8, u16, u32, u64, i8, i16, i32, i64, f16, f32, f64
82ret: #3#1
83arg: #2#1 v, compatible(#3)
84end:
85
86function: convert_#3#1
87version: 24
88attrib: const
89w: 2, 3, 4
90t: u8, u16, u32, u64, i8, i16, i32, i64, f32, f64
91t: f16
92ret: #3#1
93arg: #2#1 v, compatible(#3)
94end:
95
96function: rsPackColorTo8888
97attrib: const
98ret: uchar4
99arg: float r, "Red component."
100arg: float g, "Green component."
101arg: float b, "Blue component."
102summary: Create a uchar4 RGBA from floats
103description:
104 Packs three or four floating point RGBA values into a uchar4.
105
106 The input values are typically between 0.0f and 1.0f inclusive.  For input values outside
107 of this range, the resulting outputs will be clamped to be between 0 and 255.  As this
108 clamping may be done after the input is multiplied by 255.f and converted to an integer,
109 input numbers greater than INT_MAX/255.f or less than INT_MIN/255.f result in
110 undefined behavior.
111
112 If the alpha component is not specified, it is assumed to be 1.0, i.e. the result will
113 have an alpha set to 255.
114test: none
115end:
116
117function: rsPackColorTo8888
118attrib: const
119ret: uchar4
120arg: float r
121arg: float g
122arg: float b
123arg: float a, "Alpha component."
124test: none
125end:
126
127function: rsPackColorTo8888
128attrib: const
129ret: uchar4
130arg: float3 color, "Vector of 3 or 4 floats containing the R, G, B, and A values."
131test: none
132end:
133
134function: rsPackColorTo8888
135attrib: const
136ret: uchar4
137arg: float4 color
138test: none
139end:
140
141function: rsUnpackColor8888
142# NOTE: The = below indicates that the generator should not add "overloadable" by default.
143# We're doing this to stay backward compatible with the unusual declaration used when this
144# function was introduced.
145attrib: =const
146ret: float4
147arg: uchar4 c
148summary: Create a float4 RGBA from uchar4
149description:
150 Unpacks a uchar4 color to float4.  The resulting floats will be between 0.0 and 1.0 inclusive.
151test: none
152end:
153
154function: rsYuvToRGBA_#2#1
155attrib: const
156w: 4
157t: u8, f32
158ret: #2#1
159arg: uchar y, "Luminance component."
160arg: uchar u, "U chrominance component."
161arg: uchar v, "V chrominance component."
162summary: Convert a YUV value to RGBA
163description:
164 Converts a color from a YUV representation to RGBA.
165
166 We currently don't provide a function to do the reverse conversion.
167test: none
168end:
169