00001
00002 #include <stdlib.h>
00003
00004 typedef struct { int x, y; } xy;
00005 typedef unsigned char byte;
00006
00007 int fast10_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 goto is_a_corner;
00031 else
00032 if( p[pixel[15]] > cb)
00033 goto is_a_corner;
00034 else
00035 goto is_not_a_corner;
00036 else
00037 if( p[pixel[14]] > cb)
00038 if( p[pixel[15]] > cb)
00039 goto is_a_corner;
00040 else
00041 goto is_not_a_corner;
00042 else
00043 goto is_not_a_corner;
00044 else
00045 if( p[pixel[13]] > cb)
00046 if( p[pixel[14]] > cb)
00047 if( p[pixel[15]] > cb)
00048 goto is_a_corner;
00049 else
00050 goto is_not_a_corner;
00051 else
00052 goto is_not_a_corner;
00053 else
00054 goto is_not_a_corner;
00055 else if( p[pixel[6]] < c_b)
00056 if( p[pixel[12]] > cb)
00057 if( p[pixel[13]] > cb)
00058 if( p[pixel[14]] > cb)
00059 if( p[pixel[15]] > cb)
00060 goto is_a_corner;
00061 else
00062 goto is_not_a_corner;
00063 else
00064 goto is_not_a_corner;
00065 else
00066 goto is_not_a_corner;
00067 else if( p[pixel[12]] < c_b)
00068 if( p[pixel[7]] < c_b)
00069 if( p[pixel[8]] < c_b)
00070 if( p[pixel[9]] < c_b)
00071 if( p[pixel[10]] < c_b)
00072 if( p[pixel[11]] < c_b)
00073 if( p[pixel[13]] < c_b)
00074 if( p[pixel[14]] < c_b)
00075 if( p[pixel[15]] < c_b)
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
00088 goto is_not_a_corner;
00089 else
00090 goto is_not_a_corner;
00091 else
00092 goto is_not_a_corner;
00093 else
00094 goto is_not_a_corner;
00095 else
00096 if( p[pixel[12]] > cb)
00097 if( p[pixel[13]] > cb)
00098 if( p[pixel[14]] > cb)
00099 if( p[pixel[15]] > cb)
00100 goto is_a_corner;
00101 else
00102 goto is_not_a_corner;
00103 else
00104 goto is_not_a_corner;
00105 else
00106 goto is_not_a_corner;
00107 else
00108 goto is_not_a_corner;
00109 else if( p[pixel[5]] < c_b)
00110 if( p[pixel[15]] > cb)
00111 if( p[pixel[11]] > cb)
00112 if( p[pixel[12]] > cb)
00113 if( p[pixel[13]] > cb)
00114 if( p[pixel[14]] > cb)
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 if( p[pixel[11]] < c_b)
00123 if( p[pixel[6]] < c_b)
00124 if( p[pixel[7]] < c_b)
00125 if( p[pixel[8]] < c_b)
00126 if( p[pixel[9]] < c_b)
00127 if( p[pixel[10]] < c_b)
00128 if( p[pixel[12]] < c_b)
00129 if( p[pixel[13]] < c_b)
00130 if( p[pixel[14]] < c_b)
00131 goto is_a_corner;
00132 else
00133 goto is_not_a_corner;
00134 else
00135 goto is_not_a_corner;
00136 else
00137 goto is_not_a_corner;
00138 else
00139 goto is_not_a_corner;
00140 else
00141 goto is_not_a_corner;
00142 else
00143 goto is_not_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 if( p[pixel[6]] < c_b)
00152 if( p[pixel[7]] < c_b)
00153 if( p[pixel[8]] < c_b)
00154 if( p[pixel[9]] < c_b)
00155 if( p[pixel[10]] < c_b)
00156 if( p[pixel[11]] < c_b)
00157 if( p[pixel[12]] < c_b)
00158 if( p[pixel[13]] < c_b)
00159 if( p[pixel[14]] < c_b)
00160 goto is_a_corner;
00161 else
00162 goto is_not_a_corner;
00163 else
00164 goto is_not_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
00176 goto is_not_a_corner;
00177 else
00178 goto is_not_a_corner;
00179 else
00180 if( p[pixel[11]] > cb)
00181 if( p[pixel[12]] > cb)
00182 if( p[pixel[13]] > cb)
00183 if( p[pixel[14]] > cb)
00184 if( p[pixel[15]] > cb)
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 if( p[pixel[11]] < c_b)
00195 if( p[pixel[6]] < c_b)
00196 if( p[pixel[7]] < c_b)
00197 if( p[pixel[8]] < c_b)
00198 if( p[pixel[9]] < c_b)
00199 if( p[pixel[10]] < c_b)
00200 if( p[pixel[12]] < c_b)
00201 if( p[pixel[13]] < c_b)
00202 if( p[pixel[14]] < c_b)
00203 if( p[pixel[15]] < c_b)
00204 goto is_a_corner;
00205 else
00206 goto is_not_a_corner;
00207 else
00208 goto is_not_a_corner;
00209 else
00210 goto is_not_a_corner;
00211 else
00212 goto is_not_a_corner;
00213 else
00214 goto is_not_a_corner;
00215 else
00216 goto is_not_a_corner;
00217 else
00218 goto is_not_a_corner;
00219 else
00220 goto is_not_a_corner;
00221 else
00222 goto is_not_a_corner;
00223 else
00224 goto is_not_a_corner;
00225 else if( p[pixel[4]] < c_b)
00226 if( p[pixel[14]] > cb)
00227 if( p[pixel[10]] > cb)
00228 if( p[pixel[11]] > cb)
00229 if( p[pixel[12]] > cb)
00230 if( p[pixel[13]] > cb)
00231 if( p[pixel[15]] > cb)
00232 goto is_a_corner;
00233 else
00234 if( p[pixel[5]] > cb)
00235 if( p[pixel[6]] > cb)
00236 if( p[pixel[7]] > cb)
00237 if( p[pixel[8]] > cb)
00238 if( p[pixel[9]] > cb)
00239 goto is_a_corner;
00240 else
00241 goto is_not_a_corner;
00242 else
00243 goto is_not_a_corner;
00244 else
00245 goto is_not_a_corner;
00246 else
00247 goto is_not_a_corner;
00248 else
00249 goto is_not_a_corner;
00250 else
00251 goto is_not_a_corner;
00252 else
00253 goto is_not_a_corner;
00254 else
00255 goto is_not_a_corner;
00256 else if( p[pixel[10]] < c_b)
00257 if( p[pixel[5]] < c_b)
00258 if( p[pixel[6]] < c_b)
00259 if( p[pixel[7]] < c_b)
00260 if( p[pixel[8]] < c_b)
00261 if( p[pixel[9]] < c_b)
00262 if( p[pixel[11]] < c_b)
00263 if( p[pixel[12]] < c_b)
00264 if( p[pixel[13]] < c_b)
00265 goto is_a_corner;
00266 else
00267 goto is_not_a_corner;
00268 else
00269 goto is_not_a_corner;
00270 else
00271 goto is_not_a_corner;
00272 else
00273 goto is_not_a_corner;
00274 else
00275 goto is_not_a_corner;
00276 else
00277 goto is_not_a_corner;
00278 else
00279 goto is_not_a_corner;
00280 else
00281 goto is_not_a_corner;
00282 else
00283 goto is_not_a_corner;
00284 else if( p[pixel[14]] < c_b)
00285 if( p[pixel[6]] < c_b)
00286 if( p[pixel[7]] < c_b)
00287 if( p[pixel[8]] < c_b)
00288 if( p[pixel[9]] < c_b)
00289 if( p[pixel[10]] < c_b)
00290 if( p[pixel[11]] < c_b)
00291 if( p[pixel[12]] < c_b)
00292 if( p[pixel[13]] < c_b)
00293 if( p[pixel[5]] < c_b)
00294 goto is_a_corner;
00295 else
00296 if( p[pixel[15]] < c_b)
00297 goto is_a_corner;
00298 else
00299 goto is_not_a_corner;
00300 else
00301 goto is_not_a_corner;
00302 else
00303 goto is_not_a_corner;
00304 else
00305 goto is_not_a_corner;
00306 else
00307 goto is_not_a_corner;
00308 else
00309 goto is_not_a_corner;
00310 else
00311 goto is_not_a_corner;
00312 else
00313 goto is_not_a_corner;
00314 else
00315 goto is_not_a_corner;
00316 else
00317 if( p[pixel[5]] < c_b)
00318 if( p[pixel[6]] < c_b)
00319 if( p[pixel[7]] < c_b)
00320 if( p[pixel[8]] < c_b)
00321 if( p[pixel[9]] < c_b)
00322 if( p[pixel[10]] < c_b)
00323 if( p[pixel[11]] < c_b)
00324 if( p[pixel[12]] < c_b)
00325 if( p[pixel[13]] < c_b)
00326 goto is_a_corner;
00327 else
00328 goto is_not_a_corner;
00329 else
00330 goto is_not_a_corner;
00331 else
00332 goto is_not_a_corner;
00333 else
00334 goto is_not_a_corner;
00335 else
00336 goto is_not_a_corner;
00337 else
00338 goto is_not_a_corner;
00339 else
00340 goto is_not_a_corner;
00341 else
00342 goto is_not_a_corner;
00343 else
00344 goto is_not_a_corner;
00345 else
00346 if( p[pixel[10]] > cb)
00347 if( p[pixel[11]] > cb)
00348 if( p[pixel[12]] > cb)
00349 if( p[pixel[13]] > cb)
00350 if( p[pixel[14]] > cb)
00351 if( p[pixel[15]] > cb)
00352 goto is_a_corner;
00353 else
00354 if( p[pixel[5]] > cb)
00355 if( p[pixel[6]] > cb)
00356 if( p[pixel[7]] > cb)
00357 if( p[pixel[8]] > cb)
00358 if( p[pixel[9]] > cb)
00359 goto is_a_corner;
00360 else
00361 goto is_not_a_corner;
00362 else
00363 goto is_not_a_corner;
00364 else
00365 goto is_not_a_corner;
00366 else
00367 goto is_not_a_corner;
00368 else
00369 goto is_not_a_corner;
00370 else
00371 goto is_not_a_corner;
00372 else
00373 goto is_not_a_corner;
00374 else
00375 goto is_not_a_corner;
00376 else
00377 goto is_not_a_corner;
00378 else if( p[pixel[10]] < c_b)
00379 if( p[pixel[6]] < c_b)
00380 if( p[pixel[7]] < c_b)
00381 if( p[pixel[8]] < c_b)
00382 if( p[pixel[9]] < c_b)
00383 if( p[pixel[11]] < c_b)
00384 if( p[pixel[12]] < c_b)
00385 if( p[pixel[13]] < c_b)
00386 if( p[pixel[14]] < c_b)
00387 if( p[pixel[5]] < c_b)
00388 goto is_a_corner;
00389 else
00390 if( p[pixel[15]] < c_b)
00391 goto is_a_corner;
00392 else
00393 goto is_not_a_corner;
00394 else
00395 goto is_not_a_corner;
00396 else
00397 goto is_not_a_corner;
00398 else
00399 goto is_not_a_corner;
00400 else
00401 goto is_not_a_corner;
00402 else
00403 goto is_not_a_corner;
00404 else
00405 goto is_not_a_corner;
00406 else
00407 goto is_not_a_corner;
00408 else
00409 goto is_not_a_corner;
00410 else
00411 goto is_not_a_corner;
00412 else if( p[pixel[3]] < c_b)
00413 if( p[pixel[9]] > cb)
00414 if( p[pixel[10]] > cb)
00415 if( p[pixel[11]] > cb)
00416 if( p[pixel[12]] > cb)
00417 if( p[pixel[13]] > cb)
00418 if( p[pixel[14]] > cb)
00419 if( p[pixel[15]] > cb)
00420 goto is_a_corner;
00421 else
00422 if( p[pixel[5]] > cb)
00423 if( p[pixel[6]] > cb)
00424 if( p[pixel[7]] > cb)
00425 if( p[pixel[8]] > cb)
00426 goto is_a_corner;
00427 else
00428 goto is_not_a_corner;
00429 else
00430 goto is_not_a_corner;
00431 else
00432 goto is_not_a_corner;
00433 else
00434 goto is_not_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 if( p[pixel[8]] > cb)
00441 goto is_a_corner;
00442 else
00443 goto is_not_a_corner;
00444 else
00445 goto is_not_a_corner;
00446 else
00447 goto is_not_a_corner;
00448 else
00449 goto is_not_a_corner;
00450 else
00451 goto is_not_a_corner;
00452 else
00453 goto is_not_a_corner;
00454 else
00455 goto is_not_a_corner;
00456 else
00457 goto is_not_a_corner;
00458 else
00459 goto is_not_a_corner;
00460 else if( p[pixel[9]] < c_b)
00461 if( p[pixel[6]] < c_b)
00462 if( p[pixel[7]] < c_b)
00463 if( p[pixel[8]] < c_b)
00464 if( p[pixel[10]] < c_b)
00465 if( p[pixel[11]] < c_b)
00466 if( p[pixel[12]] < c_b)
00467 if( p[pixel[5]] < c_b)
00468 if( p[pixel[4]] < c_b)
00469 goto is_a_corner;
00470 else
00471 if( p[pixel[13]] < c_b)
00472 if( p[pixel[14]] < c_b)
00473 goto is_a_corner;
00474 else
00475 goto is_not_a_corner;
00476 else
00477 goto is_not_a_corner;
00478 else
00479 if( p[pixel[13]] < c_b)
00480 if( p[pixel[14]] < c_b)
00481 if( p[pixel[15]] < c_b)
00482 goto is_a_corner;
00483 else
00484 goto is_not_a_corner;
00485 else
00486 goto is_not_a_corner;
00487 else
00488 goto is_not_a_corner;
00489 else
00490 goto is_not_a_corner;
00491 else
00492 goto is_not_a_corner;
00493 else
00494 goto is_not_a_corner;
00495 else
00496 goto is_not_a_corner;
00497 else
00498 goto is_not_a_corner;
00499 else
00500 goto is_not_a_corner;
00501 else
00502 goto is_not_a_corner;
00503 else
00504 if( p[pixel[9]] > cb)
00505 if( p[pixel[10]] > cb)
00506 if( p[pixel[11]] > cb)
00507 if( p[pixel[12]] > cb)
00508 if( p[pixel[13]] > cb)
00509 if( p[pixel[14]] > cb)
00510 if( p[pixel[15]] > cb)
00511 goto is_a_corner;
00512 else
00513 if( p[pixel[5]] > cb)
00514 if( p[pixel[6]] > cb)
00515 if( p[pixel[7]] > cb)
00516 if( p[pixel[8]] > cb)
00517 goto is_a_corner;
00518 else
00519 goto is_not_a_corner;
00520 else
00521 goto is_not_a_corner;
00522 else
00523 goto is_not_a_corner;
00524 else
00525 goto is_not_a_corner;
00526 else
00527 if( p[pixel[4]] > cb)
00528 if( p[pixel[5]] > cb)
00529 if( p[pixel[6]] > cb)
00530 if( p[pixel[7]] > cb)
00531 if( p[pixel[8]] > cb)
00532 goto is_a_corner;
00533 else
00534 goto is_not_a_corner;
00535 else
00536 goto is_not_a_corner;
00537 else
00538 goto is_not_a_corner;
00539 else
00540 goto is_not_a_corner;
00541 else
00542 goto is_not_a_corner;
00543 else
00544 goto is_not_a_corner;
00545 else
00546 goto is_not_a_corner;
00547 else
00548 goto is_not_a_corner;
00549 else
00550 goto is_not_a_corner;
00551 else if( p[pixel[9]] < c_b)
00552 if( p[pixel[6]] < c_b)
00553 if( p[pixel[7]] < c_b)
00554 if( p[pixel[8]] < c_b)
00555 if( p[pixel[10]] < c_b)
00556 if( p[pixel[11]] < c_b)
00557 if( p[pixel[12]] < c_b)
00558 if( p[pixel[13]] < c_b)
00559 if( p[pixel[5]] < c_b)
00560 if( p[pixel[4]] < c_b)
00561 goto is_a_corner;
00562 else
00563 if( p[pixel[14]] < c_b)
00564 goto is_a_corner;
00565 else
00566 goto is_not_a_corner;
00567 else
00568 if( p[pixel[14]] < c_b)
00569 if( p[pixel[15]] < c_b)
00570 goto is_a_corner;
00571 else
00572 goto is_not_a_corner;
00573 else
00574 goto is_not_a_corner;
00575 else
00576 goto is_not_a_corner;
00577 else
00578 goto is_not_a_corner;
00579 else
00580 goto is_not_a_corner;
00581 else
00582 goto is_not_a_corner;
00583 else
00584 goto is_not_a_corner;
00585 else
00586 goto is_not_a_corner;
00587 else
00588 goto is_not_a_corner;
00589 else
00590 goto is_not_a_corner;
00591 else if( p[pixel[2]] < c_b)
00592 if( p[pixel[8]] > cb)
00593 if( p[pixel[9]] > cb)
00594 if( p[pixel[10]] > cb)
00595 if( p[pixel[11]] > cb)
00596 if( p[pixel[12]] > cb)
00597 if( p[pixel[13]] > cb)
00598 if( p[pixel[14]] > cb)
00599 if( p[pixel[15]] > cb)
00600 goto is_a_corner;
00601 else
00602 if( p[pixel[5]] > cb)
00603 if( p[pixel[6]] > cb)
00604 if( p[pixel[7]] > cb)
00605 goto is_a_corner;
00606 else
00607 goto is_not_a_corner;
00608 else
00609 goto is_not_a_corner;
00610 else
00611 goto is_not_a_corner;
00612 else
00613 if( p[pixel[4]] > cb)
00614 if( p[pixel[5]] > cb)
00615 if( p[pixel[6]] > cb)
00616 if( p[pixel[7]] > cb)
00617 goto is_a_corner;
00618 else
00619 goto is_not_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 if( p[pixel[3]] > cb)
00628 if( p[pixel[4]] > cb)
00629 if( p[pixel[5]] > cb)
00630 if( p[pixel[6]] > cb)
00631 if( p[pixel[7]] > cb)
00632 goto is_a_corner;
00633 else
00634 goto is_not_a_corner;
00635 else
00636 goto is_not_a_corner;
00637 else
00638 goto is_not_a_corner;
00639 else
00640 goto is_not_a_corner;
00641 else
00642 goto is_not_a_corner;
00643 else
00644 goto is_not_a_corner;
00645 else
00646 goto is_not_a_corner;
00647 else
00648 goto is_not_a_corner;
00649 else
00650 goto is_not_a_corner;
00651 else if( p[pixel[8]] < c_b)
00652 if( p[pixel[6]] < c_b)
00653 if( p[pixel[7]] < c_b)
00654 if( p[pixel[9]] < c_b)
00655 if( p[pixel[10]] < c_b)
00656 if( p[pixel[11]] < c_b)
00657 if( p[pixel[5]] < c_b)
00658 if( p[pixel[4]] < c_b)
00659 if( p[pixel[3]] < c_b)
00660 goto is_a_corner;
00661 else
00662 if( p[pixel[12]] < c_b)
00663 if( p[pixel[13]] < c_b)
00664 goto is_a_corner;
00665 else
00666 goto is_not_a_corner;
00667 else
00668 goto is_not_a_corner;
00669 else
00670 if( p[pixel[12]] < c_b)
00671 if( p[pixel[13]] < c_b)
00672 if( p[pixel[14]] < c_b)
00673 goto is_a_corner;
00674 else
00675 goto is_not_a_corner;
00676 else
00677 goto is_not_a_corner;
00678 else
00679 goto is_not_a_corner;
00680 else
00681 if( p[pixel[12]] < c_b)
00682 if( p[pixel[13]] < c_b)
00683 if( p[pixel[14]] < c_b)
00684 if( p[pixel[15]] < c_b)
00685 goto is_a_corner;
00686 else
00687 goto is_not_a_corner;
00688 else
00689 goto is_not_a_corner;
00690 else
00691 goto is_not_a_corner;
00692 else
00693 goto is_not_a_corner;
00694 else
00695 goto is_not_a_corner;
00696 else
00697 goto is_not_a_corner;
00698 else
00699 goto is_not_a_corner;
00700 else
00701 goto is_not_a_corner;
00702 else
00703 goto is_not_a_corner;
00704 else
00705 goto is_not_a_corner;
00706 else
00707 if( p[pixel[8]] > cb)
00708 if( p[pixel[9]] > cb)
00709 if( p[pixel[10]] > cb)
00710 if( p[pixel[11]] > cb)
00711 if( p[pixel[12]] > cb)
00712 if( p[pixel[13]] > cb)
00713 if( p[pixel[14]] > cb)
00714 if( p[pixel[15]] > cb)
00715 goto is_a_corner;
00716 else
00717 if( p[pixel[5]] > cb)
00718 if( p[pixel[6]] > cb)
00719 if( p[pixel[7]] > cb)
00720 goto is_a_corner;
00721 else
00722 goto is_not_a_corner;
00723 else
00724 goto is_not_a_corner;
00725 else
00726 goto is_not_a_corner;
00727 else
00728 if( p[pixel[4]] > cb)
00729 if( p[pixel[5]] > cb)
00730 if( p[pixel[6]] > cb)
00731 if( p[pixel[7]] > cb)
00732 goto is_a_corner;
00733 else
00734 goto is_not_a_corner;
00735 else
00736 goto is_not_a_corner;
00737 else
00738 goto is_not_a_corner;
00739 else
00740 goto is_not_a_corner;
00741 else
00742 if( p[pixel[3]] > cb)
00743 if( p[pixel[4]] > cb)
00744 if( p[pixel[5]] > cb)
00745 if( p[pixel[6]] > cb)
00746 if( p[pixel[7]] > cb)
00747 goto is_a_corner;
00748 else
00749 goto is_not_a_corner;
00750 else
00751 goto is_not_a_corner;
00752 else
00753 goto is_not_a_corner;
00754 else
00755 goto is_not_a_corner;
00756 else
00757 goto is_not_a_corner;
00758 else
00759 goto is_not_a_corner;
00760 else
00761 goto is_not_a_corner;
00762 else
00763 goto is_not_a_corner;
00764 else
00765 goto is_not_a_corner;
00766 else if( p[pixel[8]] < c_b)
00767 if( p[pixel[6]] < c_b)
00768 if( p[pixel[7]] < c_b)
00769 if( p[pixel[9]] < c_b)
00770 if( p[pixel[10]] < c_b)
00771 if( p[pixel[11]] < c_b)
00772 if( p[pixel[12]] < c_b)
00773 if( p[pixel[5]] < c_b)
00774 if( p[pixel[4]] < c_b)
00775 if( p[pixel[3]] < c_b)
00776 goto is_a_corner;
00777 else
00778 if( p[pixel[13]] < c_b)
00779 goto is_a_corner;
00780 else
00781 goto is_not_a_corner;
00782 else
00783 if( p[pixel[13]] < c_b)
00784 if( p[pixel[14]] < c_b)
00785 goto is_a_corner;
00786 else
00787 goto is_not_a_corner;
00788 else
00789 goto is_not_a_corner;
00790 else
00791 if( p[pixel[13]] < c_b)
00792 if( p[pixel[14]] < c_b)
00793 if( p[pixel[15]] < c_b)
00794 goto is_a_corner;
00795 else
00796 goto is_not_a_corner;
00797 else
00798 goto is_not_a_corner;
00799 else
00800 goto is_not_a_corner;
00801 else
00802 goto is_not_a_corner;
00803 else
00804 goto is_not_a_corner;
00805 else
00806 goto is_not_a_corner;
00807 else
00808 goto is_not_a_corner;
00809 else
00810 goto is_not_a_corner;
00811 else
00812 goto is_not_a_corner;
00813 else
00814 goto is_not_a_corner;
00815 else if( p[pixel[1]] < c_b)
00816 if( p[pixel[7]] > cb)
00817 if( p[pixel[8]] > cb)
00818 if( p[pixel[9]] > cb)
00819 if( p[pixel[10]] > cb)
00820 if( p[pixel[11]] > cb)
00821 if( p[pixel[12]] > cb)
00822 if( p[pixel[13]] > cb)
00823 if( p[pixel[14]] > cb)
00824 if( p[pixel[15]] > cb)
00825 goto is_a_corner;
00826 else
00827 if( p[pixel[5]] > cb)
00828 if( p[pixel[6]] > cb)
00829 goto is_a_corner;
00830 else
00831 goto is_not_a_corner;
00832 else
00833 goto is_not_a_corner;
00834 else
00835 if( p[pixel[4]] > cb)
00836 if( p[pixel[5]] > cb)
00837 if( p[pixel[6]] > cb)
00838 goto is_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 if( p[pixel[3]] > cb)
00847 if( p[pixel[4]] > cb)
00848 if( p[pixel[5]] > cb)
00849 if( p[pixel[6]] > cb)
00850 goto is_a_corner;
00851 else
00852 goto is_not_a_corner;
00853 else
00854 goto is_not_a_corner;
00855 else
00856 goto is_not_a_corner;
00857 else
00858 goto is_not_a_corner;
00859 else
00860 if( p[pixel[2]] > cb)
00861 if( p[pixel[3]] > cb)
00862 if( p[pixel[4]] > cb)
00863 if( p[pixel[5]] > cb)
00864 if( p[pixel[6]] > cb)
00865 goto is_a_corner;
00866 else
00867 goto is_not_a_corner;
00868 else
00869 goto is_not_a_corner;
00870 else
00871 goto is_not_a_corner;
00872 else
00873 goto is_not_a_corner;
00874 else
00875 goto is_not_a_corner;
00876 else
00877 goto is_not_a_corner;
00878 else
00879 goto is_not_a_corner;
00880 else
00881 goto is_not_a_corner;
00882 else
00883 goto is_not_a_corner;
00884 else if( p[pixel[7]] < c_b)
00885 if( p[pixel[6]] < c_b)
00886 if( p[pixel[8]] < c_b)
00887 if( p[pixel[9]] < c_b)
00888 if( p[pixel[10]] < c_b)
00889 if( p[pixel[5]] < c_b)
00890 if( p[pixel[4]] < c_b)
00891 if( p[pixel[3]] < c_b)
00892 if( p[pixel[2]] < c_b)
00893 goto is_a_corner;
00894 else
00895 if( p[pixel[11]] < c_b)
00896 if( p[pixel[12]] < c_b)
00897 goto is_a_corner;
00898 else
00899 goto is_not_a_corner;
00900 else
00901 goto is_not_a_corner;
00902 else
00903 if( p[pixel[11]] < c_b)
00904 if( p[pixel[12]] < c_b)
00905 if( p[pixel[13]] < c_b)
00906 goto is_a_corner;
00907 else
00908 goto is_not_a_corner;
00909 else
00910 goto is_not_a_corner;
00911 else
00912 goto is_not_a_corner;
00913 else
00914 if( p[pixel[11]] < c_b)
00915 if( p[pixel[12]] < c_b)
00916 if( p[pixel[13]] < c_b)
00917 if( p[pixel[14]] < c_b)
00918 goto is_a_corner;
00919 else
00920 goto is_not_a_corner;
00921 else
00922 goto is_not_a_corner;
00923 else
00924 goto is_not_a_corner;
00925 else
00926 goto is_not_a_corner;
00927 else
00928 if( p[pixel[11]] < c_b)
00929 if( p[pixel[12]] < c_b)
00930 if( p[pixel[13]] < c_b)
00931 if( p[pixel[14]] < c_b)
00932 if( p[pixel[15]] < c_b)
00933 goto is_a_corner;
00934 else
00935 goto is_not_a_corner;
00936 else
00937 goto is_not_a_corner;
00938 else
00939 goto is_not_a_corner;
00940 else
00941 goto is_not_a_corner;
00942 else
00943 goto is_not_a_corner;
00944 else
00945 goto is_not_a_corner;
00946 else
00947 goto is_not_a_corner;
00948 else
00949 goto is_not_a_corner;
00950 else
00951 goto is_not_a_corner;
00952 else
00953 goto is_not_a_corner;
00954 else
00955 if( p[pixel[7]] > cb)
00956 if( p[pixel[8]] > cb)
00957 if( p[pixel[9]] > cb)
00958 if( p[pixel[10]] > cb)
00959 if( p[pixel[11]] > cb)
00960 if( p[pixel[12]] > cb)
00961 if( p[pixel[13]] > cb)
00962 if( p[pixel[14]] > cb)
00963 if( p[pixel[15]] > cb)
00964 goto is_a_corner;
00965 else
00966 if( p[pixel[5]] > cb)
00967 if( p[pixel[6]] > cb)
00968 goto is_a_corner;
00969 else
00970 goto is_not_a_corner;
00971 else
00972 goto is_not_a_corner;
00973 else
00974 if( p[pixel[4]] > cb)
00975 if( p[pixel[5]] > cb)
00976 if( p[pixel[6]] > cb)
00977 goto is_a_corner;
00978 else
00979 goto is_not_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]] > cb)
00986 if( p[pixel[4]] > cb)
00987 if( p[pixel[5]] > cb)
00988 if( p[pixel[6]] > cb)
00989 goto is_a_corner;
00990 else
00991 goto is_not_a_corner;
00992 else
00993 goto is_not_a_corner;
00994 else
00995 goto is_not_a_corner;
00996 else
00997 goto is_not_a_corner;
00998 else
00999 if( p[pixel[2]] > cb)
01000 if( p[pixel[3]] > cb)
01001 if( p[pixel[4]] > cb)
01002 if( p[pixel[5]] > cb)
01003 if( p[pixel[6]] > cb)
01004 goto is_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[7]] < c_b)
01024 if( p[pixel[6]] < c_b)
01025 if( p[pixel[8]] < c_b)
01026 if( p[pixel[9]] < c_b)
01027 if( p[pixel[10]] < c_b)
01028 if( p[pixel[11]] < c_b)
01029 if( p[pixel[5]] < c_b)
01030 if( p[pixel[4]] < c_b)
01031 if( p[pixel[3]] < c_b)
01032 if( p[pixel[2]] < c_b)
01033 goto is_a_corner;
01034 else
01035 if( p[pixel[12]] < c_b)
01036 goto is_a_corner;
01037 else
01038 goto is_not_a_corner;
01039 else
01040 if( p[pixel[12]] < c_b)
01041 if( p[pixel[13]] < c_b)
01042 goto is_a_corner;
01043 else
01044 goto is_not_a_corner;
01045 else
01046 goto is_not_a_corner;
01047 else
01048 if( p[pixel[12]] < c_b)
01049 if( p[pixel[13]] < c_b)
01050 if( p[pixel[14]] < c_b)
01051 goto is_a_corner;
01052 else
01053 goto is_not_a_corner;
01054 else
01055 goto is_not_a_corner;
01056 else
01057 goto is_not_a_corner;
01058 else
01059 if( p[pixel[12]] < c_b)
01060 if( p[pixel[13]] < c_b)
01061 if( p[pixel[14]] < c_b)
01062 if( p[pixel[15]] < c_b)
01063 goto is_a_corner;
01064 else
01065 goto is_not_a_corner;
01066 else
01067 goto is_not_a_corner;
01068 else
01069 goto is_not_a_corner;
01070 else
01071 goto is_not_a_corner;
01072 else
01073 goto is_not_a_corner;
01074 else
01075 goto is_not_a_corner;
01076 else
01077 goto is_not_a_corner;
01078 else
01079 goto is_not_a_corner;
01080 else
01081 goto is_not_a_corner;
01082 else
01083 goto is_not_a_corner;
01084 else if( p[pixel[0]] < c_b)
01085 if( p[pixel[1]] > cb)
01086 if( p[pixel[7]] > cb)
01087 if( p[pixel[6]] > cb)
01088 if( p[pixel[8]] > cb)
01089 if( p[pixel[9]] > cb)
01090 if( p[pixel[10]] > cb)
01091 if( p[pixel[5]] > cb)
01092 if( p[pixel[4]] > cb)
01093 if( p[pixel[3]] > cb)
01094 if( p[pixel[2]] > cb)
01095 goto is_a_corner;
01096 else
01097 if( p[pixel[11]] > cb)
01098 if( p[pixel[12]] > cb)
01099 goto is_a_corner;
01100 else
01101 goto is_not_a_corner;
01102 else
01103 goto is_not_a_corner;
01104 else
01105 if( p[pixel[11]] > cb)
01106 if( p[pixel[12]] > cb)
01107 if( p[pixel[13]] > cb)
01108 goto is_a_corner;
01109 else
01110 goto is_not_a_corner;
01111 else
01112 goto is_not_a_corner;
01113 else
01114 goto is_not_a_corner;
01115 else
01116 if( p[pixel[11]] > cb)
01117 if( p[pixel[12]] > cb)
01118 if( p[pixel[13]] > cb)
01119 if( p[pixel[14]] > cb)
01120 goto is_a_corner;
01121 else
01122 goto is_not_a_corner;
01123 else
01124 goto is_not_a_corner;
01125 else
01126 goto is_not_a_corner;
01127 else
01128 goto is_not_a_corner;
01129 else
01130 if( p[pixel[11]] > cb)
01131 if( p[pixel[12]] > cb)
01132 if( p[pixel[13]] > cb)
01133 if( p[pixel[14]] > cb)
01134 if( p[pixel[15]] > cb)
01135 goto is_a_corner;
01136 else
01137 goto is_not_a_corner;
01138 else
01139 goto is_not_a_corner;
01140 else
01141 goto is_not_a_corner;
01142 else
01143 goto is_not_a_corner;
01144 else
01145 goto is_not_a_corner;
01146 else
01147 goto is_not_a_corner;
01148 else
01149 goto is_not_a_corner;
01150 else
01151 goto is_not_a_corner;
01152 else
01153 goto is_not_a_corner;
01154 else if( p[pixel[7]] < c_b)
01155 if( p[pixel[8]] < c_b)
01156 if( p[pixel[9]] < c_b)
01157 if( p[pixel[10]] < c_b)
01158 if( p[pixel[11]] < c_b)
01159 if( p[pixel[12]] < c_b)
01160 if( p[pixel[13]] < c_b)
01161 if( p[pixel[14]] < c_b)
01162 if( p[pixel[15]] < c_b)
01163 goto is_a_corner;
01164 else
01165 if( p[pixel[5]] < c_b)
01166 if( p[pixel[6]] < c_b)
01167 goto is_a_corner;
01168 else
01169 goto is_not_a_corner;
01170 else
01171 goto is_not_a_corner;
01172 else
01173 if( p[pixel[4]] < c_b)
01174 if( p[pixel[5]] < c_b)
01175 if( p[pixel[6]] < c_b)
01176 goto is_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 if( p[pixel[3]] < c_b)
01185 if( p[pixel[4]] < c_b)
01186 if( p[pixel[5]] < c_b)
01187 if( p[pixel[6]] < c_b)
01188 goto is_a_corner;
01189 else
01190 goto is_not_a_corner;
01191 else
01192 goto is_not_a_corner;
01193 else
01194 goto is_not_a_corner;
01195 else
01196 goto is_not_a_corner;
01197 else
01198 if( p[pixel[2]] < c_b)
01199 if( p[pixel[3]] < c_b)
01200 if( p[pixel[4]] < c_b)
01201 if( p[pixel[5]] < c_b)
01202 if( p[pixel[6]] < c_b)
01203 goto is_a_corner;
01204 else
01205 goto is_not_a_corner;
01206 else
01207 goto is_not_a_corner;
01208 else
01209 goto is_not_a_corner;
01210 else
01211 goto is_not_a_corner;
01212 else
01213 goto is_not_a_corner;
01214 else
01215 goto is_not_a_corner;
01216 else
01217 goto is_not_a_corner;
01218 else
01219 goto is_not_a_corner;
01220 else
01221 goto is_not_a_corner;
01222 else
01223 goto is_not_a_corner;
01224 else if( p[pixel[1]] < c_b)
01225 if( p[pixel[2]] > cb)
01226 if( p[pixel[8]] > cb)
01227 if( p[pixel[6]] > cb)
01228 if( p[pixel[7]] > cb)
01229 if( p[pixel[9]] > cb)
01230 if( p[pixel[10]] > cb)
01231 if( p[pixel[11]] > cb)
01232 if( p[pixel[5]] > cb)
01233 if( p[pixel[4]] > cb)
01234 if( p[pixel[3]] > cb)
01235 goto is_a_corner;
01236 else
01237 if( p[pixel[12]] > cb)
01238 if( p[pixel[13]] > cb)
01239 goto is_a_corner;
01240 else
01241 goto is_not_a_corner;
01242 else
01243 goto is_not_a_corner;
01244 else
01245 if( p[pixel[12]] > cb)
01246 if( p[pixel[13]] > cb)
01247 if( p[pixel[14]] > cb)
01248 goto is_a_corner;
01249 else
01250 goto is_not_a_corner;
01251 else
01252 goto is_not_a_corner;
01253 else
01254 goto is_not_a_corner;
01255 else
01256 if( p[pixel[12]] > cb)
01257 if( p[pixel[13]] > cb)
01258 if( p[pixel[14]] > cb)
01259 if( p[pixel[15]] > cb)
01260 goto is_a_corner;
01261 else
01262 goto is_not_a_corner;
01263 else
01264 goto is_not_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 if( p[pixel[8]] < c_b)
01280 if( p[pixel[9]] < c_b)
01281 if( p[pixel[10]] < c_b)
01282 if( p[pixel[11]] < c_b)
01283 if( p[pixel[12]] < c_b)
01284 if( p[pixel[13]] < c_b)
01285 if( p[pixel[14]] < c_b)
01286 if( p[pixel[15]] < c_b)
01287 goto is_a_corner;
01288 else
01289 if( p[pixel[5]] < c_b)
01290 if( p[pixel[6]] < c_b)
01291 if( p[pixel[7]] < c_b)
01292 goto is_a_corner;
01293 else
01294 goto is_not_a_corner;
01295 else
01296 goto is_not_a_corner;
01297 else
01298 goto is_not_a_corner;
01299 else
01300 if( p[pixel[4]] < c_b)
01301 if( p[pixel[5]] < c_b)
01302 if( p[pixel[6]] < c_b)
01303 if( p[pixel[7]] < c_b)
01304 goto is_a_corner;
01305 else
01306 goto is_not_a_corner;
01307 else
01308 goto is_not_a_corner;
01309 else
01310 goto is_not_a_corner;
01311 else
01312 goto is_not_a_corner;
01313 else
01314 if( p[pixel[3]] < c_b)
01315 if( p[pixel[4]] < c_b)
01316 if( p[pixel[5]] < c_b)
01317 if( p[pixel[6]] < c_b)
01318 if( p[pixel[7]] < c_b)
01319 goto is_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
01335 goto is_not_a_corner;
01336 else
01337 goto is_not_a_corner;
01338 else
01339 goto is_not_a_corner;
01340 else if( p[pixel[2]] < c_b)
01341 if( p[pixel[3]] > cb)
01342 if( p[pixel[9]] > cb)
01343 if( p[pixel[6]] > cb)
01344 if( p[pixel[7]] > cb)
01345 if( p[pixel[8]] > cb)
01346 if( p[pixel[10]] > cb)
01347 if( p[pixel[11]] > cb)
01348 if( p[pixel[12]] > cb)
01349 if( p[pixel[5]] > cb)
01350 if( p[pixel[4]] > cb)
01351 goto is_a_corner;
01352 else
01353 if( p[pixel[13]] > cb)
01354 if( p[pixel[14]] > cb)
01355 goto is_a_corner;
01356 else
01357 goto is_not_a_corner;
01358 else
01359 goto is_not_a_corner;
01360 else
01361 if( p[pixel[13]] > cb)
01362 if( p[pixel[14]] > cb)
01363 if( p[pixel[15]] > cb)
01364 goto is_a_corner;
01365 else
01366 goto is_not_a_corner;
01367 else
01368 goto is_not_a_corner;
01369 else
01370 goto is_not_a_corner;
01371 else
01372 goto is_not_a_corner;
01373 else
01374 goto is_not_a_corner;
01375 else
01376 goto is_not_a_corner;
01377 else
01378 goto is_not_a_corner;
01379 else
01380 goto is_not_a_corner;
01381 else
01382 goto is_not_a_corner;
01383 else if( p[pixel[9]] < c_b)
01384 if( p[pixel[10]] < c_b)
01385 if( p[pixel[11]] < c_b)
01386 if( p[pixel[12]] < c_b)
01387 if( p[pixel[13]] < c_b)
01388 if( p[pixel[14]] < c_b)
01389 if( p[pixel[15]] < c_b)
01390 goto is_a_corner;
01391 else
01392 if( p[pixel[5]] < c_b)
01393 if( p[pixel[6]] < c_b)
01394 if( p[pixel[7]] < c_b)
01395 if( p[pixel[8]] < c_b)
01396 goto is_a_corner;
01397 else
01398 goto is_not_a_corner;
01399 else
01400 goto is_not_a_corner;
01401 else
01402 goto is_not_a_corner;
01403 else
01404 goto is_not_a_corner;
01405 else
01406 if( p[pixel[4]] < c_b)
01407 if( p[pixel[5]] < c_b)
01408 if( p[pixel[6]] < c_b)
01409 if( p[pixel[7]] < c_b)
01410 if( p[pixel[8]] < c_b)
01411 goto is_a_corner;
01412 else
01413 goto is_not_a_corner;
01414 else
01415 goto is_not_a_corner;
01416 else
01417 goto is_not_a_corner;
01418 else
01419 goto is_not_a_corner;
01420 else
01421 goto is_not_a_corner;
01422 else
01423 goto is_not_a_corner;
01424 else
01425 goto is_not_a_corner;
01426 else
01427 goto is_not_a_corner;
01428 else
01429 goto is_not_a_corner;
01430 else
01431 goto is_not_a_corner;
01432 else if( p[pixel[3]] < c_b)
01433 if( p[pixel[4]] > cb)
01434 if( p[pixel[14]] > cb)
01435 if( p[pixel[6]] > cb)
01436 if( p[pixel[7]] > cb)
01437 if( p[pixel[8]] > cb)
01438 if( p[pixel[9]] > cb)
01439 if( p[pixel[10]] > cb)
01440 if( p[pixel[11]] > cb)
01441 if( p[pixel[12]] > cb)
01442 if( p[pixel[13]] > cb)
01443 if( p[pixel[5]] > cb)
01444 goto is_a_corner;
01445 else
01446 if( p[pixel[15]] > cb)
01447 goto is_a_corner;
01448 else
01449 goto is_not_a_corner;
01450 else
01451 goto is_not_a_corner;
01452 else
01453 goto is_not_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 if( p[pixel[14]] < c_b)
01467 if( p[pixel[10]] > 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[9]] > cb)
01473 if( p[pixel[11]] > cb)
01474 if( p[pixel[12]] > cb)
01475 if( p[pixel[13]] > cb)
01476 goto is_a_corner;
01477 else
01478 goto is_not_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 if( p[pixel[10]] < c_b)
01494 if( p[pixel[11]] < c_b)
01495 if( p[pixel[12]] < c_b)
01496 if( p[pixel[13]] < c_b)
01497 if( p[pixel[15]] < c_b)
01498 goto is_a_corner;
01499 else
01500 if( p[pixel[5]] < c_b)
01501 if( p[pixel[6]] < c_b)
01502 if( p[pixel[7]] < c_b)
01503 if( p[pixel[8]] < c_b)
01504 if( p[pixel[9]] < c_b)
01505 goto is_a_corner;
01506 else
01507 goto is_not_a_corner;
01508 else
01509 goto is_not_a_corner;
01510 else
01511 goto is_not_a_corner;
01512 else
01513 goto is_not_a_corner;
01514 else
01515 goto is_not_a_corner;
01516 else
01517 goto is_not_a_corner;
01518 else
01519 goto is_not_a_corner;
01520 else
01521 goto is_not_a_corner;
01522 else
01523 goto is_not_a_corner;
01524 else
01525 if( p[pixel[5]] > cb)
01526 if( p[pixel[6]] > cb)
01527 if( p[pixel[7]] > cb)
01528 if( p[pixel[8]] > cb)
01529 if( p[pixel[9]] > cb)
01530 if( p[pixel[10]] > cb)
01531 if( p[pixel[11]] > cb)
01532 if( p[pixel[12]] > cb)
01533 if( p[pixel[13]] > cb)
01534 goto is_a_corner;
01535 else
01536 goto is_not_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 if( p[pixel[4]] < c_b)
01554 if( p[pixel[5]] > cb)
01555 if( p[pixel[15]] < c_b)
01556 if( p[pixel[11]] > cb)
01557 if( p[pixel[6]] > cb)
01558 if( p[pixel[7]] > cb)
01559 if( p[pixel[8]] > cb)
01560 if( p[pixel[9]] > cb)
01561 if( p[pixel[10]] > cb)
01562 if( p[pixel[12]] > cb)
01563 if( p[pixel[13]] > cb)
01564 if( p[pixel[14]] > cb)
01565 goto is_a_corner;
01566 else
01567 goto is_not_a_corner;
01568 else
01569 goto is_not_a_corner;
01570 else
01571 goto is_not_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 if( p[pixel[11]] < c_b)
01583 if( p[pixel[12]] < c_b)
01584 if( p[pixel[13]] < c_b)
01585 if( p[pixel[14]] < c_b)
01586 goto is_a_corner;
01587 else
01588 goto is_not_a_corner;
01589 else
01590 goto is_not_a_corner;
01591 else
01592 goto is_not_a_corner;
01593 else
01594 goto is_not_a_corner;
01595 else
01596 if( p[pixel[6]] > cb)
01597 if( p[pixel[7]] > 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[14]] > cb)
01605 goto is_a_corner;
01606 else
01607 goto is_not_a_corner;
01608 else
01609 goto is_not_a_corner;
01610 else
01611 goto is_not_a_corner;
01612 else
01613 goto is_not_a_corner;
01614 else
01615 goto is_not_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 if( p[pixel[5]] < c_b)
01625 if( p[pixel[6]] > cb)
01626 if( p[pixel[12]] > cb)
01627 if( p[pixel[7]] > cb)
01628 if( p[pixel[8]] > cb)
01629 if( p[pixel[9]] > cb)
01630 if( p[pixel[10]] > cb)
01631 if( p[pixel[11]] > cb)
01632 if( p[pixel[13]] > cb)
01633 if( p[pixel[14]] > cb)
01634 if( p[pixel[15]] > cb)
01635 goto is_a_corner;
01636 else
01637 goto is_not_a_corner;
01638 else
01639 goto is_not_a_corner;
01640 else
01641 goto is_not_a_corner;
01642 else
01643 goto is_not_a_corner;
01644 else
01645 goto is_not_a_corner;
01646 else
01647 goto is_not_a_corner;
01648 else
01649 goto is_not_a_corner;
01650 else
01651 goto is_not_a_corner;
01652 else if( p[pixel[12]] < c_b)
01653 if( p[pixel[13]] < c_b)
01654 if( p[pixel[14]] < c_b)
01655 if( p[pixel[15]] < c_b)
01656 goto is_a_corner;
01657 else
01658 goto is_not_a_corner;
01659 else
01660 goto is_not_a_corner;
01661 else
01662 goto is_not_a_corner;
01663 else
01664 goto is_not_a_corner;
01665 else if( p[pixel[6]] < c_b)
01666 if( p[pixel[7]] < c_b)
01667 if( p[pixel[8]] < c_b)
01668 if( p[pixel[9]] < c_b)
01669 goto is_a_corner;
01670 else
01671 if( p[pixel[15]] < c_b)
01672 goto is_a_corner;
01673 else
01674 goto is_not_a_corner;
01675 else
01676 if( p[pixel[14]] < c_b)
01677 if( p[pixel[15]] < c_b)
01678 goto is_a_corner;
01679 else
01680 goto is_not_a_corner;
01681 else
01682 goto is_not_a_corner;
01683 else
01684 if( p[pixel[13]] < c_b)
01685 if( p[pixel[14]] < c_b)
01686 if( p[pixel[15]] < c_b)
01687 goto is_a_corner;
01688 else
01689 goto is_not_a_corner;
01690 else
01691 goto is_not_a_corner;
01692 else
01693 goto is_not_a_corner;
01694 else
01695 if( p[pixel[12]] < c_b)
01696 if( p[pixel[13]] < c_b)
01697 if( p[pixel[14]] < c_b)
01698 if( p[pixel[15]] < c_b)
01699 goto is_a_corner;
01700 else
01701 goto is_not_a_corner;
01702 else
01703 goto is_not_a_corner;
01704 else
01705 goto is_not_a_corner;
01706 else
01707 goto is_not_a_corner;
01708 else
01709 if( p[pixel[11]] > cb)
01710 if( p[pixel[6]] > cb)
01711 if( p[pixel[7]] > cb)
01712 if( p[pixel[8]] > cb)
01713 if( p[pixel[9]] > cb)
01714 if( p[pixel[10]] > cb)
01715 if( p[pixel[12]] > cb)
01716 if( p[pixel[13]] > cb)
01717 if( p[pixel[14]] > cb)
01718 if( p[pixel[15]] > cb)
01719 goto is_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
01737 goto is_not_a_corner;
01738 else if( p[pixel[11]] < c_b)
01739 if( p[pixel[12]] < c_b)
01740 if( p[pixel[13]] < c_b)
01741 if( p[pixel[14]] < c_b)
01742 if( p[pixel[15]] < c_b)
01743 goto is_a_corner;
01744 else
01745 goto is_not_a_corner;
01746 else
01747 goto is_not_a_corner;
01748 else
01749 goto is_not_a_corner;
01750 else
01751 goto is_not_a_corner;
01752 else
01753 goto is_not_a_corner;
01754 else
01755 if( p[pixel[10]] > cb)
01756 if( p[pixel[6]] > cb)
01757 if( p[pixel[7]] > cb)
01758 if( p[pixel[8]] > cb)
01759 if( p[pixel[9]] > cb)
01760 if( p[pixel[11]] > cb)
01761 if( p[pixel[12]] > cb)
01762 if( p[pixel[13]] > cb)
01763 if( p[pixel[14]] > cb)
01764 if( p[pixel[5]] > cb)
01765 goto is_a_corner;
01766 else
01767 if( p[pixel[15]] > cb)
01768 goto is_a_corner;
01769 else
01770 goto is_not_a_corner;
01771 else
01772 goto is_not_a_corner;
01773 else
01774 goto is_not_a_corner;
01775 else
01776 goto is_not_a_corner;
01777 else
01778 goto is_not_a_corner;
01779 else
01780 goto is_not_a_corner;
01781 else
01782 goto is_not_a_corner;
01783 else
01784 goto is_not_a_corner;
01785 else
01786 goto is_not_a_corner;
01787 else if( p[pixel[10]] < c_b)
01788 if( p[pixel[11]] < c_b)
01789 if( p[pixel[12]] < c_b)
01790 if( p[pixel[13]] < c_b)
01791 if( p[pixel[14]] < c_b)
01792 if( p[pixel[15]] < c_b)
01793 goto is_a_corner;
01794 else
01795 if( p[pixel[5]] < c_b)
01796 if( p[pixel[6]] < c_b)
01797 if( p[pixel[7]] < c_b)
01798 if( p[pixel[8]] < c_b)
01799 if( p[pixel[9]] < c_b)
01800 goto is_a_corner;
01801 else
01802 goto is_not_a_corner;
01803 else
01804 goto is_not_a_corner;
01805 else
01806 goto is_not_a_corner;
01807 else
01808 goto is_not_a_corner;
01809 else
01810 goto is_not_a_corner;
01811 else
01812 goto is_not_a_corner;
01813 else
01814 goto is_not_a_corner;
01815 else
01816 goto is_not_a_corner;
01817 else
01818 goto is_not_a_corner;
01819 else
01820 goto is_not_a_corner;
01821 else
01822 if( p[pixel[9]] > cb)
01823 if( p[pixel[6]] > cb)
01824 if( p[pixel[7]] > cb)
01825 if( p[pixel[8]] > cb)
01826 if( p[pixel[10]] > cb)
01827 if( p[pixel[11]] > cb)
01828 if( p[pixel[12]] > cb)
01829 if( p[pixel[13]] > cb)
01830 if( p[pixel[5]] > cb)
01831 if( p[pixel[4]] > cb)
01832 goto is_a_corner;
01833 else
01834 if( p[pixel[14]] > cb)
01835 goto is_a_corner;
01836 else
01837 goto is_not_a_corner;
01838 else
01839 if( p[pixel[14]] > cb)
01840 if( p[pixel[15]] > cb)
01841 goto is_a_corner;
01842 else
01843 goto is_not_a_corner;
01844 else
01845 goto is_not_a_corner;
01846 else
01847 goto is_not_a_corner;
01848 else
01849 goto is_not_a_corner;
01850 else
01851 goto is_not_a_corner;
01852 else
01853 goto is_not_a_corner;
01854 else
01855 goto is_not_a_corner;
01856 else
01857 goto is_not_a_corner;
01858 else
01859 goto is_not_a_corner;
01860 else if( p[pixel[9]] < c_b)
01861 if( p[pixel[10]] < c_b)
01862 if( p[pixel[11]] < c_b)
01863 if( p[pixel[12]] < c_b)
01864 if( p[pixel[13]] < c_b)
01865 if( p[pixel[14]] < c_b)
01866 if( p[pixel[15]] < c_b)
01867 goto is_a_corner;
01868 else
01869 if( p[pixel[5]] < c_b)
01870 if( p[pixel[6]] < c_b)
01871 if( p[pixel[7]] < c_b)
01872 if( p[pixel[8]] < c_b)
01873 goto is_a_corner;
01874 else
01875 goto is_not_a_corner;
01876 else
01877 goto is_not_a_corner;
01878 else
01879 goto is_not_a_corner;
01880 else
01881 goto is_not_a_corner;
01882 else
01883 if( p[pixel[4]] < c_b)
01884 if( p[pixel[5]] < c_b)
01885 if( p[pixel[6]] < c_b)
01886 if( p[pixel[7]] < c_b)
01887 if( p[pixel[8]] < c_b)
01888 goto is_a_corner;
01889 else
01890 goto is_not_a_corner;
01891 else
01892 goto is_not_a_corner;
01893 else
01894 goto is_not_a_corner;
01895 else
01896 goto is_not_a_corner;
01897 else
01898 goto is_not_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 if( p[pixel[8]] > cb)
01911 if( p[pixel[6]] > cb)
01912 if( p[pixel[7]] > cb)
01913 if( p[pixel[9]] > cb)
01914 if( p[pixel[10]] > cb)
01915 if( p[pixel[11]] > cb)
01916 if( p[pixel[12]] > cb)
01917 if( p[pixel[5]] > cb)
01918 if( p[pixel[4]] > cb)
01919 if( p[pixel[3]] > cb)
01920 goto is_a_corner;
01921 else
01922 if( p[pixel[13]] > cb)
01923 goto is_a_corner;
01924 else
01925 goto is_not_a_corner;
01926 else
01927 if( p[pixel[13]] > cb)
01928 if( p[pixel[14]] > cb)
01929 goto is_a_corner;
01930 else
01931 goto is_not_a_corner;
01932 else
01933 goto is_not_a_corner;
01934 else
01935 if( p[pixel[13]] > cb)
01936 if( p[pixel[14]] > cb)
01937 if( p[pixel[15]] > cb)
01938 goto is_a_corner;
01939 else
01940 goto is_not_a_corner;
01941 else
01942 goto is_not_a_corner;
01943 else
01944 goto is_not_a_corner;
01945 else
01946 goto is_not_a_corner;
01947 else
01948 goto is_not_a_corner;
01949 else
01950 goto is_not_a_corner;
01951 else
01952 goto is_not_a_corner;
01953 else
01954 goto is_not_a_corner;
01955 else
01956 goto is_not_a_corner;
01957 else if( p[pixel[8]] < c_b)
01958 if( p[pixel[9]] < c_b)
01959 if( p[pixel[10]] < c_b)
01960 if( p[pixel[11]] < c_b)
01961 if( p[pixel[12]] < c_b)
01962 if( p[pixel[13]] < c_b)
01963 if( p[pixel[14]] < c_b)
01964 if( p[pixel[15]] < c_b)
01965 goto is_a_corner;
01966 else
01967 if( p[pixel[5]] < c_b)
01968 if( p[pixel[6]] < c_b)
01969 if( p[pixel[7]] < c_b)
01970 goto is_a_corner;
01971 else
01972 goto is_not_a_corner;
01973 else
01974 goto is_not_a_corner;
01975 else
01976 goto is_not_a_corner;
01977 else
01978 if( p[pixel[4]] < c_b)
01979 if( p[pixel[5]] < c_b)
01980 if( p[pixel[6]] < c_b)
01981 if( p[pixel[7]] < c_b)
01982 goto is_a_corner;
01983 else
01984 goto is_not_a_corner;
01985 else
01986 goto is_not_a_corner;
01987 else
01988 goto is_not_a_corner;
01989 else
01990 goto is_not_a_corner;
01991 else
01992 if( p[pixel[3]] < c_b)
01993 if( p[pixel[4]] < c_b)
01994 if( p[pixel[5]] < c_b)
01995 if( p[pixel[6]] < c_b)
01996 if( p[pixel[7]] < c_b)
01997 goto is_a_corner;
01998 else
01999 goto is_not_a_corner;
02000 else
02001 goto is_not_a_corner;
02002 else
02003 goto is_not_a_corner;
02004 else
02005 goto is_not_a_corner;
02006 else
02007 goto is_not_a_corner;
02008 else
02009 goto is_not_a_corner;
02010 else
02011 goto is_not_a_corner;
02012 else
02013 goto is_not_a_corner;
02014 else
02015 goto is_not_a_corner;
02016 else
02017 goto is_not_a_corner;
02018 else
02019 if( p[pixel[7]] > cb)
02020 if( p[pixel[6]] > cb)
02021 if( p[pixel[8]] > cb)
02022 if( p[pixel[9]] > cb)
02023 if( p[pixel[10]] > cb)
02024 if( p[pixel[11]] > cb)
02025 if( p[pixel[5]] > cb)
02026 if( p[pixel[4]] > cb)
02027 if( p[pixel[3]] > cb)
02028 if( p[pixel[2]] > cb)
02029 goto is_a_corner;
02030 else
02031 if( p[pixel[12]] > cb)
02032 goto is_a_corner;
02033 else
02034 goto is_not_a_corner;
02035 else
02036 if( p[pixel[12]] > cb)
02037 if( p[pixel[13]] > cb)
02038 goto is_a_corner;
02039 else
02040 goto is_not_a_corner;
02041 else
02042 goto is_not_a_corner;
02043 else
02044 if( p[pixel[12]] > cb)
02045 if( p[pixel[13]] > cb)
02046 if( p[pixel[14]] > cb)
02047 goto is_a_corner;
02048 else
02049 goto is_not_a_corner;
02050 else
02051 goto is_not_a_corner;
02052 else
02053 goto is_not_a_corner;
02054 else
02055 if( p[pixel[12]] > cb)
02056 if( p[pixel[13]] > cb)
02057 if( p[pixel[14]] > cb)
02058 if( p[pixel[15]] > cb)
02059 goto is_a_corner;
02060 else
02061 goto is_not_a_corner;
02062 else
02063 goto is_not_a_corner;
02064 else
02065 goto is_not_a_corner;
02066 else
02067 goto is_not_a_corner;
02068 else
02069 goto is_not_a_corner;
02070 else
02071 goto is_not_a_corner;
02072 else
02073 goto is_not_a_corner;
02074 else
02075 goto is_not_a_corner;
02076 else
02077 goto is_not_a_corner;
02078 else if( p[pixel[7]] < c_b)
02079 if( p[pixel[8]] < c_b)
02080 if( p[pixel[9]] < c_b)
02081 if( p[pixel[10]] < c_b)
02082 if( p[pixel[11]] < c_b)
02083 if( p[pixel[12]] < c_b)
02084 if( p[pixel[13]] < c_b)
02085 if( p[pixel[14]] < c_b)
02086 if( p[pixel[15]] < c_b)
02087 goto is_a_corner;
02088 else
02089 if( p[pixel[5]] < c_b)
02090 if( p[pixel[6]] < c_b)
02091 goto is_a_corner;
02092 else
02093 goto is_not_a_corner;
02094 else
02095 goto is_not_a_corner;
02096 else
02097 if( p[pixel[4]] < c_b)
02098 if( p[pixel[5]] < c_b)
02099 if( p[pixel[6]] < c_b)
02100 goto is_a_corner;
02101 else
02102 goto is_not_a_corner;
02103 else
02104 goto is_not_a_corner;
02105 else
02106 goto is_not_a_corner;
02107 else
02108 if( p[pixel[3]] < c_b)
02109 if( p[pixel[4]] < c_b)
02110 if( p[pixel[5]] < c_b)
02111 if( p[pixel[6]] < c_b)
02112 goto is_a_corner;
02113 else
02114 goto is_not_a_corner;
02115 else
02116 goto is_not_a_corner;
02117 else
02118 goto is_not_a_corner;
02119 else
02120 goto is_not_a_corner;
02121 else
02122 if( p[pixel[2]] < c_b)
02123 if( p[pixel[3]] < c_b)
02124 if( p[pixel[4]] < c_b)
02125 if( p[pixel[5]] < c_b)
02126 if( p[pixel[6]] < c_b)
02127 goto is_a_corner;
02128 else
02129 goto is_not_a_corner;
02130 else
02131 goto is_not_a_corner;
02132 else
02133 goto is_not_a_corner;
02134 else
02135 goto is_not_a_corner;
02136 else
02137 goto is_not_a_corner;
02138 else
02139 goto is_not_a_corner;
02140 else
02141 goto is_not_a_corner;
02142 else
02143 goto is_not_a_corner;
02144 else
02145 goto is_not_a_corner;
02146 else
02147 goto is_not_a_corner;
02148 else
02149 if( p[pixel[6]] > cb)
02150 if( p[pixel[7]] > cb)
02151 if( p[pixel[8]] > cb)
02152 if( p[pixel[9]] > cb)
02153 if( p[pixel[10]] > cb)
02154 if( p[pixel[5]] > cb)
02155 if( p[pixel[4]] > cb)
02156 if( p[pixel[3]] > cb)
02157 if( p[pixel[2]] > cb)
02158 if( p[pixel[1]] > cb)
02159 goto is_a_corner;
02160 else
02161 if( p[pixel[11]] > cb)
02162 goto is_a_corner;
02163 else
02164 goto is_not_a_corner;
02165 else
02166 if( p[pixel[11]] > cb)
02167 if( p[pixel[12]] > cb)
02168 goto is_a_corner;
02169 else
02170 goto is_not_a_corner;
02171 else
02172 goto is_not_a_corner;
02173 else
02174 if( p[pixel[11]] > cb)
02175 if( p[pixel[12]] > cb)
02176 if( p[pixel[13]] > cb)
02177 goto is_a_corner;
02178 else
02179 goto is_not_a_corner;
02180 else
02181 goto is_not_a_corner;
02182 else
02183 goto is_not_a_corner;
02184 else
02185 if( p[pixel[11]] > cb)
02186 if( p[pixel[12]] > cb)
02187 if( p[pixel[13]] > cb)
02188 if( p[pixel[14]] > cb)
02189 goto is_a_corner;
02190 else
02191 goto is_not_a_corner;
02192 else
02193 goto is_not_a_corner;
02194 else
02195 goto is_not_a_corner;
02196 else
02197 goto is_not_a_corner;
02198 else
02199 if( p[pixel[11]] > cb)
02200 if( p[pixel[12]] > cb)
02201 if( p[pixel[13]] > cb)
02202 if( p[pixel[14]] > cb)
02203 if( p[pixel[15]] > cb)
02204 goto is_a_corner;
02205 else
02206 goto is_not_a_corner;
02207 else
02208 goto is_not_a_corner;
02209 else
02210 goto is_not_a_corner;
02211 else
02212 goto is_not_a_corner;
02213 else
02214 goto is_not_a_corner;
02215 else
02216 goto is_not_a_corner;
02217 else
02218 goto is_not_a_corner;
02219 else
02220 goto is_not_a_corner;
02221 else
02222 goto is_not_a_corner;
02223 else if( p[pixel[6]] < c_b)
02224 if( p[pixel[7]] < c_b)
02225 if( p[pixel[8]] < c_b)
02226 if( p[pixel[9]] < c_b)
02227 if( p[pixel[10]] < c_b)
02228 if( p[pixel[5]] < c_b)
02229 if( p[pixel[4]] < c_b)
02230 if( p[pixel[3]] < c_b)
02231 if( p[pixel[2]] < c_b)
02232 if( p[pixel[1]] < c_b)
02233 goto is_a_corner;
02234 else
02235 if( p[pixel[11]] < c_b)
02236 goto is_a_corner;
02237 else
02238 goto is_not_a_corner;
02239 else
02240 if( p[pixel[11]] < c_b)
02241 if( p[pixel[12]] < c_b)
02242 goto is_a_corner;
02243 else
02244 goto is_not_a_corner;
02245 else
02246 goto is_not_a_corner;
02247 else
02248 if( p[pixel[11]] < c_b)
02249 if( p[pixel[12]] < c_b)
02250 if( p[pixel[13]] < c_b)
02251 goto is_a_corner;
02252 else
02253 goto is_not_a_corner;
02254 else
02255 goto is_not_a_corner;
02256 else
02257 goto is_not_a_corner;
02258 else
02259 if( p[pixel[11]] < c_b)
02260 if( p[pixel[12]] < c_b)
02261 if( p[pixel[13]] < c_b)
02262 if( p[pixel[14]] < c_b)
02263 goto is_a_corner;
02264 else
02265 goto is_not_a_corner;
02266 else
02267 goto is_not_a_corner;
02268 else
02269 goto is_not_a_corner;
02270 else
02271 goto is_not_a_corner;
02272 else
02273 if( p[pixel[11]] < c_b)
02274 if( p[pixel[12]] < c_b)
02275 if( p[pixel[13]] < c_b)
02276 if( p[pixel[14]] < c_b)
02277 if( p[pixel[15]] < c_b)
02278 goto is_a_corner;
02279 else
02280 goto is_not_a_corner;
02281 else
02282 goto is_not_a_corner;
02283 else
02284 goto is_not_a_corner;
02285 else
02286 goto is_not_a_corner;
02287 else
02288 goto is_not_a_corner;
02289 else
02290 goto is_not_a_corner;
02291 else
02292 goto is_not_a_corner;
02293 else
02294 goto is_not_a_corner;
02295 else
02296 goto is_not_a_corner;
02297 else
02298 goto is_not_a_corner;
02299
02300 is_a_corner:
02301 bmin=b;
02302 goto end_if;
02303
02304 is_not_a_corner:
02305 bmax=b;
02306 goto end_if;
02307
02308 end_if:
02309
02310 if(bmin == bmax - 1 || bmin == bmax)
02311 return bmin;
02312 b = (bmin + bmax) / 2;
02313 }
02314 }
02315
02316 static void make_offsets(int pixel[], int row_stride)
02317 {
02318 pixel[0] = 0 + row_stride * 3;
02319 pixel[1] = 1 + row_stride * 3;
02320 pixel[2] = 2 + row_stride * 2;
02321 pixel[3] = 3 + row_stride * 1;
02322 pixel[4] = 3 + row_stride * 0;
02323 pixel[5] = 3 + row_stride * -1;
02324 pixel[6] = 2 + row_stride * -2;
02325 pixel[7] = 1 + row_stride * -3;
02326 pixel[8] = 0 + row_stride * -3;
02327 pixel[9] = -1 + row_stride * -3;
02328 pixel[10] = -2 + row_stride * -2;
02329 pixel[11] = -3 + row_stride * -1;
02330 pixel[12] = -3 + row_stride * 0;
02331 pixel[13] = -3 + row_stride * 1;
02332 pixel[14] = -2 + row_stride * 2;
02333 pixel[15] = -1 + row_stride * 3;
02334 }
02335
02336
02337
02338 int* fast10_score(const byte* i, int stride, xy* corners, int num_corners, int b)
02339 {
02340 int* scores = (int*)malloc(sizeof(int)* num_corners);
02341 int n;
02342
02343 int pixel[16];
02344 make_offsets(pixel, stride);
02345
02346 for(n=0; n < num_corners; n++)
02347 scores[n] = fast10_corner_score(i + corners[n].y*stride + corners[n].x, pixel, b);
02348
02349 return scores;
02350 }
02351
02352
02353 xy* fast10_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners)
02354 {
02355 int num_corners=0;
02356 xy* ret_corners;
02357 int rsize=512;
02358 int pixel[16];
02359 int x, y;
02360
02361 ret_corners = (xy*)malloc(sizeof(xy)*rsize);
02362 make_offsets(pixel, stride);
02363
02364 for(y=3; y < ysize - 3; y++)
02365 for(x=3; x < xsize - 3; x++)
02366 {
02367 const byte* p = im + y*stride + x;
02368
02369 int cb = *p + b;
02370 int c_b= *p - b;
02371 if(p[pixel[0]] > cb)
02372 if(p[pixel[1]] > cb)
02373 if(p[pixel[2]] > cb)
02374 if(p[pixel[3]] > cb)
02375 if(p[pixel[4]] > cb)
02376 if(p[pixel[5]] > cb)
02377 if(p[pixel[6]] > cb)
02378 if(p[pixel[7]] > cb)
02379 if(p[pixel[8]] > cb)
02380 if(p[pixel[9]] > cb)
02381 {}
02382 else
02383 if(p[pixel[15]] > cb)
02384 {}
02385 else
02386 continue;
02387 else
02388 if(p[pixel[14]] > cb)
02389 if(p[pixel[15]] > cb)
02390 {}
02391 else
02392 continue;
02393 else
02394 continue;
02395 else
02396 if(p[pixel[13]] > cb)
02397 if(p[pixel[14]] > cb)
02398 if(p[pixel[15]] > cb)
02399 {}
02400 else
02401 continue;
02402 else
02403 continue;
02404 else
02405 continue;
02406 else if(p[pixel[6]] < c_b)
02407 if(p[pixel[12]] > cb)
02408 if(p[pixel[13]] > cb)
02409 if(p[pixel[14]] > cb)
02410 if(p[pixel[15]] > cb)
02411 {}
02412 else
02413 continue;
02414 else
02415 continue;
02416 else
02417 continue;
02418 else if(p[pixel[12]] < c_b)
02419 if(p[pixel[7]] < c_b)
02420 if(p[pixel[8]] < c_b)
02421 if(p[pixel[9]] < c_b)
02422 if(p[pixel[10]] < c_b)
02423 if(p[pixel[11]] < c_b)
02424 if(p[pixel[13]] < c_b)
02425 if(p[pixel[14]] < c_b)
02426 if(p[pixel[15]] < c_b)
02427 {}
02428 else
02429 continue;
02430 else
02431 continue;
02432 else
02433 continue;
02434 else
02435 continue;
02436 else
02437 continue;
02438 else
02439 continue;
02440 else
02441 continue;
02442 else
02443 continue;
02444 else
02445 continue;
02446 else
02447 if(p[pixel[12]] > cb)
02448 if(p[pixel[13]] > cb)
02449 if(p[pixel[14]] > cb)
02450 if(p[pixel[15]] > cb)
02451 {}
02452 else
02453 continue;
02454 else
02455 continue;
02456 else
02457 continue;
02458 else
02459 continue;
02460 else if(p[pixel[5]] < c_b)
02461 if(p[pixel[15]] > cb)
02462 if(p[pixel[11]] > cb)
02463 if(p[pixel[12]] > cb)
02464 if(p[pixel[13]] > cb)
02465 if(p[pixel[14]] > cb)
02466 {}
02467 else
02468 continue;
02469 else
02470 continue;
02471 else
02472 continue;
02473 else if(p[pixel[11]] < c_b)
02474 if(p[pixel[6]] < c_b)
02475 if(p[pixel[7]] < c_b)
02476 if(p[pixel[8]] < c_b)
02477 if(p[pixel[9]] < c_b)
02478 if(p[pixel[10]] < c_b)
02479 if(p[pixel[12]] < c_b)
02480 if(p[pixel[13]] < c_b)
02481 if(p[pixel[14]] < c_b)
02482 {}
02483 else
02484 continue;
02485 else
02486 continue;
02487 else
02488 continue;
02489 else
02490 continue;
02491 else
02492 continue;
02493 else
02494 continue;
02495 else
02496 continue;
02497 else
02498 continue;
02499 else
02500 continue;
02501 else
02502 if(p[pixel[6]] < c_b)
02503 if(p[pixel[7]] < c_b)
02504 if(p[pixel[8]] < c_b)
02505 if(p[pixel[9]] < c_b)
02506 if(p[pixel[10]] < c_b)
02507 if(p[pixel[11]] < c_b)
02508 if(p[pixel[12]] < c_b)
02509 if(p[pixel[13]] < c_b)
02510 if(p[pixel[14]] < c_b)
02511 {}
02512 else
02513 continue;
02514 else
02515 continue;
02516 else
02517 continue;
02518 else
02519 continue;
02520 else
02521 continue;
02522 else
02523 continue;
02524 else
02525 continue;
02526 else
02527 continue;
02528 else
02529 continue;
02530 else
02531 if(p[pixel[11]] > cb)
02532 if(p[pixel[12]] > cb)
02533 if(p[pixel[13]] > cb)
02534 if(p[pixel[14]] > cb)
02535 if(p[pixel[15]] > cb)
02536 {}
02537 else
02538 continue;
02539 else
02540 continue;
02541 else
02542 continue;
02543 else
02544 continue;
02545 else if(p[pixel[11]] < c_b)
02546 if(p[pixel[6]] < c_b)
02547 if(p[pixel[7]] < c_b)
02548 if(p[pixel[8]] < c_b)
02549 if(p[pixel[9]] < c_b)
02550 if(p[pixel[10]] < c_b)
02551 if(p[pixel[12]] < c_b)
02552 if(p[pixel[13]] < c_b)
02553 if(p[pixel[14]] < c_b)
02554 if(p[pixel[15]] < c_b)
02555 {}
02556 else
02557 continue;
02558 else
02559 continue;
02560 else
02561 continue;
02562 else
02563 continue;
02564 else
02565 continue;
02566 else
02567 continue;
02568 else
02569 continue;
02570 else
02571 continue;
02572 else
02573 continue;
02574 else
02575 continue;
02576 else if(p[pixel[4]] < c_b)
02577 if(p[pixel[14]] > cb)
02578 if(p[pixel[10]] > cb)
02579 if(p[pixel[11]] > cb)
02580 if(p[pixel[12]] > cb)
02581 if(p[pixel[13]] > cb)
02582 if(p[pixel[15]] > cb)
02583 {}
02584 else
02585 if(p[pixel[5]] > cb)
02586 if(p[pixel[6]] > cb)
02587 if(p[pixel[7]] > cb)
02588 if(p[pixel[8]] > cb)
02589 if(p[pixel[9]] > cb)
02590 {}
02591 else
02592 continue;
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 if(p[pixel[10]] < c_b)
02608 if(p[pixel[5]] < c_b)
02609 if(p[pixel[6]] < c_b)
02610 if(p[pixel[7]] < c_b)
02611 if(p[pixel[8]] < c_b)
02612 if(p[pixel[9]] < c_b)
02613 if(p[pixel[11]] < c_b)
02614 if(p[pixel[12]] < c_b)
02615 if(p[pixel[13]] < c_b)
02616 {}
02617 else
02618 continue;
02619 else
02620 continue;
02621 else
02622 continue;
02623 else
02624 continue;
02625 else
02626 continue;
02627 else
02628 continue;
02629 else
02630 continue;
02631 else
02632 continue;
02633 else
02634 continue;
02635 else if(p[pixel[14]] < c_b)
02636 if(p[pixel[6]] < c_b)
02637 if(p[pixel[7]] < c_b)
02638 if(p[pixel[8]] < c_b)
02639 if(p[pixel[9]] < c_b)
02640 if(p[pixel[10]] < c_b)
02641 if(p[pixel[11]] < c_b)
02642 if(p[pixel[12]] < c_b)
02643 if(p[pixel[13]] < c_b)
02644 if(p[pixel[5]] < c_b)
02645 {}
02646 else
02647 if(p[pixel[15]] < c_b)
02648 {}
02649 else
02650 continue;
02651 else
02652 continue;
02653 else
02654 continue;
02655 else
02656 continue;
02657 else
02658 continue;
02659 else
02660 continue;
02661 else
02662 continue;
02663 else
02664 continue;
02665 else
02666 continue;
02667 else
02668 if(p[pixel[5]] < c_b)
02669 if(p[pixel[6]] < c_b)
02670 if(p[pixel[7]] < c_b)
02671 if(p[pixel[8]] < c_b)
02672 if(p[pixel[9]] < c_b)
02673 if(p[pixel[10]] < c_b)
02674 if(p[pixel[11]] < c_b)
02675 if(p[pixel[12]] < c_b)
02676 if(p[pixel[13]] < c_b)
02677 {}
02678 else
02679 continue;
02680 else
02681 continue;
02682 else
02683 continue;
02684 else
02685 continue;
02686 else
02687 continue;
02688 else
02689 continue;
02690 else
02691 continue;
02692 else
02693 continue;
02694 else
02695 continue;
02696 else
02697 if(p[pixel[10]] > cb)
02698 if(p[pixel[11]] > cb)
02699 if(p[pixel[12]] > cb)
02700 if(p[pixel[13]] > cb)
02701 if(p[pixel[14]] > cb)
02702 if(p[pixel[15]] > cb)
02703 {}
02704 else
02705 if(p[pixel[5]] > cb)
02706 if(p[pixel[6]] > cb)
02707 if(p[pixel[7]] > cb)
02708 if(p[pixel[8]] > cb)
02709 if(p[pixel[9]] > cb)
02710 {}
02711 else
02712 continue;
02713 else
02714 continue;
02715 else
02716 continue;
02717 else
02718 continue;
02719 else
02720 continue;
02721 else
02722 continue;
02723 else
02724 continue;
02725 else
02726 continue;
02727 else
02728 continue;
02729 else if(p[pixel[10]] < c_b)
02730 if(p[pixel[6]] < c_b)
02731 if(p[pixel[7]] < c_b)
02732 if(p[pixel[8]] < c_b)
02733 if(p[pixel[9]] < c_b)
02734 if(p[pixel[11]] < c_b)
02735 if(p[pixel[12]] < c_b)
02736 if(p[pixel[13]] < c_b)
02737 if(p[pixel[14]] < c_b)
02738 if(p[pixel[5]] < c_b)
02739 {}
02740 else
02741 if(p[pixel[15]] < c_b)
02742 {}
02743 else
02744 continue;
02745 else
02746 continue;
02747 else
02748 continue;
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 if(p[pixel[3]] < c_b)
02764 if(p[pixel[9]] > cb)
02765 if(p[pixel[10]] > cb)
02766 if(p[pixel[11]] > cb)
02767 if(p[pixel[12]] > cb)
02768 if(p[pixel[13]] > cb)
02769 if(p[pixel[14]] > cb)
02770 if(p[pixel[15]] > cb)
02771 {}
02772 else
02773 if(p[pixel[5]] > cb)
02774 if(p[pixel[6]] > cb)
02775 if(p[pixel[7]] > cb)
02776 if(p[pixel[8]] > cb)
02777 {}
02778 else
02779 continue;
02780 else
02781 continue;
02782 else
02783 continue;
02784 else
02785 continue;
02786 else
02787 if(p[pixel[4]] > cb)
02788 if(p[pixel[5]] > cb)
02789 if(p[pixel[6]] > cb)
02790 if(p[pixel[7]] > cb)
02791 if(p[pixel[8]] > cb)
02792 {}
02793 else
02794 continue;
02795 else
02796 continue;
02797 else
02798 continue;
02799 else
02800 continue;
02801 else
02802 continue;
02803 else
02804 continue;
02805 else
02806 continue;
02807 else
02808 continue;
02809 else
02810 continue;
02811 else if(p[pixel[9]] < c_b)
02812 if(p[pixel[6]] < c_b)
02813 if(p[pixel[7]] < c_b)
02814 if(p[pixel[8]] < c_b)
02815 if(p[pixel[10]] < c_b)
02816 if(p[pixel[11]] < c_b)
02817 if(p[pixel[12]] < c_b)
02818 if(p[pixel[5]] < c_b)
02819 if(p[pixel[4]] < c_b)
02820 {}
02821 else
02822 if(p[pixel[13]] < c_b)
02823 if(p[pixel[14]] < c_b)
02824 {}
02825 else
02826 continue;
02827 else
02828 continue;
02829 else
02830 if(p[pixel[13]] < c_b)
02831 if(p[pixel[14]] < c_b)
02832 if(p[pixel[15]] < c_b)
02833 {}
02834 else
02835 continue;
02836 else
02837 continue;
02838 else
02839 continue;
02840 else
02841 continue;
02842 else
02843 continue;
02844 else
02845 continue;
02846 else
02847 continue;
02848 else
02849 continue;
02850 else
02851 continue;
02852 else
02853 continue;
02854 else
02855 if(p[pixel[9]] > cb)
02856 if(p[pixel[10]] > cb)
02857 if(p[pixel[11]] > cb)
02858 if(p[pixel[12]] > cb)
02859 if(p[pixel[13]] > cb)
02860 if(p[pixel[14]] > cb)
02861 if(p[pixel[15]] > cb)
02862 {}
02863 else
02864 if(p[pixel[5]] > cb)
02865 if(p[pixel[6]] > cb)
02866 if(p[pixel[7]] > cb)
02867 if(p[pixel[8]] > cb)
02868 {}
02869 else
02870 continue;
02871 else
02872 continue;
02873 else
02874 continue;
02875 else
02876 continue;
02877 else
02878 if(p[pixel[4]] > cb)
02879 if(p[pixel[5]] > cb)
02880 if(p[pixel[6]] > cb)
02881 if(p[pixel[7]] > cb)
02882 if(p[pixel[8]] > cb)
02883 {}
02884 else
02885 continue;
02886 else
02887 continue;
02888 else
02889 continue;
02890 else
02891 continue;
02892 else
02893 continue;
02894 else
02895 continue;
02896 else
02897 continue;
02898 else
02899 continue;
02900 else
02901 continue;
02902 else if(p[pixel[9]] < c_b)
02903 if(p[pixel[6]] < c_b)
02904 if(p[pixel[7]] < c_b)
02905 if(p[pixel[8]] < c_b)
02906 if(p[pixel[10]] < c_b)
02907 if(p[pixel[11]] < c_b)
02908 if(p[pixel[12]] < c_b)
02909 if(p[pixel[13]] < c_b)
02910 if(p[pixel[5]] < c_b)
02911 if(p[pixel[4]] < c_b)
02912 {}
02913 else
02914 if(p[pixel[14]] < c_b)
02915 {}
02916 else
02917 continue;
02918 else
02919 if(p[pixel[14]] < c_b)
02920 if(p[pixel[15]] < c_b)
02921 {}
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
02939 continue;
02940 else
02941 continue;
02942 else if(p[pixel[2]] < c_b)
02943 if(p[pixel[8]] > cb)
02944 if(p[pixel[9]] > cb)
02945 if(p[pixel[10]] > cb)
02946 if(p[pixel[11]] > cb)
02947 if(p[pixel[12]] > cb)
02948 if(p[pixel[13]] > cb)
02949 if(p[pixel[14]] > cb)
02950 if(p[pixel[15]] > cb)
02951 {}
02952 else
02953 if(p[pixel[5]] > cb)
02954 if(p[pixel[6]] > cb)
02955 if(p[pixel[7]] > cb)
02956 {}
02957 else
02958 continue;
02959 else
02960 continue;
02961 else
02962 continue;
02963 else
02964 if(p[pixel[4]] > cb)
02965 if(p[pixel[5]] > cb)
02966 if(p[pixel[6]] > cb)
02967 if(p[pixel[7]] > cb)
02968 {}
02969 else
02970 continue;
02971 else
02972 continue;
02973 else
02974 continue;
02975 else
02976 continue;
02977 else
02978 if(p[pixel[3]] > cb)
02979 if(p[pixel[4]] > cb)
02980 if(p[pixel[5]] > cb)
02981 if(p[pixel[6]] > cb)
02982 if(p[pixel[7]] > cb)
02983 {}
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
02997 continue;
02998 else
02999 continue;
03000 else
03001 continue;
03002 else if(p[pixel[8]] < c_b)
03003 if(p[pixel[6]] < c_b)
03004 if(p[pixel[7]] < c_b)
03005 if(p[pixel[9]] < c_b)
03006 if(p[pixel[10]] < c_b)
03007 if(p[pixel[11]] < c_b)
03008 if(p[pixel[5]] < c_b)
03009 if(p[pixel[4]] < c_b)
03010 if(p[pixel[3]] < c_b)
03011 {}
03012 else
03013 if(p[pixel[12]] < c_b)
03014 if(p[pixel[13]] < c_b)
03015 {}
03016 else
03017 continue;
03018 else
03019 continue;
03020 else
03021 if(p[pixel[12]] < c_b)
03022 if(p[pixel[13]] < c_b)
03023 if(p[pixel[14]] < c_b)
03024 {}
03025 else
03026 continue;
03027 else
03028 continue;
03029 else
03030 continue;
03031 else
03032 if(p[pixel[12]] < c_b)
03033 if(p[pixel[13]] < c_b)
03034 if(p[pixel[14]] < c_b)
03035 if(p[pixel[15]] < c_b)
03036 {}
03037 else
03038 continue;
03039 else
03040 continue;
03041 else
03042 continue;
03043 else
03044 continue;
03045 else
03046 continue;
03047 else
03048 continue;
03049 else
03050 continue;
03051 else
03052 continue;
03053 else
03054 continue;
03055 else
03056 continue;
03057 else
03058 if(p[pixel[8]] > cb)
03059 if(p[pixel[9]] > cb)
03060 if(p[pixel[10]] > cb)
03061 if(p[pixel[11]] > cb)
03062 if(p[pixel[12]] > cb)
03063 if(p[pixel[13]] > cb)
03064 if(p[pixel[14]] > cb)
03065 if(p[pixel[15]] > cb)
03066 {}
03067 else
03068 if(p[pixel[5]] > cb)
03069 if(p[pixel[6]] > cb)
03070 if(p[pixel[7]] > cb)
03071 {}
03072 else
03073 continue;
03074 else
03075 continue;
03076 else
03077 continue;
03078 else
03079 if(p[pixel[4]] > cb)
03080 if(p[pixel[5]] > cb)
03081 if(p[pixel[6]] > cb)
03082 if(p[pixel[7]] > cb)
03083 {}
03084 else
03085 continue;
03086 else
03087 continue;
03088 else
03089 continue;
03090 else
03091 continue;
03092 else
03093 if(p[pixel[3]] > cb)
03094 if(p[pixel[4]] > cb)
03095 if(p[pixel[5]] > cb)
03096 if(p[pixel[6]] > cb)
03097 if(p[pixel[7]] > cb)
03098 {}
03099 else
03100 continue;
03101 else
03102 continue;
03103 else
03104 continue;
03105 else
03106 continue;
03107 else
03108 continue;
03109 else
03110 continue;
03111 else
03112 continue;
03113 else
03114 continue;
03115 else
03116 continue;
03117 else if(p[pixel[8]] < c_b)
03118 if(p[pixel[6]] < c_b)
03119 if(p[pixel[7]] < c_b)
03120 if(p[pixel[9]] < c_b)
03121 if(p[pixel[10]] < c_b)
03122 if(p[pixel[11]] < c_b)
03123 if(p[pixel[12]] < c_b)
03124 if(p[pixel[5]] < c_b)
03125 if(p[pixel[4]] < c_b)
03126 if(p[pixel[3]] < c_b)
03127 {}
03128 else
03129 if(p[pixel[13]] < c_b)
03130 {}
03131 else
03132 continue;
03133 else
03134 if(p[pixel[13]] < c_b)
03135 if(p[pixel[14]] < c_b)
03136 {}
03137 else
03138 continue;
03139 else
03140 continue;
03141 else
03142 if(p[pixel[13]] < c_b)
03143 if(p[pixel[14]] < c_b)
03144 if(p[pixel[15]] < c_b)
03145 {}
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
03159 continue;
03160 else
03161 continue;
03162 else
03163 continue;
03164 else
03165 continue;
03166 else if(p[pixel[1]] < c_b)
03167 if(p[pixel[7]] > cb)
03168 if(p[pixel[8]] > cb)
03169 if(p[pixel[9]] > cb)
03170 if(p[pixel[10]] > cb)
03171 if(p[pixel[11]] > cb)
03172 if(p[pixel[12]] > cb)
03173 if(p[pixel[13]] > cb)
03174 if(p[pixel[14]] > cb)
03175 if(p[pixel[15]] > cb)
03176 {}
03177 else
03178 if(p[pixel[5]] > cb)
03179 if(p[pixel[6]] > cb)
03180 {}
03181 else
03182 continue;
03183 else
03184 continue;
03185 else
03186 if(p[pixel[4]] > cb)
03187 if(p[pixel[5]] > cb)
03188 if(p[pixel[6]] > cb)
03189 {}
03190 else
03191 continue;
03192 else
03193 continue;
03194 else
03195 continue;
03196 else
03197 if(p[pixel[3]] > cb)
03198 if(p[pixel[4]] > cb)
03199 if(p[pixel[5]] > cb)
03200 if(p[pixel[6]] > cb)
03201 {}
03202 else
03203 continue;
03204 else
03205 continue;
03206 else
03207 continue;
03208 else
03209 continue;
03210 else
03211 if(p[pixel[2]] > cb)
03212 if(p[pixel[3]] > cb)
03213 if(p[pixel[4]] > cb)
03214 if(p[pixel[5]] > cb)
03215 if(p[pixel[6]] > cb)
03216 {}
03217 else
03218 continue;
03219 else
03220 continue;
03221 else
03222 continue;
03223 else
03224 continue;
03225 else
03226 continue;
03227 else
03228 continue;
03229 else
03230 continue;
03231 else
03232 continue;
03233 else
03234 continue;
03235 else if(p[pixel[7]] < c_b)
03236 if(p[pixel[6]] < c_b)
03237 if(p[pixel[8]] < c_b)
03238 if(p[pixel[9]] < c_b)
03239 if(p[pixel[10]] < c_b)
03240 if(p[pixel[5]] < c_b)
03241 if(p[pixel[4]] < c_b)
03242 if(p[pixel[3]] < c_b)
03243 if(p[pixel[2]] < c_b)
03244 {}
03245 else
03246 if(p[pixel[11]] < c_b)
03247 if(p[pixel[12]] < c_b)
03248 {}
03249 else
03250 continue;
03251 else
03252 continue;
03253 else
03254 if(p[pixel[11]] < c_b)
03255 if(p[pixel[12]] < c_b)
03256 if(p[pixel[13]] < c_b)
03257 {}
03258 else
03259 continue;
03260 else
03261 continue;
03262 else
03263 continue;
03264 else
03265 if(p[pixel[11]] < c_b)
03266 if(p[pixel[12]] < c_b)
03267 if(p[pixel[13]] < c_b)
03268 if(p[pixel[14]] < c_b)
03269 {}
03270 else
03271 continue;
03272 else
03273 continue;
03274 else
03275 continue;
03276 else
03277 continue;
03278 else
03279 if(p[pixel[11]] < c_b)
03280 if(p[pixel[12]] < c_b)
03281 if(p[pixel[13]] < c_b)
03282 if(p[pixel[14]] < c_b)
03283 if(p[pixel[15]] < c_b)
03284 {}
03285 else
03286 continue;
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 if(p[pixel[7]] > cb)
03307 if(p[pixel[8]] > cb)
03308 if(p[pixel[9]] > cb)
03309 if(p[pixel[10]] > cb)
03310 if(p[pixel[11]] > cb)
03311 if(p[pixel[12]] > cb)
03312 if(p[pixel[13]] > cb)
03313 if(p[pixel[14]] > cb)
03314 if(p[pixel[15]] > cb)
03315 {}
03316 else
03317 if(p[pixel[5]] > cb)
03318 if(p[pixel[6]] > cb)
03319 {}
03320 else
03321 continue;
03322 else
03323 continue;
03324 else
03325 if(p[pixel[4]] > cb)
03326 if(p[pixel[5]] > cb)
03327 if(p[pixel[6]] > cb)
03328 {}
03329 else
03330 continue;
03331 else
03332 continue;
03333 else
03334 continue;
03335 else
03336 if(p[pixel[3]] > cb)
03337 if(p[pixel[4]] > cb)
03338 if(p[pixel[5]] > cb)
03339 if(p[pixel[6]] > cb)
03340 {}
03341 else
03342 continue;
03343 else
03344 continue;
03345 else
03346 continue;
03347 else
03348 continue;
03349 else
03350 if(p[pixel[2]] > cb)
03351 if(p[pixel[3]] > cb)
03352 if(p[pixel[4]] > cb)
03353 if(p[pixel[5]] > cb)
03354 if(p[pixel[6]] > cb)
03355 {}
03356 else
03357 continue;
03358 else
03359 continue;
03360 else
03361 continue;
03362 else
03363 continue;
03364 else
03365 continue;
03366 else
03367 continue;
03368 else
03369 continue;
03370 else
03371 continue;
03372 else
03373 continue;
03374 else if(p[pixel[7]] < c_b)
03375 if(p[pixel[6]] < c_b)
03376 if(p[pixel[8]] < c_b)
03377 if(p[pixel[9]] < c_b)
03378 if(p[pixel[10]] < c_b)
03379 if(p[pixel[11]] < c_b)
03380 if(p[pixel[5]] < c_b)
03381 if(p[pixel[4]] < c_b)
03382 if(p[pixel[3]] < c_b)
03383 if(p[pixel[2]] < c_b)
03384 {}
03385 else
03386 if(p[pixel[12]] < c_b)
03387 {}
03388 else
03389 continue;
03390 else
03391 if(p[pixel[12]] < c_b)
03392 if(p[pixel[13]] < c_b)
03393 {}
03394 else
03395 continue;
03396 else
03397 continue;
03398 else
03399 if(p[pixel[12]] < c_b)
03400 if(p[pixel[13]] < c_b)
03401 if(p[pixel[14]] < c_b)
03402 {}
03403 else
03404 continue;
03405 else
03406 continue;
03407 else
03408 continue;
03409 else
03410 if(p[pixel[12]] < c_b)
03411 if(p[pixel[13]] < c_b)
03412 if(p[pixel[14]] < c_b)
03413 if(p[pixel[15]] < c_b)
03414 {}
03415 else
03416 continue;
03417 else
03418 continue;
03419 else
03420 continue;
03421 else
03422 continue;
03423 else
03424 continue;
03425 else
03426 continue;
03427 else
03428 continue;
03429 else
03430 continue;
03431 else
03432 continue;
03433 else
03434 continue;
03435 else if(p[pixel[0]] < c_b)
03436 if(p[pixel[1]] > cb)
03437 if(p[pixel[7]] > cb)
03438 if(p[pixel[6]] > cb)
03439 if(p[pixel[8]] > cb)
03440 if(p[pixel[9]] > cb)
03441 if(p[pixel[10]] > cb)
03442 if(p[pixel[5]] > cb)
03443 if(p[pixel[4]] > cb)
03444 if(p[pixel[3]] > cb)
03445 if(p[pixel[2]] > cb)
03446 {}
03447 else
03448 if(p[pixel[11]] > cb)
03449 if(p[pixel[12]] > cb)
03450 {}
03451 else
03452 continue;
03453 else
03454 continue;
03455 else
03456 if(p[pixel[11]] > cb)
03457 if(p[pixel[12]] > cb)
03458 if(p[pixel[13]] > cb)
03459 {}
03460 else
03461 continue;
03462 else
03463 continue;
03464 else
03465 continue;
03466 else
03467 if(p[pixel[11]] > cb)
03468 if(p[pixel[12]] > cb)
03469 if(p[pixel[13]] > cb)
03470 if(p[pixel[14]] > cb)
03471 {}
03472 else
03473 continue;
03474 else
03475 continue;
03476 else
03477 continue;
03478 else
03479 continue;
03480 else
03481 if(p[pixel[11]] > cb)
03482 if(p[pixel[12]] > cb)
03483 if(p[pixel[13]] > cb)
03484 if(p[pixel[14]] > cb)
03485 if(p[pixel[15]] > cb)
03486 {}
03487 else
03488 continue;
03489 else
03490 continue;
03491 else
03492 continue;
03493 else
03494 continue;
03495 else
03496 continue;
03497 else
03498 continue;
03499 else
03500 continue;
03501 else
03502 continue;
03503 else
03504 continue;
03505 else if(p[pixel[7]] < c_b)
03506 if(p[pixel[8]] < c_b)
03507 if(p[pixel[9]] < c_b)
03508 if(p[pixel[10]] < c_b)
03509 if(p[pixel[11]] < c_b)
03510 if(p[pixel[12]] < c_b)
03511 if(p[pixel[13]] < c_b)
03512 if(p[pixel[14]] < c_b)
03513 if(p[pixel[15]] < c_b)
03514 {}
03515 else
03516 if(p[pixel[5]] < c_b)
03517 if(p[pixel[6]] < c_b)
03518 {}
03519 else
03520 continue;
03521 else
03522 continue;
03523 else
03524 if(p[pixel[4]] < c_b)
03525 if(p[pixel[5]] < c_b)
03526 if(p[pixel[6]] < c_b)
03527 {}
03528 else
03529 continue;
03530 else
03531 continue;
03532 else
03533 continue;
03534 else
03535 if(p[pixel[3]] < c_b)
03536 if(p[pixel[4]] < c_b)
03537 if(p[pixel[5]] < c_b)
03538 if(p[pixel[6]] < c_b)
03539 {}
03540 else
03541 continue;
03542 else
03543 continue;
03544 else
03545 continue;
03546 else
03547 continue;
03548 else
03549 if(p[pixel[2]] < c_b)
03550 if(p[pixel[3]] < c_b)
03551 if(p[pixel[4]] < c_b)
03552 if(p[pixel[5]] < c_b)
03553 if(p[pixel[6]] < c_b)
03554 {}
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 continue;
03569 else
03570 continue;
03571 else
03572 continue;
03573 else
03574 continue;
03575 else if(p[pixel[1]] < c_b)
03576 if(p[pixel[2]] > cb)
03577 if(p[pixel[8]] > cb)
03578 if(p[pixel[6]] > cb)
03579 if(p[pixel[7]] > cb)
03580 if(p[pixel[9]] > cb)
03581 if(p[pixel[10]] > cb)
03582 if(p[pixel[11]] > cb)
03583 if(p[pixel[5]] > cb)
03584 if(p[pixel[4]] > cb)
03585 if(p[pixel[3]] > cb)
03586 {}
03587 else
03588 if(p[pixel[12]] > cb)
03589 if(p[pixel[13]] > cb)
03590 {}
03591 else
03592 continue;
03593 else
03594 continue;
03595 else
03596 if(p[pixel[12]] > cb)
03597 if(p[pixel[13]] > cb)
03598 if(p[pixel[14]] > cb)
03599 {}
03600 else
03601 continue;
03602 else
03603 continue;
03604 else
03605 continue;
03606 else
03607 if(p[pixel[12]] > cb)
03608 if(p[pixel[13]] > cb)
03609 if(p[pixel[14]] > cb)
03610 if(p[pixel[15]] > cb)
03611 {}
03612 else
03613 continue;
03614 else
03615 continue;
03616 else
03617 continue;
03618 else
03619 continue;
03620 else
03621 continue;
03622 else
03623 continue;
03624 else
03625 continue;
03626 else
03627 continue;
03628 else
03629 continue;
03630 else if(p[pixel[8]] < c_b)
03631 if(p[pixel[9]] < c_b)
03632 if(p[pixel[10]] < c_b)
03633 if(p[pixel[11]] < c_b)
03634 if(p[pixel[12]] < c_b)
03635 if(p[pixel[13]] < c_b)
03636 if(p[pixel[14]] < c_b)
03637 if(p[pixel[15]] < c_b)
03638 {}
03639 else
03640 if(p[pixel[5]] < c_b)
03641 if(p[pixel[6]] < c_b)
03642 if(p[pixel[7]] < c_b)
03643 {}
03644 else
03645 continue;
03646 else
03647 continue;
03648 else
03649 continue;
03650 else
03651 if(p[pixel[4]] < c_b)
03652 if(p[pixel[5]] < c_b)
03653 if(p[pixel[6]] < c_b)
03654 if(p[pixel[7]] < c_b)
03655 {}
03656 else
03657 continue;
03658 else
03659 continue;
03660 else
03661 continue;
03662 else
03663 continue;
03664 else
03665 if(p[pixel[3]] < c_b)
03666 if(p[pixel[4]] < c_b)
03667 if(p[pixel[5]] < c_b)
03668 if(p[pixel[6]] < c_b)
03669 if(p[pixel[7]] < c_b)
03670 {}
03671 else
03672 continue;
03673 else
03674 continue;
03675 else
03676 continue;
03677 else
03678 continue;
03679 else
03680 continue;
03681 else
03682 continue;
03683 else
03684 continue;
03685 else
03686 continue;
03687 else
03688 continue;
03689 else
03690 continue;
03691 else if(p[pixel[2]] < c_b)
03692 if(p[pixel[3]] > cb)
03693 if(p[pixel[9]] > cb)
03694 if(p[pixel[6]] > cb)
03695 if(p[pixel[7]] > cb)
03696 if(p[pixel[8]] > cb)
03697 if(p[pixel[10]] > cb)
03698 if(p[pixel[11]] > cb)
03699 if(p[pixel[12]] > cb)
03700 if(p[pixel[5]] > cb)
03701 if(p[pixel[4]] > cb)
03702 {}
03703 else
03704 if(p[pixel[13]] > cb)
03705 if(p[pixel[14]] > cb)
03706 {}
03707 else
03708 continue;
03709 else
03710 continue;
03711 else
03712 if(p[pixel[13]] > cb)
03713 if(p[pixel[14]] > cb)
03714 if(p[pixel[15]] > cb)
03715 {}
03716 else
03717 continue;
03718 else
03719 continue;
03720 else
03721 continue;
03722 else
03723 continue;
03724 else
03725 continue;
03726 else
03727 continue;
03728 else
03729 continue;
03730 else
03731 continue;
03732 else
03733 continue;
03734 else if(p[pixel[9]] < c_b)
03735 if(p[pixel[10]] < c_b)
03736 if(p[pixel[11]] < c_b)
03737 if(p[pixel[12]] < c_b)
03738 if(p[pixel[13]] < c_b)
03739 if(p[pixel[14]] < c_b)
03740 if(p[pixel[15]] < c_b)
03741 {}
03742 else
03743 if(p[pixel[5]] < c_b)
03744 if(p[pixel[6]] < c_b)
03745 if(p[pixel[7]] < c_b)
03746 if(p[pixel[8]] < c_b)
03747 {}
03748 else
03749 continue;
03750 else
03751 continue;
03752 else
03753 continue;
03754 else
03755 continue;
03756 else
03757 if(p[pixel[4]] < c_b)
03758 if(p[pixel[5]] < c_b)
03759 if(p[pixel[6]] < c_b)
03760 if(p[pixel[7]] < c_b)
03761 if(p[pixel[8]] < c_b)
03762 {}
03763 else
03764 continue;
03765 else
03766 continue;
03767 else
03768 continue;
03769 else
03770 continue;
03771 else
03772 continue;
03773 else
03774 continue;
03775 else
03776 continue;
03777 else
03778 continue;
03779 else
03780 continue;
03781 else
03782 continue;
03783 else if(p[pixel[3]] < c_b)
03784 if(p[pixel[4]] > cb)
03785 if(p[pixel[14]] > cb)
03786 if(p[pixel[6]] > cb)
03787 if(p[pixel[7]] > cb)
03788 if(p[pixel[8]] > cb)
03789 if(p[pixel[9]] > cb)
03790 if(p[pixel[10]] > cb)
03791 if(p[pixel[11]] > cb)
03792 if(p[pixel[12]] > cb)
03793 if(p[pixel[13]] > cb)
03794 if(p[pixel[5]] > cb)
03795 {}
03796 else
03797 if(p[pixel[15]] > cb)
03798 {}
03799 else
03800 continue;
03801 else
03802 continue;
03803 else
03804 continue;
03805 else
03806 continue;
03807 else
03808 continue;
03809 else
03810 continue;
03811 else
03812 continue;
03813 else
03814 continue;
03815 else
03816 continue;
03817 else if(p[pixel[14]] < c_b)
03818 if(p[pixel[10]] > cb)
03819 if(p[pixel[5]] > cb)
03820 if(p[pixel[6]] > cb)
03821 if(p[pixel[7]] > cb)
03822 if(p[pixel[8]] > cb)
03823 if(p[pixel[9]] > cb)
03824 if(p[pixel[11]] > cb)
03825 if(p[pixel[12]] > cb)
03826 if(p[pixel[13]] > cb)
03827 {}
03828 else
03829 continue;
03830 else
03831 continue;
03832 else
03833 continue;
03834 else
03835 continue;
03836 else
03837 continue;
03838 else
03839 continue;
03840 else
03841 continue;
03842 else
03843 continue;
03844 else if(p[pixel[10]] < c_b)
03845 if(p[pixel[11]] < c_b)
03846 if(p[pixel[12]] < c_b)
03847 if(p[pixel[13]] < c_b)
03848 if(p[pixel[15]] < c_b)
03849 {}
03850 else
03851 if(p[pixel[5]] < c_b)
03852 if(p[pixel[6]] < c_b)
03853 if(p[pixel[7]] < c_b)
03854 if(p[pixel[8]] < c_b)
03855 if(p[pixel[9]] < c_b)
03856 {}
03857 else
03858 continue;
03859 else
03860 continue;
03861 else
03862 continue;
03863 else
03864 continue;
03865 else
03866 continue;
03867 else
03868 continue;
03869 else
03870 continue;
03871 else
03872 continue;
03873 else
03874 continue;
03875 else
03876 if(p[pixel[5]] > cb)
03877 if(p[pixel[6]] > cb)
03878 if(p[pixel[7]] > cb)
03879 if(p[pixel[8]] > cb)
03880 if(p[pixel[9]] > cb)
03881 if(p[pixel[10]] > cb)
03882 if(p[pixel[11]] > cb)
03883 if(p[pixel[12]] > cb)
03884 if(p[pixel[13]] > cb)
03885 {}
03886 else
03887 continue;
03888 else
03889 continue;
03890 else
03891 continue;
03892 else
03893 continue;
03894 else
03895 continue;
03896 else
03897 continue;
03898 else
03899 continue;
03900 else
03901 continue;
03902 else
03903 continue;
03904 else if(p[pixel[4]] < c_b)
03905 if(p[pixel[5]] > cb)
03906 if(p[pixel[15]] < c_b)
03907 if(p[pixel[11]] > cb)
03908 if(p[pixel[6]] > cb)
03909 if(p[pixel[7]] > cb)
03910 if(p[pixel[8]] > cb)
03911 if(p[pixel[9]] > cb)
03912 if(p[pixel[10]] > cb)
03913 if(p[pixel[12]] > cb)
03914 if(p[pixel[13]] > cb)
03915 if(p[pixel[14]] > cb)
03916 {}
03917 else
03918 continue;
03919 else
03920 continue;
03921 else
03922 continue;
03923 else
03924 continue;
03925 else
03926 continue;
03927 else
03928 continue;
03929 else
03930 continue;
03931 else
03932 continue;
03933 else if(p[pixel[11]] < c_b)
03934 if(p[pixel[12]] < c_b)
03935 if(p[pixel[13]] < c_b)
03936 if(p[pixel[14]] < c_b)
03937 {}
03938 else
03939 continue;
03940 else
03941 continue;
03942 else
03943 continue;
03944 else
03945 continue;
03946 else
03947 if(p[pixel[6]] > cb)
03948 if(p[pixel[7]] > cb)
03949 if(p[pixel[8]] > cb)
03950 if(p[pixel[9]] > cb)
03951 if(p[pixel[10]] > cb)
03952 if(p[pixel[11]] > cb)
03953 if(p[pixel[12]] > cb)
03954 if(p[pixel[13]] > cb)
03955 if(p[pixel[14]] > cb)
03956 {}
03957 else
03958 continue;
03959 else
03960 continue;
03961 else
03962 continue;
03963 else
03964 continue;
03965 else
03966 continue;
03967 else
03968 continue;
03969 else
03970 continue;
03971 else
03972 continue;
03973 else
03974 continue;
03975 else if(p[pixel[5]] < c_b)
03976 if(p[pixel[6]] > cb)
03977 if(p[pixel[12]] > cb)
03978 if(p[pixel[7]] > cb)
03979 if(p[pixel[8]] > cb)
03980 if(p[pixel[9]] > cb)
03981 if(p[pixel[10]] > cb)
03982 if(p[pixel[11]] > cb)
03983 if(p[pixel[13]] > cb)
03984 if(p[pixel[14]] > cb)
03985 if(p[pixel[15]] > cb)
03986 {}
03987 else
03988 continue;
03989 else
03990 continue;
03991 else
03992 continue;
03993 else
03994 continue;
03995 else
03996 continue;
03997 else
03998 continue;
03999 else
04000 continue;
04001 else
04002 continue;
04003 else if(p[pixel[12]] < c_b)
04004 if(p[pixel[13]] < c_b)
04005 if(p[pixel[14]] < c_b)
04006 if(p[pixel[15]] < c_b)
04007 {}
04008 else
04009 continue;
04010 else
04011 continue;
04012 else
04013 continue;
04014 else
04015 continue;
04016 else if(p[pixel[6]] < c_b)
04017 if(p[pixel[7]] < c_b)
04018 if(p[pixel[8]] < c_b)
04019 if(p[pixel[9]] < c_b)
04020 {}
04021 else
04022 if(p[pixel[15]] < c_b)
04023 {}
04024 else
04025 continue;
04026 else
04027 if(p[pixel[14]] < c_b)
04028 if(p[pixel[15]] < c_b)
04029 {}
04030 else
04031 continue;
04032 else
04033 continue;
04034 else
04035 if(p[pixel[13]] < c_b)
04036 if(p[pixel[14]] < c_b)
04037 if(p[pixel[15]] < c_b)
04038 {}
04039 else
04040 continue;
04041 else
04042 continue;
04043 else
04044 continue;
04045 else
04046 if(p[pixel[12]] < c_b)
04047 if(p[pixel[13]] < c_b)
04048 if(p[pixel[14]] < c_b)
04049 if(p[pixel[15]] < c_b)
04050 {}
04051 else
04052 continue;
04053 else
04054 continue;
04055 else
04056 continue;
04057 else
04058 continue;
04059 else
04060 if(p[pixel[11]] > cb)
04061 if(p[pixel[6]] > cb)
04062 if(p[pixel[7]] > cb)
04063 if(p[pixel[8]] > cb)
04064 if(p[pixel[9]] > cb)
04065 if(p[pixel[10]] > cb)
04066 if(p[pixel[12]] > cb)
04067 if(p[pixel[13]] > cb)
04068 if(p[pixel[14]] > cb)
04069 if(p[pixel[15]] > cb)
04070 {}
04071 else
04072 continue;
04073 else
04074 continue;
04075 else
04076 continue;
04077 else
04078 continue;
04079 else
04080 continue;
04081 else
04082 continue;
04083 else
04084 continue;
04085 else
04086 continue;
04087 else
04088 continue;
04089 else if(p[pixel[11]] < c_b)
04090 if(p[pixel[12]] < c_b)
04091 if(p[pixel[13]] < c_b)
04092 if(p[pixel[14]] < c_b)
04093 if(p[pixel[15]] < c_b)
04094 {}
04095 else
04096 continue;
04097 else
04098 continue;
04099 else
04100 continue;
04101 else
04102 continue;
04103 else
04104 continue;
04105 else
04106 if(p[pixel[10]] > cb)
04107 if(p[pixel[6]] > cb)
04108 if(p[pixel[7]] > cb)
04109 if(p[pixel[8]] > cb)
04110 if(p[pixel[9]] > cb)
04111 if(p[pixel[11]] > cb)
04112 if(p[pixel[12]] > cb)
04113 if(p[pixel[13]] > cb)
04114 if(p[pixel[14]] > cb)
04115 if(p[pixel[5]] > cb)
04116 {}
04117 else
04118 if(p[pixel[15]] > cb)
04119 {}
04120 else
04121 continue;
04122 else
04123 continue;
04124 else
04125 continue;
04126 else
04127 continue;
04128 else
04129 continue;
04130 else
04131 continue;
04132 else
04133 continue;
04134 else
04135 continue;
04136 else
04137 continue;
04138 else if(p[pixel[10]] < c_b)
04139 if(p[pixel[11]] < c_b)
04140 if(p[pixel[12]] < c_b)
04141 if(p[pixel[13]] < c_b)
04142 if(p[pixel[14]] < c_b)
04143 if(p[pixel[15]] < c_b)
04144 {}
04145 else
04146 if(p[pixel[5]] < c_b)
04147 if(p[pixel[6]] < c_b)
04148 if(p[pixel[7]] < c_b)
04149 if(p[pixel[8]] < c_b)
04150 if(p[pixel[9]] < c_b)
04151 {}
04152 else
04153 continue;
04154 else
04155 continue;
04156 else
04157 continue;
04158 else
04159 continue;
04160 else
04161 continue;
04162 else
04163 continue;
04164 else
04165 continue;
04166 else
04167 continue;
04168 else
04169 continue;
04170 else
04171 continue;
04172 else
04173 if(p[pixel[9]] > cb)
04174 if(p[pixel[6]] > cb)
04175 if(p[pixel[7]] > cb)
04176 if(p[pixel[8]] > cb)
04177 if(p[pixel[10]] > cb)
04178 if(p[pixel[11]] > cb)
04179 if(p[pixel[12]] > cb)
04180 if(p[pixel[13]] > cb)
04181 if(p[pixel[5]] > cb)
04182 if(p[pixel[4]] > cb)
04183 {}
04184 else
04185 if(p[pixel[14]] > cb)
04186 {}
04187 else
04188 continue;
04189 else
04190 if(p[pixel[14]] > cb)
04191 if(p[pixel[15]] > cb)
04192 {}
04193 else
04194 continue;
04195 else
04196 continue;
04197 else
04198 continue;
04199 else
04200 continue;
04201 else
04202 continue;
04203 else
04204 continue;
04205 else
04206 continue;
04207 else
04208 continue;
04209 else
04210 continue;
04211 else if(p[pixel[9]] < c_b)
04212 if(p[pixel[10]] < c_b)
04213 if(p[pixel[11]] < c_b)
04214 if(p[pixel[12]] < c_b)
04215 if(p[pixel[13]] < c_b)
04216 if(p[pixel[14]] < c_b)
04217 if(p[pixel[15]] < c_b)
04218 {}
04219 else
04220 if(p[pixel[5]] < c_b)
04221 if(p[pixel[6]] < c_b)
04222 if(p[pixel[7]] < c_b)
04223 if(p[pixel[8]] < c_b)
04224 {}
04225 else
04226 continue;
04227 else
04228 continue;
04229 else
04230 continue;
04231 else
04232 continue;
04233 else
04234 if(p[pixel[4]] < c_b)
04235 if(p[pixel[5]] < c_b)
04236 if(p[pixel[6]] < c_b)
04237 if(p[pixel[7]] < c_b)
04238 if(p[pixel[8]] < c_b)
04239 {}
04240 else
04241 continue;
04242 else
04243 continue;
04244 else
04245 continue;
04246 else
04247 continue;
04248 else
04249 continue;
04250 else
04251 continue;
04252 else
04253 continue;
04254 else
04255 continue;
04256 else
04257 continue;
04258 else
04259 continue;
04260 else
04261 if(p[pixel[8]] > cb)
04262 if(p[pixel[6]] > cb)
04263 if(p[pixel[7]] > cb)
04264 if(p[pixel[9]] > cb)
04265 if(p[pixel[10]] > cb)
04266 if(p[pixel[11]] > cb)
04267 if(p[pixel[12]] > cb)
04268 if(p[pixel[5]] > cb)
04269 if(p[pixel[4]] > cb)
04270 if(p[pixel[3]] > cb)
04271 {}
04272 else
04273 if(p[pixel[13]] > cb)
04274 {}
04275 else
04276 continue;
04277 else
04278 if(p[pixel[13]] > cb)
04279 if(p[pixel[14]] > cb)
04280 {}
04281 else
04282 continue;
04283 else
04284 continue;
04285 else
04286 if(p[pixel[13]] > cb)
04287 if(p[pixel[14]] > cb)
04288 if(p[pixel[15]] > cb)
04289 {}
04290 else
04291 continue;
04292 else
04293 continue;
04294 else
04295 continue;
04296 else
04297 continue;
04298 else
04299 continue;
04300 else
04301 continue;
04302 else
04303 continue;
04304 else
04305 continue;
04306 else
04307 continue;
04308 else if(p[pixel[8]] < c_b)
04309 if(p[pixel[9]] < c_b)
04310 if(p[pixel[10]] < c_b)
04311 if(p[pixel[11]] < c_b)
04312 if(p[pixel[12]] < c_b)
04313 if(p[pixel[13]] < c_b)
04314 if(p[pixel[14]] < c_b)
04315 if(p[pixel[15]] < c_b)
04316 {}
04317 else
04318 if(p[pixel[5]] < c_b)
04319 if(p[pixel[6]] < c_b)
04320 if(p[pixel[7]] < c_b)
04321 {}
04322 else
04323 continue;
04324 else
04325 continue;
04326 else
04327 continue;
04328 else
04329 if(p[pixel[4]] < c_b)
04330 if(p[pixel[5]] < c_b)
04331 if(p[pixel[6]] < c_b)
04332 if(p[pixel[7]] < c_b)
04333 {}
04334 else
04335 continue;
04336 else
04337 continue;
04338 else
04339 continue;
04340 else
04341 continue;
04342 else
04343 if(p[pixel[3]] < c_b)
04344 if(p[pixel[4]] < c_b)
04345 if(p[pixel[5]] < c_b)
04346 if(p[pixel[6]] < c_b)
04347 if(p[pixel[7]] < c_b)
04348 {}
04349 else
04350 continue;
04351 else
04352 continue;
04353 else
04354 continue;
04355 else
04356 continue;
04357 else
04358 continue;
04359 else
04360 continue;
04361 else
04362 continue;
04363 else
04364 continue;
04365 else
04366 continue;
04367 else
04368 continue;
04369 else
04370 if(p[pixel[7]] > cb)
04371 if(p[pixel[6]] > cb)
04372 if(p[pixel[8]] > cb)
04373 if(p[pixel[9]] > cb)
04374 if(p[pixel[10]] > cb)
04375 if(p[pixel[11]] > cb)
04376 if(p[pixel[5]] > cb)
04377 if(p[pixel[4]] > cb)
04378 if(p[pixel[3]] > cb)
04379 if(p[pixel[2]] > cb)
04380 {}
04381 else
04382 if(p[pixel[12]] > cb)
04383 {}
04384 else
04385 continue;
04386 else
04387 if(p[pixel[12]] > cb)
04388 if(p[pixel[13]] > cb)
04389 {}
04390 else
04391 continue;
04392 else
04393 continue;
04394 else
04395 if(p[pixel[12]] > cb)
04396 if(p[pixel[13]] > cb)
04397 if(p[pixel[14]] > cb)
04398 {}
04399 else
04400 continue;
04401 else
04402 continue;
04403 else
04404 continue;
04405 else
04406 if(p[pixel[12]] > cb)
04407 if(p[pixel[13]] > cb)
04408 if(p[pixel[14]] > cb)
04409 if(p[pixel[15]] > cb)
04410 {}
04411 else
04412 continue;
04413 else
04414 continue;
04415 else
04416 continue;
04417 else
04418 continue;
04419 else
04420 continue;
04421 else
04422 continue;
04423 else
04424 continue;
04425 else
04426 continue;
04427 else
04428 continue;
04429 else if(p[pixel[7]] < c_b)
04430 if(p[pixel[8]] < c_b)
04431 if(p[pixel[9]] < c_b)
04432 if(p[pixel[10]] < c_b)
04433 if(p[pixel[11]] < c_b)
04434 if(p[pixel[12]] < c_b)
04435 if(p[pixel[13]] < c_b)
04436 if(p[pixel[14]] < c_b)
04437 if(p[pixel[15]] < c_b)
04438 {}
04439 else
04440 if(p[pixel[5]] < c_b)
04441 if(p[pixel[6]] < c_b)
04442 {}
04443 else
04444 continue;
04445 else
04446 continue;
04447 else
04448 if(p[pixel[4]] < c_b)
04449 if(p[pixel[5]] < c_b)
04450 if(p[pixel[6]] < c_b)
04451 {}
04452 else
04453 continue;
04454 else
04455 continue;
04456 else
04457 continue;
04458 else
04459 if(p[pixel[3]] < c_b)
04460 if(p[pixel[4]] < c_b)
04461 if(p[pixel[5]] < c_b)
04462 if(p[pixel[6]] < c_b)
04463 {}
04464 else
04465 continue;
04466 else
04467 continue;
04468 else
04469 continue;
04470 else
04471 continue;
04472 else
04473 if(p[pixel[2]] < c_b)
04474 if(p[pixel[3]] < c_b)
04475 if(p[pixel[4]] < c_b)
04476 if(p[pixel[5]] < c_b)
04477 if(p[pixel[6]] < c_b)
04478 {}
04479 else
04480 continue;
04481 else
04482 continue;
04483 else
04484 continue;
04485 else
04486 continue;
04487 else
04488 continue;
04489 else
04490 continue;
04491 else
04492 continue;
04493 else
04494 continue;
04495 else
04496 continue;
04497 else
04498 continue;
04499 else
04500 if(p[pixel[6]] > cb)
04501 if(p[pixel[7]] > cb)
04502 if(p[pixel[8]] > cb)
04503 if(p[pixel[9]] > cb)
04504 if(p[pixel[10]] > cb)
04505 if(p[pixel[5]] > cb)
04506 if(p[pixel[4]] > cb)
04507 if(p[pixel[3]] > cb)
04508 if(p[pixel[2]] > cb)
04509 if(p[pixel[1]] > cb)
04510 {}
04511 else
04512 if(p[pixel[11]] > cb)
04513 {}
04514 else
04515 continue;
04516 else
04517 if(p[pixel[11]] > cb)
04518 if(p[pixel[12]] > cb)
04519 {}
04520 else
04521 continue;
04522 else
04523 continue;
04524 else
04525 if(p[pixel[11]] > cb)
04526 if(p[pixel[12]] > cb)
04527 if(p[pixel[13]] > cb)
04528 {}
04529 else
04530 continue;
04531 else
04532 continue;
04533 else
04534 continue;
04535 else
04536 if(p[pixel[11]] > cb)
04537 if(p[pixel[12]] > cb)
04538 if(p[pixel[13]] > cb)
04539 if(p[pixel[14]] > cb)
04540 {}
04541 else
04542 continue;
04543 else
04544 continue;
04545 else
04546 continue;
04547 else
04548 continue;
04549 else
04550 if(p[pixel[11]] > cb)
04551 if(p[pixel[12]] > cb)
04552 if(p[pixel[13]] > cb)
04553 if(p[pixel[14]] > cb)
04554 if(p[pixel[15]] > cb)
04555 {}
04556 else
04557 continue;
04558 else
04559 continue;
04560 else
04561 continue;
04562 else
04563 continue;
04564 else
04565 continue;
04566 else
04567 continue;
04568 else
04569 continue;
04570 else
04571 continue;
04572 else
04573 continue;
04574 else if(p[pixel[6]] < c_b)
04575 if(p[pixel[7]] < c_b)
04576 if(p[pixel[8]] < c_b)
04577 if(p[pixel[9]] < c_b)
04578 if(p[pixel[10]] < c_b)
04579 if(p[pixel[5]] < c_b)
04580 if(p[pixel[4]] < c_b)
04581 if(p[pixel[3]] < c_b)
04582 if(p[pixel[2]] < c_b)
04583 if(p[pixel[1]] < c_b)
04584 {}
04585 else
04586 if(p[pixel[11]] < c_b)
04587 {}
04588 else
04589 continue;
04590 else
04591 if(p[pixel[11]] < c_b)
04592 if(p[pixel[12]] < c_b)
04593 {}
04594 else
04595 continue;
04596 else
04597 continue;
04598 else
04599 if(p[pixel[11]] < c_b)
04600 if(p[pixel[12]] < c_b)
04601 if(p[pixel[13]] < c_b)
04602 {}
04603 else
04604 continue;
04605 else
04606 continue;
04607 else
04608 continue;
04609 else
04610 if(p[pixel[11]] < c_b)
04611 if(p[pixel[12]] < c_b)
04612 if(p[pixel[13]] < c_b)
04613 if(p[pixel[14]] < c_b)
04614 {}
04615 else
04616 continue;
04617 else
04618 continue;
04619 else
04620 continue;
04621 else
04622 continue;
04623 else
04624 if(p[pixel[11]] < c_b)
04625 if(p[pixel[12]] < c_b)
04626 if(p[pixel[13]] < c_b)
04627 if(p[pixel[14]] < c_b)
04628 if(p[pixel[15]] < c_b)
04629 {}
04630 else
04631 continue;
04632 else
04633 continue;
04634 else
04635 continue;
04636 else
04637 continue;
04638 else
04639 continue;
04640 else
04641 continue;
04642 else
04643 continue;
04644 else
04645 continue;
04646 else
04647 continue;
04648 else
04649 continue;
04650 if(num_corners == rsize)
04651 {
04652 rsize*=2;
04653 ret_corners = (xy*)realloc(ret_corners, sizeof(xy)*rsize);
04654 }
04655
04656 ret_corners[num_corners].x = x;
04657 ret_corners[num_corners].y = y;
04658 num_corners++;
04659 }
04660
04661 *ret_num_corners = num_corners;
04662 return ret_corners;
04663
04664 }
04665
04666