00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00025
00026 #ifndef __FLGR_CORE_IO_H
00027 #define __FLGR_CORE_IO_H
00028
00029 #include <flgrCoreTypes.h>
00030
00031 #define FLGR_GET_ARRAY(dtype,array,pos) flgr_get_array_##dtype((dtype*) array, pos)
00032
00033 static __inline__ void flgr_set_array_fgBIT(fgBIT *array, int pos, fgBIT value) {
00034 fgBIT val;
00035 fgBIT mask=0;
00036 int vectorbps = sizeof(fgBIT)<<3;
00037 int vectorSelect;
00038 int pixinVector;
00039 int nbdec;
00040
00041 vectorSelect = pos / vectorbps;
00042 pixinVector = pos % vectorbps;
00043
00044 nbdec = vectorbps-((fgBIT) 1)-pixinVector;
00045 mask = ((fgBIT) 1) << (nbdec);
00046
00047 val=array[vectorSelect];
00048 val &= (~mask);
00049 value = ((value)&((fgBIT) 1)) << nbdec;
00050 val |= value;
00051
00052 array[vectorSelect]=val;
00053
00054 }
00055
00056 static __inline__ void flgr_set_array_fgUINT8(fgUINT8* array, int pos, fgUINT8 value) {
00057 array[pos]=value;
00058 }
00059
00060 static __inline__ void flgr_set_array_fgUINT16(fgUINT16* array, int pos, fgUINT16 value) {
00061 array[pos]=value;
00062 }
00063
00064 static __inline__ void flgr_set_array_fgUINT32(fgUINT32* array, int pos, fgUINT32 value) {
00065 array[pos]=value;
00066 }
00067
00068 static __inline__ void flgr_set_array_fgUINT64(fgUINT64* array, int pos, fgUINT64 value) {
00069 array[pos]=value;
00070 }
00071
00072 static __inline__ void flgr_set_array_fgINT8(fgINT8* array, int pos, fgINT8 value) {
00073 array[pos]=value;
00074 }
00075
00076 static __inline__ void flgr_set_array_fgINT16(fgINT16* array, int pos, fgINT16 value) {
00077 array[pos]=value;
00078 }
00079
00080 static __inline__ void flgr_set_array_fgINT32(fgINT32* array, int pos, fgINT32 value) {
00081 array[pos]=value;
00082 }
00083
00084 static __inline__ void flgr_set_array_fgINT64(fgINT64* array, int pos, fgINT64 value) {
00085 array[pos]=value;
00086 }
00087
00088 static __inline__ void flgr_set_array_fgFLOAT32(fgFLOAT32* array, int pos, fgFLOAT32 value) {
00089 array[pos]=value;
00090 }
00091
00092 static __inline__ void flgr_set_array_fgFLOAT64(fgFLOAT64* array, int pos, fgFLOAT64 value) {
00093 array[pos]=value;
00094 }
00095
00096
00097
00098
00099 static __inline__ fgBIT flgr_get_array_fgBIT(fgBIT* array, int pos) {
00100 fgBIT val;
00101 fgBIT mask=0;
00102 int vectorbps = sizeof(fgBIT)<<3;
00103 int vectorSelect;
00104 int pixinVector;
00105 int nbdec;
00106
00107 vectorSelect = pos/vectorbps;
00108 pixinVector = pos % vectorbps;
00109
00110 nbdec = vectorbps-((fgBIT) 1)-pixinVector;
00111 mask = ((fgBIT) 1) << (nbdec);
00112
00113 val=array[vectorSelect];
00114 val &= mask;
00115 val = val >> nbdec;
00116 return val;
00117 }
00118
00119 static __inline__ fgUINT8 flgr_get_array_fgUINT8(fgUINT8* array, int pos) {
00120 return array[pos];
00121 }
00122
00123 static __inline__ fgUINT16 flgr_get_array_fgUINT16(fgUINT16* array, int pos) {
00124 return array[pos];
00125 }
00126
00127 static __inline__ fgUINT32 flgr_get_array_fgUINT32(fgUINT32* array, int pos) {
00128 return array[pos];
00129 }
00130
00131 static __inline__ fgUINT64 flgr_get_array_fgUINT64(fgUINT64* array, int pos) {
00132 return array[pos];
00133 }
00134
00135 static __inline__ fgINT8 flgr_get_array_fgINT8(fgINT8* array, int pos) {
00136 return array[pos];
00137 }
00138
00139 static __inline__ fgINT16 flgr_get_array_fgINT16(fgINT16* array, int pos) {
00140 return array[pos];
00141 }
00142
00143 static __inline__ fgINT32 flgr_get_array_fgINT32(fgINT32* array, int pos) {
00144 return array[pos];
00145 }
00146
00147 static __inline__ fgINT64 flgr_get_array_fgINT64(fgINT64* array, int pos) {
00148 return array[pos];
00149 }
00150
00151 static __inline__ fgFLOAT32 flgr_get_array_fgFLOAT32(fgFLOAT32* array, int pos) {
00152 return array[pos];
00153 }
00154
00155 static __inline__ fgFLOAT64 flgr_get_array_fgFLOAT64(fgFLOAT64* array, int pos) {
00156 return array[pos];
00157 }
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167 static __inline__ void flgr_get_data_array_vector_fgBIT(fgBIT *vector_array, fgBIT *data_array, int spp, int pos) {
00168 register fgBIT val;
00169 register int i,k;
00170
00171 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00172 val = flgr_get_array_fgBIT(data_array,i);
00173 flgr_set_array_fgBIT(vector_array,k,val);
00174 }
00175 }
00176
00177 static __inline__ void flgr_get_data_array_vector_fgUINT8(fgUINT8 *vector_array, fgUINT8 *data_array, int spp, int pos) {
00178 register fgUINT8 val;
00179 register int i,k;
00180
00181 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00182 val = flgr_get_array_fgUINT8(data_array,i);
00183 flgr_set_array_fgUINT8(vector_array,k,val);
00184 }
00185 }
00186
00187 static __inline__ void flgr_get_data_array_vector_fgUINT16(fgUINT16 *vector_array, fgUINT16 *data_array, int spp, int pos) {
00188 register fgUINT16 val;
00189 register int i,k;
00190
00191 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00192 val = flgr_get_array_fgUINT16(data_array,i);
00193 flgr_set_array_fgUINT16(vector_array,k,val);
00194 }
00195 }
00196
00197 static __inline__ void flgr_get_data_array_vector_fgUINT32(fgUINT32 *vector_array, fgUINT32 *data_array, int spp, int pos) {
00198 register fgUINT32 val;
00199 register int i,k;
00200
00201 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00202 val = flgr_get_array_fgUINT32(data_array,i);
00203 flgr_set_array_fgUINT32(vector_array,k,val);
00204 }
00205 }
00206
00207 static __inline__ void flgr_get_data_array_vector_fgINT8(fgINT8 *vector_array, fgINT8 *data_array, int spp, int pos) {
00208 register fgINT8 val;
00209 register int i,k;
00210
00211 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00212 val = flgr_get_array_fgINT8(data_array,i);
00213 flgr_set_array_fgINT8(vector_array,k,val);
00214 }
00215 }
00216
00217 static __inline__ void flgr_get_data_array_vector_fgINT16(fgINT16 *vector_array, fgINT16 *data_array, int spp, int pos) {
00218 register fgINT16 val;
00219 register int i,k;
00220
00221 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00222 val = flgr_get_array_fgINT16(data_array,i);
00223 flgr_set_array_fgINT16(vector_array,k,val);
00224 }
00225 }
00226
00227 static __inline__ void flgr_get_data_array_vector_fgINT32(fgINT32 *vector_array, fgINT32 *data_array, int spp, int pos) {
00228 register fgINT32 val;
00229 register int i,k;
00230
00231 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00232 val = flgr_get_array_fgINT32(data_array,i);
00233 flgr_set_array_fgINT32(vector_array,k,val);
00234 }
00235 }
00236
00237 static __inline__ void flgr_get_data_array_vector_fgFLOAT32(fgFLOAT32 *vector_array, fgFLOAT32 *data_array, int spp, int pos) {
00238 register fgFLOAT32 val;
00239 register int i,k;
00240
00241 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00242 val = flgr_get_array_fgFLOAT32(data_array,i);
00243 flgr_set_array_fgFLOAT32(vector_array,k,val);
00244 }
00245 }
00246
00247 static __inline__ void flgr_get_data_array_vector_fgFLOAT64(fgFLOAT64 *vector_array, fgFLOAT64 *data_array, int spp, int pos) {
00248 register fgFLOAT64 val;
00249 register int i,k;
00250
00251 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00252 val = flgr_get_array_fgFLOAT64(data_array,i);
00253 flgr_set_array_fgFLOAT64(vector_array,k,val);
00254 }
00255 }
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266 static __inline__ void flgr_set_data_array_vector_fgBIT(fgBIT *data_array, fgBIT *vector_array, int spp, int pos) {
00267 register fgBIT val;
00268 register int i,k;
00269
00270 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00271 val = flgr_get_array_fgBIT(vector_array,k);
00272 flgr_set_array_fgBIT(data_array,i,val);
00273 }
00274 }
00275
00276 static __inline__ void flgr_set_data_array_vector_fgUINT8(fgUINT8 *data_array, fgUINT8 *vector_array, int spp, int pos) {
00277 register fgUINT8 val;
00278 register int i,k;
00279
00280 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00281 val = flgr_get_array_fgUINT8(vector_array,k);
00282 flgr_set_array_fgUINT8(data_array,i,val);
00283 }
00284 }
00285
00286 static __inline__ void flgr_set_data_array_vector_fgUINT16(fgUINT16 *data_array, fgUINT16 *vector_array, int spp, int pos) {
00287 register fgUINT16 val;
00288 register int i,k;
00289
00290 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00291 val = flgr_get_array_fgUINT16(vector_array,k);
00292 flgr_set_array_fgUINT16(data_array,i,val);
00293 }
00294 }
00295
00296 static __inline__ void flgr_set_data_array_vector_fgUINT32(fgUINT32 *data_array, fgUINT32 *vector_array, int spp, int pos) {
00297 register fgUINT32 val;
00298 register int i,k;
00299
00300 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00301 val = flgr_get_array_fgUINT32(vector_array,k);
00302 flgr_set_array_fgUINT32(data_array,i,val);
00303 }
00304 }
00305
00306 static __inline__ void flgr_set_data_array_vector_fgINT8(fgINT8 *data_array, fgINT8 *vector_array, int spp, int pos) {
00307 register fgINT8 val;
00308 register int i,k;
00309
00310 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00311 val = flgr_get_array_fgINT8(vector_array,k);
00312 flgr_set_array_fgINT8(data_array,i,val);
00313 }
00314 }
00315
00316 static __inline__ void flgr_set_data_array_vector_fgINT16(fgINT16 *data_array, fgINT16 *vector_array, int spp, int pos) {
00317 register fgINT16 val;
00318 register int i,k;
00319
00320 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00321 val = flgr_get_array_fgINT16(vector_array,k);
00322 flgr_set_array_fgINT16(data_array,i,val);
00323 }
00324 }
00325
00326 static __inline__ void flgr_set_data_array_vector_fgINT32(fgINT32 *data_array, fgINT32 *vector_array, int spp, int pos) {
00327 register fgINT32 val;
00328 register int i,k;
00329
00330 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00331 val = flgr_get_array_fgINT32(vector_array,k);
00332 flgr_set_array_fgINT32(data_array,i,val);
00333 }
00334 }
00335
00336 static __inline__ void flgr_set_data_array_vector_fgFLOAT32(fgFLOAT32 *data_array, fgFLOAT32 *vector_array, int spp, int pos) {
00337 register fgFLOAT32 val;
00338 register int i,k;
00339
00340 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00341 val = flgr_get_array_fgFLOAT32(vector_array,k);
00342 flgr_set_array_fgFLOAT32(data_array,i,val);
00343 }
00344 }
00345
00346 static __inline__ void flgr_set_data_array_vector_fgFLOAT64(fgFLOAT64 *data_array, fgFLOAT64 *vector_array, int spp, int pos) {
00347 register fgFLOAT64 val;
00348 register int i,k;
00349
00350 for(k=0,i=pos*spp ; k<spp ; k++,i++) {
00351 val = flgr_get_array_fgFLOAT64(vector_array,k);
00352 flgr_set_array_fgFLOAT64(data_array,i,val);
00353 }
00354 }
00355
00356
00357
00358
00359
00360 #endif
00361
00362 #ifdef __cplusplus
00363 }
00364 #endif