Main Page | Alphabetical List | Class List | File List | Class Members | File Members

y:/PUC/Realidade Virtual/trabalhos/raclib/src/racdetect.h

Go to the documentation of this file.
00001 #ifndef _RAC_DETECT_H
00002 #define _RAC_DETECT_H
00003 
00004 #include <ds/list.h>
00005 #include "ds/arrayold.h"
00006 
00007 #ifndef NULL
00008 #define NULL 0
00009 #endif
00010 
00011 #ifndef BYTE
00012 #define BYTE unsigned char
00013 #endif
00014 
00015 #ifndef ROUND
00016 #define ROUND(x) (int)  ( (x>0) ? (x+=0.5) : (x-=0.5) )
00017 #endif
00018 
00022 struct RacPixel
00023 {
00024    int x;
00025    int y;
00026 };
00027 
00029 typedef DsArrayOld<RacPixel*> RacPixelArray;
00030 
00036 struct RacLabel
00037 {
00038    bool draw;     
00039    int nPixel;    
00040    int nVertices; 
00041    int labelId;   
00042    RacPixelArray *pixelArray;    
00043    RacPixelArray *verticesArray; 
00044 
00045    RacPixel vertices[4];   
00046 };
00047 
00048 
00050 typedef DsPList<RacLabel> RacLabelList;
00051 
00053 typedef DsPListIterator<RacLabel> RacLabelListItr;
00054 
00060 class Rac
00061 {
00062 public:
00063 
00064    Rac();
00065    ~Rac();
00066 
00071    void setSize(const int width, const int height);
00072 
00074    void find(BYTE *imgSrc);
00075 
00077    void findVertices();
00078 
00080    void reset();
00081 
00082    RacLabelList labelList;  
00083    int *imgLabel;
00084    bool ok;
00085 
00086 private:
00087 
00094    void findRecur(int x, int y, int label, unsigned int depth);
00095 
00102    int chainHull( RacPixelArray &P, int n, RacPixelArray &H);
00103 
00104    int isLeft( RacPixel P0, RacPixel P1, RacPixel P2 );
00105 
00111    bool filterVertices(RacPixelArray &verticesArray, int size, RacPixel *vertices);
00112 
00114    float dot(RacPixel &a, RacPixel &b, RacPixel &c);
00115    static int label;
00116    int width;
00117    int height;
00118    BYTE *img;
00119    
00120    RacLabelListItr *labelItr;
00121 
00122    unsigned int nextPoolPixel;
00123    RacPixelArray pool;  
00124 };
00125 
00126 #endif

Generated on Fri Dec 12 10:47:24 2003 for RacLib by doxygen 1.3.4