Class GenDraw

java.lang.Object
  extended by GenDraw

public final class GenDraw
extends java.lang.Object

Generalized draw. Our class GenDraw is a generalization of S&W's StdDraw that supports multiple drawings. StdDraw provides a basic capability for creating drawings with your programs. It uses a simple graphics model that allows you to create drawings consisting of points, lines, and curves in a window on your computer and to save the drawings to a file.

For documentation on StdDraw, see Section 1.5 of Introduction to Programming in Java: An Interdisciplinary Approach by Sedgewick and Wayne and http://www.cs.princeton.edu/introcs/15inout.


Field Summary
static java.awt.Color BLACK
           
static java.awt.Color BLUE
           
static java.awt.Color CYAN
           
static java.awt.Color DARK_GRAY
           
static java.awt.Color GRAY
           
static java.awt.Color GREEN
           
static java.awt.Color LIGHT_GRAY
           
static java.awt.Color MAGENTA
           
static java.awt.Color ORANGE
           
static java.awt.Color PINK
           
static java.awt.Color RED
           
static java.awt.Color WHITE
           
static java.awt.Color YELLOW
           
 
Constructor Summary
GenDraw()
          Construct a GenDraw canvas.
GenDraw(java.lang.String title)
          Construct a GenDraw canvas with the specified title.
 
Method Summary
 void arc(double x, double y, double r, double angle1, double angle2)
          Draw an arc of radius r, centered on (x, y), from angle1 to angle2 (in degrees).
 void circle(double x, double y, double r)
          Draw circle of radius r, centered on (x, y); degenerate to pixel if small
 void clear()
          Clear the screen with the default color, white
 void clear(java.awt.Color color)
          Clear the screen with the given color.
 java.lang.String clipStringXaxis(java.lang.String s, double min, double max, double targetPercentage)
          Clip a string to fit within a specified percentage of the range min..max along the x-axis.
 java.lang.String clipStringYaxis(java.lang.String s, double min, double max, double targetPercentage)
          Clip a string to fit within a specified percentage of the range min..max along the y-axis.
 void filledCircle(double x, double y, double r)
          Draw filled circle of radius r, centered on (x, y); degenerate to pixel if small
 void filledPolygon(double[] x, double[] y)
          Draw a filled polygon with the given (x[i], y[i]) coordinates
 void filledSquare(double x, double y, double r)
          Draw a filled square of side length 2r, centered on (x, y); degenerate to pixel if small
 java.awt.Image getImage(java.lang.String filename)
          Drawing images.
 boolean hasNextKeyTyped()
          Has the user typed a key?
 void line(double x0, double y0, double x1, double y1)
          Draw a line from (x0, y0) to (x1, y1)
static void main(java.lang.String[] args)
           
 double mouseX()
          Where is the mouse?
 double mouseY()
          Where is the mouse?
 char nextKeyTyped()
          What is the next key that was typed by the user?
 void picture(double x, double y, java.lang.String s)
          Draw picture (gif, jpg, or png) centered on (x, y).
 void picture(double x, double y, java.lang.String s, double degrees)
          Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees
 void picture(double x, double y, java.lang.String s, double w, double h)
          Draw picture (gif, jpg, or png) centered on (x, y).
 void picture(double x, double y, java.lang.String s, double w, double h, double degrees)
          Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees, rescaled to w-by-h.
 void pixel(double x, double y)
          Draw one pixel at (x, y)
 void point(double x, double y)
          Draw a point at (x, y)
 void polygon(double[] x, double[] y)
          Draw a polygon with the given (x[i], y[i]) coordinates
 void rotText(double x, double y, double degrees, java.lang.String s)
          Write the given text string in the current font, center on (x, y) and rotate by the specified number of degrees.
 void save(java.lang.String filename)
          Save to file - suffix must be png, jpg, or gif.
 void setCanvasSize(int w, int h)
          Set the window size to w-by-h pixels
 void setFont()
          Set the font to be the default for all string writing
 void setFont(java.awt.Font f)
          Set the font as given for all string writing
 void setPenColor()
          Set the pen color to the default which is BLACK.
 void setPenColor(java.awt.Color color)
          Set the pen color to the given color.
 void setPenRadius()
          Set the pen size to the default
 void setPenRadius(double r)
          Set the pen size to the given size
 void setXscale()
          Set the X scale to be the default
 void setXscale(double min, double max)
          Set the X scale (a border is added to the values)
 void setYscale()
          Set the Y scale to be the default
 void setYscale(double min, double max)
          Set the Y scale (a border is added to the values)
 void show()
          Display on-screen; calling this method means that the screen WILL be redrawn after each line(), circle(), or square().
 void show(int t)
          Display on screen and pause for t milliseconds.
 void square(double x, double y, double r)
          Draw squared of side length 2r, centered on (x, y); degenerate to pixel if small
 void text(double x, double y, java.lang.String s)
          Write the given text string in the current font, center on (x, y).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BLACK

