rsMatrix2x2.h revision 411f5996bccf88d5d2f8d1f003d39a8d76365244
187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams/* 2411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines * Copyright (C) 2011-2012 The Android Open Source Project 387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * you may not use this file except in compliance with the License. 687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * You may obtain a copy of the License at 787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * 1087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Unless required by applicable law or agreed to in writing, software 1187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * See the License for the specific language governing permissions and 1487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * limitations under the License. 1587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams */ 1687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 1787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#ifndef ANDROID_RS_MATRIX_2x2_H 1887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#define ANDROID_RS_MATRIX_2x2_H 1987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsType.h" 2187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// --------------------------------------------------------------------------- 2487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace android { 2587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace renderscript { 2687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 2787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsstruct Matrix2x2 : public rs_matrix2x2 { 28411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines inline float get(uint32_t x, uint32_t y) const { 29411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines return m[x*2 + y]; 3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 32411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines inline void set(uint32_t x, uint32_t y, float v) { 33411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines m[x*2 + y] = v; 3487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void loadIdentity(); 3787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void load(const float *); 3887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void load(const rs_matrix2x2 *); 3987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void loadMultiply(const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs); 4187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void transpose(); 4387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 4487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams void multiply(const rs_matrix2x2 *rhs) { 4587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams Matrix2x2 tmp; 4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams tmp.loadMultiply(this, rhs); 4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams load(&tmp); 4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams } 4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}; 5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 5187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams} 5387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams 54411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines#endif // ANDROID_RS_MATRIX_2x2_H 55