From 9cf4795dff64133a04effe6fac1001c105672534 Mon Sep 17 00:00:00 2001 From: ubi Date: Sun, 18 Mar 2018 10:00:31 +0100 Subject: [PATCH] - fixed TickMark positioning/spacing - implemented TickMark.setDistance(int) method to allow better positioning in respect to the slider - cleaned up after myself --- src/controlP5/ControlFont.java | 1 - src/controlP5/Slider.java | 44 ++++++++++++++++++++++++++++++---- src/controlP5/TickMark.java | 2 ++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/controlP5/ControlFont.java b/src/controlP5/ControlFont.java index 53d553b..e913a1f 100755 --- a/src/controlP5/ControlFont.java +++ b/src/controlP5/ControlFont.java @@ -236,7 +236,6 @@ public class ControlFont { theGraphics.textFont( pfont , size ); theGraphics.textAlign( theLabel.textAlign ); theGraphics.fill( theLabel.getColor( ) ); - if ( theLabel.isMultiline( ) ) { theGraphics.fill( theLabel.getColor( ) ); theGraphics.textLeading( theLabel.getLineHeight( ) ); diff --git a/src/controlP5/Slider.java b/src/controlP5/Slider.java index 4a55331..8229d77 100755 --- a/src/controlP5/Slider.java +++ b/src/controlP5/Slider.java @@ -523,6 +523,7 @@ public class Slider extends Controller< Slider > { } public void display( PGraphics theGraphics , Slider theController ) { + //theGraphics.clear(); theGraphics.fill( getColor( ).getBackground( ) ); theGraphics.noStroke( ); if ( ( getColor( ).getBackground( ) >> 24 & 0xff ) > 0 ) { @@ -552,11 +553,26 @@ public class Slider extends Controller< Slider > { theGraphics.pushStyle( ); theGraphics.translate( -4 , ( getSliderMode( ) == FIX ) ? 0 : getHandleSize( ) / 2 ); theGraphics.fill( _myColorTickMark ); - float x = ( getHeight( ) - ( ( getSliderMode( ) == FIX ) ? 0 : getHandleSize( ) ) ) / ( getTickMarks( ).size( ) - 1 ); + float x = ( (float)getHeight( ) - ( ( getSliderMode( ) == FIX ) ? 0 : getHandleSize( ) ) ) / ( getTickMarks( ).size( ) - 1 ); + int tickMarksCount = 0; + int totalTickMarks = _myTickMarks.size(); + int xOffset; for ( TickMark tm : getTickMarks( ) ) { + theGraphics.pushMatrix(); + xOffset = PApplet.round(x*tickMarksCount); + + if(tickMarksCount < totalTickMarks -1){ + theGraphics.translate( 0, xOffset ); + }else{ + theGraphics.translate( 0, xOffset-1 ); + } + tm.draw( theGraphics , getDirection( ) ); - theGraphics.translate( 0 , x ); + theGraphics.popMatrix(); + //PApplet.println(tickMarksCount + " > xOffset: " + xOffset); + tickMarksCount++; } + theGraphics.popStyle( ); theGraphics.popMatrix( ); } @@ -614,18 +630,38 @@ public class Slider extends Controller< Slider > { } if ( isShowTickMarks ) { + theGraphics.pushMatrix( ); // theGraphics.pushStyle( ); theGraphics.translate( ( getSliderMode( ) == FIX ) ? 0 : getHandleSize( ) / 2 , getHeight( ) ); theGraphics.fill( _myColorTickMark ); theGraphics.noStroke( ); - float x = ( getWidth( ) - ( ( getSliderMode( ) == FIX ) ? 0 : getHandleSize( ) ) ) / ( getTickMarks( ).size( ) - 1 ); + + float x = ( (float)getWidth() - ( ( getSliderMode() == FIX ) ? 0 : getHandleSize() ) ) / ( getTickMarks().size() - 1 ); + + int tickMarksCount = 0; + int totalTickMarks = _myTickMarks.size(); + int xOffset; + + for ( TickMark tm : getTickMarks( ) ) { + theGraphics.pushMatrix(); + xOffset = PApplet.round(x*tickMarksCount); + + if(tickMarksCount < totalTickMarks -1){ + theGraphics.translate( xOffset , 0 ); + }else{ + theGraphics.translate( xOffset-1 , 0 ); + } + tm.draw( theGraphics , getDirection( ) ); - theGraphics.translate( x , 0 ); + theGraphics.popMatrix(); + //PApplet.println(tickMarksCount + " > xOffset: " + xOffset); + tickMarksCount++; } // theGraphics.popStyle( ); theGraphics.popMatrix( ); + } } } diff --git a/src/controlP5/TickMark.java b/src/controlP5/TickMark.java index cdd7486..75bd9b8 100644 --- a/src/controlP5/TickMark.java +++ b/src/controlP5/TickMark.java @@ -63,6 +63,7 @@ public class TickMark implements CDrawable { theGraphics.translate( -_myDistance - _myLen , 0 ); theGraphics.rect( 0 , 0 , _myLen , 1 ); if ( isLabel ) { + _myLabel.draw( theGraphics , -_myLabel.getWidth( ) , 0 , _myParent ); } break; @@ -80,6 +81,7 @@ public class TickMark implements CDrawable { } public Label setLabel( String theLabeltext ) { + if ( _myLabel == null ) { _myLabel = new Label( _myParent.cp5 , theLabeltext ); isLabel = true;