00001 00012 #ifndef __SCAN_LINE_H__ 00013 #define __SCAN_LINE_H__ 00014 00015 #include <node_vec.h> 00016 00020 class ScanLine { 00021 public: 00028 ScanLine(NodeIndex start, NodeIndex end); 00029 00034 NodeIndex getCurrent(); 00035 00040 bool hasNext(); 00041 00045 void next(); 00046 00047 private: 00048 #ifndef COMB_SCAN_LINE 00049 00055 AxIndex getError(Axis testAx); 00056 #else 00057 00064 AxIndex getErrorComb(AxComb testAxComb); 00065 #endif 00066 00067 #ifndef COMB_SCAN_LINE 00068 00073 NodeIndex getErrorVec(Axis testAx); 00074 #else 00075 00081 NodeIndex getErrorCombVec(AxComb testAxComb); 00082 #endif 00083 00084 #ifndef COMB_SCAN_LINE 00085 00089 NodeIndex getNext(Axis ax); 00090 #else 00091 00095 NodeIndex getNextComb(AxComb axComb); 00096 #endif 00097 00103 AxIndex maxError(NodeIndex testError); 00104 00110 AxIndex minError(NodeIndex testError); 00111 00112 #ifndef COMB_SCAN_LINE 00113 00116 void refreshError(Axis stepAx); 00117 #else 00118 00121 void refreshErrorComb(AxComb stepAxComb); 00122 #endif 00123 00127 NodeIndex current; 00128 00132 NodeIndex dir; 00133 00137 NodeIndex end; 00138 00142 NodeIndex error; 00143 }; 00144 00145 #endif // ! __SCAN_LINE_H__