CVD 0.8
cvd_src/corner_10.h
00001 template <class C> inline bool is_corner_10(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[3+w],t)) { // ?????-?????????-
00006             return false;
00007         } // ?????@?????????-
00008         if (!C::eval(p[2+2*w],t)) { // ?????@-????????-
00009             return false;
00010         } // ?????@@????????-
00011         if (!C::eval(p[-1+w3],t)) { // ?????@@??-?????-
00012             return false;
00013         } // ?????@@??@?????-
00014         if (!C::eval(p[1+w3],t)) { // ?????@@-?@?????-
00015             return false;
00016         } // ?????@@@?@?????-
00017         if (!C::eval(p[w3],t)) { // ?????@@@-@?????-
00018             return false;
00019         } // ?????@@@@@?????-
00020         if (!C::eval(p[-2+2*w],t)) { // ?????@@@@@-????-
00021             if (!C::eval(p[-w3],t)) { // -????@@@@@-????-
00022                 return false;
00023             } // @????@@@@@-????-
00024             if (!C::eval(p[3],t)) { // @???-@@@@@-????-
00025                 return false;
00026             } // @???@@@@@@-????-
00027             if (!C::eval(p[1-w3],t)) { // @-??@@@@@@-????-
00028                 return false;
00029             } // @@??@@@@@@-????-
00030             if (!C::eval(p[2-2*w],t)) { // @@-?@@@@@@-????-
00031                 return false;
00032             } // @@@?@@@@@@-????-
00033             if (!C::eval(p[3-w],t)) { // @@@-@@@@@@-????-
00034                 return false;
00035             } // @@@@@@@@@@-????-
00036             return true;
00037         } // ?????@@@@@@????-
00038         if (!C::eval(p[-3+w],t)) { // ?????@@@@@@-???-
00039             if (!C::eval(p[3],t)) { // ????-@@@@@@-???-
00040                 return false;
00041             } // ????@@@@@@@-???-
00042             if (!C::eval(p[1-w3],t)) { // ?-??@@@@@@@-???-
00043                 return false;
00044             } // ?@??@@@@@@@-???-
00045             if (!C::eval(p[2-2*w],t)) { // ?@-?@@@@@@@-???-
00046                 return false;
00047             } // ?@@?@@@@@@@-???-
00048             if (!C::eval(p[3-w],t)) { // ?@@-@@@@@@@-???-
00049                 return false;
00050             } // ?@@@@@@@@@@-???-
00051             return true;
00052         } // ?????@@@@@@@???-
00053         if (!C::eval(p[3],t)) { // ????-@@@@@@@???-
00054             if (!C::eval(p[-3],t)) { // ????-@@@@@@@-??-
00055                 return false;
00056             } // ????-@@@@@@@@??-
00057             if (!C::eval(p[-3-w],t)) { // ????-@@@@@@@@-?-
00058                 return false;
00059             } // ????-@@@@@@@@@?-
00060             if (!C::eval(p[-2-2*w],t)) { // ????-@@@@@@@@@--
00061                 return false;
00062             } // ????-@@@@@@@@@@-
00063             return true;
00064         } // ????@@@@@@@@???-
00065         if (!C::eval(p[3-w],t)) { // ???-@@@@@@@@???-
00066             if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-??-
00067                 return false;
00068             } // ???-@@@@@@@@@??-
00069             if (!C::eval(p[-3-w],t)) { // ???-@@@@@@@@@-?-
00070                 return false;
00071             } // ???-@@@@@@@@@@?-
00072             return true;
00073         } // ???@@@@@@@@@???-
00074         if (!C::eval(p[-3],t)) { // ???@@@@@@@@@-??-
00075             if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@@@@-??-
00076                 return false;
00077             } // ??@@@@@@@@@@-??-
00078             return true;
00079         } // ???@@@@@@@@@@??-
00080         return true;
00081     } // ???????????????@
00082     if (!C::eval(p[-2-2*w],t)) { // ??????????????-@
00083         if (!C::eval(p[3],t)) { // ????-?????????-@
00084             return false;
00085         } // ????@?????????-@
00086         if (!C::eval(p[3+w],t)) { // ????@-????????-@
00087             return false;
00088         } // ????@@????????-@
00089         if (!C::eval(p[w3],t)) { // ????@@??-?????-@
00090             return false;
00091         } // ????@@??@?????-@
00092         if (!C::eval(p[1+w3],t)) { // ????@@?-@?????-@
00093             return false;
00094         } // ????@@?@@?????-@
00095         if (!C::eval(p[2+2*w],t)) { // ????@@-@@?????-@
00096             return false;
00097         } // ????@@@@@?????-@
00098         if (!C::eval(p[3-w],t)) { // ???-@@@@@?????-@
00099             if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-????-@
00100                 return false;
00101             } // ???-@@@@@@????-@
00102             if (!C::eval(p[-3-w],t)) { // ???-@@@@@@???--@
00103                 return false;
00104             } // ???-@@@@@@???@-@
00105             if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@-??@-@
00106                 return false;
00107             } // ???-@@@@@@@??@-@
00108             if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@-?@-@
00109                 return false;
00110             } // ???-@@@@@@@@?@-@
00111             if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-@-@
00112                 return false;
00113             } // ???-@@@@@@@@@@-@
00114             return true;
00115         } // ???@@@@@@?????-@
00116         if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@?????-@
00117             if (!C::eval(p[-3],t)) { // ??-@@@@@@???-?-@
00118                 return false;
00119             } // ??-@@@@@@???@?-@
00120             if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-??@?-@
00121                 return false;
00122             } // ??-@@@@@@@??@?-@
00123             if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-?@?-@
00124                 return false;
00125             } // ??-@@@@@@@@?@?-@
00126             if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-@?-@
00127                 return false;
00128             } // ??-@@@@@@@@@@?-@
00129             return true;
00130         } // ??@@@@@@@?????-@
00131         if (!C::eval(p[1-w3],t)) { // ?-@@@@@@@?????-@
00132             if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-????-@
00133                 return false;
00134             } // ?-@@@@@@@@????-@
00135             if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-???-@
00136                 return false;
00137             } // ?-@@@@@@@@@???-@
00138             if (!C::eval(p[-3+w],t)) { // ?-@@@@@@@@@-??-@
00139                 return false;
00140             } // ?-@@@@@@@@@@??-@
00141             return true;
00142         } // ?@@@@@@@@?????-@
00143         if (!C::eval(p[-w3],t)) { // -@@@@@@@@?????-@
00144             if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-????-@
00145                 return false;
00146             } // -@@@@@@@@@????-@
00147             if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-???-@
00148                 return false;
00149             } // -@@@@@@@@@@???-@
00150             return true;
00151         } // @@@@@@@@@?????-@
00152         return true;
00153     } // ??????????????@@
00154     if (!C::eval(p[-3-w],t)) { // ?????????????-@@
00155         if (!C::eval(p[1+w3],t)) { // ???????-?????-@@
00156             return false;
00157         } // ???????@?????-@@
00158         if (!C::eval(p[3-w],t)) { // ???-???@?????-@@
00159             return false;
00160         } // ???@???@?????-@@
00161         if (!C::eval(p[3],t)) { // ???@-??@?????-@@
00162             return false;
00163         } // ???@@??@?????-@@
00164         if (!C::eval(p[3+w],t)) { // ???@@-?@?????-@@
00165             return false;
00166         } // ???@@@?@?????-@@
00167         if (!C::eval(p[2+2*w],t)) { // ???@@@-@?????-@@
00168             return false;
00169         } // ???@@@@@?????-@@
00170         if (!C::eval(p[2-2*w],t)) { // ??-@@@@@?????-@@
00171             if (!C::eval(p[w3],t)) { // ??-@@@@@-????-@@
00172                 return false;
00173             } // ??-@@@@@@????-@@
00174             if (!C::eval(p[-3],t)) { // ??-@@@@@@???--@@
00175                 return false;
00176             } // ??-@@@@@@???@-@@
00177             if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-??@-@@
00178                 return false;
00179             } // ??-@@@@@@@??@-@@
00180             if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-?@-@@
00181                 return false;
00182             } // ??-@@@@@@@@?@-@@
00183             if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-@-@@
00184                 return false;
00185             } // ??-@@@@@@@@@@-@@
00186             return true;
00187         } // ??@@@@@@?????-@@
00188         if (!C::eval(p[1-w3],t)) { // ?-@@@@@@?????-@@
00189             if (!C::eval(p[-3+w],t)) { // ?-@@@@@@???-?-@@
00190                 return false;
00191             } // ?-@@@@@@???@?-@@
00192             if (!C::eval(p[w3],t)) { // ?-@@@@@@-??@?-@@
00193                 return false;
00194             } // ?-@@@@@@@??@?-@@
00195             if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-?@?-@@
00196                 return false;
00197             } // ?-@@@@@@@@?@?-@@
00198             if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-@?-@@
00199                 return false;
00200             } // ?-@@@@@@@@@@?-@@
00201             return true;
00202         } // ?@@@@@@@?????-@@
00203         if (!C::eval(p[-w3],t)) { // -@@@@@@@?????-@@
00204             if (!C::eval(p[w3],t)) { // -@@@@@@@-????-@@
00205                 return false;
00206             } // -@@@@@@@@????-@@
00207             if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-???-@@
00208                 return false;
00209             } // -@@@@@@@@@???-@@
00210             if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-??-@@
00211                 return false;
00212             } // -@@@@@@@@@@??-@@
00213             return true;
00214         } // @@@@@@@@?????-@@
00215         return true;
00216     } // ?????????????@@@
00217     if (!C::eval(p[-w3],t)) { // -????????????@@@
00218         if (!C::eval(p[2+2*w],t)) { // -?????-??????@@@
00219             return false;
00220         } // -?????@??????@@@
00221         if (!C::eval(p[1+w3],t)) { // -?????@-?????@@@
00222             return false;
00223         } // -?????@@?????@@@
00224         if (!C::eval(p[-2+2*w],t)) { // -?????@@??-??@@@
00225             return false;
00226         } // -?????@@??@??@@@
00227         if (!C::eval(p[w3],t)) { // -?????@@-?@??@@@
00228             return false;
00229         } // -?????@@@?@??@@@
00230         if (!C::eval(p[-1+w3],t)) { // -?????@@@-@??@@@
00231             return false;
00232         } // -?????@@@@@??@@@
00233         if (!C::eval(p[-3+w],t)) { // -?????@@@@@-?@@@
00234             if (!C::eval(p[1-w3],t)) { // --????@@@@@-?@@@
00235                 return false;
00236             } // -@????@@@@@-?@@@
00237             if (!C::eval(p[3+w],t)) { // -@???-@@@@@-?@@@
00238                 return false;
00239             } // -@???@@@@@@-?@@@
00240             if (!C::eval(p[2-2*w],t)) { // -@-??@@@@@@-?@@@
00241                 return false;
00242             } // -@@??@@@@@@-?@@@
00243             if (!C::eval(p[3-w],t)) { // -@@-?@@@@@@-?@@@
00244                 return false;
00245             } // -@@@?@@@@@@-?@@@
00246             if (!C::eval(p[3],t)) { // -@@@-@@@@@@-?@@@
00247                 return false;
00248             } // -@@@@@@@@@@-?@@@
00249             return true;
00250         } // -?????@@@@@@?@@@
00251         if (!C::eval(p[-3],t)) { // -?????@@@@@@-@@@
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             if (!C::eval(p[3-w],t)) { // -?@-?@@@@@@@-@@@
00259                 return false;
00260             } // -?@@?@@@@@@@-@@@
00261             if (!C::eval(p[3],t)) { // -?@@-@@@@@@@-@@@
00262                 return false;
00263             } // -?@@@@@@@@@@-@@@
00264             return true;
00265         } // -?????@@@@@@@@@@
00266         return true;
00267     } // @????????????@@@
00268     if (!C::eval(p[-3],t)) { // @???????????-@@@
00269         if (!C::eval(p[2+2*w],t)) { // @?????-?????-@@@
00270             return false;
00271         } // @?????@?????-@@@
00272         if (!C::eval(p[2-2*w],t)) { // @?-???@?????-@@@
00273             return false;
00274         } // @?@???@?????-@@@
00275         if (!C::eval(p[3-w],t)) { // @?@-??@?????-@@@
00276             return false;
00277         } // @?@@??@?????-@@@
00278         if (!C::eval(p[3+w],t)) { // @?@@?-@?????-@@@
00279             return false;
00280         } // @?@@?@@?????-@@@
00281         if (!C::eval(p[3],t)) { // @?@@-@@?????-@@@
00282             return false;
00283         } // @?@@@@@?????-@@@
00284         if (!C::eval(p[1-w3],t)) { // @-@@@@@?????-@@@
00285             if (!C::eval(p[1+w3],t)) { // @-@@@@@-????-@@@
00286                 return false;
00287             } // @-@@@@@@????-@@@
00288             if (!C::eval(p[-3+w],t)) { // @-@@@@@@???--@@@
00289                 return false;
00290             } // @-@@@@@@???@-@@@
00291             if (!C::eval(p[w3],t)) { // @-@@@@@@-??@-@@@
00292                 return false;
00293             } // @-@@@@@@@??@-@@@
00294             if (!C::eval(p[-1+w3],t)) { // @-@@@@@@@-?@-@@@
00295                 return false;
00296             } // @-@@@@@@@@?@-@@@
00297             if (!C::eval(p[-2+2*w],t)) { // @-@@@@@@@@-@-@@@
00298                 return false;
00299             } // @-@@@@@@@@@@-@@@
00300             return true;
00301         } // @@@@@@@?????-@@@
00302         return true;
00303     } // @???????????@@@@
00304     if (!C::eval(p[1-w3],t)) { // @-??????????@@@@
00305         if (!C::eval(p[1+w3],t)) { // @-?????-????@@@@
00306             return false;
00307         } // @-?????@????@@@@
00308         if (!C::eval(p[-3+w],t)) { // @-?????@???-@@@@
00309             return false;
00310         } // @-?????@???@@@@@
00311         if (!C::eval(p[w3],t)) { // @-?????@-??@@@@@
00312             return false;
00313         } // @-?????@@??@@@@@
00314         if (!C::eval(p[-1+w3],t)) { // @-?????@@-?@@@@@
00315             return false;
00316         } // @-?????@@@?@@@@@
00317         if (!C::eval(p[-2+2*w],t)) { // @-?????@@@-@@@@@
00318             return false;
00319         } // @-?????@@@@@@@@@
00320         return true;
00321     } // @@??????????@@@@
00322     if (!C::eval(p[2-2*w],t)) { // @@-?????????@@@@
00323         if (!C::eval(p[-3+w],t)) { // @@-????????-@@@@
00324             return false;
00325         } // @@-????????@@@@@
00326         if (!C::eval(p[w3],t)) { // @@-?????-??@@@@@
00327             return false;
00328         } // @@-?????@??@@@@@
00329         if (!C::eval(p[-1+w3],t)) { // @@-?????@-?@@@@@
00330             return false;
00331         } // @@-?????@@?@@@@@
00332         if (!C::eval(p[-2+2*w],t)) { // @@-?????@@-@@@@@
00333             return false;
00334         } // @@-?????@@@@@@@@
00335         return true;
00336     } // @@@?????????@@@@
00337     if (!C::eval(p[-3+w],t)) { // @@@????????-@@@@
00338         if (!C::eval(p[3-w],t)) { // @@@-???????-@@@@
00339             return false;
00340         } // @@@@???????-@@@@
00341         if (!C::eval(p[3],t)) { // @@@@-??????-@@@@
00342             return false;
00343         } // @@@@@??????-@@@@
00344         if (!C::eval(p[3+w],t)) { // @@@@@-?????-@@@@
00345             return false;
00346         } // @@@@@@?????-@@@@
00347         return true;
00348     } // @@@????????@@@@@
00349     if (!C::eval(p[-2+2*w],t)) { // @@@???????-@@@@@
00350         if (!C::eval(p[3-w],t)) { // @@@-??????-@@@@@
00351             return false;
00352         } // @@@@??????-@@@@@
00353         if (!C::eval(p[3],t)) { // @@@@-?????-@@@@@
00354             return false;
00355         } // @@@@@?????-@@@@@
00356         return true;
00357     } // @@@???????@@@@@@
00358     if (!C::eval(p[3-w],t)) { // @@@-??????@@@@@@
00359         if (!C::eval(p[-1+w3],t)) { // @@@-?????-@@@@@@
00360             return false;
00361         } // @@@-?????@@@@@@@
00362         return true;
00363     } // @@@@??????@@@@@@
00364     return true;
00365 }
00366