rsMatrix2x2.h revision 1bb2eed69caa28cf8198d58db7d9134cc2f563f5
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 {
281bb2eed69caa28cf8198d58db7d9134cc2f563f5Jean-Luc Brouillet    inline float get(uint32_t col, uint32_t row) const {
291bb2eed69caa28cf8198d58db7d9134cc2f563f5Jean-Luc Brouillet        return m[col*2 + row];
3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
321bb2eed69caa28cf8198d58db7d9134cc2f563f5Jean-Luc Brouillet    inline void set(uint32_t col, uint32_t row, float v) {
331bb2eed69caa28cf8198d58db7d9134cc2f563f5Jean-Luc Brouillet        m[col*2 + row] = 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) {
451bb2eed69caa28cf8198d58db7d9134cc2f563f5Jean-Luc Brouillet        loadMultiply(this, rhs);
4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams    }
4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams};
4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
5187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
52411f5996bccf88d5d2f8d1f003d39a8d76365244Stephen Hines#endif  // ANDROID_RS_MATRIX_2x2_H
53