17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License. 67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at 77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and 147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License. 157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#ifndef bts_FLT16ALT3D_EM_H 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#define bts_FLT16ALT3D_EM_H 197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */ 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Context.h" 237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Basic.h" 247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_TensorEm/Flt16Mat3D.h" 257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_TensorEm/Flt16Vec3D.h" 267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- related objects --------------------------------------------------- */ 287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- typedefs ----------------------------------------------------------- */ 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- constants ---------------------------------------------------------- */ 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- object definition -------------------------------------------------- */ 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** 3d affine linear trafo */ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- private data --------------------------------------------------- */ 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- public data ---------------------------------------------------- */ 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** matrix */ 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Flt16Mat3D matE; 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** vector */ 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Flt16Vec3D vecE; 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}; 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- associated objects ------------------------------------------------- */ 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- external functions ------------------------------------------------- */ 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ constructor/destructor } ------------------------------------- */ 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** initializes alt */ 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_Flt16Alt3D_init( struct bts_Flt16Alt3D* ptrA ); 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** destroys alt */ 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_Flt16Alt3D_exit( struct bts_Flt16Alt3D* ptrA ); 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */ 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */ 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */ 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ memory I/O } ------------------------------------------------- */ 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** size object needs when written to memory */ 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_Flt16Alt3D_memSize( struct bbs_Context* cpA, 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Alt3D* ptrA ); 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** writes object to memory; returns number of bytes written */ 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_Flt16Alt3D_memWrite( struct bbs_Context* cpA, 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Alt3D* ptrA, 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ); 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** reads object from memory; returns number of bytes read */ 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_Flt16Alt3D_memRead( struct bbs_Context* cpA, 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Flt16Alt3D* ptrA, 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ); 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */ 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates identity alt */ 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_createIdentity( void ); 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates scale alt */ 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_createScale( int32 scaleA, 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 scaleBbpA, 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Vec3D* centerPtrA ); 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates linear alt from matrix and center */ 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_createLinear( const struct bts_Flt16Mat3D* matPtrA, 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Vec3D* centerPtrA ); 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates alt from 16 bit values */ 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_create16( int16 xxA, int16 xyA, int16 xzA, 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 yxA, int16 yyA, int16 yzA, 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 zxA, int16 zyA, int16 zzA, 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 matBbpA, 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 xA, int16 yA, int16 zA, 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 vecBbpA ); 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates alt from 32 bit values (automatic adjustment of bbp value) */ 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_create32( int32 xxA, int32 xyA, int32 xzA, 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 yxA, int32 yyA, int32 yzA, 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 zxA, int32 zyA, int32 zzA, 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 matBbpA, 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xA, int32 yA, int32 zA, 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 vecBbpA ); 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** Multiplies matrix with float vecA; returns resulting vector */ 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Vec3D bts_Flt16Alt3D_mapFlt( const struct bts_Flt16Alt3D* matPtrA, 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Vec3D* vecPtrA ); 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** multiplies alt with altA returns resulting alt */ 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D bts_Flt16Alt3D_mul( const struct bts_Flt16Alt3D* mat1PtrA, 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Alt3D* mat2PtrA ); 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** multiplies alt with matA; returns pointer to resulting alt */ 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt3D* bts_Flt16Alt3D_mulTo( struct bts_Flt16Alt3D* mat1PtrA, 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Flt16Alt3D* mat2PtrA ); 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#endif /* bts_FLT16ALT3D_EM_H */ 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 128