Class PNGCanvas
- java.lang.Object
-
- net.codecrete.qrbill.canvas.AbstractCanvas
-
- net.codecrete.qrbill.canvas.PNGCanvas
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Canvas
public class PNGCanvas extends AbstractCanvas
Canvas for generating PNG files.PNGs are not an optimal file format for QR bills. Vector formats such a SVG or PDF are of better quality and use far less processing power to generate.
-
-
Field Summary
-
Fields inherited from class net.codecrete.qrbill.canvas.AbstractCanvas
MM_TO_PT
-
-
Constructor Summary
Constructors Constructor Description PNGCanvas(int resolution)Creates a new instance
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddRectangle(double x, double y, double width, double height)Adds a rectangle to the pathvoidclose()voidcloseSubpath()Closes the current subpathvoidcubicCurveTo(double x1, double y1, double x2, double y2, double x, double y)Adds a cubic Beziér curve to the open path going from the previous point to the speicifed position.voidfillPath(int color)Fills the current path and ends itbyte[]getResult()Returns the generated graphics as a byte arrayvoidlineTo(double x, double y)Adds a line segment to the open path from the previous point to the speicifed position.voidmoveTo(double x, double y)Moves the current point of the open path to the specified position.voidputText(java.lang.String text, double x, double y, int fontSize, boolean isBold)Adds text to the graphics.voidsetTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY)Sets a translation, rotation and scaling for the subsequent operationsvoidsetupPage(double width, double height, java.lang.String fontFamilyList)Sets up the pagevoidstartPath()Starts a path that can be filled or strokedvoidstrokePath(double strokeWidth, int color)Strokes the current path and ends it-
Methods inherited from class net.codecrete.qrbill.canvas.AbstractCanvas
getAscender, getDescender, getLineHeight, getTextWidth, putTextLines, setupFontMetrics, splitLines
-
-
-
-
Method Detail
-
setupPage
public void setupPage(double width, double height, java.lang.String fontFamilyList)Description copied from interface:CanvasSets up the pageThe page (and graphics context) is not valid until this method has been called.
The font family can be specified as a comma separated list, e.g. "Helvetica,Arial,sans". The first family will be used to calculate text widths. For formats that support it (e.g. SVG), the entire list will be used in the generated graphics file. Other format will just use the first one.
- Parameters:
width- width of page (in mm)height- height of page (in mm)fontFamilyList- font family to use
-
setTransformation
public void setTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY)Description copied from interface:CanvasSets a translation, rotation and scaling for the subsequent operationsBefore a new translation is applied, the coordinate system is reset to it's original state after page setup (see
setupPage).The transformations are applied in the order translation, rotation, scaling.
- Parameters:
translateX- translation in x direction (in mm)translateY- translation in y direction (in mm)rotate- rotation angle, in radiansscaleX- scale factor in x direction (1.0 = no scaling)scaleY- scale factor in y direction (1.0 = no scaling)
-
putText
public void putText(java.lang.String text, double x, double y, int fontSize, boolean isBold)Description copied from interface:CanvasAdds text to the graphics.The text position refers to the left most point on the text's baseline.
- Parameters:
text- the textx- x position of the text's start (in mm)y- y position of the text's top (in mm)fontSize- the font size (in pt)isBold- indicates if the text is in bold or regular weight
-
startPath
public void startPath()
Description copied from interface:CanvasStarts a path that can be filled or stroked
-
moveTo
public void moveTo(double x, double y)Description copied from interface:CanvasMoves the current point of the open path to the specified position.- Parameters:
x- x-coordinate of positiony- y-coordinate of position
-
lineTo
public void lineTo(double x, double y)Description copied from interface:CanvasAdds a line segment to the open path from the previous point to the speicifed position.- Parameters:
x- x-coordinate of positiony- y-coordinate of position
-
cubicCurveTo
public void cubicCurveTo(double x1, double y1, double x2, double y2, double x, double y)Description copied from interface:CanvasAdds a cubic Beziér curve to the open path going from the previous point to the speicifed position. Two control points control the curve- Parameters:
x1- x-coordinate of first control pointy1- y-coordinate of first control pointx2- x-coordinate of second control pointy2- y-coordinate of second control pointx- x-coordinate of positiony- y-coordinate of position
-
addRectangle
public void addRectangle(double x, double y, double width, double height)Description copied from interface:CanvasAdds a rectangle to the path- Parameters:
x- the rectangle's left position (in mm)y- the rectangle's top position (in mm)width- the rectangle's width (in mm)height- rectangle's height (in mm)
-
closeSubpath
public void closeSubpath()
Description copied from interface:CanvasCloses the current subpath
-
fillPath
public void fillPath(int color)
Description copied from interface:CanvasFills the current path and ends it- Parameters:
color- the fill color (expressed similar to HTML, e.g. 0xffffff for white)
-
strokePath
public void strokePath(double strokeWidth, int color)Description copied from interface:CanvasStrokes the current path and ends it- Parameters:
strokeWidth- the stroke width (in pt)color- the stroke color (expressed similar to HTML, e.g. 0xffffff for white)
-
getResult
public byte[] getResult() throws java.io.IOExceptionDescription copied from interface:CanvasReturns the generated graphics as a byte arrayAfter this method was called, the page is no longer valid.
- Returns:
- the byte array
- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
close
public void close()
-
-