00001 #ifndef _TRANSFORM_H_ 00002 #define _TRANSFORM_H_ 00003 00004 // basic transform fns -- since we only need one type of transform at a time, 00005 // it would be a waste to make this more general. The transforms directory 00006 // should contain any number of source files which implement this header 00007 // with a particular transform. This was only a relinking is necessary to 00008 // change compatible transforms. As a result, there should be no data 00009 // members declared here, but should instead be static members of a source 00010 // file. All data members are therefore global, so this is not a class since 00011 // instantiation does not create local vars If there are worries about scoping, 00012 // just add in a namespace. 00013 00014 // The shift fns can be either in the current domain or using a shift theorem, 00015 // whichever is faster 00016 00017 #include "vuSimpleTypes.h" 00018 00019 namespace SpecFVRNS 00020 { 00021 00022 // general init/destroy 00023 void initTransforms(void); 00024 void destroyTransforms(void); 00025 00026 // inverse 2D transform -- out of place!! Put answer in y! 00027 void initTransform2D(dword XSize, dword YSize); 00028 void transform2D(float* x); 00029 void destroyTransform2D(void); 00030 00031 // 3D transform 00032 void initTransform3D(dword XSize, dword YSize, dword ZSize); 00033 void transform3D(float* x); 00034 void destroyTransform3D(void); 00035 00036 void shift2D(float* x, dword XSize, dword YSize); 00037 void shift_copy2D(float* dest, float* src, dword XSize, dword YSize); 00038 void shift3D(float* x, dword XSize, dword YSize, dword ZSize); 00039 00040 } // of namespace 00041 00042 #endif