• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
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_COMPLEX_IMAGE_EM_H
18  #define bim_COMPLEX_IMAGE_EM_H
19  
20  /* ---- includes ----------------------------------------------------------- */
21  
22  #include "b_BasicEm/Context.h"
23  #include "b_BasicEm/ComplexArr.h"
24  #include "b_TensorEm/Int16Rect.h"
25  #include "b_TensorEm/Flt16Alt2D.h"
26  
27  /* ---- related objects  --------------------------------------------------- */
28  
29  struct bim_APhImage;
30  
31  /* ---- typedefs ----------------------------------------------------------- */
32  
33  /* ---- constants ---------------------------------------------------------- */
34  
35  /* data format version number */
36  #define bim_COMPLEX_IMAGE_VERSION 100
37  
38  /* ---- object definition -------------------------------------------------- */
39  
40  /** image of complex values */
41  struct bim_ComplexImage
42  {
43  
44  	/* ---- private data --------------------------------------------------- */
45  
46  	/* ---- public data ---------------------------------------------------- */
47  
48  	/** width of image */
49  	uint32 widthE;
50  
51  	/** height of image */
52  	uint32 heightE;
53  
54  	/** array of bytes */
55  	struct bbs_ComplexArr arrE;
56  };
57  
58  /* ---- associated objects ------------------------------------------------- */
59  
60  /* ---- external functions ------------------------------------------------- */
61  
62  /* ---- \ghd{ constructor/destructor } ------------------------------------- */
63  
64  /** initializes bim_ComplexImage  */
65  void bim_ComplexImage_init( struct bbs_Context* cpA,
66  						    struct bim_ComplexImage* ptrA );
67  
68  /** frees bim_ComplexImage  */
69  void bim_ComplexImage_exit( struct bbs_Context* cpA,
70  						    struct bim_ComplexImage* ptrA );
71  
72  /* ---- \ghd{ operators } -------------------------------------------------- */
73  
74  /** copy operator */
75  void bim_ComplexImage_copy( struct bbs_Context* cpA,
76  						    struct bim_ComplexImage* ptrA,
77  							const struct bim_ComplexImage* srcPtrA );
78  
79  /** equal operator */
80  flag bim_ComplexImage_equal( struct bbs_Context* cpA,
81  							 const struct bim_ComplexImage* ptrA,
82  							 const struct bim_ComplexImage* srcPtrA );
83  
84  /* ---- \ghd{ query functions } -------------------------------------------- */
85  
86  /** checksum of image (for debugging purposes) */
87  uint32 bim_ComplexImage_checkSum( struct bbs_Context* cpA,
88  								  const struct bim_ComplexImage* ptrA );
89  
90  /** calculates the amount of heap memory needed (16bit words) if created with given parameters */
91  uint32 bim_ComplexImage_heapSize( struct bbs_Context* cpA,
92  								  const struct bim_ComplexImage* ptrA,
93  								  uint32 widthA, uint32 heightA );
94  
95  /* ---- \ghd{ modify functions } ------------------------------------------- */
96  
97  /** allocates memory for bim_ComplexImage */
98  void bim_ComplexImage_create( struct bbs_Context* cpA,
99  							  struct bim_ComplexImage* ptrA,
100  						    uint32 widthA,
101  							uint32 heightA,
102   					        struct bbs_MemSeg* mspA );
103  
104  /** sets image size */
105  void bim_ComplexImage_size( struct bbs_Context* cpA,
106  						    struct bim_ComplexImage* ptrA,
107  							uint32 widthA,
108  							uint32 heightA );
109  
110  /* ---- \ghd{ memory I/O } ------------------------------------------------- */
111  
112  /** word size (16-bit) object needs when written to memory */
113  uint32 bim_ComplexImage_memSize( struct bbs_Context* cpA,
114  								 const struct bim_ComplexImage* ptrA );
115  
116  /** writes object to memory; returns number of words (16-bit) written */
117  uint32 bim_ComplexImage_memWrite( struct bbs_Context* cpA,
118  								  const struct bim_ComplexImage* ptrA,
119  								  uint16* memPtrA );
120  
121  /** reads object from memory; returns number of words (16-bit) read */
122  uint32 bim_ComplexImage_memRead( struct bbs_Context* cpA,
123  								 struct bim_ComplexImage* ptrA,
124  								 const uint16* memPtrA,
125   					             struct bbs_MemSeg* mspA );
126  
127  /* ---- \ghd{ exec functions } --------------------------------------------- */
128  
129  /** sets all pixels to one value */
130  void bim_ComplexImage_setAllPixels( struct bbs_Context* cpA,
131  								    struct bim_ComplexImage* ptrA,
132  									struct bbs_Complex valueA );
133  
134  /** copies a section of given image */
135  void bim_ComplexImage_copySection( struct bbs_Context* cpA,
136  								   struct bim_ComplexImage* ptrA,
137  								 const struct bim_ComplexImage* srcPtrA,
138  								 const struct bts_Int16Rect* sectionPtrA );
139  
140  /** import abs-phase image */
141  void bim_ComplexImage_importAPh( struct bbs_Context* cpA,
142  								 struct bim_ComplexImage* dstPtrA,
143  								 const struct bim_APhImage* srcPtrA );
144  
145  #endif /* bim_COMPLEX_IMAGE_EM_H */
146  
147