/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2011 The Android Open Source Project
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00023 #ifndef __RS_MATRIX_RSH__
00024 #define __RS_MATRIX_RSH__
00025 
00036 _RS_RUNTIME void __attribute__((overloadable))
00037 rsMatrixSet(rs_matrix4x4 *m, uint32_t row, uint32_t col, float v);
00041 _RS_RUNTIME void __attribute__((overloadable))
00042 rsMatrixSet(rs_matrix3x3 *m, uint32_t row, uint32_t col, float v);
00046 _RS_RUNTIME void __attribute__((overloadable))
00047 rsMatrixSet(rs_matrix2x2 *m, uint32_t row, uint32_t col, float v);
00048 
00058 _RS_RUNTIME float __attribute__((overloadable))
00059 rsMatrixGet(const rs_matrix4x4 *m, uint32_t row, uint32_t col);
00063 _RS_RUNTIME float __attribute__((overloadable))
00064 rsMatrixGet(const rs_matrix3x3 *m, uint32_t row, uint32_t col);
00068 _RS_RUNTIME float __attribute__((overloadable))
00069 rsMatrixGet(const rs_matrix2x2 *m, uint32_t row, uint32_t col);
00070 
00076 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix4x4 *m);
00080 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix3x3 *m);
00084 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix2x2 *m);
00085 
00091 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const float *v);
00095 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const float *v);
00099 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const float *v);
00103 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix4x4 *v);
00107 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix3x3 *v);
00108 
00114 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix2x2 *v);
00118 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const rs_matrix3x3 *v);
00122 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const rs_matrix2x2 *v);
00123 
00133 extern void __attribute__((overloadable))
00134 rsMatrixLoadRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
00135 
00144 extern void __attribute__((overloadable))
00145 rsMatrixLoadScale(rs_matrix4x4 *m, float x, float y, float z);
00146 
00155 extern void __attribute__((overloadable))
00156 rsMatrixLoadTranslate(rs_matrix4x4 *m, float x, float y, float z);
00157 
00165 extern void __attribute__((overloadable))
00166 rsMatrixLoadMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs);
00170 extern void __attribute__((overloadable))
00171 rsMatrixLoadMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs);
00175 extern void __attribute__((overloadable))
00176 rsMatrixLoadMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs);
00177 
00184 extern void __attribute__((overloadable))
00185 rsMatrixMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *rhs);
00189 extern void __attribute__((overloadable))
00190 rsMatrixMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *rhs);
00194 extern void __attribute__((overloadable))
00195 rsMatrixMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *rhs);
00196 
00206 extern void __attribute__((overloadable))
00207 rsMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
00208 
00217 extern void __attribute__((overloadable))
00218 rsMatrixScale(rs_matrix4x4 *m, float x, float y, float z);
00219 
00228 extern void __attribute__((overloadable))
00229 rsMatrixTranslate(rs_matrix4x4 *m, float x, float y, float z);
00230 
00242 extern void __attribute__((overloadable))
00243 rsMatrixLoadOrtho(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far);
00244 
00256 extern void __attribute__((overloadable))
00257 rsMatrixLoadFrustum(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far);
00258 
00268 extern void __attribute__((overloadable))
00269 rsMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far);
00270 
00271 #if !defined(RS_VERSION) || (RS_VERSION < 14)
00272 
00276 _RS_RUNTIME float4 __attribute__((overloadable))
00277 rsMatrixMultiply(rs_matrix4x4 *m, float4 in);
00278 
00282 _RS_RUNTIME float4 __attribute__((overloadable))
00283 rsMatrixMultiply(rs_matrix4x4 *m, float3 in);
00284 
00288 _RS_RUNTIME float4 __attribute__((overloadable))
00289 rsMatrixMultiply(rs_matrix4x4 *m, float2 in);
00290 
00294 _RS_RUNTIME float3 __attribute__((overloadable))
00295 rsMatrixMultiply(rs_matrix3x3 *m, float3 in);
00296 
00300 _RS_RUNTIME float3 __attribute__((overloadable))
00301 rsMatrixMultiply(rs_matrix3x3 *m, float2 in);
00302 
00306 _RS_RUNTIME float2 __attribute__((overloadable))
00307 rsMatrixMultiply(rs_matrix2x2 *m, float2 in);
00308 #else
00309 
00313 _RS_RUNTIME float4 __attribute__((overloadable))
00314 rsMatrixMultiply(const rs_matrix4x4 *m, float4 in);
00315 
00319 _RS_RUNTIME float4 __attribute__((overloadable))
00320 rsMatrixMultiply(const rs_matrix4x4 *m, float3 in);
00321 
00325 _RS_RUNTIME float4 __attribute__((overloadable))
00326 rsMatrixMultiply(const rs_matrix4x4 *m, float2 in);
00327 
00331 _RS_RUNTIME float3 __attribute__((overloadable))
00332 rsMatrixMultiply(const rs_matrix3x3 *m, float3 in);
00333 
00337 _RS_RUNTIME float3 __attribute__((overloadable))
00338 rsMatrixMultiply(const rs_matrix3x3 *m, float2 in);
00339 
00343 _RS_RUNTIME float2 __attribute__((overloadable))
00344 rsMatrixMultiply(const rs_matrix2x2 *m, float2 in);
00345 #endif
00346 
00347 
00353 extern bool __attribute__((overloadable)) rsMatrixInverse(rs_matrix4x4 *m);
00354 
00360 extern bool __attribute__((overloadable)) rsMatrixInverseTranspose(rs_matrix4x4 *m);
00361 
00367 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix4x4 *m);
00371 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix3x3 *m);
00375 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix2x2 *m);
00376 
00377 
00378 #endif