package awb; import java.awt.*; public class DrawingPad { Graphics g; int x,y,dx,w,h; int maxh; float wr,hr; public DrawingPad(Canvas c) { Dimension d = c.size(); init(c.getGraphics(),0,0,1,d.width,d.height,d.width,d.height); c.setBackground(Color.white); } public void moveTo(int x, int y) { this.x = x; this.y = -y; } public void clear() { setColor(Color.white); g.fillRect(0,0,w,maxh); } public DrawingPad(Graphics g, int x, int y, int dx, int w, int h, int aw, int ah) { init(g,x,y,dx,w,h,aw,ah); } public void init(Graphics g, int x, int y, int dx, int w, int h, int aw, int ah) { this.g = g; this.x = x; this.y = y; this.dx = dx; this.w = w; this.h = h; this.wr = (float)w/aw; this.hr = (float)h/ah; this.maxh = h; if (this.dx>0) { this.dx = 0; } else { this.dx = -this.w; } } public void setColor(Color c) { g.setColor(c); } public void border(Color c) { g.setColor(c); g.drawRect(x,y,w,h); } public void age(float a) { g.setColor(new Color(a,(float)0.0,(float)0.0)); fillRectangle(0,0,10,50); } public void setColor(double red, double green, double blue) { g.setColor(new Color((float)red,(float)green,(float)blue)); } public void drawLine(int x1, int y1, int x2, int y2) { g.drawLine(x+Math.abs(dx+(int)(x1*wr)), y+h-(int)(y1*hr), x+Math.abs(dx+(int)(x2*wr)), y+h-(int)(y2*hr)); } public void fillOval(int x1, int y1, int w1, int h1) { if (dx==0) { g.fillOval(x+(int)(x1*wr),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } else { g.fillOval(x+(-dx-(int)(x1*wr+w1*wr)),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } } public void drawOval(int x1, int y1, int w1, int h1) { if (dx==0) { g.drawOval(x+(int)(x1*wr),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } else { g.drawOval(x+(-dx-(int)(x1*wr+w1*wr)),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } } public void fillRectangle(int x1, int y1, int w1, int h1) { if (dx==0) { g.fillRect(x+(int)(x1*wr),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } else { g.fillRect(x+(-dx-(int)(x1*wr+w1*wr)),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } } public void drawRectangle(int x1, int y1, int w1, int h1) { if (dx==0) { g.drawRect(x+(int)(x1*wr),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } else { g.drawRect(x+(-dx-(int)(x1*wr+w1*wr)),y+h-(int)(y1*hr+h1*hr),(int)(w1*wr),(int)(h1*hr)); } } public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { Polygon p = new Polygon(); p.addPoint(x+Math.abs(dx+(int)(x1*wr)), y+h-(int)(y1*hr)); p.addPoint(x+Math.abs(dx+(int)(x2*wr)), y+h-(int)(y2*hr)); p.addPoint(x+Math.abs(dx+(int)(x3*wr)), y+h-(int)(y3*hr)); g.fillPolygon(p); } public void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { Polygon p = new Polygon(); p.addPoint(x+Math.abs(dx+(int)(x1*wr)), y+h-(int)(y1*hr)); p.addPoint(x+Math.abs(dx+(int)(x2*wr)), y+h-(int)(y2*hr)); p.addPoint(x+Math.abs(dx+(int)(x3*wr)), y+h-(int)(y3*hr)); g.drawPolygon(p); } }