Warning: session_start(): open(/var/lib/php/sessions/sess_c2knpgnfab6ic5kd3881psgtai, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass ImageSurfaceScribbleTool extends ImageSurfaceMouseHandler {
settable Stroke stroke = new BasicStroke(5);
settable Color color = Color.black;
Pt lastPt;
event painted;
*(ImageSurface is) {
if (containsInstance(is.tools, ImageSurfaceSelector)) ret;
register(is);
}
public void mousePressed(MouseEvent evt) {
if (evt.getButton() != MouseEvent.BUTTON1) return;
lastPt = getPt(evt);
drawPoint(lastPt);
}
public void mouseReleased(MouseEvent e) {
mouseDragged(e);
lastPt = null;
}
public void mouseDragged(MouseEvent e) {
if (lastPt == null) ret;
Pt p = getPt(e);
if (!eq(p, lastPt))
drawLine(lastPt, p);
lastPt = p;
is.repaint(); // That's gonna be slow...
}
void drawPoint(Pt p) {
drawLine(p, p);
}
void drawLine(Pt a, Pt b) {
Graphics2D g = getImageSurface().getImage().createGraphics();
g.setStroke(stroke);
g.setColor(color);
g.drawLine(a.x, a.y, b.x, b.y);
g.dispose();
painted();
}
}