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