00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef DEFCT
00038 #define DEFCT
00039
00040
00041
00042 #include <vector>
00043
00044
00045 namespace jafar{
00046 namespace lines{
00047 #define MAXPOINTS 2000
00048
00049 #ifndef TRUE
00050 #define TRUE 1
00051 #endif
00052
00053 #ifndef FALSE
00054 #define FALSE 0
00055 #endif
00056
00057
00058
00059 class CHAINE
00060 {
00061 public:
00062 int num;
00063 int flag;
00064 short npoints;
00065 char *local;
00066 short *x, *y;
00067 };
00068
00069
00070
00071
00072 #define ctnum(c) ((c)->num)
00073 #define ctflag(c) ((c)->flag)
00074 #define ctnpts(c) ((c)->npoints)
00075 #define ctlocal(c) ((c)->local)
00076 #define ctx(c) ((c)->x)
00077 #define cty(c) ((c)->y)
00078 #define ct_x(c,i) ((c)->x[i])
00079 #define ct_y(c,i) ((c)->y[i])
00080
00081
00082
00083 #define CT_FERMEE 0x01
00084
00085
00086
00087 #define typchaine 120
00088
00089
00090 #define Cf_Ctfic 155
00091
00092 #define ERR_CT_INIT ErrNum(Cf_Ctfic, 1)
00093
00094
00095
00100 class IMCT{
00101 public:
00102
00103 std::vector<CHAINE*> liste;
00104 int nchains;
00105 int di, dj;
00106 };
00107
00108
00109
00110
00111
00112 #define listect(c) ((c)->liste)
00113 #define dict(c) ((c)->di)
00114 #define djct(c) ((c)->dj)
00115 #define nimct(c) ((c)->nchains)
00116
00117
00118
00119
00123
00124
00125 void ExtractContours1(char *input, IMCT* output, int di,int dj, int c_i0, int c_j0,int di0,int dj0, int up_thr, int down_thr, int min_length);
00126 void seuilhy(IMCT* output, int c_i0,int c_j0, int di0, int dj0, int sh, int sb, int mlen);
00127 int confcont(int ip, int seuil, int il, int ic, int sb, int mlen, int *sens, int *direction);
00128 int get_direction(int i,int j, int in, int jn);
00129 void destroy_leftright(int dir, int ip);
00130 void initChain(CHAINE* chain, int nPoints);
00131
00132
00133 }
00134 }
00135 #endif