public static final java.awt.Color BLACK

BLUE

public static final java.awt.Color BLUE

CYAN

public static final java.awt.Color CYAN

DARK_GRAY

public static final java.awt.Color DARK_GRAY

GRAY

public static final java.awt.Color GRAY

GREEN

public static final java.awt.Color GREEN

LIGHT_GRAY

public static final java.awt.Color LIGHT_GRAY

MAGENTA

public static final java.awt.Color MAGENTA

ORANGE

public static final java.awt.Color ORANGE

PINK

public static final java.awt.Color PINK

RED

public static final java.awt.Color RED

WHITE

public static final java.awt.Color WHITE

YELLOW

public static final java.awt.Color YELLOW
Constructor Detail

GenDraw

public GenDraw(java.lang.String title)
Construct a GenDraw canvas with the specified title.

Parameters:
title - a title for the canvas.

GenDraw

public GenDraw()
Construct a GenDraw canvas.

Method Detail

setCanvasSize

public void setCanvasSize(int w,
                          int h)
Set the window size to w-by-h pixels

Parameters:
w - the width as a number of pixels
h - the height as a number of pixels
Throws:
a - RunTimeException if the width or height is 0 or negative.

setXscale

public void setXscale()
Set the X scale to be the default


setYscale

public void setYscale()
Set the Y scale to be the default


setXscale

public void setXscale(double min,
                      double max)
Set the X scale (a border is added to the values)

Parameters:
min - the minimum value of the X scale
max - the maximum value of the X scale

setYscale

public void setYscale(double min,
                      double max)
Set the Y scale (a border is added to the values)

Parameters:
min - the minimum value of the Y scale
max - the maximum value of the Y scale

clear

public void clear()
Clear the screen with the default color, white


clear

public void clear(java.awt.Color color)
Clear the screen with the given color.

Parameters:
color - the Color to make the background

setPenRadius

public void setPenRadius()
Set the pen size to the default


setPenRadius

public void setPenRadius(double r)
Set the pen size to the given size

Parameters:
r - the radius of the pen
Throws:
java.lang.RuntimeException - if r is negative

setPenColor

public void setPenColor()
Set the pen color to the default which is BLACK.


setPenColor

public void setPenColor(java.awt.Color color)
Set the pen color to the given color. The available pen colors are BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, and YELLOW.

Parameters:
color - the Color to make the pen

setFont

public void setFont()
Set the font to be the default for all string writing


setFont

public void setFont(java.awt.Font f)
Set the font as given for all string writing

Parameters:
f - the font to make text

line

public void line(double x0,
                 double y0,
                 double x1,
                 double y1)
Draw a line from (x0, y0) to (x1, y1)

Parameters:
x0 - the x-coordinate of the starting point
y0 - the y-coordinate of the starting point
x1 - the x-coordinate of the destination point
y1 - the y-coordinate of the destination point

pixel

public void pixel(double x,
                  double y)
Draw one pixel at (x, y)

Parameters:
x - the x-coordinate of the pixel
y - the y-coordinate of the pixel

point

public void point(double x,
                  double y)
Draw a point at (x, y)

Parameters:
x - the x-coordinate of the point
y - the y-coordinate of the point

circle

public void circle(double x,
                   double y,
                   double r)
Draw circle of radius r, centered on (x, y); degenerate to pixel if small

Parameters:
x - the x-coordinate of the center of the circle
y - the y-coordinate of the center of the circle
r - the radius of the circle
Throws:
java.lang.RuntimeException - if the radius of the circle is negative

filledCircle

public void filledCircle(double x,
                         double y,
                         double r)
Draw filled circle of radius r, centered on (x, y); degenerate to pixel if small

Parameters:
x - the x-coordinate of the center of the circle
y - the y-coordinate of the center of the circle
r - the radius of the circle
Throws:
java.lang.RuntimeException - if the radius of the circle is negative

arc

public void arc(double x,
                double y,
                double r,
                double angle1,
                double angle2)
Draw an arc of radius r, centered on (x, y), from angle1 to angle2 (in degrees).

Parameters:
x - the x-coordinate of the center of the circle
y - the y-coordinate of the center of the circle
r - the radius of the circle
angle1 - the starting angle. 0 would mean an arc beginning at 3 o'clock.
angle2 - the angle at the end of the arc. For example, if you want a 90 degree arc, then angle2 should be angle1 + 90.
Throws:
java.lang.RuntimeException - if the radius of the circle is negative

square

public void square(double x,
                   double y,
                   double r)
Draw squared of side length 2r, centered on (x, y); degenerate to pixel if small

Parameters:
x - the x-coordinate of the center of the square
y - the y-coordinate of the center of the square
r - radius is half the length of any side of the square
Throws:
java.lang.RuntimeException - if r is negative

filledSquare

public void filledSquare(double x,
                         double y,
                         double r)
Draw a filled square of side length 2r, centered on (x, y); degenerate to pixel if small

