API Review RT:17407 Canvas Node
Dr. Michael Paus
mp at jugs.org
Thu Apr 19 04:03:44 PDT 2012
Yes, this interface should be a general purpose 2D drawing interface and
should contain
nothing specific to Canvas and should also not reside in the canvas
package. Canvas only
provides one possible implementation of it with possibly some additional
canvas specific features.
I even dare to propose to rewrite the charting package based on this
interface. This would increase
the longterm usefulness of the charting package and at the same time
would be a very good test-case
for the completeness and usefulness of the canvas implementation itself.
LG, Michael
Am 19.04.2012 12:08, schrieb Daniel Zwolenski:
> I like what Michael Paus is suggesting. Unless there is a need to couple this with Canvas it would be good to keep it seperate.
>
>
> On 19/04/2012, at 2:57 PM, "Dr. Michael Paus"<mp at jugs.org> wrote:
>
>> A Canvas node is very important but we should not limit the GraphicsContext to be only usable for it.
>> Instead we should make GraphicsContext an interface and Canvas should then provide a CanvasGraphicsContext
>> which implements this interface. The advantage would be that code can be written against that interface and
>> if someone else writes a renderer for other output formats you can then immediately render into that format
>> too like it is currently done for SVG, PDF and other formats by tools like Batik, iText, etc.
>>
>> LG, Michael
>>
>> Am 19.04.2012 00:36, schrieb joe andresen:
>>> Hello Everyone,
>>>
>>> We propose to add a Canvas node and GraphicsContext to a new
>>> javafx.scene.canvas package for JavaFX 2.2. The javafx.scene.canvas
>>> package provides a pair of classes for an immediate mode style API for
>>> rendering. Canvas Node works seemlessly with effects as well as
>>> Animation timers, and will be tightly bound to the new ImageOps API.
>>>
>>> This new API will allow HTML5 Canvas users to easily port their
>>> existing applications that make heavy use of the HTML5 canvas directly
>>> to JavaFX without the need to morph their application to fit the
>>> scenegraph model.
>>>
>>> You can Download and unzip the (preliminary) relevant docs here:
>>> JIRA: http://javafx-jira.kenai.com/browse/RT-17407
>>>
>>> Note that the docs are a work in progress but should be enough for API
>>> Review. (Also, Jira will be down Thursday 4/19 at 1400 PDT for a while).
>>>
>>> A list of the the methods for Canvas and GraphicsContext are listed
>>> below.
>>>
>>> Canvas:
>>>
>>> GraphicsContext getGraphicsContext2D()
>>> double getHeight()
>>> double getWidth()
>>> DoubleProperty heightProperty()
>>> void setHeight(double value)
>>> void setWidth(double value)
>>> DoubleProperty widthProperty()
>>>
>>> GraphicsContext:
>>> void appendSVGPath(java.lang.String svgpath)
>>> void applyEffect(Effect e)
>>> void arc(double centerX, double centerY, double radiusX, double
>>> radiusY, double startAngle, double length)
>>> void arcTo(double x1, double y1, double x2, double y2, double radius)
>>> void beginPath()
>>> void bezierCurveTo(double xc1, double yc1, double xc2, double yc2,
>>> double x1, double y1)
>>> void clearRect(double x, double y, double w, double h)
>>> void clip()
>>> void closePath()
>>> void drawArc(double x, double y, double w, double h, double
>>> startAngle, double arcExtent, ArcType closure)
>>> void drawImage(Image img, double x, double y)
>>> void drawImage(Image img, double x, double y, double w, double h)
>>> void drawImage(Image img, double sx, double sy, double sw, double
>>> sh, double dx, double dy, double dw, double dh)
>>> void drawLine(double x1, double y1, double x2, double y2)
>>> void drawOval(double x, double y, double w, double h)
>>> void drawPolygon(double[] xPoints, double[] yPoints, int nPoints)
>>> void drawPolyline(double[] xPoints, double[] yPoints, int nPoints)
>>> void drawRoundRect(double x, double y, double w, double h, double
>>> arcWidth, double arcHeight)
>>> void fill()
>>> void fillArc(double x, double y, double w, double h, double
>>> startAngle, double arcExtent, ArcType closure)
>>> void fillOval(double x, double y, double w, double h)
>>> void fillPolygon(double[] xPoints, double[] yPoints, int nPoints)
>>> void fillRect(double x, double y, double w, double h)
>>> void fillRoundRect(double x, double y, double w, double h, double
>>> arcWidth, double arcHeight)
>>> void fillText(java.lang.String text, double x, double y)
>>> void fillText(java.lang.String text, double x, double y, double
>>> maxWidth)
>>> Canvas getCanvas()
>>> boolean isPointInPath(double x, double y)
>>> void lineTo(double x1, double y1)
>>> double measureText(java.lang.String text)
>>> void moveTo(double x0, double y0)
>>> void putImageData(GraphicsContext.ImageData imagedata, double dx,
>>> double dy)
>>> void putImageData(GraphicsContext.ImageData imagedata, double dx,
>>> double dy, double dirtyX, double dirtyY, double dirtyWidth, double
>>> dirtyHeight)
>>> void quadraticCurveTo(double xc, double yc, double x1, double y1)
>>> void rect(double x, double y, double w, double h)
>>> void restore()
>>> void rotate(double degrees)
>>> void save()
>>> void scale(double x, double y)
>>> void setEffect(Effect e)
>>> void setFill(Paint p)
>>> void setFont(Font f)
>>> void setGlobalAlpha(double alpha)
>>> void setGlobalCompositeOperation(GraphicsContext.CompositeOperation
>>> op)
>>> void setLineCap(StrokeLineCap cap)
>>> void setLineJoin(StrokeLineJoin join)
>>> void setLineWidth(double lw)
>>> void setMiterLimit(double ml)
>>> void setStroke(Paint p)
>>> void setTextAlign(TextAlignment align)
>>> void setTextBaseline(VPos baseline)
>>> void setTransform(double mxx, double myx, double mxy, double myy,
>>> double mxt, double myt)
>>> void stroke()
>>> void strokeRect(double x, double y, double w, double h)
>>> void strokeText(java.lang.String text, double x, double y)
>>> void strokeText(java.lang.String text, double x, double y, double
>>> maxWidth)
>>> void transform(double mxx, double myx, double mxy, double myy,
>>> double mxt, double myt)
>>> void translate(double x, double y)
>>
>> --
>> --------------------------------------------------------------------------------------
>> Dr. Michael Paus, Chairman of the Java User Group Stuttgart e.V. (JUGS).
>> For more information visit www.jugs.de.
--
--------------------------------------------------------------------------------------
Dr. Michael Paus, Chairman of the Java User Group Stuttgart e.V. (JUGS).
For more information visit www.jugs.de.
More information about the openjfx-dev
mailing list