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