Class QuickDrawContext

java.lang.Object
com.twelvemonkeys.imageio.plugins.pict.QuickDrawContext

class QuickDrawContext extends Object
Emulates an Apple QuickDraw rendering context, backed by a Java Graphics2D.
Version:
$Id: QuickDrawContext.java,v 1.0 Oct 3, 2007 1:24:35 AM haraldk Exp$
  • Field Details

    • graphics

      private final Graphics2D graphics
    • background

      private Pattern background
    • penVisibility

      private int penVisibility
    • penPosition

      private Point2D penPosition
    • penPattern

      private Pattern penPattern
    • penSize

      private Dimension2D penSize
    • penMode

      private int penMode
    • bgColor

      private Color bgColor
    • fgColor

      private Color fgColor
    • textMode

      private int textMode
    • textPattern

      private Pattern textPattern
    • fillPattern

      private Pattern fillPattern
  • Constructor Details

    • QuickDrawContext

      QuickDrawContext(Graphics2D pGraphics)
  • Method Details

    • dispose

      protected void dispose()
    • closePicture

      public void closePicture()
    • setClipRegion

      public void setClipRegion(Shape pClip)
    • setTextFont

      void setTextFont(int fontFamily)
    • setTextFont

      public void setTextFont(String fontName)
    • setTextFace

      void setTextFace(int face)
    • setTextMode

      void setTextMode(int pSourceMode)
    • setTextSize

      public void setTextSize(int pSize)
    • setTextRatio

      void setTextRatio()
    • setOrigin

      public void setOrigin(Point2D pOrigin)
    • setForeground

      public void setForeground(Color pColor)
    • getForeground

      Color getForeground()
    • setBackground

      public void setBackground(Color pColor)
    • getBackground

      Color getBackground()
    • hidePen

      public void hidePen()
      HidePen Visibility (decrements visibility by one!)
    • showPen

      public void showPen()
      ShowPen Visibility (increments visibility by one!)
    • isPenVisible

      private boolean isPenVisible()
      Tells whether pen is visible.
      Returns:
      true if pen is visible
    • getPenPosition

      public Point2D getPenPosition()
      Returns the pen position. GetPen
      Returns:
      the current pen position
    • setPenSize

      public void setPenSize(Dimension2D pSize)
      Sets the pen size. PenSize
      Parameters:
      pSize - the new size
    • setPenMode

      public void setPenMode(int pPenMode)
      PenMode // Sets pen pattern mode
      Parameters:
      pPenMode - the new pen mode
    • setPenPattern

      public void setPenPattern(Pattern pPattern)
      PenPat invalid input: '&' PenPixPat // Sets pen bit pattern or pix pattern
      Parameters:
      pPattern - the new pattern
    • setPenNormal

      public final void setPenNormal()
      PenNormal // Reset (except posiotion)
    • setBackgroundPattern

      public void setBackgroundPattern(Pattern pPaint)
    • setFillPattern

      public void setFillPattern(Pattern fillPattern)
    • getCompositeFor

      private Composite getCompositeFor(int pMode)
    • setupForText

      protected void setupForText()
      Sets up context for text drawing.
    • setupForPaint

      protected void setupForPaint()
      Sets up context for line drawing/painting.
    • getStroke

      private Stroke getStroke(Dimension2D pPenSize)
    • setupForFill

      protected void setupForFill(Pattern pPattern)
      Sets up paint context for fill.
      Parameters:
      pPattern - the pattern to use for filling.
    • setupForErase

      protected void setupForErase()
    • setupForInvert

      protected void setupForInvert()
    • moveTo

      public void moveTo(double pX, double pY)
    • moveTo

      public final void moveTo(Point2D pPosition)
    • move

      public final void move(double pDeltaX, double pDeltaY)
    • lineTo

      public void lineTo(double pX, double pY)
    • lineTo

      public final void lineTo(Point2D pPosition)
    • line

      public final void line(double pDeltaX, double pDeltaY)
    • frameRect

      public void frameRect(Rectangle2D pRectangle)
      FrameRect(r) // outline rect with the size, pattern, and pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to frame
    • paintRect

      public void paintRect(Rectangle2D pRectangle)
      PaintRect(r) // fills a rectangle's interior with the pattern of the graphics pen, using the pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to paint
    • fillRect

      public void fillRect(Rectangle2D pRectangle, Pattern pPattern)
      FillRect(r, pat) // fills a rectangle's interior with any pattern you specify. The procedure transfers the pattern with the patCopy pattern mode, which directly copies your requested pattern into the shape.
      Parameters:
      pRectangle - the rectangle to fill
      pPattern - the pattern to use
    • eraseRect

      public void eraseRect(Rectangle2D pRectangle)
      EraseRect(r) // fills the rectangle's interior with the background pattern
      Parameters:
      pRectangle - the rectangle to erase
    • invertRect

      public void invertRect(Rectangle2D pRectangle)
      InvertRect(r) // reverses the color of all pixels in the rect
      Parameters:
      pRectangle - the rectangle to invert
    • toRoundRect

      private static RoundRectangle2D.Double toRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH)
    • frameRoundRect

      public void frameRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH)
      FrameRoundRect(r,int,int) // outline round rect with the size, pattern, and pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to frame
      pArcW - width of the oval defining the rounded corner.
      pArcH - height of the oval defining the rounded corner.
    • paintRoundRect

      public void paintRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH)
      PaintRooundRect(r,int,int) // fills a rectangle's interior with the pattern of the graphics pen, using the pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to paint
      pArcW - width of the oval defining the rounded corner.
      pArcH - height of the oval defining the rounded corner.
    • fillRoundRect

      public void fillRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH, Pattern pPattern)
      FillRoundRect(r,int,int,pat) // fills a rectangle's interior with any pattern you specify. The procedure transfers the pattern with the patCopy pattern mode, which directly copies your requested pattern into the shape.
      Parameters:
      pRectangle - the rectangle to fill
      pArcW - width of the oval defining the rounded corner.
      pArcH - height of the oval defining the rounded corner.
      pPattern - the pattern to use
    • eraseRoundRect

      public void eraseRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH)
      EraseRoundRect(r,int,int) // fills the rectangle's interior with the background pattern
      Parameters:
      pRectangle - the rectangle to erase
      pArcW - width of the oval defining the rounded corner.
      pArcH - height of the oval defining the rounded corner.
    • invertRoundRect

      public void invertRoundRect(Rectangle2D pRectangle, int pArcW, int pArcH)
      InvertRoundRect(r,int,int) // reverses the color of all pixels in the rect
      Parameters:
      pRectangle - the rectangle to invert
      pArcW - width of the oval defining the rounded corner.
      pArcH - height of the oval defining the rounded corner.
    • toOval

      private static Ellipse2D.Double toOval(Rectangle2D pRectangle)
    • frameOval

      public void frameOval(Rectangle2D pRectangle)
      FrameOval(r) // outline oval with the size, pattern, and pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to frame
    • paintOval

      public void paintOval(Rectangle2D pRectangle)
      PaintOval(r) // fills an oval's interior with the pattern of the graphics pen, using the pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to paint
    • fillOval

      public void fillOval(Rectangle2D pRectangle, Pattern pPattern)
      FillOval(r, pat) // fills an oval's interior with any pattern you specify. The procedure transfers the pattern with the patCopy pattern mode, which directly copies your requested pattern into the shape.
      Parameters:
      pRectangle - the rectangle to fill
      pPattern - the pattern to use
    • eraseOval

      public void eraseOval(Rectangle2D pRectangle)
      EraseOval(r) // fills the oval's interior with the background pattern
      Parameters:
      pRectangle - the rectangle to erase
    • invertOval

      public void invertOval(Rectangle2D pRectangle)
      InvertOval(r) // reverses the color of all pixels in the oval
      Parameters:
      pRectangle - the rectangle to invert
    • toArc

      private static Arc2D.Double toArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle, boolean pClosed)
      Converts a rectangle to an arc.
      Parameters:
      pRectangle - the framing rectangle
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
      pClosed - specifies if the arc should be closed
      Returns:
      the arc
    • frameArc

      public void frameArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle)
      FrameArc(r,int,int) // outline arc with the size, pattern, and pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to frame
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
    • paintArc

      public void paintArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle)
      PaintArc(r,int,int) // fills an arc's interior with the pattern of the graphics pen, using the pattern mode of the graphics pen.
      Parameters:
      pRectangle - the rectangle to paint
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
    • fillArc

      public void fillArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle, Pattern pPattern)
      FillArc(r,int,int, pat) // fills an arc's interior with any pattern you specify. The procedure transfers the pattern with the patCopy pattern mode, which directly copies your requested pattern into the shape.
      Parameters:
      pRectangle - the rectangle to fill
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
      pPattern - the pattern to use
    • eraseArc

      public void eraseArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle)
      EraseArc(r,int,int) // fills the arc's interior with the background pattern
      Parameters:
      pRectangle - the rectangle to erase
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
    • invertArc

      public void invertArc(Rectangle2D pRectangle, int pStartAngle, int pArcAngle)
      InvertArc(r,int,int) // reverses the color of all pixels in the arc
      Parameters:
      pRectangle - the rectangle to invert
      pStartAngle - start angle in degrees (starting from 12'o clock, this differs from Java)
      pArcAngle - rotation angle in degrees (starting from pStartAngle, this differs from Java arcs)
    • framePoly

      public void framePoly(Polygon pPolygon)
    • paintPoly

      public void paintPoly(Polygon pPolygon)
    • fillPoly

      public void fillPoly(Polygon pPolygon, Pattern pPattern)
    • erasePoly

      public void erasePoly(Polygon pPolygon)
    • invertPoly

      public void invertPoly(Polygon pPolygon)
    • frameRegion

      public void frameRegion(Area pArea)
    • paintRegion

      public void paintRegion(Area pArea)
    • fillRegion

      public void fillRegion(Area pArea, Pattern pPattern)
    • eraseRegion

      public void eraseRegion(Area pArea)
    • invertRegion

      public void invertRegion(Area pArea)
    • frameShape

      private void frameShape(Shape pShape)
    • paintShape

      private void paintShape(Shape pShape)
    • fillShape

      private void fillShape(Shape pShape, Pattern pPattern)
    • invertShape

      private void invertShape(Shape pShape)
    • eraseShape

      private void eraseShape(Shape pShape)
    • copyBits

      public void copyBits(BufferedImage pSrcBitmap, Rectangle pSrcRect, Rectangle pDstRect, int pMode, Shape pMaskRgn)
      CopyBits.

      Note that the destination is always this.

      Parameters:
      pSrcBitmap - the source bitmap to copy pixels from
      pSrcRect - the source rectangle
      pDstRect - the destination rectangle
      pMode - the blending mode
      pMaskRgn - the mask region
    • copyMask

      public void copyMask(BufferedImage pSrcBitmap, BufferedImage pMaskBitmap, Rectangle pSrcRect, Rectangle pMaskRect, Rectangle pDstRect, int pSrcCopy, Shape pMaskRgn)
      CopyMask
    • copyDeepMask

      public void copyDeepMask(BufferedImage pSrcBitmap, BufferedImage pMaskBitmap, Rectangle pSrcRect, Rectangle pMaskRect, Rectangle pDstRect, int pSrcCopy, Shape pMaskRgn)
      CopyDeepMask -- available to basic QuickDraw only in System 7, combines the functionality of both CopyBits and CopyMask
    • drawString

      public void drawString(String pString)
      DrawString - draws the text of a Pascal string.
      Parameters:
      pString - a Pascal string (a string of length less than or equal to 255 chars).