Interface WPaintDevice

All Known Subinterfaces:
WVectorImage
All Known Implementing Classes:
WCanvasPaintDevice, WMeasurePaintDevice, WPdfImage, WRasterPaintDevice, WSvgImage, WVmlImage

public interface WPaintDevice
The abstract base class for a paint device.

A WPaintDevice is a device on which may be painted using a WPainter. You should never paint directly on a paint device.

The device defines the size of the drawing area, using getWidth() and getHeight(). These dimensions must be defined in pixel units. In the future, additional information will be included to convert these pixel units to lengths (using DPI information).

You should reimplement this class if you wish to extend the JWt paint system to paint on other devices than the ones provided by the library.

Note: this interface is subject to changes to increase optimization possibilities for the painting using different devices.

See Also:
WPainter
  • Method Details

    • getFeatures

      java.util.EnumSet<PaintDeviceFeatureFlag> getFeatures()
      Returns device features.
    • getWidth

      WLength getWidth()
      Returns the device width.

      The device width, in pixels, establishes the width of the device coordinate system.

    • getHeight

      WLength getHeight()
      Returns the device height.

      The device height, in pixels, establishes the height of the device coordinate system.

    • setChanged

      void setChanged​(java.util.EnumSet<PainterChangeFlag> flags)
      Indicates changes in painter state.

      The flags argument is the logical OR of one or more change flags.

    • setChanged

      void setChanged​(PainterChangeFlag flag, PainterChangeFlag... flags)
      Indicates changes in painter state.

      Calls setChanged(EnumSet.of(flag, flags))

    • drawArc

      void drawArc​(WRectF rect, double startAngle, double spanAngle)
      Draws an arc.

      The arc describes the segment of an ellipse enclosed by the rect. The segment starts at startAngle, and spans an angle given by spanAngle. These angles have as unit degree, and are measured counter-clockwise starting from the 3 o'clock position.

      The arc must be stroked, filled, and transformed using the current painter settings.

    • drawImage

      void drawImage​(WRectF rect, java.lang.String imageUri, int imgWidth, int imgHeight, WRectF sourceRect)
      Draws an image.

      Draws sourceRect from the image with URL imageUri and original dimensions imgWidth and imgHeight to the location, into the rectangle defined by rect.

      The image is transformed using the current painter settings.

    • drawLine

      void drawLine​(double x1, double y1, double x2, double y2)
      Draws a line.

      The line must be stroked and transformed using the current painter settings.

    • drawPath

      void drawPath​(WPainterPath path)
      Draws a path.

      The path must be stroked, filled, and transformed using the current painter settings.

    • drawRect

      void drawRect​(WRectF rectangle)
      Draws a rectangle.

      The rect must be stroked, filled, and transformed using the current painter settings.

    • drawText

      void drawText​(WRectF rect, java.util.EnumSet<AlignmentFlag> alignmentFlags, TextFlag textFlag, java.lang.CharSequence text, WPointF clipPoint)
      Draws text.

      The text must be rendered, stroked and transformed using the current painter settings.

      If clipPoint is not null, a check is performed whether the point is inside of the current clip area. If not, the text is not drawn.

    • measureText

      WTextItem measureText​(java.lang.CharSequence text, double maxWidth, boolean wordWrap)
      Measures rendered text size.

      Returns the bounding rect of the given text when rendered using the current font.

      If maxWidth != -1, then the text is truncated to fit in the width.

      If wordWrap = true then text is truncated only at word boundaries. Note that in this case the whitespace at the truncated position is included in the text but not accounted for by the returned width (since usually you will not render the whitespace at the end of a line).

      Throws a std::logic_error if the underlying device does not provide font metrics.

    • measureText

      WTextItem measureText​(java.lang.CharSequence text)
      Measures rendered text size.

      Returns measureText(text, - 1, false)

    • measureText

      WTextItem measureText​(java.lang.CharSequence text, double maxWidth)
      Measures rendered text size.

      Returns measureText(text, maxWidth, false)

    • getFontMetrics

      WFontMetrics getFontMetrics()
      Returns font metrics.

      This returns font metrics for the current font.

      Throws a std::logic_error if the underlying device does not provide font metrics.

    • init

      void init()
      Initializes the device for painting.

      This method is called when a WPainter starts painting.

      See Also:
      WPainter.begin(WPaintDevice device), getPainter()
    • done

      void done()
      Finishes painting on the device.

      This method is called when a WPainter stopped painting.

      See Also:
      WPainter.end()
    • isPaintActive

      boolean isPaintActive()
      Returns whether painting is active.

      See Also:
      init(), getPainter()
    • getPainter

      WPainter getPainter()
      Returns the painter that is currently painting on the device.

      See Also:
      init()
    • setPainter

      void setPainter​(WPainter painter)
      Sets the painter.