CVD 0.8
cvd_src/corner_9.h
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