Changeset 38062 for trunk/Ohana/src/kapa2
- Timestamp:
- Mar 29, 2015, 6:52:41 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
. (modified) (1 prop)
-
Ohana (modified) (1 prop)
-
Ohana/src/kapa2/src/DrawObjects.c (modified) (9 diffs)
-
Ohana/src/kapa2/src/InterpretKeys.c (modified) (1 diff)
-
Ohana/src/kapa2/src/PSObjects.c (modified) (13 diffs)
-
Ohana/src/kapa2/src/bDrawObjects.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
-
trunk/Ohana
- Property svn:mergeinfo deleted
-
trunk/Ohana/src/kapa2/src/DrawObjects.c
r37047 r38062 630 630 } 631 631 } 632 if (object[0].ptype == 14) { /* upside-down filled triangle */ 633 XPoint points[4]; 634 for (i = 0; i < object[0].Npts; i++) { 635 if (!(finite(x[i]) && finite(y[i]))) continue; 636 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 637 sy = x[i]*myi + y[i]*myj + by + YCENTER; 638 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 639 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 640 if (scaleColor) { 641 if (!finite(z[i])) continue; 642 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 643 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 644 } 645 D = scaleSize ? dz*z[i] : ds; 646 points[0].x = sx - D; points[0].y = sy - 0.58*D; 647 points[1].x = sx + D; points[1].y = sy - 0.58*D; 648 points[2].x = sx; points[2].y = sy + 1.15*D; 649 points[3].x = sx - D; points[3].y = sy - 0.58*D; 650 XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin); 651 } 652 } 653 } 654 if (object[0].ptype == 15) { /* upside-down open triangle */ 655 for (i = 0; i < object[0].Npts; i++) { 656 if (!(finite(x[i]) && finite(y[i]))) continue; 657 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 658 sy = x[i]*myi + y[i]*myj + by + YCENTER; 659 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 660 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 661 if (scaleColor) { 662 if (!finite(z[i])) continue; 663 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 664 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 665 } 666 D = scaleSize ? dz*z[i] : ds; 667 DrawLine (sx - D, sy - 0.58*D, sx + D, sy - 0.58*D); 668 DrawLine (sx + D, sy - 0.58*D, sx, sy + 1.15*D); 669 DrawLine (sx, sy + 1.15*D, sx - D, sy - 0.58*D); 670 } 671 } 672 } 673 if (object[0].ptype == 16) { /* upside-down Y */ 674 for (i = 0; i < object[0].Npts; i++) { 675 if (!(finite(x[i]) && finite(y[i]))) continue; 676 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 677 sy = x[i]*myi + y[i]*myj + by + YCENTER; 678 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 679 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 680 if (scaleColor) { 681 if (!finite(z[i])) continue; 682 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 683 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 684 } 685 D = scaleSize ? dz*z[i] : ds; 686 DrawLine (sx, sy, sx - D, sy + 0.58*D); 687 DrawLine (sx, sy, sx + D, sy + 0.58*D); 688 DrawLine (sx, sy, sx, sy - 1.15*D); 689 } 690 } 691 } 632 692 if (object[0].ptype == 100) { /* connect a pair of points */ 633 693 … … 652 712 void DrawXErrors (KapaGraphWidget *graph, Gobjects *object) { 653 713 654 int i, bar ;655 float *x, *y, * dxm, *dxp;714 int i, bar, dz, ds, D; 715 float *x, *y, *z, *dxm, *dxp; 656 716 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 657 717 double sx0, sy0, sx1, sy1, sz, sx10, sx11, X0, X1, Y0, Y1; 718 719 int scaleSize = (object[0].size < 0); 658 720 659 721 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 670 732 by = byi + byj; 671 733 672 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; 734 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 735 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 736 737 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; z = object[0].z; 673 738 bar = object[0].ebar; sz = object[0].size*graph[0].axis[1].dfy*0.03; 674 739 … … 678 743 Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 679 744 745 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 746 680 747 for (i = 0; i < object[0].Npts; i++) { 681 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) continue; 682 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 748 // for open circles, only go to the outer radius 749 D = 0; 750 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 751 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 752 if (object[0].ptype == 5) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 753 if (object[0].ptype == 15) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 754 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) goto skip_dxp; 755 if (D > fabs(dxp[i]*mxi)) goto skip_dxp; 756 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER + D; 683 757 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 684 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx + XCENTER;685 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by + YCENTER;758 sx1 = sx0 + dxp[i]*mxi - D; 759 sy1 = sy0 + dxp[i]*myi; 686 760 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 687 761 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 696 770 } 697 771 } 772 skip_dxp: 698 773 if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue; 699 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 774 if (D > fabs(dxm[i]*mxi)) continue; 775 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER - D; 700 776 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 701 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx + XCENTER;702 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by + YCENTER;777 sx1 = sx0 - dxm[i]*mxi + D; 778 sy1 = sy0 - dxm[i]*myi; 703 779 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 704 780 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 719 795 void DrawYErrors (KapaGraphWidget *graph, Gobjects *object) { 720 796 721 int i, bar ;722 float *x, *y, * dym, *dyp;797 int i, bar, dz, ds, D; 798 float *x, *y, *z, *dym, *dyp; 723 799 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 724 800 double sx0, sy0, sx1, sy1, sz, sx10, sx11, X0, X1, Y0, Y1; 801 802 int scaleSize = (object[0].size < 0); 725 803 726 804 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 737 815 by = byi + byj; 738 816 739 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; 817 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 818 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 819 820 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; z = object[0].z; 740 821 bar = object[0].ebar; sz = object[0].size*graph[0].axis[0].dfx*0.03; 741 822 … … 745 826 Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 746 827 828 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 829 747 830 for (i = 0; i < object[0].Npts; i++) { 748 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) continue; 831 // for open circles, only go to the outer radius 832 D = 0; 833 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 834 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 835 if (object[0].ptype == 5) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 836 if (object[0].ptype == 15) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 837 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) goto skip_dyp; 838 if (D > fabs(dyp[i]*myj)) goto skip_dyp; 749 839 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 750 sy0 = x[i]*myi + y[i]*myj + by + YCENTER ;840 sy0 = x[i]*myi + y[i]*myj + by + YCENTER - D; 751 841 sx1 = sx0 + dyp[i]*mxj; 752 sy1 = sy0 + dyp[i]*myj ;842 sy1 = sy0 + dyp[i]*myj + D; 753 843 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 754 844 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 763 853 } 764 854 } 855 skip_dyp: 765 856 if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue; 857 if (object[0].ptype == 5) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 858 if (object[0].ptype == 15) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 859 if (D > fabs(dym[i]*myj)) continue; 766 860 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 767 sy0 = x[i]*myi + y[i]*myj + by + YCENTER ;768 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx + XCENTER;769 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by + YCENTER;861 sy0 = x[i]*myi + y[i]*myj + by + YCENTER + D; 862 sx1 = sx0 - dym[i]*mxj; 863 sy1 = sy0 - dym[i]*myj - D; 770 864 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 771 865 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || -
trunk/Ohana/src/kapa2/src/InterpretKeys.c
r37807 r38062 98 98 Screen_to_Image (&X, &Y, (double)(event[0].x + 0.5), (double)(event[0].y + 0.5), &image[0].picture); \ 99 99 UpdateStatusBox (graphic, image, X, Y, 0.0, 1); \ 100 Remap (graphic, image); \ 100 101 break; 101 102 // Remap (graphic, image);103 102 104 103 // the number of entries here must match the value of NCHANNELS in contants.h -
trunk/Ohana/src/kapa2/src/PSObjects.c
r35416 r38062 403 403 D = scaleSize ? dz*z[i] : ds; 404 404 FillTriangle (sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 405 /* 406 DrawLine (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D); 407 DrawLine (sx + D, sy + 0.58*D, sx, sy - 1.15*D); 408 DrawLine (sx, sy - 1.15*D, sx - D, sy + 0.58*D); 409 */ 405 } 406 } 407 } 408 if (object[0].ptype == 14) { /* filled triangle */ 409 for (i = 0; i < object[0].Npts; i++) { 410 if (!(finite(x[i]) && finite(y[i]))) continue; 411 sx = x[i]*mxi + y[i]*mxj + bx; 412 sy = x[i]*myi + y[i]*myj + by; 413 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 414 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 415 { 416 if (scaleColor) { 417 if (!finite(z[i])) continue; 418 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 419 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 420 } 421 D = scaleSize ? dz*z[i] : ds; 422 FillTriangle (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D, sx, sy - 1.15*D); 410 423 } 411 424 } … … 426 439 D = scaleSize ? dz*z[i] : ds; 427 440 DrawLine (sx - D, sy - 0.58*D, sx + D, sy - 0.58*D); 428 DrawLine (sx + D, sy - 0.58*D, sx, sy + 1.15*D); 429 DrawLine (sx, sy + 1.15*D, sx - D, sy - 0.58*D); 441 DrawLine (sx + D, sy - 0.58*D, sx, sy + 1.15*D); 442 DrawLine (sx, sy + 1.15*D, sx - D, sy - 0.58*D); 443 } 444 } 445 } 446 if (object[0].ptype == 15) { /* upside-down open triangle */ 447 for (i = 0; i < object[0].Npts; i++) { 448 if (!(finite(x[i]) && finite(y[i]))) continue; 449 sx = x[i]*mxi + y[i]*mxj + bx; 450 sy = x[i]*myi + y[i]*myj + by; 451 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 452 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 453 { 454 if (scaleColor) { 455 if (!finite(z[i])) continue; 456 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 457 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 458 } 459 D = scaleSize ? dz*z[i] : ds; 460 DrawLine (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D); 461 DrawLine (sx + D, sy + 0.58*D, sx, sy - 1.15*D); 462 DrawLine (sx, sy - 1.15*D, sx - D, sy + 0.58*D); 430 463 } 431 464 } … … 448 481 DrawLine (sx, sy, sx + D, sy + 0.58*D); 449 482 DrawLine (sx, sy, sx, sy - 1.15*D); 483 } 484 } 485 } 486 if (object[0].ptype == 16) { /* Y */ 487 for (i = 0; i < object[0].Npts; i++) { 488 if (!(finite(x[i]) && finite(y[i]))) continue; 489 sx = x[i]*mxi + y[i]*mxj + bx; 490 sy = x[i]*myi + y[i]*myj + by; 491 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 492 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 493 { 494 if (scaleColor) { 495 if (!finite(z[i])) continue; 496 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 497 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 498 } 499 D = scaleSize ? dz*z[i] : ds; 500 DrawLine (sx, sy, sx - D, sy - 0.58*D); 501 DrawLine (sx, sy, sx + D, sy - 0.58*D); 502 DrawLine (sx, sy, sx, sy + 1.15*D); 450 503 } 451 504 } … … 557 610 void PSXErrors (KapaGraphWidget *graph, Gobjects *object, FILE *f) { 558 611 559 int i, bar ;560 float *x, *y, * dxm, *dxp;612 int i, bar, dz, ds, D; 613 float *x, *y, *z, *dxm, *dxp; 561 614 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 562 615 double sx0, sy0, sx1, sy1, sz, sx10, sx11; 616 617 int scaleSize = (object[0].size < 0); 563 618 564 619 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 575 630 by = byi + byj; 576 631 577 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; 632 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 633 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 634 635 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; z = object[0].z; 578 636 bar = object[0].ebar; sz = object[0].size*graph[0].axis[1].dfy*0.03; 579 637 … … 583 641 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 584 642 643 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 644 585 645 for (i = 0; i < object[0].Npts; i++) { 586 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) continue; 587 sx0 = x[i]*mxi + y[i]*mxj + bx; 646 // for open circles, only go to the outer radius 647 D = 0; 648 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 649 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 650 if (object[0].ptype == 5) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 651 if (object[0].ptype == 15) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 652 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) goto skip_dxp; 653 if (D > fabs(dxp[i]*mxi)) goto skip_dxp; 654 sx0 = x[i]*mxi + y[i]*mxj + bx + D; 588 655 sy0 = x[i]*myi + y[i]*myj + by; 589 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx;590 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by;656 sx1 = sx0 + dxp[i]*mxi - D; 657 sy1 = sy0 + dxp[i]*myi; 591 658 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 592 659 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 595 662 { 596 663 ClipLinePS (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1, f); 597 // DrawLine (sx0, sy0, sx1, sy1);598 664 if (bar) { 599 665 sx10 = sy1 - sz; 600 666 sx11 = sy1 + sz; 601 667 ClipLinePS (sx1, sx10, sx1, sx11, X0, Y0, X1, Y1, f); 602 // DrawLine (sx1, sx10, sx1, sx11);603 }604 }668 } 669 } 670 skip_dxp: 605 671 if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue; 606 sx0 = x[i]*mxi + y[i]*mxj + bx; 672 if (D > fabs(dxm[i]*mxi)) continue; 673 sx0 = x[i]*mxi + y[i]*mxj + bx - D; 607 674 sy0 = x[i]*myi + y[i]*myj + by; 608 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx;609 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by;675 sx1 = sx0 - dxm[i]*mxi + D; 676 sy1 = sy0 - dxm[i]*myi; 610 677 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 611 678 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 614 681 { 615 682 ClipLinePS (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1, f); 616 // DrawLine (sx0, sy0, sx1, sy1);617 683 if (bar) { 618 684 sx10 = sy1 - sz; 619 685 sx11 = sy1 + sz; 620 686 ClipLinePS (sx1, sx10, sx1, sx11, X0, Y0, X1, Y1, f); 621 // DrawLine (sx1, sx10, sx1, sx11);622 687 } 623 688 } … … 629 694 void PSYErrors (KapaGraphWidget *graph, Gobjects *object, FILE *f) { 630 695 631 int i, bar ;632 float *x, *y, * dym, *dyp;696 int i, bar, dz, ds, D; 697 float *x, *y, *z, *dym, *dyp; 633 698 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 634 699 double sx0, sy0, sx1, sy1, sz, sx10, sx11; 635 700 701 int scaleSize = (object[0].size < 0); 702 636 703 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); 637 704 mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0); … … 647 714 by = byi + byj; 648 715 649 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; 716 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 717 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 718 719 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; z = object[0].z; 650 720 bar = object[0].ebar; sz = object[0].size*graph[0].axis[0].dfx*0.03; 651 721 … … 655 725 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 656 726 727 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 728 657 729 for (i = 0; i < object[0].Npts; i++) { 658 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) continue; 730 // for open circles, only go to the outer radius 731 D = 0; 732 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 733 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 734 if (object[0].ptype == 5) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 735 if (object[0].ptype == 15) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 736 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) goto skip_dyp; 737 if (D > fabs(dyp[i]*myj)) goto skip_dyp; 659 738 sx0 = x[i]*mxi + y[i]*mxj + bx; 660 sy0 = x[i]*myi + y[i]*myj + by ;661 sx1 = x[i]*mxi + (y[i] + dyp[i])*mxj + bx;662 sy1 = x[i]*myi + (y[i] + dyp[i])*myj + by;739 sy0 = x[i]*myi + y[i]*myj + by - D; 740 sx1 = sx0 + dyp[i]*mxj; 741 sy1 = sy0 + dyp[i]*myj + D; 663 742 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 664 743 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 667 746 { 668 747 ClipLinePS (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1, f); 669 // DrawLine (sx0, sy0, sx1, sy1);670 748 if (bar) { 671 749 sx10 = sx1 - sz; 672 750 sx11 = sx1 + sz; 673 751 ClipLinePS (sx10, sy1, sx11, sy1, X0, Y0, X1, Y1, f); 674 // DrawLine (sx10, sy1, sx11, sy1);675 }676 }752 } 753 } 754 skip_dyp: 677 755 if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue; 756 if (object[0].ptype == 5) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 757 if (object[0].ptype == 15) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 758 if (D > fabs(dym[i]*myj)) continue; 678 759 sx0 = x[i]*mxi + y[i]*mxj + bx; 679 sy0 = x[i]*myi + y[i]*myj + by ;680 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx;681 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by;760 sy0 = x[i]*myi + y[i]*myj + by + D; 761 sx1 = sx0 - dym[i]*mxj; 762 sy1 = sy0 - dym[i]*myj - D; 682 763 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 683 764 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 686 767 { 687 768 ClipLinePS (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1, f); 688 // DrawLine (sx0, sy0, sx1, sy1);689 769 if (bar) { 690 770 sx10 = sx1 - sz; 691 771 sx11 = sx1 + sz; 692 772 ClipLinePS (sx10, sy1, sx11, sy1, X0, Y0, X1, Y1, f); 693 // DrawLine (sx10, sy1, sx11, sy1);694 773 } 695 774 } -
trunk/Ohana/src/kapa2/src/bDrawObjects.c
r37047 r38062 406 406 } 407 407 } 408 if (object[0].ptype == 14) { /* filled triangle */ 409 for (i = 0; i < object[0].Npts; i++) { 410 if (!(finite(x[i]) && finite(y[i]))) continue; 411 sx = x[i]*mxi + y[i]*mxj + bx; 412 sy = x[i]*myi + y[i]*myj + by; 413 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 414 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 415 { 416 if (scaleColor) { 417 if (!finite(z[i])) continue; 418 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 419 buffer->bColor_R = pixel1[pixel]; 420 buffer->bColor_G = pixel2[pixel]; 421 buffer->bColor_B = pixel3[pixel]; 422 } 423 D = scaleSize ? dz*z[i] : ds; 424 // FillTriangle (buffer, sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 425 FillTriangle (buffer, sx, sy - 0.58*D, D, +1.73*D); 426 // out-of-range points skipped by bDrawPoint 427 } 428 } 429 } 408 430 if (object[0].ptype == 5) { /* open triangle */ 409 431 for (i = 0; i < object[0].Npts; i++) { … … 423 445 D = scaleSize ? dz*z[i] : ds; 424 446 OpenTriangle (buffer, sx - D, sy + 0.58*D, sx + D, sy + 0.58*D, sx, sy - 1.15*D); 447 // out-of-range points skipped by bDrawPoint 448 } 449 } 450 } 451 if (object[0].ptype == 15) { /* open triangle */ 452 for (i = 0; i < object[0].Npts; i++) { 453 if (!(finite(x[i]) && finite(y[i]))) continue; 454 sx = x[i]*mxi + y[i]*mxj + bx; 455 sy = x[i]*myi + y[i]*myj + by; 456 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 457 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 458 { 459 if (scaleColor) { 460 if (!finite(z[i])) continue; 461 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 462 buffer->bColor_R = pixel1[pixel]; 463 buffer->bColor_G = pixel2[pixel]; 464 buffer->bColor_B = pixel3[pixel]; 465 } 466 D = scaleSize ? dz*z[i] : ds; 467 OpenTriangle (buffer, sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 425 468 // out-of-range points skipped by bDrawPoint 426 469 } … … 446 489 DrawLine (buffer, sx, sy, sx + D, sy - 0.58*D); 447 490 DrawLine (buffer, sx, sy, sx, sy + 1.15*D); 491 // out-of-range points skipped by bDrawPoint 492 } 493 } 494 } 495 if (object[0].ptype == 16) { /* Y */ 496 for (i = 0; i < object[0].Npts; i++) { 497 if (!(finite(x[i]) && finite(y[i]))) continue; 498 sx = x[i]*mxi + y[i]*mxj + bx; 499 sy = x[i]*myi + y[i]*myj + by; 500 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 501 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 502 { 503 if (scaleColor) { 504 if (!finite(z[i])) continue; 505 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 506 buffer->bColor_R = pixel1[pixel]; 507 buffer->bColor_G = pixel2[pixel]; 508 buffer->bColor_B = pixel3[pixel]; 509 } 510 D = scaleSize ? dz*z[i] : ds; 511 DrawLine (buffer, sx, sy, sx - D, sy + 0.58*D); 512 DrawLine (buffer, sx, sy, sx + D, sy + 0.58*D); 513 DrawLine (buffer, sx, sy, sx, sy - 1.15*D); 448 514 // out-of-range points skipped by bDrawPoint 449 515 } … … 590 656 void bDrawXErrors (bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object) { 591 657 592 int i, bar ;593 float *x, *y, * dxm, *dxp;658 int i, bar, dz, ds, D; 659 float *x, *y, *z, *dxm, *dxp; 594 660 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 595 661 double sx0, sy0, sx1, sy1, sz, sx10, sx11; 662 663 int scaleSize = (object[0].size < 0); 596 664 597 665 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 608 676 by = byi + byj; 609 677 610 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; 678 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 679 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 680 681 x = object[0].x; y = object[0].y; dxp = object[0].dxp; dxm = object[0].dxm; z = object[0].z; 611 682 bar = object[0].ebar; sz = object[0].size*graph[0].axis[1].dfy*0.03; 612 683 … … 616 687 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 617 688 689 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 690 618 691 for (i = 0; i < object[0].Npts; i++) { 619 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) continue; 620 sx0 = x[i]*mxi + y[i]*mxj + bx; 692 // for open circles, only go to the outer radius 693 D = 0; 694 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 695 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 696 if (object[0].ptype == 5) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 697 if (object[0].ptype == 15) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; } 698 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) goto skip_dxp; 699 if (D > fabs(dxp[i]*mxi)) goto skip_dxp; 700 sx0 = x[i]*mxi + y[i]*mxj + bx + D; 621 701 sy0 = x[i]*myi + y[i]*myj + by; 622 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx;623 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by;702 sx1 = sx0 + dxp[i]*mxi - D; 703 sy1 = sy0 + dxp[i]*myi; 624 704 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 625 705 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 628 708 { 629 709 bDrawClipLine (buffer, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); 630 // DrawLine (buffer, sx0, sy0, sx1, sy1);631 710 if (bar) { 632 711 sx10 = sy1 - sz; 633 712 sx11 = sy1 + sz; 634 713 bDrawClipLine (buffer, sx1, sx10, sx1, sx11, X0, Y0, X1, Y1); 635 // DrawLine (buffer, sx1, sx10, sx1, sx11); 636 }637 }714 } 715 } 716 skip_dxp: 638 717 if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue; 639 sx0 = x[i]*mxi + y[i]*mxj + bx; 718 if (D > fabs(dxm[i]*mxi)) continue; 719 sx0 = x[i]*mxi + y[i]*mxj + bx - D; 640 720 sy0 = x[i]*myi + y[i]*myj + by; 641 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx;642 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by;721 sx1 = sx0 - dxm[i]*mxi + D; 722 sy1 = sy0 - dxm[i]*myi; 643 723 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 644 724 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 647 727 { 648 728 bDrawClipLine (buffer, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); 649 // DrawLine (buffer, sx0, sy0, sx1, sy1);650 729 if (bar) { 651 730 sx10 = sy1 - sz; 652 731 sx11 = sy1 + sz; 653 732 bDrawClipLine (buffer, sx1, sx10, sx1, sx11, X0, Y0, X1, Y1); 654 // DrawLine (buffer, sx1, sx10, sx1, sx11);655 733 } 656 734 } … … 661 739 void bDrawYErrors (bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object) { 662 740 663 int i, bar ;664 float *x, *y, * dym, *dyp;741 int i, bar, dz, ds, D; 742 float *x, *y, *z, *dym, *dyp; 665 743 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 666 744 double sx0, sy0, sx1, sy1, sz, sx10, sx11; 667 745 746 int scaleSize = (object[0].size < 0); 747 668 748 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); 669 749 mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0); … … 679 759 by = byi + byj; 680 760 681 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; 761 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 762 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 763 764 x = object[0].x; y = object[0].y; dyp = object[0].dyp; dym = object[0].dym; z = object[0].z; 682 765 bar = object[0].ebar; sz = object[0].size*graph[0].axis[0].dfx*0.03; 683 766 … … 687 770 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 688 771 772 /// XXX NOTE : D should be modified by (mxi,myi) for tilted axes dx = D*(mxi/mx), dy = D*(myi/mx) 773 689 774 for (i = 0; i < object[0].Npts; i++) { 690 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) continue; 775 // for open circles, only go to the outer radius 776 D = 0; 777 if (object[0].ptype == 7) { D = scaleSize ? dz*z[i] : ds; } 778 if (object[0].ptype == 1) { D = scaleSize ? dz*z[i] : ds; } 779 if (object[0].ptype == 5) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 780 if (object[0].ptype == 15) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 781 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) goto skip_dyp; 782 if (D > fabs(dyp[i]*myj)) goto skip_dyp; 691 783 sx0 = x[i]*mxi + y[i]*mxj + bx; 692 sy0 = x[i]*myi + y[i]*myj + by ;693 sx1 = x[i]*mxi + (y[i] + dyp[i])*mxj + bx;694 sy1 = x[i]*myi + (y[i] + dyp[i])*myj + by;784 sy0 = x[i]*myi + y[i]*myj + by - D; 785 sx1 = sx0 + dyp[i]*mxj; 786 sy1 = sy0 + dyp[i]*myj + D; 695 787 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 696 788 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 699 791 { 700 792 bDrawClipLine (buffer, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); 701 // DrawLine (buffer, sx0, sy0, sx1, sy1);702 793 if (bar) { 703 794 sx10 = sx1 - sz; 704 795 sx11 = sx1 + sz; 705 796 bDrawClipLine (buffer, sx10, sy1, sx11, sy1, X0, Y0, X1, Y1); 706 // DrawLine (buffer, sx10, sy1, sx11, sy1); 707 }708 }797 } 798 } 799 skip_dyp: 709 800 if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue; 801 if (object[0].ptype == 5) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; } 802 if (object[0].ptype == 15) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; } 803 if (D > fabs(dym[i]*myj)) continue; 710 804 sx0 = x[i]*mxi + y[i]*mxj + bx; 711 sy0 = x[i]*myi + y[i]*myj + by ;712 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx;713 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by;805 sy0 = x[i]*myi + y[i]*myj + by + D; 806 sx1 = sx0 - dym[i]*mxj; 807 sy1 = sy0 - dym[i]*myj - D; 714 808 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 715 809 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 718 812 { 719 813 bDrawClipLine (buffer, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); 720 // DrawLine (buffer, sx0, sy0, sx1, sy1);721 814 if (bar) { 722 815 sx10 = sx1 - sz; 723 816 sx11 = sx1 + sz; 724 817 bDrawClipLine (buffer, sx10, sy1, sx11, sy1, X0, Y0, X1, Y1); 725 // DrawLine (buffer, sx10, sy1, sx11, sy1);726 818 } 727 819 }
Note:
See TracChangeset
for help on using the changeset viewer.
