package org.lemsml.jlems.viz.plot; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import org.lemsml.jlems.core.logging.E; public class BaseCanvas extends BasePanel implements Repaintable { static final long serialVersionUID = 1001; Color bgColor; Color fgColor; BasicStroke bs1 = new BasicStroke((float)1.0); public BaseCanvas() { super(); bgColor = Color.black; fgColor = Color.white; setBackground(bgColor); setFont(new Font ("sansserif", Font.PLAIN, 12)); } public void setBg(Color c) { bgColor = c; setBackground(bgColor); } public void setCursor(String type) { if (type.equals("default") || type.equals("pointer")) { setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } else if (type.equals("cross")) { setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); } else { E.warning("unrecognized cursor " + type); } } public void setDataBackground(Color c) { bgColor = c; } public Color getDataBackground() { return bgColor; } public Color getNormalForeground() { return fgColor; } public void paintComponent(Graphics g0) { g0.setColor(bgColor); g0.fillRect(0, 0, getWidth(), getHeight()); Graphics2D g = (Graphics2D)g0; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); simpleStroke(g); paint2D(g); } final void simpleStroke(Graphics2D g) { g.setStroke(bs1); } public void paint2D(Graphics2D g) { // ignore } public void requestRepaint() { repaint(); } /* is this ever necessary now?? public int[][] getIntegerImage() { Image im = createImage(imw, imh); Graphics gg = im.getGraphics(); printAll (gg); int[] pix = new int[imw * imh]; PixelGrabber grabber = new PixelGrabber(im, 0, 0, imw,imh, pix, 0, imw); try { grabber.grabPixels(); } catch (Exception e) { S.p ("pixel grabbing interrupted"); } int[][] ret = new int[imh][imw]; for (int i = 0; i < imh; i++) { for (int j = 0; j < imw; j++) { int pi = pix[i*imw + j]; int ir = ((pi >> 16) & 0xFF); int ig = ((pi >> 8) & 0xFF); int ib = (pi & 0xFF); ret[i][j] = (ir << 16) + (ig << 8) + ib; } } return ret; } */ }