00001
00002 #include <stdlib.h>
00003
00004 typedef struct { int x, y; } xy;
00005 typedef unsigned char byte;
00006
00007 int fast11_corner_score(const byte* p, const int pixel[], int bstart)
00008 {
00009 int bmin = bstart;
00010 int bmax = 255;
00011 int b = (bmax + bmin)/2;
00012
00013
00014 for(;;)
00015 {
00016 int cb = *p + b;
00017 int c_b= *p - b;
00018
00019
00020 if( p[pixel[0]] > cb)
00021 if( p[pixel[1]] > cb)
00022 if( p[pixel[2]] > cb)
00023 if( p[pixel[3]] > cb)
00024 if( p[pixel[4]] > cb)
00025 if( p[pixel[5]] > cb)
00026 if( p[pixel[6]] > cb)
00027 if( p[pixel[7]] > cb)
00028 if( p[pixel[8]] > cb)
00029 if( p[pixel[9]] > cb)
00030 if( p[pixel[10]] > cb)
00031 goto is_a_corner;
00032 else
00033 if( p[pixel[15]] > cb)
00034 goto is_a_corner;
00035 else
00036 goto is_not_a_corner;
00037 else
00038 if( p[pixel[14]] > cb)
00039 if( p[pixel[15]] > cb)
00040 goto is_a_corner;
00041 else
00042 goto is_not_a_corner;
00043 else
00044 goto is_not_a_corner;
00045 else
00046 if( p[pixel[13]] > cb)
00047 if( p[pixel[14]] > cb)
00048 if( p[pixel[15]] > cb)
00049 goto is_a_corner;
00050 else
00051 goto is_not_a_corner;
00052 else
00053 goto is_not_a_corner;
00054 else
00055 goto is_not_a_corner;
00056 else
00057 if( p[pixel[12]] > cb)
00058 if( p[pixel[13]] > cb)
00059 if( p[pixel[14]] > cb)
00060 if( p[pixel[15]] > cb)
00061 goto is_a_corner;
00062 else
00063 goto is_not_a_corner;
00064 else
00065 goto is_not_a_corner;
00066 else
00067 goto is_not_a_corner;
00068 else
00069 goto is_not_a_corner;
00070 else
00071 if( p[pixel[11]] > cb)
00072 if( p[pixel[12]] > cb)
00073 if( p[pixel[13]] > cb)
00074 if( p[pixel[14]] > cb)
00075 if( p[pixel[15]] > cb)
00076 goto is_a_corner;
00077 else
00078 goto is_not_a_corner;
00079 else
00080 goto is_not_a_corner;
00081 else
00082 goto is_not_a_corner;
00083 else
00084 goto is_not_a_corner;
00085 else
00086 goto is_not_a_corner;
00087 else if( p[pixel[5]] < c_b)
00088 if( p[pixel[10]] > cb)
00089 if( p[pixel[11]] > cb)
00090 if( p[pixel[12]] > cb)
00091 if( p[pixel[13]] > cb)
00092 if( p[pixel[14]] > cb)
00093 if( p[pixel[15]] > cb)
00094 goto is_a_corner;
00095 else
00096 goto is_not_a_corner;
00097 else
00098 goto is_not_a_corner;
00099 else
00100 goto is_not_a_corner;
00101 else
00102 goto is_not_a_corner;
00103 else
00104 goto is_not_a_corner;
00105 else if( p[pixel[10]] < c_b)
00106 if( p[pixel[6]] < c_b)
00107 if( p[pixel[7]] < c_b)
00108 if( p[pixel[8]] < c_b)
00109 if( p[pixel[9]] < c_b)
00110 if( p[pixel[11]] < c_b)
00111 if( p[pixel[12]] < c_b)
00112 if( p[pixel[13]] < c_b)
00113 if( p[pixel[14]] < c_b)
00114 if( p[pixel[15]] < c_b)
00115 goto is_a_corner;
00116 else
00117 goto is_not_a_corner;
00118 else
00119 goto is_not_a_corner;
00120 else
00121 goto is_not_a_corner;
00122 else
00123 goto is_not_a_corner;
00124 else
00125 goto is_not_a_corner;
00126 else
00127 goto is_not_a_corner;
00128 else
00129 goto is_not_a_corner;
00130 else
00131 goto is_not_a_corner;
00132 else
00133 goto is_not_a_corner;
00134 else
00135 goto is_not_a_corner;
00136 else
00137 if( p[pixel[10]] > cb)
00138 if( p[pixel[11]] > cb)
00139 if( p[pixel[12]] > cb)
00140 if( p[pixel[13]] > cb)
00141 if( p[pixel[14]] > cb)
00142 if( p[pixel[15]] > cb)
00143 goto is_a_corner;
00144 else
00145 goto is_not_a_corner;
00146 else
00147 goto is_not_a_corner;
00148 else
00149 goto is_not_a_corner;
00150 else
00151 goto is_not_a_corner;
00152 else
00153 goto is_not_a_corner;
00154 else
00155 goto is_not_a_corner;
00156 else if( p[pixel[4]] < c_b)
00157 if( p[pixel[15]] > cb)
00158 if( p[pixel[9]] > cb)
00159 if( p[pixel[10]] > cb)
00160 if( p[pixel[11]] > cb)
00161 if( p[pixel[12]] > cb)
00162 if( p[pixel[13]] > cb)
00163 if( p[pixel[14]] > cb)
00164 goto is_a_corner;
00165 else
00166 goto is_not_a_corner;
00167 else
00168 goto is_not_a_corner;
00169 else
00170 goto is_not_a_corner;
00171 else
00172 goto is_not_a_corner;
00173 else
00174 goto is_not_a_corner;
00175 else if( p[pixel[9]] < c_b)
00176 if( p[pixel[5]] < c_b)
00177 if( p[pixel[6]] < c_b)
00178 if( p[pixel[7]] < c_b)
00179 if( p[pixel[8]] < c_b)
00180 if( p[pixel[10]] < c_b)
00181 if( p[pixel[11]] < c_b)
00182 if( p[pixel[12]] < c_b)
00183 if( p[pixel[13]] < c_b)
00184 if( p[pixel[14]] < c_b)
00185 goto is_a_corner;
00186 else
00187 goto is_not_a_corner;
00188 else
00189 goto is_not_a_corner;
00190 else
00191 goto is_not_a_corner;
00192 else
00193 goto is_not_a_corner;
00194 else
00195 goto is_not_a_corner;
00196 else
00197 goto is_not_a_corner;
00198 else
00199 goto is_not_a_corner;
00200 else
00201 goto is_not_a_corner;
00202 else
00203 goto is_not_a_corner;
00204 else
00205 goto is_not_a_corner;
00206 else
00207 if( p[pixel[5]] < c_b)
00208 if( p[pixel[6]] < c_b)
00209 if( p[pixel[7]] < c_b)
00210 if( p[pixel[8]] < c_b)
00211 if( p[pixel[9]] < c_b)
00212 if( p[pixel[10]] < c_b)
00213 if( p[pixel[11]] < c_b)
00214 if( p[pixel[12]] < c_b)
00215 if( p[pixel[13]] < c_b)
00216 if( p[pixel[14]] < c_b)
00217 goto is_a_corner;
00218 else
00219 goto is_not_a_corner;
00220 else
00221 goto is_not_a_corner;
00222 else
00223 goto is_not_a_corner;
00224 else
00225 goto is_not_a_corner;
00226 else
00227 goto is_not_a_corner;
00228 else
00229 goto is_not_a_corner;
00230 else
00231 goto is_not_a_corner;
00232 else
00233 goto is_not_a_corner;
00234 else
00235 goto is_not_a_corner;
00236 else
00237 goto is_not_a_corner;
00238 else
00239 if( p[pixel[9]] > cb)
00240 if( p[pixel[10]] > cb)
00241 if( p[pixel[11]] > cb)
00242 if( p[pixel[12]] > cb)
00243 if( p[pixel[13]] > cb)
00244 if( p[pixel[14]] > cb)
00245 if( p[pixel[15]] > cb)
00246 goto is_a_corner;
00247 else
00248 goto is_not_a_corner;
00249 else
00250 goto is_not_a_corner;
00251 else
00252 goto is_not_a_corner;
00253 else
00254 goto is_not_a_corner;
00255 else
00256 goto is_not_a_corner;
00257 else
00258 goto is_not_a_corner;
00259 else if( p[pixel[9]] < c_b)
00260 if( p[pixel[5]] < c_b)
00261 if( p[pixel[6]] < c_b)
00262 if( p[pixel[7]] < c_b)
00263 if( p[pixel[8]] < c_b)
00264 if( p[pixel[10]] < c_b)
00265 if( p[pixel[11]] < c_b)
00266 if( p[pixel[12]] < c_b)
00267 if( p[pixel[13]] < c_b)
00268 if( p[pixel[14]] < c_b)
00269 if( p[pixel[15]] < c_b)
00270 goto is_a_corner;
00271 else
00272 goto is_not_a_corner;
00273 else
00274 goto is_not_a_corner;
00275 else
00276 goto is_not_a_corner;
00277 else
00278 goto is_not_a_corner;
00279 else
00280 goto is_not_a_corner;
00281 else
00282 goto is_not_a_corner;
00283 else
00284 goto is_not_a_corner;
00285 else
00286 goto is_not_a_corner;
00287 else
00288 goto is_not_a_corner;
00289 else
00290 goto is_not_a_corner;
00291 else
00292 goto is_not_a_corner;
00293 else if( p[pixel[3]] < c_b)
00294 if( p[pixel[14]] > cb)
00295 if( p[pixel[8]] > cb)
00296 if( p[pixel[9]] > cb)
00297 if( p[pixel[10]] > cb)
00298 if( p[pixel[11]] > cb)
00299 if( p[pixel[12]] > cb)
00300 if( p[pixel[13]] > cb)
00301 if( p[pixel[15]] > cb)
00302 goto is_a_corner;
00303 else
00304 if( p[pixel[4]] > cb)
00305 if( p[pixel[5]] > cb)
00306 if( p[pixel[6]] > cb)
00307 if( p[pixel[7]] > cb)
00308 goto is_a_corner;
00309 else
00310 goto is_not_a_corner;
00311 else
00312 goto is_not_a_corner;
00313 else
00314 goto is_not_a_corner;
00315 else
00316 goto is_not_a_corner;
00317 else
00318 goto is_not_a_corner;
00319 else
00320 goto is_not_a_corner;
00321 else
00322 goto is_not_a_corner;
00323 else
00324 goto is_not_a_corner;
00325 else
00326 goto is_not_a_corner;
00327 else if( p[pixel[8]] < c_b)
00328 if( p[pixel[4]] < c_b)
00329 if( p[pixel[5]] < c_b)
00330 if( p[pixel[6]] < c_b)
00331 if( p[pixel[7]] < c_b)
00332 if( p[pixel[9]] < c_b)
00333 if( p[pixel[10]] < c_b)
00334 if( p[pixel[11]] < c_b)
00335 if( p[pixel[12]] < c_b)
00336 if( p[pixel[13]] < c_b)
00337 goto is_a_corner;
00338 else
00339 goto is_not_a_corner;
00340 else
00341 goto is_not_a_corner;
00342 else
00343 goto is_not_a_corner;
00344 else
00345 goto is_not_a_corner;
00346 else
00347 goto is_not_a_corner;
00348 else
00349 goto is_not_a_corner;
00350 else
00351 goto is_not_a_corner;
00352 else
00353 goto is_not_a_corner;
00354 else
00355 goto is_not_a_corner;
00356 else
00357 goto is_not_a_corner;
00358 else if( p[pixel[14]] < c_b)
00359 if( p[pixel[5]] < c_b)
00360 if( p[pixel[6]] < c_b)
00361 if( p[pixel[7]] < c_b)
00362 if( p[pixel[8]] < c_b)
00363 if( p[pixel[9]] < c_b)
00364 if( p[pixel[10]] < c_b)
00365 if( p[pixel[11]] < c_b)
00366 if( p[pixel[12]] < c_b)
00367 if( p[pixel[13]] < c_b)
00368 if( p[pixel[4]] < c_b)
00369 goto is_a_corner;
00370 else
00371 if( p[pixel[15]] < c_b)
00372 goto is_a_corner;
00373 else
00374 goto is_not_a_corner;
00375 else
00376 goto is_not_a_corner;
00377 else
00378 goto is_not_a_corner;
00379 else
00380 goto is_not_a_corner;
00381 else
00382 goto is_not_a_corner;
00383 else
00384 goto is_not_a_corner;
00385 else
00386 goto is_not_a_corner;
00387 else
00388 goto is_not_a_corner;
00389 else
00390 goto is_not_a_corner;
00391 else
00392 goto is_not_a_corner;
00393 else
00394 if( p[pixel[4]] < c_b)
00395 if( p[pixel[5]] < c_b)
00396 if( p[pixel[6]] < c_b)
00397 if( p[pixel[7]] < c_b)
00398 if( p[pixel[8]] < c_b)
00399 if( p[pixel[9]] < c_b)
00400 if( p[pixel[10]] < c_b)
00401 if( p[pixel[11]] < c_b)
00402 if( p[pixel[12]] < c_b)
00403 if( p[pixel[13]] < c_b)
00404 goto is_a_corner;
00405 else
00406 goto is_not_a_corner;
00407 else
00408 goto is_not_a_corner;
00409 else
00410 goto is_not_a_corner;
00411 else
00412 goto is_not_a_corner;
00413 else
00414 goto is_not_a_corner;
00415 else
00416 goto is_not_a_corner;
00417 else
00418 goto is_not_a_corner;
00419 else
00420 goto is_not_a_corner;
00421 else
00422 goto is_not_a_corner;
00423 else
00424 goto is_not_a_corner;
00425 else
00426 if( p[pixel[8]] > cb)
00427 if( p[pixel[9]] > cb)
00428 if( p[pixel[10]] > cb)
00429 if( p[pixel[11]] > cb)
00430 if( p[pixel[12]] > cb)
00431 if( p[pixel[13]] > cb)
00432 if( p[pixel[14]] > cb)
00433 if( p[pixel[15]] > cb)
00434 goto is_a_corner;
00435 else
00436 if( p[pixel[4]] > cb)
00437 if( p[pixel[5]] > cb)
00438 if( p[pixel[6]] > cb)
00439 if( p[pixel[7]] > cb)
00440 goto is_a_corner;
00441 else
00442 goto is_not_a_corner;
00443 else
00444 goto is_not_a_corner;
00445 else
00446 goto is_not_a_corner;
00447 else
00448 goto is_not_a_corner;
00449 else
00450 goto is_not_a_corner;
00451 else
00452 goto is_not_a_corner;
00453 else
00454 goto is_not_a_corner;
00455 else
00456 goto is_not_a_corner;
00457 else
00458 goto is_not_a_corner;
00459 else
00460 goto is_not_a_corner;
00461 else if( p[pixel[8]] < c_b)
00462 if( p[pixel[5]] < c_b)
00463 if( p[pixel[6]] < c_b)
00464 if( p[pixel[7]] < c_b)
00465 if( p[pixel[9]] < c_b)
00466 if( p[pixel[10]] < c_b)
00467 if( p[pixel[11]] < c_b)
00468 if( p[pixel[12]] < c_b)
00469 if( p[pixel[13]] < c_b)
00470 if( p[pixel[14]] < c_b)
00471 if( p[pixel[4]] < c_b)
00472 goto is_a_corner;
00473 else
00474 if( p[pixel[15]] < c_b)
00475 goto is_a_corner;
00476 else
00477 goto is_not_a_corner;
00478 else
00479 goto is_not_a_corner;
00480 else
00481 goto is_not_a_corner;
00482 else
00483 goto is_not_a_corner;
00484 else
00485 goto is_not_a_corner;
00486 else
00487 goto is_not_a_corner;
00488 else
00489 goto is_not_a_corner;
00490 else
00491 goto is_not_a_corner;
00492 else
00493 goto is_not_a_corner;
00494 else
00495 goto is_not_a_corner;
00496 else
00497 goto is_not_a_corner;
00498 else if( p[pixel[2]] < c_b)
00499 if( p[pixel[7]] > cb)
00500 if( p[pixel[8]] > cb)
00501 if( p[pixel[9]] > cb)
00502 if( p[pixel[10]] > cb)
00503 if( p[pixel[11]] > cb)
00504 if( p[pixel[12]] > cb)
00505 if( p[pixel[13]] > cb)
00506 if( p[pixel[14]] > cb)
00507 if( p[pixel[15]] > cb)
00508 goto is_a_corner;
00509 else
00510 if( p[pixel[4]] > cb)
00511 if( p[pixel[5]] > cb)
00512 if( p[pixel[6]] > cb)
00513 goto is_a_corner;
00514 else
00515 goto is_not_a_corner;
00516 else
00517 goto is_not_a_corner;
00518 else
00519 goto is_not_a_corner;
00520 else
00521 if( p[pixel[3]] > cb)
00522 if( p[pixel[4]] > cb)
00523 if( p[pixel[5]] > cb)
00524 if( p[pixel[6]] > cb)
00525 goto is_a_corner;
00526 else
00527 goto is_not_a_corner;
00528 else
00529 goto is_not_a_corner;
00530 else
00531 goto is_not_a_corner;
00532 else
00533 goto is_not_a_corner;
00534 else
00535 goto is_not_a_corner;
00536 else
00537 goto is_not_a_corner;
00538 else
00539 goto is_not_a_corner;
00540 else
00541 goto is_not_a_corner;
00542 else
00543 goto is_not_a_corner;
00544 else
00545 goto is_not_a_corner;
00546 else if( p[pixel[7]] < c_b)
00547 if( p[pixel[5]] < c_b)
00548 if( p[pixel[6]] < c_b)
00549 if( p[pixel[8]] < c_b)
00550 if( p[pixel[9]] < c_b)
00551 if( p[pixel[10]] < c_b)
00552 if( p[pixel[11]] < c_b)
00553 if( p[pixel[12]] < c_b)
00554 if( p[pixel[4]] < c_b)
00555 if( p[pixel[3]] < c_b)
00556 goto is_a_corner;
00557 else
00558 if( p[pixel[13]] < c_b)
00559 if( p[pixel[14]] < c_b)
00560 goto is_a_corner;
00561 else
00562 goto is_not_a_corner;
00563 else
00564 goto is_not_a_corner;
00565 else
00566 if( p[pixel[13]] < c_b)
00567 if( p[pixel[14]] < c_b)
00568 if( p[pixel[15]] < c_b)
00569 goto is_a_corner;
00570 else
00571 goto is_not_a_corner;
00572 else
00573 goto is_not_a_corner;
00574 else
00575 goto is_not_a_corner;
00576 else
00577 goto is_not_a_corner;
00578 else
00579 goto is_not_a_corner;
00580 else
00581 goto is_not_a_corner;
00582 else
00583 goto is_not_a_corner;
00584 else
00585 goto is_not_a_corner;
00586 else
00587 goto is_not_a_corner;
00588 else
00589 goto is_not_a_corner;
00590 else
00591 goto is_not_a_corner;
00592 else
00593 if( p[pixel[7]] > cb)
00594 if( p[pixel[8]] > cb)
00595 if( p[pixel[9]] > cb)
00596 if( p[pixel[10]] > cb)
00597 if( p[pixel[11]] > cb)
00598 if( p[pixel[12]] > cb)
00599 if( p[pixel[13]] > cb)
00600 if( p[pixel[14]] > cb)
00601 if( p[pixel[15]] > cb)
00602 goto is_a_corner;
00603 else
00604 if( p[pixel[4]] > cb)
00605 if( p[pixel[5]] > cb)
00606 if( p[pixel[6]] > cb)
00607 goto is_a_corner;
00608 else
00609 goto is_not_a_corner;
00610 else
00611 goto is_not_a_corner;
00612 else
00613 goto is_not_a_corner;
00614 else
00615 if( p[pixel[3]] > cb)
00616 if( p[pixel[4]] > cb)
00617 if( p[pixel[5]] > cb)
00618 if( p[pixel[6]] > cb)
00619 goto is_a_corner;
00620 else
00621 goto is_not_a_corner;
00622 else
00623 goto is_not_a_corner;
00624 else
00625 goto is_not_a_corner;
00626 else
00627 goto is_not_a_corner;
00628 else
00629 goto is_not_a_corner;
00630 else
00631 goto is_not_a_corner;
00632 else
00633 goto is_not_a_corner;
00634 else
00635 goto is_not_a_corner;
00636 else
00637 goto is_not_a_corner;
00638 else
00639 goto is_not_a_corner;
00640 else if( p[pixel[7]] < c_b)
00641 if( p[pixel[5]] < c_b)
00642 if( p[pixel[6]] < c_b)
00643 if( p[pixel[8]] < c_b)
00644 if( p[pixel[9]] < c_b)
00645 if( p[pixel[10]] < c_b)
00646 if( p[pixel[11]] < c_b)
00647 if( p[pixel[12]] < c_b)
00648 if( p[pixel[13]] < c_b)
00649 if( p[pixel[4]] < c_b)
00650 if( p[pixel[3]] < c_b)
00651 goto is_a_corner;
00652 else
00653 if( p[pixel[14]] < c_b)
00654 goto is_a_corner;
00655 else
00656 goto is_not_a_corner;
00657 else
00658 if( p[pixel[14]] < c_b)
00659 if( p[pixel[15]] < c_b)
00660 goto is_a_corner;
00661 else
00662 goto is_not_a_corner;
00663 else
00664 goto is_not_a_corner;
00665 else
00666 goto is_not_a_corner;
00667 else
00668 goto is_not_a_corner;
00669 else
00670 goto is_not_a_corner;
00671 else
00672 goto is_not_a_corner;
00673 else
00674 goto is_not_a_corner;
00675 else
00676 goto is_not_a_corner;
00677 else
00678 goto is_not_a_corner;
00679 else
00680 goto is_not_a_corner;
00681 else
00682 goto is_not_a_corner;
00683 else if( p[pixel[1]] < c_b)
00684 if( p[pixel[6]] > cb)
00685 if( p[pixel[7]] > cb)
00686 if( p[pixel[8]] > cb)
00687 if( p[pixel[9]] > cb)
00688 if( p[pixel[10]] > cb)
00689 if( p[pixel[11]] > cb)
00690 if( p[pixel[12]] > cb)
00691 if( p[pixel[13]] > cb)
00692 if( p[pixel[14]] > cb)
00693 if( p[pixel[15]] > cb)
00694 goto is_a_corner;
00695 else
00696 if( p[pixel[4]] > cb)
00697 if( p[pixel[5]] > cb)
00698 goto is_a_corner;
00699 else
00700 goto is_not_a_corner;
00701 else
00702 goto is_not_a_corner;
00703 else
00704 if( p[pixel[3]] > cb)
00705 if( p[pixel[4]] > cb)
00706 if( p[pixel[5]] > cb)
00707 goto is_a_corner;
00708 else
00709 goto is_not_a_corner;
00710 else
00711 goto is_not_a_corner;
00712 else
00713 goto is_not_a_corner;
00714 else
00715 if( p[pixel[2]] > cb)
00716 if( p[pixel[3]] > cb)
00717 if( p[pixel[4]] > cb)
00718 if( p[pixel[5]] > cb)
00719 goto is_a_corner;
00720 else
00721 goto is_not_a_corner;
00722 else
00723 goto is_not_a_corner;
00724 else
00725 goto is_not_a_corner;
00726 else
00727 goto is_not_a_corner;
00728 else
00729 goto is_not_a_corner;
00730 else
00731 goto is_not_a_corner;
00732 else
00733 goto is_not_a_corner;
00734 else
00735 goto is_not_a_corner;
00736 else
00737 goto is_not_a_corner;
00738 else
00739 goto is_not_a_corner;
00740 else if( p[pixel[6]] < c_b)
00741 if( p[pixel[5]] < c_b)
00742 if( p[pixel[7]] < c_b)
00743 if( p[pixel[8]] < c_b)
00744 if( p[pixel[9]] < c_b)
00745 if( p[pixel[10]] < c_b)
00746 if( p[pixel[11]] < c_b)
00747 if( p[pixel[4]] < c_b)
00748 if( p[pixel[3]] < c_b)
00749 if( p[pixel[2]] < c_b)
00750 goto is_a_corner;
00751 else
00752 if( p[pixel[12]] < c_b)
00753 if( p[pixel[13]] < c_b)
00754 goto is_a_corner;
00755 else
00756 goto is_not_a_corner;
00757 else
00758 goto is_not_a_corner;
00759 else
00760 if( p[pixel[12]] < c_b)
00761 if( p[pixel[13]] < c_b)
00762 if( p[pixel[14]] < c_b)
00763 goto is_a_corner;
00764 else
00765 goto is_not_a_corner;
00766 else
00767 goto is_not_a_corner;
00768 else
00769 goto is_not_a_corner;
00770 else
00771 if( p[pixel[12]] < c_b)
00772 if( p[pixel[13]] < c_b)
00773 if( p[pixel[14]] < c_b)
00774 if( p[pixel[15]] < c_b)
00775 goto is_a_corner;
00776 else
00777 goto is_not_a_corner;
00778 else
00779 goto is_not_a_corner;
00780 else
00781 goto is_not_a_corner;
00782 else
00783 goto is_not_a_corner;
00784 else
00785 goto is_not_a_corner;
00786 else
00787 goto is_not_a_corner;
00788 else
00789 goto is_not_a_corner;
00790 else
00791 goto is_not_a_corner;
00792 else
00793 goto is_not_a_corner;
00794 else
00795 goto is_not_a_corner;
00796 else
00797 goto is_not_a_corner;
00798 else
00799 if( p[pixel[6]] > cb)
00800 if( p[pixel[7]] > cb)
00801 if( p[pixel[8]] > cb)
00802 if( p[pixel[9]] > cb)
00803 if( p[pixel[10]] > cb)
00804 if( p[pixel[11]] > cb)
00805 if( p[pixel[12]] > cb)
00806 if( p[pixel[13]] > cb)
00807 if( p[pixel[14]] > cb)
00808 if( p[pixel[15]] > cb)
00809 goto is_a_corner;
00810 else
00811 if( p[pixel[4]] > cb)
00812 if( p[pixel[5]] > cb)
00813 goto is_a_corner;
00814 else
00815 goto is_not_a_corner;
00816 else
00817 goto is_not_a_corner;
00818 else
00819 if( p[pixel[3]] > cb)
00820 if( p[pixel[4]] > cb)
00821 if( p[pixel[5]] > cb)
00822 goto is_a_corner;
00823 else
00824 goto is_not_a_corner;
00825 else
00826 goto is_not_a_corner;
00827 else
00828 goto is_not_a_corner;
00829 else
00830 if( p[pixel[2]] > cb)
00831 if( p[pixel[3]] > cb)
00832 if( p[pixel[4]] > cb)
00833 if( p[pixel[5]] > cb)
00834 goto is_a_corner;
00835 else
00836 goto is_not_a_corner;
00837 else
00838 goto is_not_a_corner;
00839 else
00840 goto is_not_a_corner;
00841 else
00842 goto is_not_a_corner;
00843 else
00844 goto is_not_a_corner;
00845 else
00846 goto is_not_a_corner;
00847 else
00848 goto is_not_a_corner;
00849 else
00850 goto is_not_a_corner;
00851 else
00852 goto is_not_a_corner;
00853 else
00854 goto is_not_a_corner;
00855 else if( p[pixel[6]] < c_b)
00856 if( p[pixel[5]] < c_b)
00857 if( p[pixel[7]] < c_b)
00858 if( p[pixel[8]] < c_b)
00859 if( p[pixel[9]] < c_b)
00860 if( p[pixel[10]] < c_b)
00861 if( p[pixel[11]] < c_b)
00862 if( p[pixel[12]] < c_b)
00863 if( p[pixel[4]] < c_b)
00864 if( p[pixel[3]] < c_b)
00865 if( p[pixel[2]] < c_b)
00866 goto is_a_corner;
00867 else
00868 if( p[pixel[13]] < c_b)
00869 goto is_a_corner;
00870 else
00871 goto is_not_a_corner;
00872 else
00873 if( p[pixel[13]] < c_b)
00874 if( p[pixel[14]] < c_b)
00875 goto is_a_corner;
00876 else
00877 goto is_not_a_corner;
00878 else
00879 goto is_not_a_corner;
00880 else
00881 if( p[pixel[13]] < c_b)
00882 if( p[pixel[14]] < c_b)
00883 if( p[pixel[15]] < c_b)
00884 goto is_a_corner;
00885 else
00886 goto is_not_a_corner;
00887 else
00888 goto is_not_a_corner;
00889 else
00890 goto is_not_a_corner;
00891 else
00892 goto is_not_a_corner;
00893 else
00894 goto is_not_a_corner;
00895 else
00896 goto is_not_a_corner;
00897 else
00898 goto is_not_a_corner;
00899 else
00900 goto is_not_a_corner;
00901 else
00902 goto is_not_a_corner;
00903 else
00904 goto is_not_a_corner;
00905 else
00906 goto is_not_a_corner;
00907 else if( p[pixel[0]] < c_b)
00908 if( p[pixel[1]] > cb)
00909 if( p[pixel[6]] > cb)
00910 if( p[pixel[5]] > cb)
00911 if( p[pixel[7]] > cb)
00912 if( p[pixel[8]] > cb)
00913 if( p[pixel[9]] > cb)
00914 if( p[pixel[10]] > cb)
00915 if( p[pixel[11]] > cb)
00916 if( p[pixel[4]] > cb)
00917 if( p[pixel[3]] > cb)
00918 if( p[pixel[2]] > cb)
00919 goto is_a_corner;
00920 else
00921 if( p[pixel[12]] > cb)
00922 if( p[pixel[13]] > cb)
00923 goto is_a_corner;
00924 else
00925 goto is_not_a_corner;
00926 else
00927 goto is_not_a_corner;
00928 else
00929 if( p[pixel[12]] > cb)
00930 if( p[pixel[13]] > cb)
00931 if( p[pixel[14]] > cb)
00932 goto is_a_corner;
00933 else
00934 goto is_not_a_corner;
00935 else
00936 goto is_not_a_corner;
00937 else
00938 goto is_not_a_corner;
00939 else
00940 if( p[pixel[12]] > cb)
00941 if( p[pixel[13]] > cb)
00942 if( p[pixel[14]] > cb)
00943 if( p[pixel[15]] > cb)
00944 goto is_a_corner;
00945 else
00946 goto is_not_a_corner;
00947 else
00948 goto is_not_a_corner;
00949 else
00950 goto is_not_a_corner;
00951 else
00952 goto is_not_a_corner;
00953 else
00954 goto is_not_a_corner;
00955 else
00956 goto is_not_a_corner;
00957 else
00958 goto is_not_a_corner;
00959 else
00960 goto is_not_a_corner;
00961 else
00962 goto is_not_a_corner;
00963 else
00964 goto is_not_a_corner;
00965 else if( p[pixel[6]] < c_b)
00966 if( p[pixel[7]] < c_b)
00967 if( p[pixel[8]] < c_b)
00968 if( p[pixel[9]] < c_b)
00969 if( p[pixel[10]] < c_b)
00970 if( p[pixel[11]] < c_b)
00971 if( p[pixel[12]] < c_b)
00972 if( p[pixel[13]] < c_b)
00973 if( p[pixel[14]] < c_b)
00974 if( p[pixel[15]] < c_b)
00975 goto is_a_corner;
00976 else
00977 if( p[pixel[4]] < c_b)
00978 if( p[pixel[5]] < c_b)
00979 goto is_a_corner;
00980 else
00981 goto is_not_a_corner;
00982 else
00983 goto is_not_a_corner;
00984 else
00985 if( p[pixel[3]] < c_b)
00986 if( p[pixel[4]] < c_b)
00987 if( p[pixel[5]] < c_b)
00988 goto is_a_corner;
00989 else
00990 goto is_not_a_corner;
00991 else
00992 goto is_not_a_corner;
00993 else
00994 goto is_not_a_corner;
00995 else
00996 if( p[pixel[2]] < c_b)
00997 if( p[pixel[3]] < c_b)
00998 if( p[pixel[4]] < c_b)
00999 if( p[pixel[5]] < c_b)
01000 goto is_a_corner;
01001 else
01002 goto is_not_a_corner;
01003 else
01004 goto is_not_a_corner;
01005 else
01006 goto is_not_a_corner;
01007 else
01008 goto is_not_a_corner;
01009 else
01010 goto is_not_a_corner;
01011 else
01012 goto is_not_a_corner;
01013 else
01014 goto is_not_a_corner;
01015 else
01016 goto is_not_a_corner;
01017 else
01018 goto is_not_a_corner;
01019 else
01020 goto is_not_a_corner;
01021 else
01022 goto is_not_a_corner;
01023 else if( p[pixel[1]] < c_b)
01024 if( p[pixel[2]] > cb)
01025 if( p[pixel[7]] > cb)
01026 if( p[pixel[5]] > cb)
01027 if( p[pixel[6]] > cb)
01028 if( p[pixel[8]] > cb)
01029 if( p[pixel[9]] > cb)
01030 if( p[pixel[10]] > cb)
01031 if( p[pixel[11]] > cb)
01032 if( p[pixel[12]] > cb)
01033 if( p[pixel[4]] > cb)
01034 if( p[pixel[3]] > cb)
01035 goto is_a_corner;
01036 else
01037 if( p[pixel[13]] > cb)
01038 if( p[pixel[14]] > cb)
01039 goto is_a_corner;
01040 else
01041 goto is_not_a_corner;
01042 else
01043 goto is_not_a_corner;
01044 else
01045 if( p[pixel[13]] > cb)
01046 if( p[pixel[14]] > cb)
01047 if( p[pixel[15]] > cb)
01048 goto is_a_corner;
01049 else
01050 goto is_not_a_corner;
01051 else
01052 goto is_not_a_corner;
01053 else
01054 goto is_not_a_corner;
01055 else
01056 goto is_not_a_corner;
01057 else
01058 goto is_not_a_corner;
01059 else
01060 goto is_not_a_corner;
01061 else
01062 goto is_not_a_corner;
01063 else
01064 goto is_not_a_corner;
01065 else
01066 goto is_not_a_corner;
01067 else
01068 goto is_not_a_corner;
01069 else if( p[pixel[7]] < c_b)
01070 if( p[pixel[8]] < c_b)
01071 if( p[pixel[9]] < c_b)
01072 if( p[pixel[10]] < c_b)
01073 if( p[pixel[11]] < c_b)
01074 if( p[pixel[12]] < c_b)
01075 if( p[pixel[13]] < c_b)
01076 if( p[pixel[14]] < c_b)
01077 if( p[pixel[15]] < c_b)
01078 goto is_a_corner;
01079 else
01080 if( p[pixel[4]] < c_b)
01081 if( p[pixel[5]] < c_b)
01082 if( p[pixel[6]] < c_b)
01083 goto is_a_corner;
01084 else
01085 goto is_not_a_corner;
01086 else
01087 goto is_not_a_corner;
01088 else
01089 goto is_not_a_corner;
01090 else
01091 if( p[pixel[3]] < c_b)
01092 if( p[pixel[4]] < c_b)
01093 if( p[pixel[5]] < c_b)
01094 if( p[pixel[6]] < c_b)
01095 goto is_a_corner;
01096 else
01097 goto is_not_a_corner;
01098 else
01099 goto is_not_a_corner;
01100 else
01101 goto is_not_a_corner;
01102 else
01103 goto is_not_a_corner;
01104 else
01105 goto is_not_a_corner;
01106 else
01107 goto is_not_a_corner;
01108 else
01109 goto is_not_a_corner;
01110 else
01111 goto is_not_a_corner;
01112 else
01113 goto is_not_a_corner;
01114 else
01115 goto is_not_a_corner;
01116 else
01117 goto is_not_a_corner;
01118 else if( p[pixel[2]] < c_b)
01119 if( p[pixel[3]] > cb)
01120 if( p[pixel[14]] > cb)
01121 if( p[pixel[5]] > cb)
01122 if( p[pixel[6]] > cb)
01123 if( p[pixel[7]] > cb)
01124 if( p[pixel[8]] > cb)
01125 if( p[pixel[9]] > cb)
01126 if( p[pixel[10]] > cb)
01127 if( p[pixel[11]] > cb)
01128 if( p[pixel[12]] > cb)
01129 if( p[pixel[13]] > cb)
01130 if( p[pixel[4]] > cb)
01131 goto is_a_corner;
01132 else
01133 if( p[pixel[15]] > cb)
01134 goto is_a_corner;
01135 else
01136 goto is_not_a_corner;
01137 else
01138 goto is_not_a_corner;
01139 else
01140 goto is_not_a_corner;
01141 else
01142 goto is_not_a_corner;
01143 else
01144 goto is_not_a_corner;
01145 else
01146 goto is_not_a_corner;
01147 else
01148 goto is_not_a_corner;
01149 else
01150 goto is_not_a_corner;
01151 else
01152 goto is_not_a_corner;
01153 else
01154 goto is_not_a_corner;
01155 else if( p[pixel[14]] < c_b)
01156 if( p[pixel[8]] > cb)
01157 if( p[pixel[4]] > cb)
01158 if( p[pixel[5]] > cb)
01159 if( p[pixel[6]] > cb)
01160 if( p[pixel[7]] > cb)
01161 if( p[pixel[9]] > cb)
01162 if( p[pixel[10]] > cb)
01163 if( p[pixel[11]] > cb)
01164 if( p[pixel[12]] > cb)
01165 if( p[pixel[13]] > cb)
01166 goto is_a_corner;
01167 else
01168 goto is_not_a_corner;
01169 else
01170 goto is_not_a_corner;
01171 else
01172 goto is_not_a_corner;
01173 else
01174 goto is_not_a_corner;
01175 else
01176 goto is_not_a_corner;
01177 else
01178 goto is_not_a_corner;
01179 else
01180 goto is_not_a_corner;
01181 else
01182 goto is_not_a_corner;
01183 else
01184 goto is_not_a_corner;
01185 else if( p[pixel[8]] < c_b)
01186 if( p[pixel[9]] < c_b)
01187 if( p[pixel[10]] < c_b)
01188 if( p[pixel[11]] < c_b)
01189 if( p[pixel[12]] < c_b)
01190 if( p[pixel[13]] < c_b)
01191 if( p[pixel[15]] < c_b)
01192 goto is_a_corner;
01193 else
01194 if( p[pixel[4]] < c_b)
01195 if( p[pixel[5]] < c_b)
01196 if( p[pixel[6]] < c_b)
01197 if( p[pixel[7]] < c_b)
01198 goto is_a_corner;
01199 else
01200 goto is_not_a_corner;
01201 else
01202 goto is_not_a_corner;
01203 else
01204 goto is_not_a_corner;
01205 else
01206 goto is_not_a_corner;
01207 else
01208 goto is_not_a_corner;
01209 else
01210 goto is_not_a_corner;
01211 else
01212 goto is_not_a_corner;
01213 else
01214 goto is_not_a_corner;
01215 else
01216 goto is_not_a_corner;
01217 else
01218 goto is_not_a_corner;
01219 else
01220 if( p[pixel[4]] > cb)
01221 if( p[pixel[5]] > cb)
01222 if( p[pixel[6]] > cb)
01223 if( p[pixel[7]] > cb)
01224 if( p[pixel[8]] > cb)
01225 if( p[pixel[9]] > cb)
01226 if( p[pixel[10]] > cb)
01227 if( p[pixel[11]] > cb)
01228 if( p[pixel[12]] > cb)
01229 if( p[pixel[13]] > cb)
01230 goto is_a_corner;
01231 else
01232 goto is_not_a_corner;
01233 else
01234 goto is_not_a_corner;
01235 else
01236 goto is_not_a_corner;
01237 else
01238 goto is_not_a_corner;
01239 else
01240 goto is_not_a_corner;
01241 else
01242 goto is_not_a_corner;
01243 else
01244 goto is_not_a_corner;
01245 else
01246 goto is_not_a_corner;
01247 else
01248 goto is_not_a_corner;
01249 else
01250 goto is_not_a_corner;
01251 else if( p[pixel[3]] < c_b)
01252 if( p[pixel[4]] > cb)
01253 if( p[pixel[15]] < c_b)
01254 if( p[pixel[9]] > cb)
01255 if( p[pixel[5]] > cb)
01256 if( p[pixel[6]] > cb)
01257 if( p[pixel[7]] > cb)
01258 if( p[pixel[8]] > cb)
01259 if( p[pixel[10]] > cb)
01260 if( p[pixel[11]] > cb)
01261 if( p[pixel[12]] > cb)
01262 if( p[pixel[13]] > cb)
01263 if( p[pixel[14]] > cb)
01264 goto is_a_corner;
01265 else
01266 goto is_not_a_corner;
01267 else
01268 goto is_not_a_corner;
01269 else
01270 goto is_not_a_corner;
01271 else
01272 goto is_not_a_corner;
01273 else
01274 goto is_not_a_corner;
01275 else
01276 goto is_not_a_corner;
01277 else
01278 goto is_not_a_corner;
01279 else
01280 goto is_not_a_corner;
01281 else
01282 goto is_not_a_corner;
01283 else if( p[pixel[9]] < c_b)
01284 if( p[pixel[10]] < c_b)
01285 if( p[pixel[11]] < c_b)
01286 if( p[pixel[12]] < c_b)
01287 if( p[pixel[13]] < c_b)
01288 if( p[pixel[14]] < c_b)
01289 goto is_a_corner;
01290 else
01291 goto is_not_a_corner;
01292 else
01293 goto is_not_a_corner;
01294 else
01295 goto is_not_a_corner;
01296 else
01297 goto is_not_a_corner;
01298 else
01299 goto is_not_a_corner;
01300 else
01301 goto is_not_a_corner;
01302 else
01303 if( p[pixel[5]] > cb)
01304 if( p[pixel[6]] > cb)
01305 if( p[pixel[7]] > cb)
01306 if( p[pixel[8]] > cb)
01307 if( p[pixel[9]] > cb)
01308 if( p[pixel[10]] > cb)
01309 if( p[pixel[11]] > cb)
01310 if( p[pixel[12]] > cb)
01311 if( p[pixel[13]] > cb)
01312 if( p[pixel[14]] > cb)
01313 goto is_a_corner;
01314 else
01315 goto is_not_a_corner;
01316 else
01317 goto is_not_a_corner;
01318 else
01319 goto is_not_a_corner;
01320 else
01321 goto is_not_a_corner;
01322 else
01323 goto is_not_a_corner;
01324 else
01325 goto is_not_a_corner;
01326 else
01327 goto is_not_a_corner;
01328 else
01329 goto is_not_a_corner;
01330 else
01331 goto is_not_a_corner;
01332 else
01333 goto is_not_a_corner;
01334 else if( p[pixel[4]] < c_b)
01335 if( p[pixel[5]] > cb)
01336 if( p[pixel[10]] > cb)
01337 if( p[pixel[6]] > cb)
01338 if( p[pixel[7]] > cb)
01339 if( p[pixel[8]] > cb)
01340 if( p[pixel[9]] > cb)
01341 if( p[pixel[11]] > cb)
01342 if( p[pixel[12]] > cb)
01343 if( p[pixel[13]] > cb)
01344 if( p[pixel[14]] > cb)
01345 if( p[pixel[15]] > cb)
01346 goto is_a_corner;
01347 else
01348 goto is_not_a_corner;
01349 else
01350 goto is_not_a_corner;
01351 else
01352 goto is_not_a_corner;
01353 else
01354 goto is_not_a_corner;
01355 else
01356 goto is_not_a_corner;
01357 else
01358 goto is_not_a_corner;
01359 else
01360 goto is_not_a_corner;
01361 else
01362 goto is_not_a_corner;
01363 else
01364 goto is_not_a_corner;
01365 else if( p[pixel[10]] < c_b)
01366 if( p[pixel[11]] < c_b)
01367 if( p[pixel[12]] < c_b)
01368 if( p[pixel[13]] < c_b)
01369 if( p[pixel[14]] < c_b)
01370 if( p[pixel[15]] < c_b)
01371 goto is_a_corner;
01372 else
01373 goto is_not_a_corner;
01374 else
01375 goto is_not_a_corner;
01376 else
01377 goto is_not_a_corner;
01378 else
01379 goto is_not_a_corner;
01380 else
01381 goto is_not_a_corner;
01382 else
01383 goto is_not_a_corner;
01384 else if( p[pixel[5]] < c_b)
01385 if( p[pixel[6]] < c_b)
01386 if( p[pixel[7]] < c_b)
01387 if( p[pixel[8]] < c_b)
01388 if( p[pixel[9]] < c_b)
01389 if( p[pixel[10]] < c_b)
01390 goto is_a_corner;
01391 else
01392 if( p[pixel[15]] < c_b)
01393 goto is_a_corner;
01394 else
01395 goto is_not_a_corner;
01396 else
01397 if( p[pixel[14]] < c_b)
01398 if( p[pixel[15]] < c_b)
01399 goto is_a_corner;
01400 else
01401 goto is_not_a_corner;
01402 else
01403 goto is_not_a_corner;
01404 else
01405 if( p[pixel[13]] < c_b)
01406 if( p[pixel[14]] < c_b)
01407 if( p[pixel[15]] < c_b)
01408 goto is_a_corner;
01409 else
01410 goto is_not_a_corner;
01411 else
01412 goto is_not_a_corner;
01413 else
01414 goto is_not_a_corner;
01415 else
01416 if( p[pixel[12]] < c_b)
01417 if( p[pixel[13]] < c_b)
01418 if( p[pixel[14]] < c_b)
01419 if( p[pixel[15]] < c_b)
01420 goto is_a_corner;
01421 else
01422 goto is_not_a_corner;
01423 else
01424 goto is_not_a_corner;
01425 else
01426 goto is_not_a_corner;
01427 else
01428 goto is_not_a_corner;
01429 else
01430 if( p[pixel[11]] < c_b)
01431 if( p[pixel[12]] < c_b)
01432 if( p[pixel[13]] < c_b)
01433 if( p[pixel[14]] < c_b)
01434 if( p[pixel[15]] < c_b)
01435 goto is_a_corner;
01436 else
01437 goto is_not_a_corner;
01438 else
01439 goto is_not_a_corner;
01440 else
01441 goto is_not_a_corner;
01442 else
01443 goto is_not_a_corner;
01444 else
01445 goto is_not_a_corner;
01446 else
01447 if( p[pixel[10]] < c_b)
01448 if( p[pixel[11]] < c_b)
01449 if( p[pixel[12]] < c_b)
01450 if( p[pixel[13]] < c_b)
01451 if( p[pixel[14]] < c_b)
01452 if( p[pixel[15]] < c_b)
01453 goto is_a_corner;
01454 else
01455 goto is_not_a_corner;
01456 else
01457 goto is_not_a_corner;
01458 else
01459 goto is_not_a_corner;
01460 else
01461 goto is_not_a_corner;
01462 else
01463 goto is_not_a_corner;
01464 else
01465 goto is_not_a_corner;
01466 else
01467 if( p[pixel[9]] > cb)
01468 if( p[pixel[5]] > cb)
01469 if( p[pixel[6]] > cb)
01470 if( p[pixel[7]] > cb)
01471 if( p[pixel[8]] > cb)
01472 if( p[pixel[10]] > cb)
01473 if( p[pixel[11]] > cb)
01474 if( p[pixel[12]] > cb)
01475 if( p[pixel[13]] > cb)
01476 if( p[pixel[14]] > cb)
01477 if( p[pixel[15]] > cb)
01478 goto is_a_corner;
01479 else
01480 goto is_not_a_corner;
01481 else
01482 goto is_not_a_corner;
01483 else
01484 goto is_not_a_corner;
01485 else
01486 goto is_not_a_corner;
01487 else
01488 goto is_not_a_corner;
01489 else
01490 goto is_not_a_corner;
01491 else
01492 goto is_not_a_corner;
01493 else
01494 goto is_not_a_corner;
01495 else
01496 goto is_not_a_corner;
01497 else
01498 goto is_not_a_corner;
01499 else if( p[pixel[9]] < c_b)
01500 if( p[pixel[10]] < c_b)
01501 if( p[pixel[11]] < c_b)
01502 if( p[pixel[12]] < c_b)
01503 if( p[pixel[13]] < c_b)
01504 if( p[pixel[14]] < c_b)
01505 if( p[pixel[15]] < c_b)
01506 goto is_a_corner;
01507 else
01508 goto is_not_a_corner;
01509 else
01510 goto is_not_a_corner;
01511 else
01512 goto is_not_a_corner;
01513 else
01514 goto is_not_a_corner;
01515 else
01516 goto is_not_a_corner;
01517 else
01518 goto is_not_a_corner;
01519 else
01520 goto is_not_a_corner;
01521 else
01522 if( p[pixel[8]] > cb)
01523 if( p[pixel[5]] > cb)
01524 if( p[pixel[6]] > cb)
01525 if( p[pixel[7]] > cb)
01526 if( p[pixel[9]] > cb)
01527 if( p[pixel[10]] > cb)
01528 if( p[pixel[11]] > cb)
01529 if( p[pixel[12]] > cb)
01530 if( p[pixel[13]] > cb)
01531 if( p[pixel[14]] > cb)
01532 if( p[pixel[4]] > cb)
01533 goto is_a_corner;
01534 else
01535 if( p[pixel[15]] > cb)
01536 goto is_a_corner;
01537 else
01538 goto is_not_a_corner;
01539 else
01540 goto is_not_a_corner;
01541 else
01542 goto is_not_a_corner;
01543 else
01544 goto is_not_a_corner;
01545 else
01546 goto is_not_a_corner;
01547 else
01548 goto is_not_a_corner;
01549 else
01550 goto is_not_a_corner;
01551 else
01552 goto is_not_a_corner;
01553 else
01554 goto is_not_a_corner;
01555 else
01556 goto is_not_a_corner;
01557 else if( p[pixel[8]] < c_b)
01558 if( p[pixel[9]] < c_b)
01559 if( p[pixel[10]] < c_b)
01560 if( p[pixel[11]] < c_b)
01561 if( p[pixel[12]] < c_b)
01562 if( p[pixel[13]] < c_b)
01563 if( p[pixel[14]] < c_b)
01564 if( p[pixel[15]] < c_b)
01565 goto is_a_corner;
01566 else
01567 if( p[pixel[4]] < c_b)
01568 if( p[pixel[5]] < c_b)
01569 if( p[pixel[6]] < c_b)
01570 if( p[pixel[7]] < c_b)
01571 goto is_a_corner;
01572 else
01573 goto is_not_a_corner;
01574 else
01575 goto is_not_a_corner;
01576 else
01577 goto is_not_a_corner;
01578 else
01579 goto is_not_a_corner;
01580 else
01581 goto is_not_a_corner;
01582 else
01583 goto is_not_a_corner;
01584 else
01585 goto is_not_a_corner;
01586 else
01587 goto is_not_a_corner;
01588 else
01589 goto is_not_a_corner;
01590 else
01591 goto is_not_a_corner;
01592 else
01593 goto is_not_a_corner;
01594 else
01595 if( p[pixel[7]] > cb)
01596 if( p[pixel[5]] > cb)
01597 if( p[pixel[6]] > cb)
01598 if( p[pixel[8]] > cb)
01599 if( p[pixel[9]] > cb)
01600 if( p[pixel[10]] > cb)
01601 if( p[pixel[11]] > cb)
01602 if( p[pixel[12]] > cb)
01603 if( p[pixel[13]] > cb)
01604 if( p[pixel[4]] > cb)
01605 if( p[pixel[3]] > cb)
01606 goto is_a_corner;
01607 else
01608 if( p[pixel[14]] > cb)
01609 goto is_a_corner;
01610 else
01611 goto is_not_a_corner;
01612 else
01613 if( p[pixel[14]] > cb)
01614 if( p[pixel[15]] > cb)
01615 goto is_a_corner;
01616 else
01617 goto is_not_a_corner;
01618 else
01619 goto is_not_a_corner;
01620 else
01621 goto is_not_a_corner;
01622 else
01623 goto is_not_a_corner;
01624 else
01625 goto is_not_a_corner;
01626 else
01627 goto is_not_a_corner;
01628 else
01629 goto is_not_a_corner;
01630 else
01631 goto is_not_a_corner;
01632 else
01633 goto is_not_a_corner;
01634 else
01635 goto is_not_a_corner;
01636 else if( p[pixel[7]] < c_b)
01637 if( p[pixel[8]] < c_b)
01638 if( p[pixel[9]] < c_b)
01639 if( p[pixel[10]] < c_b)
01640 if( p[pixel[11]] < c_b)
01641 if( p[pixel[12]] < c_b)
01642 if( p[pixel[13]] < c_b)
01643 if( p[pixel[14]] < c_b)
01644 if( p[pixel[15]] < c_b)
01645 goto is_a_corner;
01646 else
01647 if( p[pixel[4]] < c_b)
01648 if( p[pixel[5]] < c_b)
01649 if( p[pixel[6]] < c_b)
01650 goto is_a_corner;
01651 else
01652 goto is_not_a_corner;
01653 else
01654 goto is_not_a_corner;
01655 else
01656 goto is_not_a_corner;
01657 else
01658 if( p[pixel[3]] < c_b)
01659 if( p[pixel[4]] < c_b)
01660 if( p[pixel[5]] < c_b)
01661 if( p[pixel[6]] < c_b)
01662 goto is_a_corner;
01663 else
01664 goto is_not_a_corner;
01665 else
01666 goto is_not_a_corner;
01667 else
01668 goto is_not_a_corner;
01669 else
01670 goto is_not_a_corner;
01671 else
01672 goto is_not_a_corner;
01673 else
01674 goto is_not_a_corner;
01675 else
01676 goto is_not_a_corner;
01677 else
01678 goto is_not_a_corner;
01679 else
01680 goto is_not_a_corner;
01681 else
01682 goto is_not_a_corner;
01683 else
01684 goto is_not_a_corner;
01685 else
01686 if( p[pixel[6]] > cb)
01687 if( p[pixel[5]] > cb)
01688 if( p[pixel[7]] > cb)
01689 if( p[pixel[8]] > cb)
01690 if( p[pixel[9]] > cb)
01691 if( p[pixel[10]] > cb)
01692 if( p[pixel[11]] > cb)
01693 if( p[pixel[12]] > cb)
01694 if( p[pixel[4]] > cb)
01695 if( p[pixel[3]] > cb)
01696 if( p[pixel[2]] > cb)
01697 goto is_a_corner;
01698 else
01699 if( p[pixel[13]] > cb)
01700 goto is_a_corner;
01701 else
01702 goto is_not_a_corner;
01703 else
01704 if( p[pixel[13]] > cb)
01705 if( p[pixel[14]] > cb)
01706 goto is_a_corner;
01707 else
01708 goto is_not_a_corner;
01709 else
01710 goto is_not_a_corner;
01711 else
01712 if( p[pixel[13]] > cb)
01713 if( p[pixel[14]] > cb)
01714 if( p[pixel[15]] > cb)
01715 goto is_a_corner;
01716 else
01717 goto is_not_a_corner;
01718 else
01719 goto is_not_a_corner;
01720 else
01721 goto is_not_a_corner;
01722 else
01723 goto is_not_a_corner;
01724 else
01725 goto is_not_a_corner;
01726 else
01727 goto is_not_a_corner;
01728 else
01729 goto is_not_a_corner;
01730 else
01731 goto is_not_a_corner;
01732 else
01733 goto is_not_a_corner;
01734 else
01735 goto is_not_a_corner;
01736 else if( p[pixel[6]] < c_b)
01737 if( p[pixel[7]] < c_b)
01738 if( p[pixel[8]] < c_b)
01739 if( p[pixel[9]] < c_b)
01740 if( p[pixel[10]] < c_b)
01741 if( p[pixel[11]] < c_b)
01742 if( p[pixel[12]] < c_b)
01743 if( p[pixel[13]] < c_b)
01744 if( p[pixel[14]] < c_b)
01745 if( p[pixel[15]] < c_b)
01746 goto is_a_corner;
01747 else
01748 if( p[pixel[4]] < c_b)
01749 if( p[pixel[5]] < c_b)
01750 goto is_a_corner;
01751 else
01752 goto is_not_a_corner;
01753 else
01754 goto is_not_a_corner;
01755 else
01756 if( p[pixel[3]] < c_b)
01757 if( p[pixel[4]] < c_b)
01758 if( p[pixel[5]] < c_b)
01759 goto is_a_corner;
01760 else
01761 goto is_not_a_corner;
01762 else
01763 goto is_not_a_corner;
01764 else
01765 goto is_not_a_corner;
01766 else
01767 if( p[pixel[2]] < c_b)
01768 if( p[pixel[3]] < c_b)
01769 if( p[pixel[4]] < c_b)
01770 if( p[pixel[5]] < c_b)
01771 goto is_a_corner;
01772 else
01773 goto is_not_a_corner;
01774 else
01775 goto is_not_a_corner;
01776 else
01777 goto is_not_a_corner;
01778 else
01779 goto is_not_a_corner;
01780 else
01781 goto is_not_a_corner;
01782 else
01783 goto is_not_a_corner;
01784 else
01785 goto is_not_a_corner;
01786 else
01787 goto is_not_a_corner;
01788 else
01789 goto is_not_a_corner;
01790 else
01791 goto is_not_a_corner;
01792 else
01793 goto is_not_a_corner;
01794 else
01795 if( p[pixel[5]] > cb)
01796 if( p[pixel[6]] > cb)
01797 if( p[pixel[7]] > cb)
01798 if( p[pixel[8]] > cb)
01799 if( p[pixel[9]] > cb)
01800 if( p[pixel[10]] > cb)
01801 if( p[pixel[11]] > cb)
01802 if( p[pixel[4]] > cb)
01803 if( p[pixel[3]] > cb)
01804 if( p[pixel[2]] > cb)
01805 if( p[pixel[1]] > cb)
01806 goto is_a_corner;
01807 else
01808 if( p[pixel[12]] > cb)
01809 goto is_a_corner;
01810 else
01811 goto is_not_a_corner;
01812 else
01813 if( p[pixel[12]] > cb)
01814 if( p[pixel[13]] > cb)
01815 goto is_a_corner;
01816 else
01817 goto is_not_a_corner;
01818 else
01819 goto is_not_a_corner;
01820 else
01821 if( p[pixel[12]] > cb)
01822 if( p[pixel[13]] > cb)
01823 if( p[pixel[14]] > cb)
01824 goto is_a_corner;
01825 else
01826 goto is_not_a_corner;
01827 else
01828 goto is_not_a_corner;
01829 else
01830 goto is_not_a_corner;
01831 else
01832 if( p[pixel[12]] > cb)
01833 if( p[pixel[13]] > cb)
01834 if( p[pixel[14]] > cb)
01835 if( p[pixel[15]] > cb)
01836 goto is_a_corner;
01837 else
01838 goto is_not_a_corner;
01839 else
01840 goto is_not_a_corner;
01841 else
01842 goto is_not_a_corner;
01843 else
01844 goto is_not_a_corner;
01845 else
01846 goto is_not_a_corner;
01847 else
01848 goto is_not_a_corner;
01849 else
01850 goto is_not_a_corner;
01851 else
01852 goto is_not_a_corner;
01853 else
01854 goto is_not_a_corner;
01855 else
01856 goto is_not_a_corner;
01857 else if( p[pixel[5]] < c_b)
01858 if( p[pixel[6]] < c_b)
01859 if( p[pixel[7]] < c_b)
01860 if( p[pixel[8]] < c_b)
01861 if( p[pixel[9]] < c_b)
01862 if( p[pixel[10]] < c_b)
01863 if( p[pixel[11]] < c_b)
01864 if( p[pixel[4]] < c_b)
01865 if( p[pixel[3]] < c_b)
01866 if( p[pixel[2]] < c_b)
01867 if( p[pixel[1]] < c_b)
01868 goto is_a_corner;
01869 else
01870 if( p[pixel[12]] < c_b)
01871 goto is_a_corner;
01872 else
01873 goto is_not_a_corner;
01874 else
01875 if( p[pixel[12]] < c_b)
01876 if( p[pixel[13]] < c_b)
01877 goto is_a_corner;
01878 else
01879 goto is_not_a_corner;
01880 else
01881 goto is_not_a_corner;
01882 else
01883 if( p[pixel[12]] < c_b)
01884 if( p[pixel[13]] < c_b)
01885 if( p[pixel[14]] < c_b)
01886 goto is_a_corner;
01887 else
01888 goto is_not_a_corner;
01889 else
01890 goto is_not_a_corner;
01891 else
01892 goto is_not_a_corner;
01893 else
01894 if( p[pixel[12]] < c_b)
01895 if( p[pixel[13]] < c_b)
01896 if( p[pixel[14]] < c_b)
01897 if( p[pixel[15]] < c_b)
01898 goto is_a_corner;
01899 else
01900 goto is_not_a_corner;
01901 else
01902 goto is_not_a_corner;
01903 else
01904 goto is_not_a_corner;
01905 else
01906 goto is_not_a_corner;
01907 else
01908 goto is_not_a_corner;
01909 else
01910 goto is_not_a_corner;
01911 else
01912 goto is_not_a_corner;
01913 else
01914 goto is_not_a_corner;
01915 else
01916 goto is_not_a_corner;
01917 else
01918 goto is_not_a_corner;
01919 else
01920 goto is_not_a_corner;
01921
01922 is_a_corner:
01923 bmin=b;
01924 goto end_if;
01925
01926 is_not_a_corner:
01927 bmax=b;
01928 goto end_if;
01929
01930 end_if:
01931
01932 if(bmin == bmax - 1 || bmin == bmax)
01933 return bmin;
01934 b = (bmin + bmax) / 2;
01935 }
01936 }
01937
01938 static void make_offsets(int pixel[], int row_stride)
01939 {
01940 pixel[0] = 0 + row_stride * 3;
01941 pixel[1] = 1 + row_stride * 3;
01942 pixel[2] = 2 + row_stride * 2;
01943 pixel[3] = 3 + row_stride * 1;
01944 pixel[4] = 3 + row_stride * 0;
01945 pixel[5] = 3 + row_stride * -1;
01946 pixel[6] = 2 + row_stride * -2;
01947 pixel[7] = 1 + row_stride * -3;
01948 pixel[8] = 0 + row_stride * -3;
01949 pixel[9] = -1 + row_stride * -3;
01950 pixel[10] = -2 + row_stride * -2;
01951 pixel[11] = -3 + row_stride * -1;
01952 pixel[12] = -3 + row_stride * 0;
01953 pixel[13] = -3 + row_stride * 1;
01954 pixel[14] = -2 + row_stride * 2;
01955 pixel[15] = -1 + row_stride * 3;
01956 }
01957
01958
01959
01960 int* fast11_score(const byte* i, int stride, xy* corners, int num_corners, int b)
01961 {
01962 int* scores = (int*)malloc(sizeof(int)* num_corners);
01963 int n;
01964
01965 int pixel[16];
01966 make_offsets(pixel, stride);
01967
01968 for(n=0; n < num_corners; n++)
01969 scores[n] = fast11_corner_score(i + corners[n].y*stride + corners[n].x, pixel, b);
01970
01971 return scores;
01972 }
01973
01974
01975 xy* fast11_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners)
01976 {
01977 int num_corners=0;
01978 xy* ret_corners;
01979 int rsize=512;
01980 int pixel[16];
01981 int x, y;
01982
01983 ret_corners = (xy*)malloc(sizeof(xy)*rsize);
01984 make_offsets(pixel, stride);
01985
01986 for(y=3; y < ysize - 3; y++)
01987 for(x=3; x < xsize - 3; x++)
01988 {
01989 const byte* p = im + y*stride + x;
01990
01991 int cb = *p + b;
01992 int c_b= *p - b;
01993 if(p[pixel[0]] > cb)
01994 if(p[pixel[1]] > cb)
01995 if(p[pixel[2]] > cb)
01996 if(p[pixel[3]] > cb)
01997 if(p[pixel[4]] > cb)
01998 if(p[pixel[5]] > cb)
01999 if(p[pixel[6]] > cb)
02000 if(p[pixel[7]] > cb)
02001 if(p[pixel[8]] > cb)
02002 if(p[pixel[9]] > cb)
02003 if(p[pixel[10]] > cb)
02004 {}
02005 else
02006 if(p[pixel[15]] > cb)
02007 {}
02008 else
02009 continue;
02010 else
02011 if(p[pixel[14]] > cb)
02012 if(p[pixel[15]] > cb)
02013 {}
02014 else
02015 continue;
02016 else
02017 continue;
02018 else
02019 if(p[pixel[13]] > cb)
02020 if(p[pixel[14]] > cb)
02021 if(p[pixel[15]] > cb)
02022 {}
02023 else
02024 continue;
02025 else
02026 continue;
02027 else
02028 continue;
02029 else
02030 if(p[pixel[12]] > cb)
02031 if(p[pixel[13]] > cb)
02032 if(p[pixel[14]] > cb)
02033 if(p[pixel[15]] > cb)
02034 {}
02035 else
02036 continue;
02037 else
02038 continue;
02039 else
02040 continue;
02041 else
02042 continue;
02043 else
02044 if(p[pixel[11]] > cb)
02045 if(p[pixel[12]] > cb)
02046 if(p[pixel[13]] > cb)
02047 if(p[pixel[14]] > cb)
02048 if(p[pixel[15]] > cb)
02049 {}
02050 else
02051 continue;
02052 else
02053 continue;
02054 else
02055 continue;
02056 else
02057 continue;
02058 else
02059 continue;
02060 else if(p[pixel[5]] < c_b)
02061 if(p[pixel[10]] > cb)
02062 if(p[pixel[11]] > cb)
02063 if(p[pixel[12]] > cb)
02064 if(p[pixel[13]] > cb)
02065 if(p[pixel[14]] > cb)
02066 if(p[pixel[15]] > cb)
02067 {}
02068 else
02069 continue;
02070 else
02071 continue;
02072 else
02073 continue;
02074 else
02075 continue;
02076 else
02077 continue;
02078 else if(p[pixel[10]] < c_b)
02079 if(p[pixel[6]] < c_b)
02080 if(p[pixel[7]] < c_b)
02081 if(p[pixel[8]] < c_b)
02082 if(p[pixel[9]] < c_b)
02083 if(p[pixel[11]] < c_b)
02084 if(p[pixel[12]] < c_b)
02085 if(p[pixel[13]] < c_b)
02086 if(p[pixel[14]] < c_b)
02087 if(p[pixel[15]] < c_b)
02088 {}
02089 else
02090 continue;
02091 else
02092 continue;
02093 else
02094 continue;
02095 else
02096 continue;
02097 else
02098 continue;
02099 else
02100 continue;
02101 else
02102 continue;
02103 else
02104 continue;
02105 else
02106 continue;
02107 else
02108 continue;
02109 else
02110 if(p[pixel[10]] > cb)
02111 if(p[pixel[11]] > cb)
02112 if(p[pixel[12]] > cb)
02113 if(p[pixel[13]] > cb)
02114 if(p[pixel[14]] > cb)
02115 if(p[pixel[15]] > cb)
02116 {}
02117 else
02118 continue;
02119 else
02120 continue;
02121 else
02122 continue;
02123 else
02124 continue;
02125 else
02126 continue;
02127 else
02128 continue;
02129 else if(p[pixel[4]] < c_b)
02130 if(p[pixel[15]] > cb)
02131 if(p[pixel[9]] > cb)
02132 if(p[pixel[10]] > cb)
02133 if(p[pixel[11]] > cb)
02134 if(p[pixel[12]] > cb)
02135 if(p[pixel[13]] > cb)
02136 if(p[pixel[14]] > cb)
02137 {}
02138 else
02139 continue;
02140 else
02141 continue;
02142 else
02143 continue;
02144 else
02145 continue;
02146 else
02147 continue;
02148 else if(p[pixel[9]] < c_b)
02149 if(p[pixel[5]] < c_b)
02150 if(p[pixel[6]] < c_b)
02151 if(p[pixel[7]] < c_b)
02152 if(p[pixel[8]] < c_b)
02153 if(p[pixel[10]] < c_b)
02154 if(p[pixel[11]] < c_b)
02155 if(p[pixel[12]] < c_b)
02156 if(p[pixel[13]] < c_b)
02157 if(p[pixel[14]] < c_b)
02158 {}
02159 else
02160 continue;
02161 else
02162 continue;
02163 else
02164 continue;
02165 else
02166 continue;
02167 else
02168 continue;
02169 else
02170 continue;
02171 else
02172 continue;
02173 else
02174 continue;
02175 else
02176 continue;
02177 else
02178 continue;
02179 else
02180 if(p[pixel[5]] < c_b)
02181 if(p[pixel[6]] < c_b)
02182 if(p[pixel[7]] < c_b)
02183 if(p[pixel[8]] < c_b)
02184 if(p[pixel[9]] < c_b)
02185 if(p[pixel[10]] < c_b)
02186 if(p[pixel[11]] < c_b)
02187 if(p[pixel[12]] < c_b)
02188 if(p[pixel[13]] < c_b)
02189 if(p[pixel[14]] < c_b)
02190 {}
02191 else
02192 continue;
02193 else
02194 continue;
02195 else
02196 continue;
02197 else
02198 continue;
02199 else
02200 continue;
02201 else
02202 continue;
02203 else
02204 continue;
02205 else
02206 continue;
02207 else
02208 continue;
02209 else
02210 continue;
02211 else
02212 if(p[pixel[9]] > cb)
02213 if(p[pixel[10]] > cb)
02214 if(p[pixel[11]] > cb)
02215 if(p[pixel[12]] > cb)
02216 if(p[pixel[13]] > cb)
02217 if(p[pixel[14]] > cb)
02218 if(p[pixel[15]] > cb)
02219 {}
02220 else
02221 continue;
02222 else
02223 continue;
02224 else
02225 continue;
02226 else
02227 continue;
02228 else
02229 continue;
02230 else
02231 continue;
02232 else if(p[pixel[9]] < c_b)
02233 if(p[pixel[5]] < c_b)
02234 if(p[pixel[6]] < c_b)
02235 if(p[pixel[7]] < c_b)
02236 if(p[pixel[8]] < c_b)
02237 if(p[pixel[10]] < c_b)
02238 if(p[pixel[11]] < c_b)
02239 if(p[pixel[12]] < c_b)
02240 if(p[pixel[13]] < c_b)
02241 if(p[pixel[14]] < c_b)
02242 if(p[pixel[15]] < c_b)
02243 {}
02244 else
02245 continue;
02246 else
02247 continue;
02248 else
02249 continue;
02250 else
02251 continue;
02252 else
02253 continue;
02254 else
02255 continue;
02256 else
02257 continue;
02258 else
02259 continue;
02260 else
02261 continue;
02262 else
02263 continue;
02264 else
02265 continue;
02266 else if(p[pixel[3]] < c_b)
02267 if(p[pixel[14]] > cb)
02268 if(p[pixel[8]] > cb)
02269 if(p[pixel[9]] > cb)
02270 if(p[pixel[10]] > cb)
02271 if(p[pixel[11]] > cb)
02272 if(p[pixel[12]] > cb)
02273 if(p[pixel[13]] > cb)
02274 if(p[pixel[15]] > cb)
02275 {}
02276 else
02277 if(p[pixel[4]] > cb)
02278 if(p[pixel[5]] > cb)
02279 if(p[pixel[6]] > cb)
02280 if(p[pixel[7]] > cb)
02281 {}
02282 else
02283 continue;
02284 else
02285 continue;
02286 else
02287 continue;
02288 else
02289 continue;
02290 else
02291 continue;
02292 else
02293 continue;
02294 else
02295 continue;
02296 else
02297 continue;
02298 else
02299 continue;
02300 else if(p[pixel[8]] < c_b)
02301 if(p[pixel[4]] < c_b)
02302 if(p[pixel[5]] < c_b)
02303 if(p[pixel[6]] < c_b)
02304 if(p[pixel[7]] < c_b)
02305 if(p[pixel[9]] < c_b)
02306 if(p[pixel[10]] < c_b)
02307 if(p[pixel[11]] < c_b)
02308 if(p[pixel[12]] < c_b)
02309 if(p[pixel[13]] < c_b)
02310 {}
02311 else
02312 continue;
02313 else
02314 continue;
02315 else
02316 continue;
02317 else
02318 continue;
02319 else
02320 continue;
02321 else
02322 continue;
02323 else
02324 continue;
02325 else
02326 continue;
02327 else
02328 continue;
02329 else
02330 continue;
02331 else if(p[pixel[14]] < c_b)
02332 if(p[pixel[5]] < c_b)
02333 if(p[pixel[6]] < c_b)
02334 if(p[pixel[7]] < c_b)
02335 if(p[pixel[8]] < c_b)
02336 if(p[pixel[9]] < c_b)
02337 if(p[pixel[10]] < c_b)
02338 if(p[pixel[11]] < c_b)
02339 if(p[pixel[12]] < c_b)
02340 if(p[pixel[13]] < c_b)
02341 if(p[pixel[4]] < c_b)
02342 {}
02343 else
02344 if(p[pixel[15]] < c_b)
02345 {}
02346 else
02347 continue;
02348 else
02349 continue;
02350 else
02351 continue;
02352 else
02353 continue;
02354 else
02355 continue;
02356 else
02357 continue;
02358 else
02359 continue;
02360 else
02361 continue;
02362 else
02363 continue;
02364 else
02365 continue;
02366 else
02367 if(p[pixel[4]] < c_b)
02368 if(p[pixel[5]] < c_b)
02369 if(p[pixel[6]] < c_b)
02370 if(p[pixel[7]] < c_b)
02371 if(p[pixel[8]] < c_b)
02372 if(p[pixel[9]] < c_b)
02373 if(p[pixel[10]] < c_b)
02374 if(p[pixel[11]] < c_b)
02375 if(p[pixel[12]] < c_b)
02376 if(p[pixel[13]] < c_b)
02377 {}
02378 else
02379 continue;
02380 else
02381 continue;
02382 else
02383 continue;
02384 else
02385 continue;
02386 else
02387 continue;
02388 else
02389 continue;
02390 else
02391 continue;
02392 else
02393 continue;
02394 else
02395 continue;
02396 else
02397 continue;
02398 else
02399 if(p[pixel[8]] > cb)
02400 if(p[pixel[9]] > cb)
02401 if(p[pixel[10]] > cb)
02402 if(p[pixel[11]] > cb)
02403 if(p[pixel[12]] > cb)
02404 if(p[pixel[13]] > cb)
02405 if(p[pixel[14]] > cb)
02406 if(p[pixel[15]] > cb)
02407 {}
02408 else
02409 if(p[pixel[4]] > cb)
02410 if(p[pixel[5]] > cb)
02411 if(p[pixel[6]] > cb)
02412 if(p[pixel[7]] > cb)
02413 {}
02414 else
02415 continue;
02416 else
02417 continue;
02418 else
02419 continue;
02420 else
02421 continue;
02422 else
02423 continue;
02424 else
02425 continue;
02426 else
02427 continue;
02428 else
02429 continue;
02430 else
02431 continue;
02432 else
02433 continue;
02434 else if(p[pixel[8]] < c_b)
02435 if(p[pixel[5]] < c_b)
02436 if(p[pixel[6]] < c_b)
02437 if(p[pixel[7]] < c_b)
02438 if(p[pixel[9]] < c_b)
02439 if(p[pixel[10]] < c_b)
02440 if(p[pixel[11]] < c_b)
02441 if(p[pixel[12]] < c_b)
02442 if(p[pixel[13]] < c_b)
02443 if(p[pixel[14]] < c_b)
02444 if(p[pixel[4]] < c_b)
02445 {}
02446 else
02447 if(p[pixel[15]] < c_b)
02448 {}
02449 else
02450 continue;
02451 else
02452 continue;
02453 else
02454 continue;
02455 else
02456 continue;
02457 else
02458 continue;
02459 else
02460 continue;
02461 else
02462 continue;
02463 else
02464 continue;
02465 else
02466 continue;
02467 else
02468 continue;
02469 else
02470 continue;
02471 else if(p[pixel[2]] < c_b)
02472 if(p[pixel[7]] > cb)
02473 if(p[pixel[8]] > cb)
02474 if(p[pixel[9]] > cb)
02475 if(p[pixel[10]] > cb)
02476 if(p[pixel[11]] > cb)
02477 if(p[pixel[12]] > cb)
02478 if(p[pixel[13]] > cb)
02479 if(p[pixel[14]] > cb)
02480 if(p[pixel[15]] > cb)
02481 {}
02482 else
02483 if(p[pixel[4]] > cb)
02484 if(p[pixel[5]] > cb)
02485 if(p[pixel[6]] > cb)
02486 {}
02487 else
02488 continue;
02489 else
02490 continue;
02491 else
02492 continue;
02493 else
02494 if(p[pixel[3]] > cb)
02495 if(p[pixel[4]] > cb)
02496 if(p[pixel[5]] > cb)
02497 if(p[pixel[6]] > cb)
02498 {}
02499 else
02500 continue;
02501 else
02502 continue;
02503 else
02504 continue;
02505 else
02506 continue;
02507 else
02508 continue;
02509 else
02510 continue;
02511 else
02512 continue;
02513 else
02514 continue;
02515 else
02516 continue;
02517 else
02518 continue;
02519 else if(p[pixel[7]] < c_b)
02520 if(p[pixel[5]] < c_b)
02521 if(p[pixel[6]] < c_b)
02522 if(p[pixel[8]] < c_b)
02523 if(p[pixel[9]] < c_b)
02524 if(p[pixel[10]] < c_b)
02525 if(p[pixel[11]] < c_b)
02526 if(p[pixel[12]] < c_b)
02527 if(p[pixel[4]] < c_b)
02528 if(p[pixel[3]] < c_b)
02529 {}
02530 else
02531 if(p[pixel[13]] < c_b)
02532 if(p[pixel[14]] < c_b)
02533 {}
02534 else
02535 continue;
02536 else
02537 continue;
02538 else
02539 if(p[pixel[13]] < c_b)
02540 if(p[pixel[14]] < c_b)
02541 if(p[pixel[15]] < c_b)
02542 {}
02543 else
02544 continue;
02545 else
02546 continue;
02547 else
02548 continue;
02549 else
02550 continue;
02551 else
02552 continue;
02553 else
02554 continue;
02555 else
02556 continue;
02557 else
02558 continue;
02559 else
02560 continue;
02561 else
02562 continue;
02563 else
02564 continue;
02565 else
02566 if(p[pixel[7]] > cb)
02567 if(p[pixel[8]] > cb)
02568 if(p[pixel[9]] > cb)
02569 if(p[pixel[10]] > cb)
02570 if(p[pixel[11]] > cb)
02571 if(p[pixel[12]] > cb)
02572 if(p[pixel[13]] > cb)
02573 if(p[pixel[14]] > cb)
02574 if(p[pixel[15]] > cb)
02575 {}
02576 else
02577 if(p[pixel[4]] > cb)
02578 if(p[pixel[5]] > cb)
02579 if(p[pixel[6]] > cb)
02580 {}
02581 else
02582 continue;
02583 else
02584 continue;
02585 else
02586 continue;
02587 else
02588 if(p[pixel[3]] > cb)
02589 if(p[pixel[4]] > cb)
02590 if(p[pixel[5]] > cb)
02591 if(p[pixel[6]] > cb)
02592 {}
02593 else
02594 continue;
02595 else
02596 continue;
02597 else
02598 continue;
02599 else
02600 continue;
02601 else
02602 continue;
02603 else
02604 continue;
02605 else
02606 continue;
02607 else
02608 continue;
02609 else
02610 continue;
02611 else
02612 continue;
02613 else if(p[pixel[7]] < c_b)
02614 if(p[pixel[5]] < c_b)
02615 if(p[pixel[6]] < c_b)
02616 if(p[pixel[8]] < c_b)
02617 if(p[pixel[9]] < c_b)
02618 if(p[pixel[10]] < c_b)
02619 if(p[pixel[11]] < c_b)
02620 if(p[pixel[12]] < c_b)
02621 if(p[pixel[13]] < c_b)
02622 if(p[pixel[4]] < c_b)
02623 if(p[pixel[3]] < c_b)
02624 {}
02625 else
02626 if(p[pixel[14]] < c_b)
02627 {}
02628 else
02629 continue;
02630 else
02631 if(p[pixel[14]] < c_b)
02632 if(p[pixel[15]] < c_b)
02633 {}
02634 else
02635 continue;
02636 else
02637 continue;
02638 else
02639 continue;
02640 else
02641 continue;
02642 else
02643 continue;
02644 else
02645 continue;
02646 else
02647 continue;
02648 else
02649 continue;
02650 else
02651 continue;
02652 else
02653 continue;
02654 else
02655 continue;
02656 else if(p[pixel[1]] < c_b)
02657 if(p[pixel[6]] > cb)
02658 if(p[pixel[7]] > cb)
02659 if(p[pixel[8]] > cb)
02660 if(p[pixel[9]] > cb)
02661 if(p[pixel[10]] > cb)
02662 if(p[pixel[11]] > cb)
02663 if(p[pixel[12]] > cb)
02664 if(p[pixel[13]] > cb)
02665 if(p[pixel[14]] > cb)
02666 if(p[pixel[15]] > cb)
02667 {}
02668 else
02669 if(p[pixel[4]] > cb)
02670 if(p[pixel[5]] > cb)
02671 {}
02672 else
02673 continue;
02674 else
02675 continue;
02676 else
02677 if(p[pixel[3]] > cb)
02678 if(p[pixel[4]] > cb)
02679 if(p[pixel[5]] > cb)
02680 {}
02681 else
02682 continue;
02683 else
02684 continue;
02685 else
02686 continue;
02687 else
02688 if(p[pixel[2]] > cb)
02689 if(p[pixel[3]] > cb)
02690 if(p[pixel[4]] > cb)
02691 if(p[pixel[5]] > cb)
02692 {}
02693 else
02694 continue;
02695 else
02696 continue;
02697 else
02698 continue;
02699 else
02700 continue;
02701 else
02702 continue;
02703 else
02704 continue;
02705 else
02706 continue;
02707 else
02708 continue;
02709 else
02710 continue;
02711 else
02712 continue;
02713 else if(p[pixel[6]] < c_b)
02714 if(p[pixel[5]] < c_b)
02715 if(p[pixel[7]] < c_b)
02716 if(p[pixel[8]] < c_b)
02717 if(p[pixel[9]] < c_b)
02718 if(p[pixel[10]] < c_b)
02719 if(p[pixel[11]] < c_b)
02720 if(p[pixel[4]] < c_b)
02721 if(p[pixel[3]] < c_b)
02722 if(p[pixel[2]] < c_b)
02723 {}
02724 else
02725 if(p[pixel[12]] < c_b)
02726 if(p[pixel[13]] < c_b)
02727 {}
02728 else
02729 continue;
02730 else
02731 continue;
02732 else
02733 if(p[pixel[12]] < c_b)
02734 if(p[pixel[13]] < c_b)
02735 if(p[pixel[14]] < c_b)
02736 {}
02737 else
02738 continue;
02739 else
02740 continue;
02741 else
02742 continue;
02743 else
02744 if(p[pixel[12]] < c_b)
02745 if(p[pixel[13]] < c_b)
02746 if(p[pixel[14]] < c_b)
02747 if(p[pixel[15]] < c_b)
02748 {}
02749 else
02750 continue;
02751 else
02752 continue;
02753 else
02754 continue;
02755 else
02756 continue;
02757 else
02758 continue;
02759 else
02760 continue;
02761 else
02762 continue;
02763 else
02764 continue;
02765 else
02766 continue;
02767 else
02768 continue;
02769 else
02770 continue;
02771 else
02772 if(p[pixel[6]] > cb)
02773 if(p[pixel[7]] > cb)
02774 if(p[pixel[8]] > cb)
02775 if(p[pixel[9]] > cb)
02776 if(p[pixel[10]] > cb)
02777 if(p[pixel[11]] > cb)
02778 if(p[pixel[12]] > cb)
02779 if(p[pixel[13]] > cb)
02780 if(p[pixel[14]] > cb)
02781 if(p[pixel[15]] > cb)
02782 {}
02783 else
02784 if(p[pixel[4]] > cb)
02785 if(p[pixel[5]] > cb)
02786 {}
02787 else
02788 continue;
02789 else
02790 continue;
02791 else
02792 if(p[pixel[3]] > cb)
02793 if(p[pixel[4]] > cb)
02794 if(p[pixel[5]] > cb)
02795 {}
02796 else
02797 continue;
02798 else
02799 continue;
02800 else
02801 continue;
02802 else
02803 if(p[pixel[2]] > cb)
02804 if(p[pixel[3]] > cb)
02805 if(p[pixel[4]] > cb)
02806 if(p[pixel[5]] > cb)
02807 {}
02808 else
02809 continue;
02810 else
02811 continue;
02812 else
02813 continue;
02814 else
02815 continue;
02816 else
02817 continue;
02818 else
02819 continue;
02820 else
02821 continue;
02822 else
02823 continue;
02824 else
02825 continue;
02826 else
02827 continue;
02828 else if(p[pixel[6]] < c_b)
02829 if(p[pixel[5]] < c_b)
02830 if(p[pixel[7]] < c_b)
02831 if(p[pixel[8]] < c_b)
02832 if(p[pixel[9]] < c_b)
02833 if(p[pixel[10]] < c_b)
02834 if(p[pixel[11]] < c_b)
02835 if(p[pixel[12]] < c_b)
02836 if(p[pixel[4]] < c_b)
02837 if(p[pixel[3]] < c_b)
02838 if(p[pixel[2]] < c_b)
02839 {}
02840 else
02841 if(p[pixel[13]] < c_b)
02842 {}
02843 else
02844 continue;
02845 else
02846 if(p[pixel[13]] < c_b)
02847 if(p[pixel[14]] < c_b)
02848 {}
02849 else
02850 continue;
02851 else
02852 continue;
02853 else
02854 if(p[pixel[13]] < c_b)
02855 if(p[pixel[14]] < c_b)
02856 if(p[pixel[15]] < c_b)
02857 {}
02858 else
02859 continue;
02860 else
02861 continue;
02862 else
02863 continue;
02864 else
02865 continue;
02866 else
02867 continue;
02868 else
02869 continue;
02870 else
02871 continue;
02872 else
02873 continue;
02874 else
02875 continue;
02876 else
02877 continue;
02878 else
02879 continue;
02880 else if(p[pixel[0]] < c_b)
02881 if(p[pixel[1]] > cb)
02882 if(p[pixel[6]] > cb)
02883 if(p[pixel[5]] > cb)
02884 if(p[pixel[7]] > cb)
02885 if(p[pixel[8]] > cb)
02886 if(p[pixel[9]] > cb)
02887 if(p[pixel[10]] > cb)
02888 if(p[pixel[11]] > cb)
02889 if(p[pixel[4]] > cb)
02890 if(p[pixel[3]] > cb)
02891 if(p[pixel[2]] > cb)
02892 {}
02893 else
02894 if(p[pixel[12]] > cb)
02895 if(p[pixel[13]] > cb)
02896 {}
02897 else
02898 continue;
02899 else
02900 continue;
02901 else
02902 if(p[pixel[12]] > cb)
02903 if(p[pixel[13]] > cb)
02904 if(p[pixel[14]] > cb)
02905 {}
02906 else
02907 continue;
02908 else
02909 continue;
02910 else
02911 continue;
02912 else
02913 if(p[pixel[12]] > cb)
02914 if(p[pixel[13]] > cb)
02915 if(p[pixel[14]] > cb)
02916 if(p[pixel[15]] > cb)
02917 {}
02918 else
02919 continue;
02920 else
02921 continue;
02922 else
02923 continue;
02924 else
02925 continue;
02926 else
02927 continue;
02928 else
02929 continue;
02930 else
02931 continue;
02932 else
02933 continue;
02934 else
02935 continue;
02936 else
02937 continue;
02938 else if(p[pixel[6]] < c_b)
02939 if(p[pixel[7]] < c_b)
02940 if(p[pixel[8]] < c_b)
02941 if(p[pixel[9]] < c_b)
02942 if(p[pixel[10]] < c_b)
02943 if(p[pixel[11]] < c_b)
02944 if(p[pixel[12]] < c_b)
02945 if(p[pixel[13]] < c_b)
02946 if(p[pixel[14]] < c_b)
02947 if(p[pixel[15]] < c_b)
02948 {}
02949 else
02950 if(p[pixel[4]] < c_b)
02951 if(p[pixel[5]] < c_b)
02952 {}
02953 else
02954 continue;
02955 else
02956 continue;
02957 else
02958 if(p[pixel[3]] < c_b)
02959 if(p[pixel[4]] < c_b)
02960 if(p[pixel[5]] < c_b)
02961 {}
02962 else
02963 continue;
02964 else
02965 continue;
02966 else
02967 continue;
02968 else
02969 if(p[pixel[2]] < c_b)
02970 if(p[pixel[3]] < c_b)
02971 if(p[pixel[4]] < c_b)
02972 if(p[pixel[5]] < c_b)
02973 {}
02974 else
02975 continue;
02976 else
02977 continue;
02978 else
02979 continue;
02980 else
02981 continue;
02982 else
02983 continue;
02984 else
02985 continue;
02986 else
02987 continue;
02988 else
02989 continue;
02990 else
02991 continue;
02992 else
02993 continue;
02994 else
02995 continue;
02996 else if(p[pixel[1]] < c_b)
02997 if(p[pixel[2]] > cb)
02998 if(p[pixel[7]] > cb)
02999 if(p[pixel[5]] > cb)
03000 if(p[pixel[6]] > cb)
03001 if(p[pixel[8]] > cb)
03002 if(p[pixel[9]] > cb)
03003 if(p[pixel[10]] > cb)
03004 if(p[pixel[11]] > cb)
03005 if(p[pixel[12]] > cb)
03006 if(p[pixel[4]] > cb)
03007 if(p[pixel[3]] > cb)
03008 {}
03009 else
03010 if(p[pixel[13]] > cb)
03011 if(p[pixel[14]] > cb)
03012 {}
03013 else
03014 continue;
03015 else
03016 continue;
03017 else
03018 if(p[pixel[13]] > cb)
03019 if(p[pixel[14]] > cb)
03020 if(p[pixel[15]] > cb)
03021 {}
03022 else
03023 continue;
03024 else
03025 continue;
03026 else
03027 continue;
03028 else
03029 continue;
03030 else
03031 continue;
03032 else
03033 continue;
03034 else
03035 continue;
03036 else
03037 continue;
03038 else
03039 continue;
03040 else
03041 continue;
03042 else if(p[pixel[7]] < c_b)
03043 if(p[pixel[8]] < c_b)
03044 if(p[pixel[9]] < c_b)
03045 if(p[pixel[10]] < c_b)
03046 if(p[pixel[11]] < c_b)
03047 if(p[pixel[12]] < c_b)
03048 if(p[pixel[13]] < c_b)
03049 if(p[pixel[14]] < c_b)
03050 if(p[pixel[15]] < c_b)
03051 {}
03052 else
03053 if(p[pixel[4]] < c_b)
03054 if(p[pixel[5]] < c_b)
03055 if(p[pixel[6]] < c_b)
03056 {}
03057 else
03058 continue;
03059 else
03060 continue;
03061 else
03062 continue;
03063 else
03064 if(p[pixel[3]] < c_b)
03065 if(p[pixel[4]] < c_b)
03066 if(p[pixel[5]] < c_b)
03067 if(p[pixel[6]] < c_b)
03068 {}
03069 else
03070 continue;
03071 else
03072 continue;
03073 else
03074 continue;
03075 else
03076 continue;
03077 else
03078 continue;
03079 else
03080 continue;
03081 else
03082 continue;
03083 else
03084 continue;
03085 else
03086 continue;
03087 else
03088 continue;
03089 else
03090 continue;
03091 else if(p[pixel[2]] < c_b)
03092 if(p[pixel[3]] > cb)
03093 if(p[pixel[14]] > cb)
03094 if(p[pixel[5]] > cb)
03095 if(p[pixel[6]] > cb)
03096 if(p[pixel[7]] > cb)
03097 if(p[pixel[8]] > cb)
03098 if(p[pixel[9]] > cb)
03099 if(p[pixel[10]] > cb)
03100 if(p[pixel[11]] > cb)
03101 if(p[pixel[12]] > cb)
03102 if(p[pixel[13]] > cb)
03103 if(p[pixel[4]] > cb)
03104 {}
03105 else
03106 if(p[pixel[15]] > cb)
03107 {}
03108 else
03109 continue;
03110 else
03111 continue;
03112 else
03113 continue;
03114 else
03115 continue;
03116 else
03117 continue;
03118 else
03119 continue;
03120 else
03121 continue;
03122 else
03123 continue;
03124 else
03125 continue;
03126 else
03127 continue;
03128 else if(p[pixel[14]] < c_b)
03129 if(p[pixel[8]] > cb)
03130 if(p[pixel[4]] > cb)
03131 if(p[pixel[5]] > cb)
03132 if(p[pixel[6]] > cb)
03133 if(p[pixel[7]] > cb)
03134 if(p[pixel[9]] > cb)
03135 if(p[pixel[10]] > cb)
03136 if(p[pixel[11]] > cb)
03137 if(p[pixel[12]] > cb)
03138 if(p[pixel[13]] > cb)
03139 {}
03140 else
03141 continue;
03142 else
03143 continue;
03144 else
03145 continue;
03146 else
03147 continue;
03148 else
03149 continue;
03150 else
03151 continue;
03152 else
03153 continue;
03154 else
03155 continue;
03156 else
03157 continue;
03158 else if(p[pixel[8]] < c_b)
03159 if(p[pixel[9]] < c_b)
03160 if(p[pixel[10]] < c_b)
03161 if(p[pixel[11]] < c_b)
03162 if(p[pixel[12]] < c_b)
03163 if(p[pixel[13]] < c_b)
03164 if(p[pixel[15]] < c_b)
03165 {}
03166 else
03167 if(p[pixel[4]] < c_b)
03168 if(p[pixel[5]] < c_b)
03169 if(p[pixel[6]] < c_b)
03170 if(p[pixel[7]] < c_b)
03171 {}
03172 else
03173 continue;
03174 else
03175 continue;
03176 else
03177 continue;
03178 else
03179 continue;
03180 else
03181 continue;
03182 else
03183 continue;
03184 else
03185 continue;
03186 else
03187 continue;
03188 else
03189 continue;
03190 else
03191 continue;
03192 else
03193 if(p[pixel[4]] > cb)
03194 if(p[pixel[5]] > cb)
03195 if(p[pixel[6]] > cb)
03196 if(p[pixel[7]] > cb)
03197 if(p[pixel[8]] > cb)
03198 if(p[pixel[9]] > cb)
03199 if(p[pixel[10]] > cb)
03200 if(p[pixel[11]] > cb)
03201 if(p[pixel[12]] > cb)
03202 if(p[pixel[13]] > cb)
03203 {}
03204 else
03205 continue;
03206 else
03207 continue;
03208 else
03209 continue;
03210 else
03211 continue;
03212 else
03213 continue;
03214 else
03215 continue;
03216 else
03217 continue;
03218 else
03219 continue;
03220 else
03221 continue;
03222 else
03223 continue;
03224 else if(p[pixel[3]] < c_b)
03225 if(p[pixel[4]] > cb)
03226 if(p[pixel[15]] < c_b)
03227 if(p[pixel[9]] > cb)
03228 if(p[pixel[5]] > cb)
03229 if(p[pixel[6]] > cb)
03230 if(p[pixel[7]] > cb)
03231 if(p[pixel[8]] > cb)
03232 if(p[pixel[10]] > cb)
03233 if(p[pixel[11]] > cb)
03234 if(p[pixel[12]] > cb)
03235 if(p[pixel[13]] > cb)
03236 if(p[pixel[14]] > cb)
03237 {}
03238 else
03239 continue;
03240 else
03241 continue;
03242 else
03243 continue;
03244 else
03245 continue;
03246 else
03247 continue;
03248 else
03249 continue;
03250 else
03251 continue;
03252 else
03253 continue;
03254 else
03255 continue;
03256 else if(p[pixel[9]] < c_b)
03257 if(p[pixel[10]] < c_b)
03258 if(p[pixel[11]] < c_b)
03259 if(p[pixel[12]] < c_b)
03260 if(p[pixel[13]] < c_b)
03261 if(p[pixel[14]] < c_b)
03262 {}
03263 else
03264 continue;
03265 else
03266 continue;
03267 else
03268 continue;
03269 else
03270 continue;
03271 else
03272 continue;
03273 else
03274 continue;
03275 else
03276 if(p[pixel[5]] > cb)
03277 if(p[pixel[6]] > cb)
03278 if(p[pixel[7]] > cb)
03279 if(p[pixel[8]] > cb)
03280 if(p[pixel[9]] > cb)
03281 if(p[pixel[10]] > cb)
03282 if(p[pixel[11]] > cb)
03283 if(p[pixel[12]] > cb)
03284 if(p[pixel[13]] > cb)
03285 if(p[pixel[14]] > cb)
03286 {}
03287 else
03288 continue;
03289 else
03290 continue;
03291 else
03292 continue;
03293 else
03294 continue;
03295 else
03296 continue;
03297 else
03298 continue;
03299 else
03300 continue;
03301 else
03302 continue;
03303 else
03304 continue;
03305 else
03306 continue;
03307 else if(p[pixel[4]] < c_b)
03308 if(p[pixel[5]] > cb)
03309 if(p[pixel[10]] > cb)
03310 if(p[pixel[6]] > cb)
03311 if(p[pixel[7]] > cb)
03312 if(p[pixel[8]] > cb)
03313 if(p[pixel[9]] > cb)
03314 if(p[pixel[11]] > cb)
03315 if(p[pixel[12]] > cb)
03316 if(p[pixel[13]] > cb)
03317 if(p[pixel[14]] > cb)
03318 if(p[pixel[15]] > cb)
03319 {}
03320 else
03321 continue;
03322 else
03323 continue;
03324 else
03325 continue;
03326 else
03327 continue;
03328 else
03329 continue;
03330 else
03331 continue;
03332 else
03333 continue;
03334 else
03335 continue;
03336 else
03337 continue;
03338 else if(p[pixel[10]] < c_b)
03339 if(p[pixel[11]] < c_b)
03340 if(p[pixel[12]] < c_b)
03341 if(p[pixel[13]] < c_b)
03342 if(p[pixel[14]] < c_b)
03343 if(p[pixel[15]] < c_b)
03344 {}
03345 else
03346 continue;
03347 else
03348 continue;
03349 else
03350 continue;
03351 else
03352 continue;
03353 else
03354 continue;
03355 else
03356 continue;
03357 else if(p[pixel[5]] < c_b)
03358 if(p[pixel[6]] < c_b)
03359 if(p[pixel[7]] < c_b)
03360 if(p[pixel[8]] < c_b)
03361 if(p[pixel[9]] < c_b)
03362 if(p[pixel[10]] < c_b)
03363 {}
03364 else
03365 if(p[pixel[15]] < c_b)
03366 {}
03367 else
03368 continue;
03369 else
03370 if(p[pixel[14]] < c_b)
03371 if(p[pixel[15]] < c_b)
03372 {}
03373 else
03374 continue;
03375 else
03376 continue;
03377 else
03378 if(p[pixel[13]] < c_b)
03379 if(p[pixel[14]] < c_b)
03380 if(p[pixel[15]] < c_b)
03381 {}
03382 else
03383 continue;
03384 else
03385 continue;
03386 else
03387 continue;
03388 else
03389 if(p[pixel[12]] < c_b)
03390 if(p[pixel[13]] < c_b)
03391 if(p[pixel[14]] < c_b)
03392 if(p[pixel[15]] < c_b)
03393 {}
03394 else
03395 continue;
03396 else
03397 continue;
03398 else
03399 continue;
03400 else
03401 continue;
03402 else
03403 if(p[pixel[11]] < c_b)
03404 if(p[pixel[12]] < c_b)
03405 if(p[pixel[13]] < c_b)
03406 if(p[pixel[14]] < c_b)
03407 if(p[pixel[15]] < c_b)
03408 {}
03409 else
03410 continue;
03411 else
03412 continue;
03413 else
03414 continue;
03415 else
03416 continue;
03417 else
03418 continue;
03419 else
03420 if(p[pixel[10]] < c_b)
03421 if(p[pixel[11]] < c_b)
03422 if(p[pixel[12]] < c_b)
03423 if(p[pixel[13]] < c_b)
03424 if(p[pixel[14]] < c_b)
03425 if(p[pixel[15]] < c_b)
03426 {}
03427 else
03428 continue;
03429 else
03430 continue;
03431 else
03432 continue;
03433 else
03434 continue;
03435 else
03436 continue;
03437 else
03438 continue;
03439 else
03440 if(p[pixel[9]] > cb)
03441 if(p[pixel[5]] > cb)
03442 if(p[pixel[6]] > cb)
03443 if(p[pixel[7]] > cb)
03444 if(p[pixel[8]] > cb)
03445 if(p[pixel[10]] > cb)
03446 if(p[pixel[11]] > cb)
03447 if(p[pixel[12]] > cb)
03448 if(p[pixel[13]] > cb)
03449 if(p[pixel[14]] > cb)
03450 if(p[pixel[15]] > cb)
03451 {}
03452 else
03453 continue;
03454 else
03455 continue;
03456 else
03457 continue;
03458 else
03459 continue;
03460 else
03461 continue;
03462 else
03463 continue;
03464 else
03465 continue;
03466 else
03467 continue;
03468 else
03469 continue;
03470 else
03471 continue;
03472 else if(p[pixel[9]] < c_b)
03473 if(p[pixel[10]] < c_b)
03474 if(p[pixel[11]] < c_b)
03475 if(p[pixel[12]] < c_b)
03476 if(p[pixel[13]] < c_b)
03477 if(p[pixel[14]] < c_b)
03478 if(p[pixel[15]] < c_b)
03479 {}
03480 else
03481 continue;
03482 else
03483 continue;
03484 else
03485 continue;
03486 else
03487 continue;
03488 else
03489 continue;
03490 else
03491 continue;
03492 else
03493 continue;
03494 else
03495 if(p[pixel[8]] > cb)
03496 if(p[pixel[5]] > cb)
03497 if(p[pixel[6]] > cb)
03498 if(p[pixel[7]] > cb)
03499 if(p[pixel[9]] > cb)
03500 if(p[pixel[10]] > cb)
03501 if(p[pixel[11]] > cb)
03502 if(p[pixel[12]] > cb)
03503 if(p[pixel[13]] > cb)
03504 if(p[pixel[14]] > cb)
03505 if(p[pixel[4]] > cb)
03506 {}
03507 else
03508 if(p[pixel[15]] > cb)
03509 {}
03510 else
03511 continue;
03512 else
03513 continue;
03514 else
03515 continue;
03516 else
03517 continue;
03518 else
03519 continue;
03520 else
03521 continue;
03522 else
03523 continue;
03524 else
03525 continue;
03526 else
03527 continue;
03528 else
03529 continue;
03530 else if(p[pixel[8]] < c_b)
03531 if(p[pixel[9]] < c_b)
03532 if(p[pixel[10]] < c_b)
03533 if(p[pixel[11]] < c_b)
03534 if(p[pixel[12]] < c_b)
03535 if(p[pixel[13]] < c_b)
03536 if(p[pixel[14]] < c_b)
03537 if(p[pixel[15]] < c_b)
03538 {}
03539 else
03540 if(p[pixel[4]] < c_b)
03541 if(p[pixel[5]] < c_b)
03542 if(p[pixel[6]] < c_b)
03543 if(p[pixel[7]] < c_b)
03544 {}
03545 else
03546 continue;
03547 else
03548 continue;
03549 else
03550 continue;
03551 else
03552 continue;
03553 else
03554 continue;
03555 else
03556 continue;
03557 else
03558 continue;
03559 else
03560 continue;
03561 else
03562 continue;
03563 else
03564 continue;
03565 else
03566 continue;
03567 else
03568 if(p[pixel[7]] > cb)
03569 if(p[pixel[5]] > cb)
03570 if(p[pixel[6]] > cb)
03571 if(p[pixel[8]] > cb)
03572 if(p[pixel[9]] > cb)
03573 if(p[pixel[10]] > cb)
03574 if(p[pixel[11]] > cb)
03575 if(p[pixel[12]] > cb)
03576 if(p[pixel[13]] > cb)
03577 if(p[pixel[4]] > cb)
03578 if(p[pixel[3]] > cb)
03579 {}
03580 else
03581 if(p[pixel[14]] > cb)
03582 {}
03583 else
03584 continue;
03585 else
03586 if(p[pixel[14]] > cb)
03587 if(p[pixel[15]] > cb)
03588 {}
03589 else
03590 continue;
03591 else
03592 continue;
03593 else
03594 continue;
03595 else
03596 continue;
03597 else
03598 continue;
03599 else
03600 continue;
03601 else
03602 continue;
03603 else
03604 continue;
03605 else
03606 continue;
03607 else
03608 continue;
03609 else if(p[pixel[7]] < c_b)
03610 if(p[pixel[8]] < c_b)
03611 if(p[pixel[9]] < c_b)
03612 if(p[pixel[10]] < c_b)
03613 if(p[pixel[11]] < c_b)
03614 if(p[pixel[12]] < c_b)
03615 if(p[pixel[13]] < c_b)
03616 if(p[pixel[14]] < c_b)
03617 if(p[pixel[15]] < c_b)
03618 {}
03619 else
03620 if(p[pixel[4]] < c_b)
03621 if(p[pixel[5]] < c_b)
03622 if(p[pixel[6]] < c_b)
03623 {}
03624 else
03625 continue;
03626 else
03627 continue;
03628 else
03629 continue;
03630 else
03631 if(p[pixel[3]] < c_b)
03632 if(p[pixel[4]] < c_b)
03633 if(p[pixel[5]] < c_b)
03634 if(p[pixel[6]] < c_b)
03635 {}
03636 else
03637 continue;
03638 else
03639 continue;
03640 else
03641 continue;
03642 else
03643 continue;
03644 else
03645 continue;
03646 else
03647 continue;
03648 else
03649 continue;
03650 else
03651 continue;
03652 else
03653 continue;
03654 else
03655 continue;
03656 else
03657 continue;
03658 else
03659 if(p[pixel[6]] > cb)
03660 if(p[pixel[5]] > cb)
03661 if(p[pixel[7]] > cb)
03662 if(p[pixel[8]] > cb)
03663 if(p[pixel[9]] > cb)
03664 if(p[pixel[10]] > cb)
03665 if(p[pixel[11]] > cb)
03666 if(p[pixel[12]] > cb)
03667 if(p[pixel[4]] > cb)
03668 if(p[pixel[3]] > cb)
03669 if(p[pixel[2]] > cb)
03670 {}
03671 else
03672 if(p[pixel[13]] > cb)
03673 {}
03674 else
03675 continue;
03676 else
03677 if(p[pixel[13]] > cb)
03678 if(p[pixel[14]] > cb)
03679 {}
03680 else
03681 continue;
03682 else
03683 continue;
03684 else
03685 if(p[pixel[13]] > cb)
03686 if(p[pixel[14]] > cb)
03687 if(p[pixel[15]] > cb)
03688 {}
03689 else
03690 continue;
03691 else
03692 continue;
03693 else
03694 continue;
03695 else
03696 continue;
03697 else
03698 continue;
03699 else
03700 continue;
03701 else
03702 continue;
03703 else
03704 continue;
03705 else
03706 continue;
03707 else
03708 continue;
03709 else if(p[pixel[6]] < c_b)
03710 if(p[pixel[7]] < c_b)
03711 if(p[pixel[8]] < c_b)
03712 if(p[pixel[9]] < c_b)
03713 if(p[pixel[10]] < c_b)
03714 if(p[pixel[11]] < c_b)
03715 if(p[pixel[12]] < c_b)
03716 if(p[pixel[13]] < c_b)
03717 if(p[pixel[14]] < c_b)
03718 if(p[pixel[15]] < c_b)
03719 {}
03720 else
03721 if(p[pixel[4]] < c_b)
03722 if(p[pixel[5]] < c_b)
03723 {}
03724 else
03725 continue;
03726 else
03727 continue;
03728 else
03729 if(p[pixel[3]] < c_b)
03730 if(p[pixel[4]] < c_b)
03731 if(p[pixel[5]] < c_b)
03732 {}
03733 else
03734 continue;
03735 else
03736 continue;
03737 else
03738 continue;
03739 else
03740 if(p[pixel[2]] < c_b)
03741 if(p[pixel[3]] < c_b)
03742 if(p[pixel[4]] < c_b)
03743 if(p[pixel[5]] < c_b)
03744 {}
03745 else
03746 continue;
03747 else
03748 continue;
03749 else
03750 continue;
03751 else
03752 continue;
03753 else
03754 continue;
03755 else
03756 continue;
03757 else
03758 continue;
03759 else
03760 continue;
03761 else
03762 continue;
03763 else
03764 continue;
03765 else
03766 continue;
03767 else
03768 if(p[pixel[5]] > cb)
03769 if(p[pixel[6]] > cb)
03770 if(p[pixel[7]] > cb)
03771 if(p[pixel[8]] > cb)
03772 if(p[pixel[9]] > cb)
03773 if(p[pixel[10]] > cb)
03774 if(p[pixel[11]] > cb)
03775 if(p[pixel[4]] > cb)
03776 if(p[pixel[3]] > cb)
03777 if(p[pixel[2]] > cb)
03778 if(p[pixel[1]] > cb)
03779 {}
03780 else
03781 if(p[pixel[12]] > cb)
03782 {}
03783 else
03784 continue;
03785 else
03786 if(p[pixel[12]] > cb)
03787 if(p[pixel[13]] > cb)
03788 {}
03789 else
03790 continue;
03791 else
03792 continue;
03793 else
03794 if(p[pixel[12]] > cb)
03795 if(p[pixel[13]] > cb)
03796 if(p[pixel[14]] > cb)
03797 {}
03798 else
03799 continue;
03800 else
03801 continue;
03802 else
03803 continue;
03804 else
03805 if(p[pixel[12]] > cb)
03806 if(p[pixel[13]] > cb)
03807 if(p[pixel[14]] > cb)
03808 if(p[pixel[15]] > cb)
03809 {}
03810 else
03811 continue;
03812 else
03813 continue;
03814 else
03815 continue;
03816 else
03817 continue;
03818 else
03819 continue;
03820 else
03821 continue;
03822 else
03823 continue;
03824 else
03825 continue;
03826 else
03827 continue;
03828 else
03829 continue;
03830 else if(p[pixel[5]] < c_b)
03831 if(p[pixel[6]] < c_b)
03832 if(p[pixel[7]] < c_b)
03833 if(p[pixel[8]] < c_b)
03834 if(p[pixel[9]] < c_b)
03835 if(p[pixel[10]] < c_b)
03836 if(p[pixel[11]] < c_b)
03837 if(p[pixel[4]] < c_b)
03838 if(p[pixel[3]] < c_b)
03839 if(p[pixel[2]] < c_b)
03840 if(p[pixel[1]] < c_b)
03841 {}
03842 else
03843 if(p[pixel[12]] < c_b)
03844 {}
03845 else
03846 continue;
03847 else
03848 if(p[pixel[12]] < c_b)
03849 if(p[pixel[13]] < c_b)
03850 {}
03851 else
03852 continue;
03853 else
03854 continue;
03855 else
03856 if(p[pixel[12]] < c_b)
03857 if(p[pixel[13]] < c_b)
03858 if(p[pixel[14]] < c_b)
03859 {}
03860 else
03861 continue;
03862 else
03863 continue;
03864 else
03865 continue;
03866 else
03867 if(p[pixel[12]] < c_b)
03868 if(p[pixel[13]] < c_b)
03869 if(p[pixel[14]] < c_b)
03870 if(p[pixel[15]] < c_b)
03871 {}
03872 else
03873 continue;
03874 else
03875 continue;
03876 else
03877 continue;
03878 else
03879 continue;
03880 else
03881 continue;
03882 else
03883 continue;
03884 else
03885 continue;
03886 else
03887 continue;
03888 else
03889 continue;
03890 else
03891 continue;
03892 else
03893 continue;
03894 if(num_corners == rsize)
03895 {
03896 rsize*=2;
03897 ret_corners = (xy*)realloc(ret_corners, sizeof(xy)*rsize);
03898 }
03899
03900 ret_corners[num_corners].x = x;
03901 ret_corners[num_corners].y = y;
03902 num_corners++;
03903 }
03904
03905 *ret_num_corners = num_corners;
03906 return ret_corners;
03907
03908 }
03909
03910