CVD 0.8
|
00001 template <class C> inline bool is_corner_9(const byte* p, const int w, const int barrier) { 00002 const int w3 = 3*w; 00003 const int t = C::prep_t(*p, barrier); 00004 if (!C::eval(p[-1-w3],t)) { // ???????????????- 00005 if (!C::eval(p[w3],t)) { // ????????-??????- 00006 return false; 00007 } // ????????@??????- 00008 if (!C::eval(p[1+w3],t)) { // ???????-@??????- 00009 return false; 00010 } // ???????@@??????- 00011 if (!C::eval(p[2+2*w],t)) { // ??????-@@??????- 00012 return false; 00013 } // ??????@@@??????- 00014 if (!C::eval(p[3+w],t)) { // ?????-@@@??????- 00015 if (!C::eval(p[-2-2*w],t)) { // ?????-@@@?????-- 00016 return false; 00017 } // ?????-@@@?????@- 00018 if (!C::eval(p[-3-w],t)) { // ?????-@@@????-@- 00019 return false; 00020 } // ?????-@@@????@@- 00021 if (!C::eval(p[-1+w3],t)) { // ?????-@@@-???@@- 00022 return false; 00023 } // ?????-@@@@???@@- 00024 if (!C::eval(p[-2+2*w],t)) { // ?????-@@@@-??@@- 00025 return false; 00026 } // ?????-@@@@@??@@- 00027 if (!C::eval(p[-3+w],t)) { // ?????-@@@@@-?@@- 00028 return false; 00029 } // ?????-@@@@@@?@@- 00030 if (!C::eval(p[-3],t)) { // ?????-@@@@@@-@@- 00031 return false; 00032 } // ?????-@@@@@@@@@- 00033 return true; 00034 } // ?????@@@@??????- 00035 if (!C::eval(p[3],t)) { // ????-@@@@??????- 00036 if (!C::eval(p[-3-w],t)) { // ????-@@@@????-?- 00037 return false; 00038 } // ????-@@@@????@?- 00039 if (!C::eval(p[-1+w3],t)) { // ????-@@@@-???@?- 00040 return false; 00041 } // ????-@@@@@???@?- 00042 if (!C::eval(p[-2+2*w],t)) { // ????-@@@@@-??@?- 00043 return false; 00044 } // ????-@@@@@@??@?- 00045 if (!C::eval(p[-3+w],t)) { // ????-@@@@@@-?@?- 00046 return false; 00047 } // ????-@@@@@@@?@?- 00048 if (!C::eval(p[-3],t)) { // ????-@@@@@@@-@?- 00049 return false; 00050 } // ????-@@@@@@@@@?- 00051 return true; 00052 } // ????@@@@@??????- 00053 if (!C::eval(p[3-w],t)) { // ???-@@@@@??????- 00054 if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-?????- 00055 return false; 00056 } // ???-@@@@@@?????- 00057 if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@-????- 00058 return false; 00059 } // ???-@@@@@@@????- 00060 if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@-???- 00061 return false; 00062 } // ???-@@@@@@@@???- 00063 if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-??- 00064 return false; 00065 } // ???-@@@@@@@@@??- 00066 return true; 00067 } // ???@@@@@@??????- 00068 if (!C::eval(p[-1+w3],t)) { // ???@@@@@@-?????- 00069 if (!C::eval(p[-w3],t)) { // -??@@@@@@-?????- 00070 return false; 00071 } // @??@@@@@@-?????- 00072 if (!C::eval(p[1-w3],t)) { // @-?@@@@@@-?????- 00073 return false; 00074 } // @@?@@@@@@-?????- 00075 if (!C::eval(p[2-2*w],t)) { // @@-@@@@@@-?????- 00076 return false; 00077 } // @@@@@@@@@-?????- 00078 return true; 00079 } // ???@@@@@@@?????- 00080 if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@@?????- 00081 if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-????- 00082 return false; 00083 } // ??-@@@@@@@@????- 00084 if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-???- 00085 return false; 00086 } // ??-@@@@@@@@@???- 00087 return true; 00088 } // ??@@@@@@@@?????- 00089 if (!C::eval(p[-2+2*w],t)) { // ??@@@@@@@@-????- 00090 if (!C::eval(p[1-w3],t)) { // ?-@@@@@@@@-????- 00091 return false; 00092 } // ?@@@@@@@@@-????- 00093 return true; 00094 } // ??@@@@@@@@@????- 00095 return true; 00096 } // ???????????????@ 00097 if (!C::eval(p[-2-2*w],t)) { // ??????????????-@ 00098 if (!C::eval(p[3+w],t)) { // ?????-????????-@ 00099 return false; 00100 } // ?????@????????-@ 00101 if (!C::eval(p[1+w3],t)) { // ?????@?-??????-@ 00102 return false; 00103 } // ?????@?@??????-@ 00104 if (!C::eval(p[2+2*w],t)) { // ?????@-@??????-@ 00105 return false; 00106 } // ?????@@@??????-@ 00107 if (!C::eval(p[3],t)) { // ????-@@@??????-@ 00108 if (!C::eval(p[-3-w],t)) { // ????-@@@?????--@ 00109 return false; 00110 } // ????-@@@?????@-@ 00111 if (!C::eval(p[-3],t)) { // ????-@@@????-@-@ 00112 return false; 00113 } // ????-@@@????@@-@ 00114 if (!C::eval(p[w3],t)) { // ????-@@@-???@@-@ 00115 return false; 00116 } // ????-@@@@???@@-@ 00117 if (!C::eval(p[-1+w3],t)) { // ????-@@@@-??@@-@ 00118 return false; 00119 } // ????-@@@@@??@@-@ 00120 if (!C::eval(p[-2+2*w],t)) { // ????-@@@@@-?@@-@ 00121 return false; 00122 } // ????-@@@@@@?@@-@ 00123 if (!C::eval(p[-3+w],t)) { // ????-@@@@@@-@@-@ 00124 return false; 00125 } // ????-@@@@@@@@@-@ 00126 return true; 00127 } // ????@@@@??????-@ 00128 if (!C::eval(p[3-w],t)) { // ???-@@@@??????-@ 00129 if (!C::eval(p[-3],t)) { // ???-@@@@????-?-@ 00130 return false; 00131 } // ???-@@@@????@?-@ 00132 if (!C::eval(p[w3],t)) { // ???-@@@@-???@?-@ 00133 return false; 00134 } // ???-@@@@@???@?-@ 00135 if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-??@?-@ 00136 return false; 00137 } // ???-@@@@@@??@?-@ 00138 if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@-?@?-@ 00139 return false; 00140 } // ???-@@@@@@@?@?-@ 00141 if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@-@?-@ 00142 return false; 00143 } // ???-@@@@@@@@@?-@ 00144 return true; 00145 } // ???@@@@@??????-@ 00146 if (!C::eval(p[2-2*w],t)) { // ??-@@@@@??????-@ 00147 if (!C::eval(p[w3],t)) { // ??-@@@@@-?????-@ 00148 return false; 00149 } // ??-@@@@@@?????-@ 00150 if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-????-@ 00151 return false; 00152 } // ??-@@@@@@@????-@ 00153 if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-???-@ 00154 return false; 00155 } // ??-@@@@@@@@???-@ 00156 if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-??-@ 00157 return false; 00158 } // ??-@@@@@@@@@??-@ 00159 return true; 00160 } // ??@@@@@@??????-@ 00161 if (!C::eval(p[1-w3],t)) { // ?-@@@@@@??????-@ 00162 if (!C::eval(p[w3],t)) { // ?-@@@@@@-?????-@ 00163 return false; 00164 } // ?-@@@@@@@?????-@ 00165 if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-????-@ 00166 return false; 00167 } // ?-@@@@@@@@????-@ 00168 if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-???-@ 00169 return false; 00170 } // ?-@@@@@@@@@???-@ 00171 return true; 00172 } // ?@@@@@@@??????-@ 00173 if (!C::eval(p[-w3],t)) { // -@@@@@@@??????-@ 00174 if (!C::eval(p[w3],t)) { // -@@@@@@@-?????-@ 00175 return false; 00176 } // -@@@@@@@@?????-@ 00177 if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-????-@ 00178 return false; 00179 } // -@@@@@@@@@????-@ 00180 return true; 00181 } // @@@@@@@@??????-@ 00182 return true; 00183 } // ??????????????@@ 00184 if (!C::eval(p[-w3],t)) { // -?????????????@@ 00185 if (!C::eval(p[1+w3],t)) { // -??????-??????@@ 00186 return false; 00187 } // -??????@??????@@ 00188 if (!C::eval(p[-1+w3],t)) { // -??????@?-????@@ 00189 return false; 00190 } // -??????@?@????@@ 00191 if (!C::eval(p[w3],t)) { // -??????@-@????@@ 00192 return false; 00193 } // -??????@@@????@@ 00194 if (!C::eval(p[-2+2*w],t)) { // -??????@@@-???@@ 00195 if (!C::eval(p[2+2*w],t)) { // -?????-@@@-???@@ 00196 return false; 00197 } // -?????@@@@-???@@ 00198 if (!C::eval(p[3+w],t)) { // -????-@@@@-???@@ 00199 return false; 00200 } // -????@@@@@-???@@ 00201 if (!C::eval(p[1-w3],t)) { // --???@@@@@-???@@ 00202 return false; 00203 } // -@???@@@@@-???@@ 00204 if (!C::eval(p[2-2*w],t)) { // -@-??@@@@@-???@@ 00205 return false; 00206 } // -@@??@@@@@-???@@ 00207 if (!C::eval(p[3-w],t)) { // -@@-?@@@@@-???@@ 00208 return false; 00209 } // -@@@?@@@@@-???@@ 00210 if (!C::eval(p[3],t)) { // -@@@-@@@@@-???@@ 00211 return false; 00212 } // -@@@@@@@@@-???@@ 00213 return true; 00214 } // -??????@@@@???@@ 00215 if (!C::eval(p[-3+w],t)) { // -??????@@@@-??@@ 00216 if (!C::eval(p[2+2*w],t)) { // -?????-@@@@-??@@ 00217 return false; 00218 } // -?????@@@@@-??@@ 00219 if (!C::eval(p[2-2*w],t)) { // -?-???@@@@@-??@@ 00220 return false; 00221 } // -?@???@@@@@-??@@ 00222 if (!C::eval(p[3-w],t)) { // -?@-??@@@@@-??@@ 00223 return false; 00224 } // -?@@??@@@@@-??@@ 00225 if (!C::eval(p[3],t)) { // -?@@-?@@@@@-??@@ 00226 return false; 00227 } // -?@@@?@@@@@-??@@ 00228 if (!C::eval(p[3+w],t)) { // -?@@@-@@@@@-??@@ 00229 return false; 00230 } // -?@@@@@@@@@-??@@ 00231 return true; 00232 } // -??????@@@@@??@@ 00233 if (!C::eval(p[-3],t)) { // -??????@@@@@-?@@ 00234 if (!C::eval(p[3-w],t)) { // -??-???@@@@@-?@@ 00235 return false; 00236 } // -??@???@@@@@-?@@ 00237 if (!C::eval(p[3],t)) { // -??@-??@@@@@-?@@ 00238 return false; 00239 } // -??@@??@@@@@-?@@ 00240 if (!C::eval(p[3+w],t)) { // -??@@-?@@@@@-?@@ 00241 return false; 00242 } // -??@@@?@@@@@-?@@ 00243 if (!C::eval(p[2+2*w],t)) { // -??@@@-@@@@@-?@@ 00244 return false; 00245 } // -??@@@@@@@@@-?@@ 00246 return true; 00247 } // -??????@@@@@@?@@ 00248 if (!C::eval(p[-3-w],t)) { // -??????@@@@@@-@@ 00249 if (!C::eval(p[3],t)) { // -???-??@@@@@@-@@ 00250 return false; 00251 } // -???@??@@@@@@-@@ 00252 if (!C::eval(p[3+w],t)) { // -???@-?@@@@@@-@@ 00253 return false; 00254 } // -???@@?@@@@@@-@@ 00255 if (!C::eval(p[2+2*w],t)) { // -???@@-@@@@@@-@@ 00256 return false; 00257 } // -???@@@@@@@@@-@@ 00258 return true; 00259 } // -??????@@@@@@@@@ 00260 return true; 00261 } // @?????????????@@ 00262 if (!C::eval(p[-3-w],t)) { // @????????????-@@ 00263 if (!C::eval(p[2+2*w],t)) { // @?????-??????-@@ 00264 return false; 00265 } // @?????@??????-@@ 00266 if (!C::eval(p[3+w],t)) { // @????-@??????-@@ 00267 return false; 00268 } // @????@@??????-@@ 00269 if (!C::eval(p[3],t)) { // @???-@@??????-@@ 00270 return false; 00271 } // @???@@@??????-@@ 00272 if (!C::eval(p[3-w],t)) { // @??-@@@??????-@@ 00273 if (!C::eval(p[-3],t)) { // @??-@@@?????--@@ 00274 return false; 00275 } // @??-@@@?????@-@@ 00276 if (!C::eval(p[-3+w],t)) { // @??-@@@????-@-@@ 00277 return false; 00278 } // @??-@@@????@@-@@ 00279 if (!C::eval(p[1+w3],t)) { // @??-@@@-???@@-@@ 00280 return false; 00281 } // @??-@@@@???@@-@@ 00282 if (!C::eval(p[w3],t)) { // @??-@@@@-??@@-@@ 00283 return false; 00284 } // @??-@@@@@??@@-@@ 00285 if (!C::eval(p[-1+w3],t)) { // @??-@@@@@-?@@-@@ 00286 return false; 00287 } // @??-@@@@@@?@@-@@ 00288 if (!C::eval(p[-2+2*w],t)) { // @??-@@@@@@-@@-@@ 00289 return false; 00290 } // @??-@@@@@@@@@-@@ 00291 return true; 00292 } // @??@@@@??????-@@ 00293 if (!C::eval(p[2-2*w],t)) { // @?-@@@@??????-@@ 00294 if (!C::eval(p[-3+w],t)) { // @?-@@@@????-?-@@ 00295 return false; 00296 } // @?-@@@@????@?-@@ 00297 if (!C::eval(p[1+w3],t)) { // @?-@@@@-???@?-@@ 00298 return false; 00299 } // @?-@@@@@???@?-@@ 00300 if (!C::eval(p[w3],t)) { // @?-@@@@@-??@?-@@ 00301 return false; 00302 } // @?-@@@@@@??@?-@@ 00303 if (!C::eval(p[-1+w3],t)) { // @?-@@@@@@-?@?-@@ 00304 return false; 00305 } // @?-@@@@@@@?@?-@@ 00306 if (!C::eval(p[-2+2*w],t)) { // @?-@@@@@@@-@?-@@ 00307 return false; 00308 } // @?-@@@@@@@@@?-@@ 00309 return true; 00310 } // @?@@@@@??????-@@ 00311 if (!C::eval(p[1-w3],t)) { // @-@@@@@??????-@@ 00312 if (!C::eval(p[1+w3],t)) { // @-@@@@@-?????-@@ 00313 return false; 00314 } // @-@@@@@@?????-@@ 00315 if (!C::eval(p[w3],t)) { // @-@@@@@@-????-@@ 00316 return false; 00317 } // @-@@@@@@@????-@@ 00318 if (!C::eval(p[-1+w3],t)) { // @-@@@@@@@-???-@@ 00319 return false; 00320 } // @-@@@@@@@@???-@@ 00321 if (!C::eval(p[-2+2*w],t)) { // @-@@@@@@@@-??-@@ 00322 return false; 00323 } // @-@@@@@@@@@??-@@ 00324 return true; 00325 } // @@@@@@@??????-@@ 00326 return true; 00327 } // @????????????@@@ 00328 if (!C::eval(p[1-w3],t)) { // @-???????????@@@ 00329 if (!C::eval(p[-2+2*w],t)) { // @-????????-??@@@ 00330 return false; 00331 } // @-????????@??@@@ 00332 if (!C::eval(p[-1+w3],t)) { // @-???????-@??@@@ 00333 return false; 00334 } // @-???????@@??@@@ 00335 if (!C::eval(p[w3],t)) { // @-??????-@@??@@@ 00336 return false; 00337 } // @-??????@@@??@@@ 00338 if (!C::eval(p[-3+w],t)) { // @-??????@@@-?@@@ 00339 if (!C::eval(p[1+w3],t)) { // @-?????-@@@-?@@@ 00340 return false; 00341 } // @-?????@@@@-?@@@ 00342 if (!C::eval(p[2+2*w],t)) { // @-????-@@@@-?@@@ 00343 return false; 00344 } // @-????@@@@@-?@@@ 00345 if (!C::eval(p[2-2*w],t)) { // @--???@@@@@-?@@@ 00346 return false; 00347 } // @-@???@@@@@-?@@@ 00348 if (!C::eval(p[3-w],t)) { // @-@-??@@@@@-?@@@ 00349 return false; 00350 } // @-@@??@@@@@-?@@@ 00351 if (!C::eval(p[3],t)) { // @-@@-?@@@@@-?@@@ 00352 return false; 00353 } // @-@@@?@@@@@-?@@@ 00354 if (!C::eval(p[3+w],t)) { // @-@@@-@@@@@-?@@@ 00355 return false; 00356 } // @-@@@@@@@@@-?@@@ 00357 return true; 00358 } // @-??????@@@@?@@@ 00359 if (!C::eval(p[-3],t)) { // @-??????@@@@-@@@ 00360 if (!C::eval(p[1+w3],t)) { // @-?????-@@@@-@@@ 00361 return false; 00362 } // @-?????@@@@@-@@@ 00363 if (!C::eval(p[3-w],t)) { // @-?-???@@@@@-@@@ 00364 return false; 00365 } // @-?@???@@@@@-@@@ 00366 if (!C::eval(p[3],t)) { // @-?@-??@@@@@-@@@ 00367 return false; 00368 } // @-?@@??@@@@@-@@@ 00369 if (!C::eval(p[3+w],t)) { // @-?@@-?@@@@@-@@@ 00370 return false; 00371 } // @-?@@@?@@@@@-@@@ 00372 if (!C::eval(p[2+2*w],t)) { // @-?@@@-@@@@@-@@@ 00373 return false; 00374 } // @-?@@@@@@@@@-@@@ 00375 return true; 00376 } // @-??????@@@@@@@@ 00377 return true; 00378 } // @@???????????@@@ 00379 if (!C::eval(p[-3],t)) { // @@??????????-@@@ 00380 if (!C::eval(p[3+w],t)) { // @@???-??????-@@@ 00381 return false; 00382 } // @@???@??????-@@@ 00383 if (!C::eval(p[3],t)) { // @@??-@??????-@@@ 00384 return false; 00385 } // @@??@@??????-@@@ 00386 if (!C::eval(p[3-w],t)) { // @@?-@@??????-@@@ 00387 return false; 00388 } // @@?@@@??????-@@@ 00389 if (!C::eval(p[2-2*w],t)) { // @@-@@@??????-@@@ 00390 if (!C::eval(p[-3+w],t)) { // @@-@@@?????--@@@ 00391 return false; 00392 } // @@-@@@?????@-@@@ 00393 if (!C::eval(p[-2+2*w],t)) { // @@-@@@????-@-@@@ 00394 return false; 00395 } // @@-@@@????@@-@@@ 00396 if (!C::eval(p[2+2*w],t)) { // @@-@@@-???@@-@@@ 00397 return false; 00398 } // @@-@@@@???@@-@@@ 00399 if (!C::eval(p[1+w3],t)) { // @@-@@@@-??@@-@@@ 00400 return false; 00401 } // @@-@@@@@??@@-@@@ 00402 if (!C::eval(p[w3],t)) { // @@-@@@@@-?@@-@@@ 00403 return false; 00404 } // @@-@@@@@@?@@-@@@ 00405 if (!C::eval(p[-1+w3],t)) { // @@-@@@@@@-@@-@@@ 00406 return false; 00407 } // @@-@@@@@@@@@-@@@ 00408 return true; 00409 } // @@@@@@??????-@@@ 00410 return true; 00411 } // @@??????????@@@@ 00412 if (!C::eval(p[2-2*w],t)) { // @@-?????????@@@@ 00413 if (!C::eval(p[-1+w3],t)) { // @@-??????-??@@@@ 00414 return false; 00415 } // @@-??????@??@@@@ 00416 if (!C::eval(p[-2+2*w],t)) { // @@-??????@-?@@@@ 00417 return false; 00418 } // @@-??????@@?@@@@ 00419 if (!C::eval(p[-3+w],t)) { // @@-??????@@-@@@@ 00420 return false; 00421 } // @@-??????@@@@@@@ 00422 return true; 00423 } // @@@?????????@@@@ 00424 if (!C::eval(p[-3+w],t)) { // @@@????????-@@@@ 00425 if (!C::eval(p[3-w],t)) { // @@@-???????-@@@@ 00426 return false; 00427 } // @@@@???????-@@@@ 00428 if (!C::eval(p[3],t)) { // @@@@-??????-@@@@ 00429 return false; 00430 } // @@@@@??????-@@@@ 00431 return true; 00432 } // @@@????????@@@@@ 00433 if (!C::eval(p[3-w],t)) { // @@@-???????@@@@@ 00434 if (!C::eval(p[-2+2*w],t)) { // @@@-??????-@@@@@ 00435 return false; 00436 } // @@@-??????@@@@@@ 00437 return true; 00438 } // @@@@???????@@@@@ 00439 return true; 00440 } 00441