Class WCanvasPaintDevice
- java.lang.Object
-
- eu.webtoolkit.jwt.WObject
-
- eu.webtoolkit.jwt.WCanvasPaintDevice
-
- All Implemented Interfaces:
WPaintDevice
public class WCanvasPaintDevice extends WObject implements WPaintDevice
A paint device for rendering using the HTML 5 <canvas> element.The WCanvasPaintDevice is used by
WPaintedWidgetto render to the browser using the HTML 5 <canvas> element. You usually will not use the device directly, but rather rely onWPaintedWidgetto 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
WSvgImageorWVmlImagepaint devices which do support text natively.Note: To paint an image (
WPainter#drawImage()), this requires its uri.- See Also:
WAbstractDataInfo
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class eu.webtoolkit.jwt.WObject
WObject.FormData
-
-
Constructor Summary
Constructors Constructor Description WCanvasPaintDevice(WLength width, WLength height)Create a canvas paint device.WCanvasPaintDevice(WLength width, WLength height, boolean paintUpdate)Create a canvas paint device.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddone()Finishes painting on the device.voiddrawArc(WRectF rect, double startAngle, double spanAngle)Draws an arc.voiddrawImage(WRectF rect, WAbstractDataInfo info, int imgWidth, int imgHeight, WRectF sourceRect)Draws an image.voiddrawImage(WRectF rect, java.lang.String imageUri, int imgWidth, int imgHeight, WRectF sourceRect)Draws an image.voiddrawLine(double x1, double y1, double x2, double y2)Draws a line.voiddrawPath(WPainterPath path)Draws a path.voiddrawRect(WRectF rectangle)Draws a rectangle.voiddrawStencilAlongPath(WPainterPath stencil, WPainterPath path, boolean softClipping)voiddrawText(WRectF rect, java.util.EnumSet<AlignmentFlag> flags, TextFlag textFlag, java.lang.CharSequence text, WPointF clipPoint)Draws text.voiddrawTextOnPath(WRectF rect, java.util.EnumSet<AlignmentFlag> alignmentFlags, java.util.List<WString> text, WTransform transform, WPainterPath path, double angle, double lineHeight, boolean softClipping)java.util.EnumSet<PaintDeviceFeatureFlag>getFeatures()Returns device features.WFontMetricsgetFontMetrics()Returns font metrics.WLengthgetHeight()Returns the device height.WPaintergetPainter()Returns the painter that is currently painting on the device.WLengthgetWidth()Returns the device width.voidinit()Initializes the device for painting.booleanisPaintActive()Returns whether painting is active.WTextItemmeasureText(java.lang.CharSequence text, double maxWidth, boolean wordWrap)Measures rendered text size.voidrender(java.lang.String paintedWidgetJsRef, java.lang.String canvasId, DomElement text, java.lang.String updateAreasJs)voidrenderPaintCommands(java.io.StringWriter js_target, java.lang.String canvasElement)voidsetChanged(java.util.EnumSet<PainterChangeFlag> flags)Indicates changes in painter state.voidsetPainter(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
-
-
-
-
Method Detail
-
getFeatures
public java.util.EnumSet<PaintDeviceFeatureFlag> getFeatures()
Description copied from interface:WPaintDeviceReturns device features.- Specified by:
getFeaturesin interfaceWPaintDevice
-
setChanged
public void setChanged(java.util.EnumSet<PainterChangeFlag> flags)
Description copied from interface:WPaintDeviceIndicates changes in painter state.The
flagsargument is the logical OR of one or more change flags.- Specified by:
setChangedin interfaceWPaintDevice
-
drawArc
public void drawArc(WRectF rect, double startAngle, double spanAngle)
Description copied from interface:WPaintDeviceDraws 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:
drawArcin interfaceWPaintDevice
-
drawImage
public void drawImage(WRectF rect, java.lang.String imageUri, int imgWidth, int imgHeight, WRectF sourceRect)
Description copied from interface:WPaintDeviceDraws an image.Draws sourceRect from the image with URL
imageUriand original dimensions imgWidth andimgHeightto the location, into the rectangle defined byrect.The image is transformed using the current painter settings.
- Specified by:
drawImagein interfaceWPaintDevice
-
drawImage
public void drawImage(WRectF rect, WAbstractDataInfo info, int imgWidth, int imgHeight, WRectF sourceRect)
Description copied from interface:WPaintDeviceDraws an image.Draws
sourceRectfrom the image with the information contained inimageInfoand original dimensionsimgWidthandimgHeightto the location, into the rectangle defined byrect.The image is transformed using the current painter settings.
- Specified by:
drawImagein interfaceWPaintDevice
-
drawLine
public void drawLine(double x1, double y1, double x2, double y2)Description copied from interface:WPaintDeviceDraws a line.The line must be stroked and transformed using the current painter settings.
- Specified by:
drawLinein interfaceWPaintDevice
-
drawPath
public void drawPath(WPainterPath path)
Description copied from interface:WPaintDeviceDraws a path.The path must be stroked, filled, and transformed using the current painter settings.
- Specified by:
drawPathin interfaceWPaintDevice
-
drawStencilAlongPath
public void drawStencilAlongPath(WPainterPath stencil, WPainterPath path, boolean softClipping)
-
drawRect
public void drawRect(WRectF rectangle)
Description copied from interface:WPaintDeviceDraws a rectangle.The rect must be stroked, filled, and transformed using the current painter settings.
- Specified by:
drawRectin interfaceWPaintDevice
-
drawText
public void drawText(WRectF rect, java.util.EnumSet<AlignmentFlag> flags, TextFlag textFlag, java.lang.CharSequence text, WPointF clipPoint)
Description copied from interface:WPaintDeviceDraws 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:
drawTextin interfaceWPaintDevice
-
drawTextOnPath
public void drawTextOnPath(WRectF rect, java.util.EnumSet<AlignmentFlag> alignmentFlags, java.util.List<WString> text, WTransform transform, WPainterPath path, double angle, double lineHeight, boolean softClipping)
-
measureText
public WTextItem measureText(java.lang.CharSequence text, double maxWidth, boolean wordWrap)
Description copied from interface:WPaintDeviceMeasures 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=truethen 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:
measureTextin interfaceWPaintDevice
-
getFontMetrics
public WFontMetrics getFontMetrics()
Description copied from interface:WPaintDeviceReturns 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:
getFontMetricsin interfaceWPaintDevice
-
init
public void init()
Description copied from interface:WPaintDeviceInitializes the device for painting.This method is called when a
WPainterstarts painting.- Specified by:
initin interfaceWPaintDevice- See Also:
WPainter.begin(WPaintDevice device),WPaintDevice.getPainter()
-
done
public void done()
Description copied from interface:WPaintDeviceFinishes painting on the device.This method is called when a
WPainterstopped painting.- Specified by:
donein interfaceWPaintDevice- See Also:
WPainter.end()
-
isPaintActive
public boolean isPaintActive()
Description copied from interface:WPaintDeviceReturns whether painting is active.- Specified by:
isPaintActivein interfaceWPaintDevice- See Also:
WPaintDevice.init(),WPaintDevice.getPainter()
-
render
public void render(java.lang.String paintedWidgetJsRef, java.lang.String canvasId, DomElement text, java.lang.String updateAreasJs)
-
renderPaintCommands
public void renderPaintCommands(java.io.StringWriter js_target, java.lang.String canvasElement)
-
getWidth
public WLength getWidth()
Description copied from interface:WPaintDeviceReturns the device width.The device width, in pixels, establishes the width of the device coordinate system.
- Specified by:
getWidthin interfaceWPaintDevice
-
getHeight
public WLength getHeight()
Description copied from interface:WPaintDeviceReturns the device height.The device height, in pixels, establishes the height of the device coordinate system.
- Specified by:
getHeightin interfaceWPaintDevice
-
getPainter
public WPainter getPainter()
Description copied from interface:WPaintDeviceReturns the painter that is currently painting on the device.- Specified by:
getPainterin interfaceWPaintDevice- See Also:
WPaintDevice.init()
-
setPainter
public void setPainter(WPainter painter)
Description copied from interface:WPaintDeviceSets the painter.- Specified by:
setPainterin interfaceWPaintDevice
-
-