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 vectortypeto another, or from one color 21 representation to another. 22end: 23 24function: convert_#3#1 25version: 9 26attrib:const27w: 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 numericaltypeto another. The conversion aredoneentry 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 tointegertypes truncates. 40 41 Converting numbers too large to fit the destinationtypeyields undefined results. 42 For example, converting afloatthat contains 1.0e18 to a short is undefined. 43 Use @clamp() to avoid this. 44end: 45 46function: convert_#3#1 47version: 21 48attrib:const49w: 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:const59w: 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:const69w: 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:const79w: 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:const89w: 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:const98ret: uchar4 99arg:floatr, "Red component." 100arg:floatg, "Green component." 101arg:floatb, "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 bedoneafter the input is multiplied by 255.f and converted to aninteger, 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 alphasetto 255. 114test: none 115end: 116 117function: rsPackColorTo8888 118attrib:const119ret: uchar4 120arg:floatr 121arg:floatg 122arg:floatb 123arg:floata, "Alpha component." 124test: none 125end: 126 127function: rsPackColorTo8888 128attrib:const129ret: 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:const136ret: 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: =const146ret: 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:const156w: 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