@@ -512,29 +512,31 @@ protected void drawGrid(Canvas canvas) {
512512 }
513513
514514
515- double domainOrigin ;
516- if (plot .getDomainOrigin () != null ) {
517- domainOrigin = plot .getBounds ().getxRegion ().transform (
515+ Number domainOrigin = plot .getDomainOrigin ();
516+ double domainOriginPix ;
517+ if (domainOrigin != null ) {
518+ domainOriginPix = plot .getBounds ().getxRegion ().transform (
518519 plot .getDomainOrigin ().doubleValue (), gridRect .left , gridRect .right , false );
519520 } else {
520521 // if no domain origin is set, use the leftmost value visible on the grid:
521- domainOrigin = gridRect .left ;
522+ domainOriginPix = gridRect .left ;
523+ domainOrigin =plot .getBounds ().getMinX ();
522524 }
523525
524526 Step domainStep = XYStepCalculator .getStep (plot , Axis .DOMAIN , gridRect );
525527
526528 // draw domain origin:
527- if (domainOrigin >= gridRect .left
528- && domainOrigin <= gridRect .right ) {
529- drawDomainLine (canvas , (float ) domainOrigin , plot . getDomainOrigin ()
530- . doubleValue () , domainOriginLinePaint , true );
529+ if (domainOriginPix >= gridRect .left
530+ && domainOriginPix <= gridRect .right ) {
531+ drawDomainLine (canvas , (float ) domainOriginPix ,
532+ domainOrigin , domainOriginLinePaint , true );
531533 }
532534
533535 // draw lines LEFT of origin:
534- double xPix = domainOrigin - domainStep .getStepPix ();
535- for (int i = ONE ; xPix >= gridRect .left - FUDGE ; xPix = domainOrigin
536+ double xPix = domainOriginPix - domainStep .getStepPix ();
537+ for (int i = ONE ; xPix >= gridRect .left - FUDGE ; xPix = domainOriginPix
536538 - (i * domainStep .getStepPix ())) {
537- double xVal = plot . getDomainOrigin () .doubleValue () - i
539+ double xVal = domainOrigin .doubleValue () - i
538540 * domainStep .getStepVal ();
539541
540542 if (xPix <= gridRect .right ) {
@@ -546,10 +548,10 @@ protected void drawGrid(Canvas canvas) {
546548 }
547549
548550 // draw lines RIGHT of origin:
549- xPix = domainOrigin + domainStep .getStepPix ();
550- for (int i = ONE ; xPix <= gridRect .right + FUDGE ; xPix = domainOrigin
551+ xPix = domainOriginPix + domainStep .getStepPix ();
552+ for (int i = ONE ; xPix <= gridRect .right + FUDGE ; xPix = domainOriginPix
551553 + (i * domainStep .getStepPix ())) {
552- double xVal = plot . getDomainOrigin () .doubleValue () + i
554+ double xVal = domainOrigin .doubleValue () + i
553555 * domainStep .getStepVal ();
554556
555557 if (xPix >= gridRect .left ) {
@@ -560,29 +562,31 @@ protected void drawGrid(Canvas canvas) {
560562 i ++;
561563 }
562564
563- double rangeOrigin ;
564- if (plot .getRangeOrigin () != null ) {
565- rangeOrigin = plot .getBounds ().getyRegion ().transform (
566- plot .getRangeOrigin ().doubleValue (), gridRect .top , gridRect .bottom , true );
565+ Number rangeOrigin = plot .getRangeOrigin ();
566+ double rangeOriginPix ;
567+ if (rangeOrigin != null ) {
568+ rangeOriginPix = plot .getBounds ().getyRegion ().transform (
569+ rangeOrigin .doubleValue (), gridRect .top , gridRect .bottom , true );
567570 } else {
568571 // if no range origin is set, use the bottom-most value visible on the grid:
569- rangeOrigin = gridRect .bottom ;
572+ rangeOriginPix = gridRect .bottom ;
573+ rangeOrigin = plot .getBounds ().getMinY ();
570574 }
571575
572576 Step rangeStep = XYStepCalculator .getStep (plot , Axis .RANGE , gridRect );
573577
574578 // draw range origin:
575- if (rangeOrigin >= gridRect .top && rangeOrigin <= gridRect .bottom ) {
576- drawRangeLine (canvas , (float ) rangeOrigin , plot . getRangeOrigin ()
577- . doubleValue () , rangeOriginLinePaint , true );
579+ if (rangeOriginPix >= gridRect .top && rangeOriginPix <= gridRect .bottom ) {
580+ drawRangeLine (canvas , (float ) rangeOriginPix ,
581+ rangeOrigin , rangeOriginLinePaint , true );
578582 }
579583
580584 final double rangeStepPix = rangeStep .getStepPix ();
581585
582586 // draw lines ABOVE origin:
583- double yPix = rangeOrigin - rangeStep .getStepPix ();
584- for (int i = ONE ; yPix >= gridRect .top - FUDGE ; yPix = rangeOrigin - (i * rangeStepPix )) {
585- double yVal = plot . getRangeOrigin () .doubleValue () + i
587+ double yPix = rangeOriginPix - rangeStep .getStepPix ();
588+ for (int i = ONE ; yPix >= gridRect .top - FUDGE ; yPix = rangeOriginPix - (i * rangeStepPix )) {
589+ double yVal = rangeOrigin .doubleValue () + i
586590 * rangeStep .getStepVal ();
587591
588592 if (yPix <= gridRect .bottom ) {
@@ -594,9 +598,9 @@ protected void drawGrid(Canvas canvas) {
594598 }
595599
596600 // draw lines BENEATH origin:
597- yPix = rangeOrigin + rangeStep .getStepPix ();
598- for (int i = ONE ; yPix <= gridRect .bottom + FUDGE ; yPix = rangeOrigin + (i * rangeStepPix )) {
599- double yVal = plot . getRangeOrigin () .doubleValue () - i
601+ yPix = rangeOriginPix + rangeStep .getStepPix ();
602+ for (int i = ONE ; yPix <= gridRect .bottom + FUDGE ; yPix = rangeOriginPix + (i * rangeStepPix )) {
603+ double yVal = rangeOrigin .doubleValue () - i
600604 * rangeStep .getStepVal ();
601605 if (yPix >= gridRect .top ) {
602606 final boolean isRangeTick = i % getLinesPerRangeLabel () == ZERO ;
0 commit comments