Class WCanvasPaintDevice
- All Implemented Interfaces:
WPaintDevice
The WCanvasPaintDevice is used by WPaintedWidget
to render to the browser using the
HTML 5 <canvas> element. You usually will not use the device directly, but rather rely on
WPaintedWidget
to use this device when appropriate.
Note: Older browsers do not have text support in <canvas>. Text is then
rendered in an overlayed DIV and a consequence text is not subject to rotation and scaling
components of the current transformation (but does take into account translation). On most
browser you can use the WSvgImage
or WVmlImage
paint devices which do support
text natively.
-
Nested Class Summary
Nested classes/interfaces inherited from class eu.webtoolkit.jwt.WObject
WObject.FormData
-
Constructor Summary
ConstructorDescriptionWCanvasPaintDevice
(WLength width, WLength height) Create a canvas paint device.WCanvasPaintDevice
(WLength width, WLength height, boolean paintUpdate) Create a canvas paint device. -
Method Summary
Modifier and TypeMethodDescriptionvoid
done()
Finishes painting on the device.void
Draws an arc.void
Draws an image.void
drawLine
(double x1, double y1, double x2, double y2) Draws a line.void
drawPath
(WPainterPath path) Draws a path.void
Draws a rectangle.void
drawStencilAlongPath
(WPainterPath stencil, WPainterPath path, boolean softClipping) void
drawText
(WRectF rect, EnumSet<AlignmentFlag> flags, TextFlag textFlag, CharSequence text, WPointF clipPoint) Draws text.void
drawTextOnPath
(WRectF rect, EnumSet<AlignmentFlag> alignmentFlags, List<WString> text, WTransform transform, WPainterPath path, double angle, double lineHeight, boolean softClipping) Returns device features.Returns font metrics.Returns the device height.Returns the painter that is currently painting on the device.getWidth()
Returns the device width.void
init()
Initializes the device for painting.boolean
Returns whether painting is active.measureText
(CharSequence text, double maxWidth, boolean wordWrap) Measures rendered text size.void
render
(String paintedWidgetJsRef, String canvasId, DomElement text, String updateAreasJs) void
renderPaintCommands
(StringWriter js_target, String canvasElement) void
setChanged
(EnumSet<PainterChangeFlag> flags) Indicates changes in painter state.void
setPainter
(WPainter painter) Sets the painter.Methods inherited from class eu.webtoolkit.jwt.WObject
getId, getObjectName, remove, setFormData, setObjectName, tr
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface eu.webtoolkit.jwt.WPaintDevice
measureText, measureText, setChanged
-
Constructor Details
-
WCanvasPaintDevice
Create a canvas paint device. -
WCanvasPaintDevice
Create a canvas paint device.
-
-
Method Details
-
getFeatures
Description copied from interface:WPaintDevice
Returns device features.- Specified by:
getFeatures
in interfaceWPaintDevice
-
setChanged
Description copied from interface:WPaintDevice
Indicates changes in painter state.The
flags
argument is the logical OR of one or more change flags.- Specified by:
setChanged
in interfaceWPaintDevice
-
drawArc
Description copied from interface:WPaintDevice
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 byspanAngle
. 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.
- Specified by:
drawArc
in interfaceWPaintDevice
-
drawImage
Description copied from interface:WPaintDevice
Draws an image.Draws sourceRect from the image with URL
imageUri
and original dimensions imgWidth andimgHeight
to the location, into the rectangle defined byrect
.The image is transformed using the current painter settings.
- Specified by:
drawImage
in interfaceWPaintDevice
-
drawLine
public void drawLine(double x1, double y1, double x2, double y2) Description copied from interface:WPaintDevice
Draws a line.The line must be stroked and transformed using the current painter settings.
- Specified by:
drawLine
in interfaceWPaintDevice
-
drawPath
Description copied from interface:WPaintDevice
Draws a path.The path must be stroked, filled, and transformed using the current painter settings.
- Specified by:
drawPath
in interfaceWPaintDevice
-
drawStencilAlongPath
-
drawRect
Description copied from interface:WPaintDevice
Draws a rectangle.The rect must be stroked, filled, and transformed using the current painter settings.
- Specified by:
drawRect
in interfaceWPaintDevice
-
drawText
public void drawText(WRectF rect, EnumSet<AlignmentFlag> flags, TextFlag textFlag, CharSequence text, WPointF clipPoint) Description copied from interface:WPaintDevice
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.
- Specified by:
drawText
in interfaceWPaintDevice
-
drawTextOnPath
public void drawTextOnPath(WRectF rect, EnumSet<AlignmentFlag> alignmentFlags, List<WString> text, WTransform transform, WPainterPath path, double angle, double lineHeight, boolean softClipping) -
measureText
Description copied from interface:WPaintDevice
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.
- Specified by:
measureText
in interfaceWPaintDevice
-
getFontMetrics
Description copied from interface:WPaintDevice
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.
- Specified by:
getFontMetrics
in interfaceWPaintDevice
-
init
public void init()Description copied from interface:WPaintDevice
Initializes the device for painting.This method is called when a
WPainter
starts painting.- Specified by:
init
in interfaceWPaintDevice
- See Also:
-
done
public void done()Description copied from interface:WPaintDevice
Finishes painting on the device.This method is called when a
WPainter
stopped painting.- Specified by:
done
in interfaceWPaintDevice
- See Also:
-
isPaintActive
public boolean isPaintActive()Description copied from interface:WPaintDevice
Returns whether painting is active.- Specified by:
isPaintActive
in interfaceWPaintDevice
- See Also:
-
render
public void render(String paintedWidgetJsRef, String canvasId, DomElement text, String updateAreasJs) -
renderPaintCommands
-
getWidth
Description copied from interface:WPaintDevice
Returns the device width.The device width, in pixels, establishes the width of the device coordinate system.
- Specified by:
getWidth
in interfaceWPaintDevice
-
getHeight
Description copied from interface:WPaintDevice
Returns the device height.The device height, in pixels, establishes the height of the device coordinate system.
- Specified by:
getHeight
in interfaceWPaintDevice
-
getPainter
Description copied from interface:WPaintDevice
Returns the painter that is currently painting on the device.- Specified by:
getPainter
in interfaceWPaintDevice
- See Also:
-
setPainter
Description copied from interface:WPaintDevice
Sets the painter.- Specified by:
setPainter
in interfaceWPaintDevice
-