SketchSpace.h
Go to the documentation of this file.00001
00002 #ifndef INCLUDED_SketchSpace_h
00003 #define INCLUDED_SketchSpace_h
00004
00005 #include "Shared/fmatSpatial.h"
00006 #include "Shared/BoundingBox.h"
00007 #include "Vision/colors.h"
00008
00009 #include "SketchTypes.h"
00010 #include "ShapeTypes.h"
00011 #include "SketchPool.h"
00012 #include "SketchIndices.h"
00013
00014 namespace DualCoding {
00015
00016 class ShapeSpace;
00017 template<typename T> class Sketch;
00018 class ViewerConnection;
00019
00020
00021
00022
00023
00024
00025
00026
00027 class SketchSpace {
00028 public:
00029 std::string name;
00030
00031 private:
00032 unsigned int width;
00033 unsigned int height;
00034 unsigned int numPixels;
00035 fmat::Transform Tmat;
00036 fmat::Transform Tmatinv;
00037
00038 int idCounter;
00039 int refreshCounter;
00040
00041 ShapeSpace* dualSpace;
00042
00043
00044
00045 SketchPool<bool> boolPool;
00046 SketchPool<uchar> ucharPool;
00047 SketchPool<usint> usintPool;
00048 SketchPool<uint> uintPool;
00049 SketchPool<float> floatPool;
00050 SketchPool<yuv> yuvPool;
00051
00052
00053 public:
00054
00055 int dummy;
00056
00057
00058
00059 Sketch<skindex> *idx;
00060 Sketch<skindex> *idxN;
00061 Sketch<skindex> *idxS;
00062 Sketch<skindex> *idxE;
00063 Sketch<skindex> *idxW;
00064 Sketch<skindex> *idxNE;
00065 Sketch<skindex> *idxNW;
00066 Sketch<skindex> *idxSE;
00067 Sketch<skindex> *idxSW;
00068
00069
00070 SketchSpace(std::string const _name, ReferenceFrameType_t _refFrameType,
00071 int const init_id, size_t const _width, size_t const _height);
00072
00073 ~SketchSpace();
00074
00075 ShapeSpace& getDualSpace() const { return *dualSpace; }
00076
00077
00078 void dumpSpace() const;
00079
00080
00081 void clear(bool clearRetained=true);
00082
00083
00084 unsigned int getWidth() const { return width; }
00085
00086 unsigned int getHeight() const { return height; }
00087
00088 unsigned int getNumPixels() const { return numPixels; }
00089
00090 int getRefreshCounter() const { return refreshCounter; }
00091 void bumpRefreshCounter() { ++refreshCounter; }
00092
00093
00094 void requireIdx();
00095
00096
00097 void requireIdx4way();
00098
00099
00100 void requireIdx8way();
00101
00102
00103 void freeIndexes();
00104
00105
00106 void resize(const size_t new_width, const size_t new_height);
00107
00108
00109 fmat::Transform& getTmat() { return Tmat; }
00110
00111
00112 fmat::Transform& getTmatinv() { return Tmatinv; }
00113
00114
00115 void setTmat(const fmat::Transform &mat);
00116
00117
00118 void setTmat(float scale=1, float tx=0, float ty=0);
00119
00120 void setTmat(const BoundingBox2D &b);
00121
00122
00123 void applyTmat(fmat::Column<3> &vec);
00124
00125
00126 void applyTmatinv(fmat::Column<3> &vec);
00127
00128
00129
00130 SketchPool<bool>& get_pool(const Sketch<bool>&) { return boolPool; }
00131 SketchPool<uchar>& get_pool(const Sketch<uchar>&) { return ucharPool; }
00132 SketchPool<usint>& get_pool(const Sketch<usint>&){ return usintPool; }
00133 SketchPool<uint>& get_pool(const Sketch<uint>&) { return uintPool; }
00134 SketchPool<float>& get_pool(const Sketch<float>&) { return floatPool; }
00135 SketchPool<yuv>& get_pool(const Sketch<yuv>&) { return yuvPool; }
00136
00137
00138
00139
00140
00141
00142
00143 ViewerConnection *viewer;
00144
00145
00146 std::string getTmatForGUI();
00147
00148
00149 std::string getSketchListForGUI();
00150
00151
00152 SketchDataRoot* retrieveSketch(int const id);
00153
00154
00155 protected:
00156
00157 void setIdx(Sketch<skindex>& indices, int const x, int const y, int const indexval);
00158
00159
00160 SketchSpace(const SketchSpace&);
00161 SketchSpace& operator= (const SketchSpace&);
00162 };
00163
00164 }
00165
00166 #endif