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