Class BusyPainter

All Implemented Interfaces:
Painter<Object>

@JavaBean public class BusyPainter extends AbstractPainter<Object>
A specific painter that paints an "infinite progress" like animation.
  • Field Details

    • frame

      private int frame
    • points

      private int points
    • baseColor

      private Color baseColor
    • highlightColor

      private Color highlightColor
    • trailLength

      private int trailLength
    • pointShape

      private Shape pointShape
    • trajectory

      private Shape trajectory
    • direction

      private BusyPainter.Direction direction
    • paintCentered

      private boolean paintCentered
  • Constructor Details

    • BusyPainter

      public BusyPainter()
      Creates new busy painter initialized to the shape of circle and bounds size 26x26 points.
    • BusyPainter

      public BusyPainter(int height)
      Creates new painter initialized to the shape of circle and bounds of square of specified height.
      Parameters:
      height - Painter height.
    • BusyPainter

      public BusyPainter(Shape point, Shape trajectory)
      Initializes painter to the specified trajectory and and point shape. Bounds are dynamically calculated to so the specified trajectory fits in.
      Parameters:
      point - Point shape.
      trajectory - Trajectory shape.
  • Method Details

    • getScaledDefaultTrajectory

      protected static Shape getScaledDefaultTrajectory(int height)
    • getScaledDefaultPoint

      protected static Shape getScaledDefaultPoint(int height)
    • init

      protected void init(Shape point, Shape trajectory, Color baseColor, Color highlightColor)
      Initializes painter to provided shapes and default colors.
      Parameters:
      point - Point shape.
      trajectory - Trajectory shape.
    • doPaint

      protected void doPaint(Graphics2D g, Object t, int width, int height)
      Description copied from class: AbstractPainter
      Subclasses must implement this method and perform custom painting operations here.
      Specified by:
      doPaint in class AbstractPainter<Object>
      Parameters:
      g - The Graphics2D object in which to paint
      t -
      width -
      height -
    • isPaintCentered

      public boolean isPaintCentered()
      Gets value of centering hint. If true, shape will be positioned in the center of painted area.
      Returns:
      Whether shape will be centered over painting area or not.
    • setPaintCentered

      public void setPaintCentered(boolean paintCentered)
      Centers shape in the area covered by the painter.
      Parameters:
      paintCentered - Centering hint.
    • drawAt

      private void drawAt(Graphics2D g, int i, Point2D.Float p, Point2D.Float c)
    • paintRotatedCenteredShapeAtPoint

      private void paintRotatedCenteredShapeAtPoint(Point2D.Float p, Point2D.Float c, Graphics2D g)
    • calcPoint

      private Point2D.Float calcPoint(float dist2go, Point2D.Float startPoint, float[] sgmt, int w, int h)
    • calcLine

      private float calcLine(float[] coords, Point2D.Float cp)
      Calculates length of the linear segment.
      Parameters:
      coords - Segment coordinates.
      cp - Start point.
      Returns:
      Length of the segment.
    • calcCube

      private float calcCube(float[] coords, Point2D.Float cp)
      Claclulates length of the cubic segment.
      Parameters:
      coords - Segment coordinates.
      cp - Start point.
      Returns:
      Length of the segment.
    • calcLengthOfQuad

      private float calcLengthOfQuad(float[] coords, Point2D.Float cp)
      Calculates length of the quadratic segment
      Parameters:
      coords - Segment coordinates
      cp - Start point.
      Returns:
      Length of the segment.
    • getXY

      private Point2D.Float getXY(float t, float x1, float y1, float x2, float y2)
      Calculates the XY point for a given t value. The general spline equation is: x = b0*x0 + b1*x1 + b2*x2 + b3*x3 y = b0*y0 + b1*y1 + b2*y2 + b3*y3 where: b0 = (1-t)^3 b1 = 3 * t * (1-t)^2 b2 = 3 * t^2 * (1-t) b3 = t^3 We know that (x0,y0) == (0,0) and (x1,y1) == (1,1) for our splines, so this simplifies to: x = b1*x1 + b2*x2 + b3 y = b1*x1 + b2*x2 + b3
      Parameters:
      t - parametric value for spline calculation
    • getXY

      public static Point2D.Float getXY(float t, Point2D.Float begin, Point2D.Float ctrl, Point2D.Float end)
      Calculates relative position of the point on the quad curve in time t<0,1>.
      Parameters:
      t - distance on the curve
      ctrl - Control point in rel coords
      end - End point in rel coords
      Returns:
      Solution of the quad equation for time T in non complex space in rel coords.
    • calcFrameColor

      private Color calcFrameColor(int i)
      Selects appropriate color for given frame based on the frame position and gradient difference.
      Parameters:
      i - Frame.
      Returns:
      Frame color.
    • getFrame

      public int getFrame()
      Gets current frame.
      Returns:
      Current frame.
    • setFrame

      public void setFrame(int frame)
      Sets current frame.
      Parameters:
      frame - Current frame.
    • getBaseColor

      public Color getBaseColor()
      Gets base color.
      Returns:
      Base color.
    • setBaseColor

      public void setBaseColor(Color baseColor)
      Sets new base color. Bound property.
      Parameters:
      baseColor - Base color.
    • getHighlightColor

      public Color getHighlightColor()
      Gets highlight color.
      Returns:
      Current highlight color.
    • setHighlightColor

      public void setHighlightColor(Color highlightColor)
      Sets new highlight color. Bound property.
      Parameters:
      highlightColor - New highlight color.
    • getPoints

      public int getPoints()
      Gets total amount of distinct points in spinner.
      Returns:
      Total amount of points.
    • setPoints

      public void setPoints(int points)
      Sets total amount of points in spinner. Bound property.
      Parameters:
      points - Total amount of points.
    • getTrailLength

      public int getTrailLength()
      Gets length of trail in number of points.
      Returns:
      Trail lenght.
    • setTrailLength

      public void setTrailLength(int trailLength)
      Sets length of the trail in points. Bound property.
      Parameters:
      trailLength - Trail length in points.
    • getPointShape

      public final Shape getPointShape()
      Gets shape of current point.
      Returns:
      Shape of the point.
    • setPointShape

      public final void setPointShape(Shape pointShape)
      Sets new point shape. Bound property.
      Parameters:
      pointShape - new Shape.
    • getTrajectory

      public final Shape getTrajectory()
      Gets current trajectory.
      Returns:
      Current spinner trajectory .
    • setTrajectory

      public final void setTrajectory(Shape trajectory)
      Sets new trajectory. Expected trajectory have to be closed shape. Bound property.
      Parameters:
      trajectory - New trajectory.
    • getDirection

      public BusyPainter.Direction getDirection()
      Gets current direction of spinning.
      Returns:
      Current spinning direction.
    • setDirection

      public void setDirection(BusyPainter.Direction dir)
      Sets new spinning direction.
      Parameters:
      dir - Spinning direction.