blob: 875b63672e261f28aa137fa38bf90f61d61d9fe4 [file] [log] [blame]
The Android Open Source Project30957f52008-10-21 07:00:00 -07001/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef bim_FLT16_IMAGE_EM_H
18#define bim_FLT16_IMAGE_EM_H
19
20/* ---- includes ----------------------------------------------------------- */
21
22#include "b_BasicEm/Context.h"
23#include "b_BasicEm/Int16Arr.h"
24#include "b_TensorEm/Int16Rect.h"
25#include "b_TensorEm/Flt16Alt2D.h"
26
27/* ---- related objects --------------------------------------------------- */
28
29struct bim_ComplexImage;
30
31/* ---- typedefs ----------------------------------------------------------- */
32
33/* ---- constants ---------------------------------------------------------- */
34
35/* data format version number */
36#define bim_FLT16_IMAGE_VERSION 100
37
38/* ---- object definition -------------------------------------------------- */
39
40/** image of int16 with floating point */
41struct bim_Flt16Image
42{
43
44 /* ---- private data --------------------------------------------------- */
45
46 /** allocated array of bytes */
47 struct bbs_Int16Arr allocArrE;
48
49 /* ---- public data ---------------------------------------------------- */
50
51 /** width of image */
52 uint32 widthE;
53
54 /** height of image */
55 uint32 heightE;
56
57 /** point position */
58 int32 bbpE;
59
60 /** array of bytes */
61 struct bbs_Int16Arr arrE;
62};
63
64/* ---- associated objects ------------------------------------------------- */
65
66/* ---- external functions ------------------------------------------------- */
67
68/* ---- \ghd{ constructor/destructor } ------------------------------------- */
69
70/** initializes bim_Flt16Image */
71void bim_Flt16Image_init( struct bbs_Context* cpA,
72 struct bim_Flt16Image* ptrA );
73
74/** destroys bim_Flt16Image */
75void bim_Flt16Image_exit( struct bbs_Context* cpA,
76 struct bim_Flt16Image* ptrA );
77
78/* ---- \ghd{ operators } -------------------------------------------------- */
79
80/** copy operator */
81void bim_Flt16Image_copy( struct bbs_Context* cpA,
82 struct bim_Flt16Image* ptrA,
83 const struct bim_Flt16Image* srcPtrA );
84
85/** equal operator */
86flag bim_Flt16Image_equal( struct bbs_Context* cpA,
87 const struct bim_Flt16Image* ptrA,
88 const struct bim_Flt16Image* srcPtrA );
89
90/* ---- \ghd{ query functions } -------------------------------------------- */
91
92/* ---- \ghd{ modify functions } ------------------------------------------- */
93
94/** allocates memory for bim_Flt16Image */
95void bim_Flt16Image_create( struct bbs_Context* cpA,
96 struct bim_Flt16Image* ptrA,
97 uint32 widthA,
98 uint32 heightA,
99 struct bbs_MemSeg* mspA );
100
101/** assigns external image to array (no allocation, deallocation or copying of data) */
102/*void bim_Flt16Image_assignExternalImage( struct bbs_Context* cpA,
103 struct bim_Flt16Image* ptrA,
104 struct bim_Flt16Image* srcPtrA );
105*/
106/** sets image size */
107void bim_Flt16Image_size( struct bbs_Context* cpA,
108 struct bim_Flt16Image* ptrA,
109 uint32 widthA,
110 uint32 heightA );
111
112/* ---- \ghd{ memory I/O } ------------------------------------------------- */
113
114/** word size (16-bit) needs when written to memory */
115uint32 bim_Flt16Image_memSize( struct bbs_Context* cpA,
116 const struct bim_Flt16Image* ptrA );
117
118/** writes object to memory; returns number of words (16-bit) written */
119uint32 bim_Flt16Image_memWrite( struct bbs_Context* cpA,
120 const struct bim_Flt16Image* ptrA,
121 uint16* memPtrA );
122
123/** reads object from memory; returns number of words (16-bit) read */
124uint32 bim_Flt16Image_memRead( struct bbs_Context* cpA,
125 struct bim_Flt16Image* ptrA,
126 const uint16* memPtrA,
127 struct bbs_MemSeg* mspA );
128
129/* ---- \ghd{ exec functions } --------------------------------------------- */
130
131/** sets all pixels to one value */
132void bim_Flt16Image_setAllPixels( struct bbs_Context* cpA,
133 struct bim_Flt16Image* ptrA,
134 int16 valueA, int32 bbpA );
135
136/** copies a section of given image */
137void bim_Flt16Image_copySection( struct bbs_Context* cpA,
138 struct bim_Flt16Image* ptrA,
139 const struct bim_Flt16Image* srcPtrA,
140 const struct bts_Int16Rect* sectionPtrA );
141
142/** imports real values from complex image */
143void bim_Flt16Image_importReal( struct bbs_Context* cpA,
144 struct bim_Flt16Image* dstPtrA,
145 const struct bim_ComplexImage* srcPtrA );
146
147/** imports imaginary values from complex image */
148void bim_Flt16Image_importImag( struct bbs_Context* cpA,
149 struct bim_Flt16Image* dstPtrA,
150 const struct bim_ComplexImage* srcPtrA );
151
152/** imports magnitudes from complex image */
153void bim_Flt16Image_importAbs( struct bbs_Context* cpA,
154 struct bim_Flt16Image* dstPtrA,
155 const struct bim_ComplexImage* srcPtrA );
156
157/** imports phases from complex image */
158void bim_Flt16Image_importPhase( struct bbs_Context* cpA,
159 struct bim_Flt16Image* dstPtrA,
160 const struct bim_ComplexImage* srcPtrA );
161
162
163#endif /* bim_FLT16_IMAGE_EM_H */
164