Permalink
Fetching contributors…
Cannot retrieve contributors at this time
367 lines (365 sloc) 13.7 KB
template <class C> inline bool is_corner_10(const byte* p, const int w, const int barrier) {
const int w3 = 3*w;
const int t = C::prep_t(*p, barrier);
if (!C::eval(p[-1-w3],t)) { // ???????????????-
if (!C::eval(p[3+w],t)) { // ?????-?????????-
return false;
} // ?????@?????????-
if (!C::eval(p[2+2*w],t)) { // ?????@-????????-
return false;
} // ?????@@????????-
if (!C::eval(p[-1+w3],t)) { // ?????@@??-?????-
return false;
} // ?????@@??@?????-
if (!C::eval(p[1+w3],t)) { // ?????@@-?@?????-
return false;
} // ?????@@@?@?????-
if (!C::eval(p[w3],t)) { // ?????@@@-@?????-
return false;
} // ?????@@@@@?????-
if (!C::eval(p[-2+2*w],t)) { // ?????@@@@@-????-
if (!C::eval(p[-w3],t)) { // -????@@@@@-????-
return false;
} // @????@@@@@-????-
if (!C::eval(p[3],t)) { // @???-@@@@@-????-
return false;
} // @???@@@@@@-????-
if (!C::eval(p[1-w3],t)) { // @-??@@@@@@-????-
return false;
} // @@??@@@@@@-????-
if (!C::eval(p[2-2*w],t)) { // @@-?@@@@@@-????-
return false;
} // @@@?@@@@@@-????-
if (!C::eval(p[3-w],t)) { // @@@-@@@@@@-????-
return false;
} // @@@@@@@@@@-????-
return true;
} // ?????@@@@@@????-
if (!C::eval(p[-3+w],t)) { // ?????@@@@@@-???-
if (!C::eval(p[3],t)) { // ????-@@@@@@-???-
return false;
} // ????@@@@@@@-???-
if (!C::eval(p[1-w3],t)) { // ?-??@@@@@@@-???-
return false;
} // ?@??@@@@@@@-???-
if (!C::eval(p[2-2*w],t)) { // ?@-?@@@@@@@-???-
return false;
} // ?@@?@@@@@@@-???-
if (!C::eval(p[3-w],t)) { // ?@@-@@@@@@@-???-
return false;
} // ?@@@@@@@@@@-???-
return true;
} // ?????@@@@@@@???-
if (!C::eval(p[3],t)) { // ????-@@@@@@@???-
if (!C::eval(p[-3],t)) { // ????-@@@@@@@-??-
return false;
} // ????-@@@@@@@@??-
if (!C::eval(p[-3-w],t)) { // ????-@@@@@@@@-?-
return false;
} // ????-@@@@@@@@@?-
if (!C::eval(p[-2-2*w],t)) { // ????-@@@@@@@@@--
return false;
} // ????-@@@@@@@@@@-
return true;
} // ????@@@@@@@@???-
if (!C::eval(p[3-w],t)) { // ???-@@@@@@@@???-
if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-??-
return false;
} // ???-@@@@@@@@@??-
if (!C::eval(p[-3-w],t)) { // ???-@@@@@@@@@-?-
return false;
} // ???-@@@@@@@@@@?-
return true;
} // ???@@@@@@@@@???-
if (!C::eval(p[-3],t)) { // ???@@@@@@@@@-??-
if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@@@@-??-
return false;
} // ??@@@@@@@@@@-??-
return true;
} // ???@@@@@@@@@@??-
return true;
} // ???????????????@
if (!C::eval(p[-2-2*w],t)) { // ??????????????-@
if (!C::eval(p[3],t)) { // ????-?????????-@
return false;
} // ????@?????????-@
if (!C::eval(p[3+w],t)) { // ????@-????????-@
return false;
} // ????@@????????-@
if (!C::eval(p[w3],t)) { // ????@@??-?????-@
return false;
} // ????@@??@?????-@
if (!C::eval(p[1+w3],t)) { // ????@@?-@?????-@
return false;
} // ????@@?@@?????-@
if (!C::eval(p[2+2*w],t)) { // ????@@-@@?????-@
return false;
} // ????@@@@@?????-@
if (!C::eval(p[3-w],t)) { // ???-@@@@@?????-@
if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-????-@
return false;
} // ???-@@@@@@????-@
if (!C::eval(p[-3-w],t)) { // ???-@@@@@@???--@
return false;
} // ???-@@@@@@???@-@
if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@-??@-@
return false;
} // ???-@@@@@@@??@-@
if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@-?@-@
return false;
} // ???-@@@@@@@@?@-@
if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-@-@
return false;
} // ???-@@@@@@@@@@-@
return true;
} // ???@@@@@@?????-@
if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@?????-@
if (!C::eval(p[-3],t)) { // ??-@@@@@@???-?-@
return false;
} // ??-@@@@@@???@?-@
if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-??@?-@
return false;
} // ??-@@@@@@@??@?-@
if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-?@?-@
return false;
} // ??-@@@@@@@@?@?-@
if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-@?-@
return false;
} // ??-@@@@@@@@@@?-@
return true;
} // ??@@@@@@@?????-@
if (!C::eval(p[1-w3],t)) { // ?-@@@@@@@?????-@
if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-????-@
return false;
} // ?-@@@@@@@@????-@
if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-???-@
return false;
} // ?-@@@@@@@@@???-@
if (!C::eval(p[-3+w],t)) { // ?-@@@@@@@@@-??-@
return false;
} // ?-@@@@@@@@@@??-@
return true;
} // ?@@@@@@@@?????-@
if (!C::eval(p[-w3],t)) { // -@@@@@@@@?????-@
if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-????-@
return false;
} // -@@@@@@@@@????-@
if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-???-@
return false;
} // -@@@@@@@@@@???-@
return true;
} // @@@@@@@@@?????-@
return true;
} // ??????????????@@
if (!C::eval(p[-3-w],t)) { // ?????????????-@@
if (!C::eval(p[1+w3],t)) { // ???????-?????-@@
return false;
} // ???????@?????-@@
if (!C::eval(p[3-w],t)) { // ???-???@?????-@@
return false;
} // ???@???@?????-@@
if (!C::eval(p[3],t)) { // ???@-??@?????-@@
return false;
} // ???@@??@?????-@@
if (!C::eval(p[3+w],t)) { // ???@@-?@?????-@@
return false;
} // ???@@@?@?????-@@
if (!C::eval(p[2+2*w],t)) { // ???@@@-@?????-@@
return false;
} // ???@@@@@?????-@@
if (!C::eval(p[2-2*w],t)) { // ??-@@@@@?????-@@
if (!C::eval(p[w3],t)) { // ??-@@@@@-????-@@
return false;
} // ??-@@@@@@????-@@
if (!C::eval(p[-3],t)) { // ??-@@@@@@???--@@
return false;
} // ??-@@@@@@???@-@@
if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-??@-@@
return false;
} // ??-@@@@@@@??@-@@
if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-?@-@@
return false;
} // ??-@@@@@@@@?@-@@
if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-@-@@
return false;
} // ??-@@@@@@@@@@-@@
return true;
} // ??@@@@@@?????-@@
if (!C::eval(p[1-w3],t)) { // ?-@@@@@@?????-@@
if (!C::eval(p[-3+w],t)) { // ?-@@@@@@???-?-@@
return false;
} // ?-@@@@@@???@?-@@
if (!C::eval(p[w3],t)) { // ?-@@@@@@-??@?-@@
return false;
} // ?-@@@@@@@??@?-@@
if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-?@?-@@
return false;
} // ?-@@@@@@@@?@?-@@
if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-@?-@@
return false;
} // ?-@@@@@@@@@@?-@@
return true;
} // ?@@@@@@@?????-@@
if (!C::eval(p[-w3],t)) { // -@@@@@@@?????-@@
if (!C::eval(p[w3],t)) { // -@@@@@@@-????-@@
return false;
} // -@@@@@@@@????-@@
if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-???-@@
return false;
} // -@@@@@@@@@???-@@
if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-??-@@
return false;
} // -@@@@@@@@@@??-@@
return true;
} // @@@@@@@@?????-@@
return true;
} // ?????????????@@@
if (!C::eval(p[-w3],t)) { // -????????????@@@
if (!C::eval(p[2+2*w],t)) { // -?????-??????@@@
return false;
} // -?????@??????@@@
if (!C::eval(p[1+w3],t)) { // -?????@-?????@@@
return false;
} // -?????@@?????@@@
if (!C::eval(p[-2+2*w],t)) { // -?????@@??-??@@@
return false;
} // -?????@@??@??@@@
if (!C::eval(p[w3],t)) { // -?????@@-?@??@@@
return false;
} // -?????@@@?@??@@@
if (!C::eval(p[-1+w3],t)) { // -?????@@@-@??@@@
return false;
} // -?????@@@@@??@@@
if (!C::eval(p[-3+w],t)) { // -?????@@@@@-?@@@
if (!C::eval(p[1-w3],t)) { // --????@@@@@-?@@@
return false;
} // -@????@@@@@-?@@@
if (!C::eval(p[3+w],t)) { // -@???-@@@@@-?@@@
return false;
} // -@???@@@@@@-?@@@
if (!C::eval(p[2-2*w],t)) { // -@-??@@@@@@-?@@@
return false;
} // -@@??@@@@@@-?@@@
if (!C::eval(p[3-w],t)) { // -@@-?@@@@@@-?@@@
return false;
} // -@@@?@@@@@@-?@@@
if (!C::eval(p[3],t)) { // -@@@-@@@@@@-?@@@
return false;
} // -@@@@@@@@@@-?@@@
return true;
} // -?????@@@@@@?@@@
if (!C::eval(p[-3],t)) { // -?????@@@@@@-@@@
if (!C::eval(p[3+w],t)) { // -????-@@@@@@-@@@
return false;
} // -????@@@@@@@-@@@
if (!C::eval(p[2-2*w],t)) { // -?-??@@@@@@@-@@@
return false;
} // -?@??@@@@@@@-@@@
if (!C::eval(p[3-w],t)) { // -?@-?@@@@@@@-@@@
return false;
} // -?@@?@@@@@@@-@@@
if (!C::eval(p[3],t)) { // -?@@-@@@@@@@-@@@
return false;
} // -?@@@@@@@@@@-@@@
return true;
} // -?????@@@@@@@@@@
return true;
} // @????????????@@@
if (!C::eval(p[-3],t)) { // @???????????-@@@
if (!C::eval(p[2+2*w],t)) { // @?????-?????-@@@
return false;
} // @?????@?????-@@@
if (!C::eval(p[2-2*w],t)) { // @?-???@?????-@@@
return false;
} // @?@???@?????-@@@
if (!C::eval(p[3-w],t)) { // @?@-??@?????-@@@
return false;
} // @?@@??@?????-@@@
if (!C::eval(p[3+w],t)) { // @?@@?-@?????-@@@
return false;
} // @?@@?@@?????-@@@
if (!C::eval(p[3],t)) { // @?@@-@@?????-@@@
return false;
} // @?@@@@@?????-@@@
if (!C::eval(p[1-w3],t)) { // @-@@@@@?????-@@@
if (!C::eval(p[1+w3],t)) { // @-@@@@@-????-@@@
return false;
} // @-@@@@@@????-@@@
if (!C::eval(p[-3+w],t)) { // @-@@@@@@???--@@@
return false;
} // @-@@@@@@???@-@@@
if (!C::eval(p[w3],t)) { // @-@@@@@@-??@-@@@
return false;
} // @-@@@@@@@??@-@@@
if (!C::eval(p[-1+w3],t)) { // @-@@@@@@@-?@-@@@
return false;
} // @-@@@@@@@@?@-@@@
if (!C::eval(p[-2+2*w],t)) { // @-@@@@@@@@-@-@@@
return false;
} // @-@@@@@@@@@@-@@@
return true;
} // @@@@@@@?????-@@@
return true;
} // @???????????@@@@
if (!C::eval(p[1-w3],t)) { // @-??????????@@@@
if (!C::eval(p[1+w3],t)) { // @-?????-????@@@@
return false;
} // @-?????@????@@@@
if (!C::eval(p[-3+w],t)) { // @-?????@???-@@@@
return false;
} // @-?????@???@@@@@
if (!C::eval(p[w3],t)) { // @-?????@-??@@@@@
return false;
} // @-?????@@??@@@@@
if (!C::eval(p[-1+w3],t)) { // @-?????@@-?@@@@@
return false;
} // @-?????@@@?@@@@@
if (!C::eval(p[-2+2*w],t)) { // @-?????@@@-@@@@@
return false;
} // @-?????@@@@@@@@@
return true;
} // @@??????????@@@@
if (!C::eval(p[2-2*w],t)) { // @@-?????????@@@@
if (!C::eval(p[-3+w],t)) { // @@-????????-@@@@
return false;
} // @@-????????@@@@@
if (!C::eval(p[w3],t)) { // @@-?????-??@@@@@
return false;
} // @@-?????@??@@@@@
if (!C::eval(p[-1+w3],t)) { // @@-?????@-?@@@@@
return false;
} // @@-?????@@?@@@@@
if (!C::eval(p[-2+2*w],t)) { // @@-?????@@-@@@@@
return false;
} // @@-?????@@@@@@@@
return true;
} // @@@?????????@@@@
if (!C::eval(p[-3+w],t)) { // @@@????????-@@@@
if (!C::eval(p[3-w],t)) { // @@@-???????-@@@@
return false;
} // @@@@???????-@@@@
if (!C::eval(p[3],t)) { // @@@@-??????-@@@@
return false;
} // @@@@@??????-@@@@
if (!C::eval(p[3+w],t)) { // @@@@@-?????-@@@@
return false;
} // @@@@@@?????-@@@@
return true;
} // @@@????????@@@@@
if (!C::eval(p[-2+2*w],t)) { // @@@???????-@@@@@
if (!C::eval(p[3-w],t)) { // @@@-??????-@@@@@
return false;
} // @@@@??????-@@@@@
if (!C::eval(p[3],t)) { // @@@@-?????-@@@@@
return false;
} // @@@@@?????-@@@@@
return true;
} // @@@???????@@@@@@
if (!C::eval(p[3-w],t)) { // @@@-??????@@@@@@
if (!C::eval(p[-1+w3],t)) { // @@@-?????-@@@@@@
return false;
} // @@@-?????@@@@@@@
return true;
} // @@@@??????@@@@@@
return true;
}