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