rs_matrix.rsh Source File

- Overview
- Globals
- Structs

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