| 628 | // sector type may be sign, house, or Gauquelin sector. |
| 629 | |
| 630 | flag DrawFillWheel(int x, int y, int i, int typ) |
| 631 | { |
| 632 | KV kvC, kvF, kv1, kv2, kv3; |
| 633 | int nTrans, n, typ2; |
| 634 | real rDeg; |
| 635 | |
| 636 | if (gs.nDecaFill <= 0) |
| 637 | return fFalse; |
| 638 | |
| 639 | // Don't do anything if background bitmap visible. |
| 640 | nTrans = (int)(gs.rBackPct * 256.0 / 100.0); |
| 641 | if (gi.bmpBack.rgb != NULL && gs.fBackDraw && nTrans > 0) |
| 642 | return fFalse; |
| 643 | |
| 644 | // Figure out what RGB colors to use to fill. |
| 645 | nTrans = (int)(gs.rBackPct * 256.0 / 100.0); |
| 646 | if (nTrans <= 0) |
| 647 | return fFalse; |
| 648 | if (gs.nDecaFill == 1) { |
| 649 | // Standard fill: Based on sign/element color. |
| 650 | kvC = gi.kvCur; |
| 651 | } else if (gs.nDecaFill <= 3) { |
| 652 | // Rainbow fills: Based on degree around color wheel. |
| 653 | rDeg = (real)(i-1) * rDegMax / (real)(typ < 2 ? cSign : cSector); |
| 654 | kvC = gs.nDecaFill == 2 ? KvHue(rDeg) : KvHue2(rDeg); |
| 655 | } else if (gs.nDecaFill <= 5) { |
| 656 | // Ruler fills: Based on color of planet(s) ruling sign/house. |
| 657 | if (typ >= 2) |
| 658 | i = (cSector - i)/3 + 1; |
| 659 | typ2 = (gs.nDecaFill <= 4 || typ != 1 ? 1 : 2); |
| 660 | kv1 = kv2 = kv3 = n = 0; |
| 661 | if (!ignore7[rrStd]) { |
| 662 | kv1 = KvHouse(i, rules, rules2, typ2); |
| 663 | kvC = kv1; |
| 664 | n = 1; |
| 665 | } |
| 666 | if (!ignore7[rrEso]) { |
| 667 | kv2 = KvHouse(i, rgSignEso1, rgSignEso2, typ2); |
| 668 | kvC = (n <= 0 ? kv2 : KvBlend(kv1, kv2, 0.5)); |
| 669 | n++; |
| 670 | } |
| 671 | if (!ignore7[rrHie]) { |
| 672 | kv3 = KvHouse(i, rgSignHie1, rgSignHie2, typ2); |
| 673 | kvC = (n <= 0 ? kv3 : KvBlend(kvC, kv3, n == 1 ? 0.5 : 0.3333)); |
| 674 | } |
| 675 | } else { |
| 676 | if (typ >= 2) |
| 677 | i = (cSector - i)/3 + 1; |
| 678 | if (gs.nDecaFill == 6 || typ != 1) { |
| 679 | // Ray sign fill: Based on Ray(s) of sign. |
| 680 | kv2 = kv3 = 0; |
| 681 | n = rgSignRay[i]; |
| 682 | kv1 = rgbbmpRay[n%10]; |
| 683 | kv2 = rgbbmpRay[n/10%10]; |
| 684 | kv3 = rgbbmpRay[n/100]; |
| 685 | kvC = (kv3 == 0 ? (kv2 == 0 ? kv1 : KvBlend(kv1, kv2, 0.5)) : |
| 686 | KvBlend(KvBlend(kv1, kv2, 0.5), kv3, 0.3333)); |
| 687 | } else { |