Parameters:
x - the x-coordinate of the center of the square
y - the y-coordinate of the center of the square
r - radius is half the length of any side of the square
Throws:
java.lang.RuntimeException - if r is negative

polygon

public void polygon(double[] x,
                    double[] y)
Draw a polygon with the given (x[i], y[i]) coordinates

Parameters:
x - an array of all the x-coordindates of the polygon
y - an array of all the y-coordindates of the polygon

filledPolygon

public void filledPolygon(double[] x,
                          double[] y)
Draw a filled polygon with the given (x[i], y[i]) coordinates

Parameters:
x - an array of all the x-coordindates of the polygon
y - an array of all the y-coordindates of the polygon

getImage

public java.awt.Image getImage(java.lang.String filename)
Drawing images.


picture

public void picture(double x,
                    double y,
                    java.lang.String s)
Draw picture (gif, jpg, or png) centered on (x, y).

Parameters:
x - the center x-coordinate of the image
y - the center y-coordinate of the image
s - the name of the image/picture, e.g., "ball.gif"
Throws:
java.lang.RuntimeException - if the image's width or height are negative

picture

public void picture(double x,
                    double y,
                    java.lang.String s,
                    double degrees)
Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees

Parameters:
x - the center x-coordinate of the image
y - the center y-coordinate of the image
s - the name of the image/picture, e.g., "ball.gif"
degrees - is the number of degrees to rotate counterclockwise
Throws:
java.lang.RuntimeException - if the image's width or height are negative

picture

public void picture(double x,
                    double y,
                    java.lang.String s,
                    double w,
                    double h)
Draw picture (gif, jpg, or png) centered on (x, y). Rescaled to w-by-h.

Parameters:
x - the center x coordinate of the image
y - the center y coordinate of the image
s - the name of the image/picture, e.g., "ball.gif"
w - the width of the image
h - the height of the image

picture

public void picture(double x,
                    double y,
                    java.lang.String s,
                    double w,
                    double h,
                    double degrees)
Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees, rescaled to w-by-h.

Parameters:
x - the center x-coordinate of the image
y - the center y-coordinate of the image
s - the name of the image/picture, e.g., "ball.gif"
w - the width of the image
h - the height of the image
degrees - is the number of degrees to rotate counterclockwise
Throws:
java.lang.RuntimeException - if the image's width or height are negative

text

public void text(double x,
                 double y,
                 java.lang.String s)
Write the given text string in the current font, center on (x, y).

Parameters:
x - the center x coordinate of the text
y - the center y coordinate of the text
s - the text

clipStringXaxis

public java.lang.String clipStringXaxis(java.lang.String s,
                                        double min,
                                        double max,
                                        double targetPercentage)
Clip a string to fit within a specified percentage of the range min..max along the x-axis.

The results from clipStringXaxis and clipStringYaxis may differ because the scaling of the x-axis from user space to screen space may not be the same as the scaling for the y-axis.

Parameters:
s - the text
min - lower end of the bounding range
max - upper end of the bounding range
targetPercentage - the target for the percentage of the range that can be used by the string
Returns:
the clipped string.

clipStringYaxis

public java.lang.String clipStringYaxis(java.lang.String s,
                                        double min,
                                        double max,
                                        double targetPercentage)
Clip a string to fit within a specified percentage of the range min..max along the y-axis.

The results from clipStringXaxis and clipStringYaxis may differ because the scaling of the x-axis from user space to screen space may not be the same as the scaling for the y-axis.

Parameters:
s - the text
min - lower end of the bounding range
max - upper end of the bounding range
targetPercentage - the target for the percentage of the range that can be used by the string
Returns:
the clipped string.

rotText

public void rotText(double x,
                    double y,
                    double degrees,
                    java.lang.String s)
Write the given text string in the current font, center on (x, y) and rotate by the specified number of degrees.

Parameters:
x - the center x coordinate of the text
y - the center y coordinate of the text
degrees - the number of degrees to rotate the text
s - the text

show

public void show(int t)
Display on screen and pause for t milliseconds. Calling this method means that the screen will NOT be redrawn after each line(), circle(), or square(). This is useful when there are many methods to call to draw a complete picture.

Parameters:
t - number of milliseconds

show

public void show()
Display on-screen; calling this method means that the screen WILL be redrawn after each line(), circle(), or square(). This is the default.


save

public void save(java.lang.String filename)
Save to file - suffix must be png, jpg, or gif.

Parameters:
filename - the name of the file with one of the required suffixes

mouseX

public double mouseX()
Where is the mouse?

Returns:
the value of the x-coordinate of the mouse

mouseY

public double mouseY()
Where is the mouse?

Returns:
the value of the y-coordinate of the mouse

hasNextKeyTyped

public boolean hasNextKeyTyped()
Has the user typed a key?

Returns:
true if the user has typed a key, false otherwise

nextKeyTyped

public char nextKeyTyped()
What is the next key that was typed by the user?

Returns:
the next key typed

main

public static void main(java.lang.String[] args)