package com.project.website.canvas.client.canvastools.sketch; import com.project.shared.data.Point2D; import com.project.website.canvas.client.canvastools.base.CanvasToolFactoryBase; import com.project.website.canvas.client.canvastools.base.interfaces.CanvasToolFactory; import com.project.website.canvas.client.canvastools.sketch.SketchTool.SpiroCurveType; import com.project.website.canvas.shared.data.SketchData; import com.project.website.canvas.shared.data.SketchOptions; public class SketchToolFactory extends CanvasToolFactoryBase<SketchTool> implements CanvasToolFactory<SketchTool> { private static final boolean USE_BEZIER_SMOOTHING = true; private static final int DEFAULT_PEN_WIDTH = 5; private static final int DEFAULT_ERASER_WIDTH = 50; private static final int DEFAULT_PEN_SKIP = DEFAULT_PEN_WIDTH; public static final String UNIQUE_ID = "SketchToolFactory"; private static final int DEFAULT_WIDTH = 500; private static final int DEFAULT_HEIGHT = 500; private static final DrawingTool DEFAULT_DRAWING_TOOL = DrawingTool.PAINT; private SketchOptions defaultSketchOptions = new SketchOptions(DEFAULT_PEN_WIDTH, DEFAULT_PEN_SKIP, DEFAULT_ERASER_WIDTH, DEFAULT_DRAWING_TOOL, "black", USE_BEZIER_SMOOTHING, SpiroCurveType.Circle); @Override public SketchTool create() { SketchData data = new SketchData(UNIQUE_ID); data.sketchOptions = new SketchOptions(this.defaultSketchOptions); SketchTool tool = new SketchTool(DEFAULT_WIDTH, DEFAULT_HEIGHT); tool.setValue(data); return tool; } @Override public String getFactoryId() { return SketchToolFactory.UNIQUE_ID; } @Override public Point2D getCreationOffset() { return new Point2D(-DEFAULT_WIDTH/2, -DEFAULT_HEIGHT/2); } }