private void rotateNeedle(double value) {
        double startOffsetAngle = 180 - startAngle;
        double targetAngle;
        if (NeedleBehavior.STANDARD == needleBehavior) {
            if (ScaleDirection.CLOCKWISE == gauge.getScaleDirection()) {
                targetAngle = startOffsetAngle + (value - minValue) * angleStep;
                targetAngle = Helper.clamp(startOffsetAngle, startOffsetAngle + angleRange, targetAngle);
            } else {
                targetAngle = startOffsetAngle - (value - minValue) * angleStep;
                targetAngle = Helper.clamp(startOffsetAngle - angleRange, startOffsetAngle, targetAngle);
            }
        } else {
            if (value < minValue) value = maxValue - minValue + value;
            if (value > maxValue) value = value - maxValue + minValue;
            if (ScaleDirection.CLOCKWISE == gauge.getScaleDirection()) {
                targetAngle = startOffsetAngle + (value - minValue) * angleStep;
                targetAngle = Helper.clamp(startOffsetAngle, startOffsetAngle + angleRange, targetAngle);
            } else {
                targetAngle = startOffsetAngle - (value - minValue) * angleStep;
                targetAngle = Helper.clamp(startOffsetAngle - angleRange, startOffsetAngle, targetAngle);
            }
        }

        needleRotate.setAngle(targetAngle);
        valueText.setText(formatNumber(gauge.getLocale(), gauge.getFormatString(), gauge.getDecimals(), value));
        if (gauge.isLcdVisible()) {
            valueText.setTranslateX((0.691 * size - valueText.getLayoutBounds().getWidth()));
        } else {
            valueText.setTranslateX((size - valueText.getLayoutBounds().getWidth()) * 0.5);
        }

        if (gauge.isAverageVisible()) drawAverage();
    }
private void rotateNeedle ( double value ) { double startOffsetAngle = 180 - startAngle ; double targetAngle ; if ( NeedleBehavior . STANDARD == needleBehavior ) { if ( ScaleDirection . CLOCKWISE == gauge . getScaleDirection ( ) ) { targetAngle = startOffsetAngle + ( value - minValue ) * angleStep ; targetAngle = Helper . clamp ( startOffsetAngle , startOffsetAngle + angleRange , targetAngle ) ; } else { targetAngle = startOffsetAngle - ( value - minValue ) * angleStep ; targetAngle = Helper . clamp ( startOffsetAngle - angleRange , startOffsetAngle , targetAngle ) ; } } else { if ( value < minValue ) value = maxValue - minValue + value ; if ( value > maxValue ) value = value - maxValue + minValue ; if ( ScaleDirection . CLOCKWISE == gauge . getScaleDirection ( ) ) { targetAngle = startOffsetAngle + ( value - minValue ) * angleStep ; targetAngle = Helper . clamp ( startOffsetAngle , startOffsetAngle + angleRange , targetAngle ) ; } else { targetAngle = startOffsetAngle - ( value - minValue ) * angleStep ; targetAngle = Helper . clamp ( startOffsetAngle - angleRange , startOffsetAngle , targetAngle ) ; } } needleRotate . setAngle ( targetAngle ) ; valueText . setText ( formatNumber ( gauge . getLocale ( ) , gauge . getFormatString ( ) , gauge . getDecimals ( ) , value ) ) ; if ( gauge . isLcdVisible ( ) ) { valueText . setTranslateX ( ( 0.691 * size - valueText . getLayoutBounds ( ) . getWidth ( ) ) ) ; } else { valueText . setTranslateX ( ( size - valueText . getLayoutBounds ( ) . getWidth ( ) ) * 0.5 ) ; } if ( gauge . isAverageVisible ( ) ) drawAverage ( ) ; }
******************** Private Methods ***********************************