⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 surface.java

📁 一个小公司要求给写的很简单的任务管理系统。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)Surface.java	1.55 06/08/09 *  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *  * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission. *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *  * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. *//* * @(#)Surface.java	1.55 06/08/09 */package java2d;import java.awt.*;import java.awt.image.*;import java.awt.print.*;import java.awt.event.*;import javax.swing.JPanel;import javax.swing.RepaintManager;import static java.awt.RenderingHints.*;/** * Surface is the base class for the 2d rendering demos.  Demos must * implement the render() method. Subclasses for Surface are  * AnimatingSurface, ControlsSurface and AnimatingControlsSurface. */public abstract class Surface extends JPanel implements Printable {    public Object AntiAlias = VALUE_ANTIALIAS_ON;    public Object Rendering = VALUE_RENDER_SPEED;    public AlphaComposite composite;    public Paint texture;    public String perfStr;            // PerformanceMonitor    public BufferedImage bimg;    public int imageType;    public String name;             public boolean clearSurface = true;    // Demos using animated gif's that implement ImageObserver set dontThread.    public boolean dontThread;           public AnimatingSurface animating;    protected long sleepAmount = 50;    private long orig, start, frame;    private Toolkit toolkit;    private boolean perfMonitor, outputPerf;    private int biw, bih;    private boolean clearOnce;    private boolean toBeInitialized = true;    public Surface() {        setDoubleBuffered(this instanceof AnimatingSurface);        toolkit = getToolkit();        name = this.getClass().getSimpleName();        setImageType(0);        // To launch an individual demo with the performance str output  :        //    java -Djava2demo.perf= -cp Java2Demo.jar demos.Clipping.ClipAnim        try {            if (System.getProperty("java2demo.perf") != null) {                perfMonitor = outputPerf = true;            }        } catch (Exception ex) { }        if (this instanceof AnimatingSurface) {            animating = (AnimatingSurface) this;        }    }    protected Image getImage(String name) {        return DemoImages.getImage(name, this);    }    protected Font getFont(String name) {        return DemoFonts.getFont(name);    }    public int getImageType() {        return imageType;    }    public void setImageType(int imgType) {        if (imgType == 0) {            imageType = 1;        } else {            imageType = imgType;        }        bimg = null;    }    public void setAntiAlias(boolean aa) {        AntiAlias = aa ? VALUE_ANTIALIAS_ON : VALUE_ANTIALIAS_OFF;    }    public void setRendering(boolean rd) {        Rendering = rd ? VALUE_RENDER_QUALITY : VALUE_RENDER_SPEED;    }    public void setTexture(Object obj) {        if (obj instanceof GradientPaint) {            texture = new GradientPaint(0, 0, Color.white,                                        getSize().width*2, 0, Color.green);        } else {            texture = (Paint) obj;        }    }    public void setComposite(boolean cp) {        composite = cp             ? AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)             : null;    }    public void setMonitor(boolean pm) {        perfMonitor = pm;    }    public void setSleepAmount(long amount) {        sleepAmount = amount;    }    public long getSleepAmount() {        return sleepAmount;    }    public BufferedImage createBufferedImage(Graphics2D g2,                                             int w,                                             int h,                                             int imgType) {        BufferedImage bi = null;        if (imgType == 0) {            bi = (BufferedImage) g2.getDeviceConfiguration().                                    createCompatibleImage(w, h);          } else if (imgType > 0 && imgType < 14) {            bi = new BufferedImage(w, h, imgType);        } else if (imgType == 14) {            bi = createBinaryImage(w, h, 2);        } else if (imgType == 15) {            bi = createBinaryImage(w, h, 4);        } else if (imgType == 16) {            bi = createSGISurface(w, h, 32);        } else if (imgType == 17) {            bi = createSGISurface(w, h, 16);        }        return bi;    }    // Lookup tables for BYTE_BINARY 1, 2 and 4 bits.    static byte[] lut1Arr = new byte[] {0, (byte)255 };    static byte[] lut2Arr = new byte[] {0, (byte)85, (byte)170, (byte)255};    static byte[] lut4Arr = new byte[] {0, (byte)17, (byte)34, (byte)51,                                  (byte)68, (byte)85,(byte) 102, (byte)119,                                  (byte)136, (byte)153, (byte)170, (byte)187,                                  (byte)204, (byte)221, (byte)238, (byte)255};    private BufferedImage createBinaryImage(int w, int h, int pixelBits) {       int bytesPerRow = w * pixelBits / 8;       if (w * pixelBits % 8 != 0) {           bytesPerRow++;       }       byte[] imageData = new byte[h * bytesPerRow];       IndexColorModel cm = null;       switch (pixelBits) {       case 1:           cm = new IndexColorModel(pixelBits, lut1Arr.length,                                    lut1Arr, lut1Arr, lut1Arr);           break;       case 2:           cm = new IndexColorModel(pixelBits, lut2Arr.length,                                    lut2Arr, lut2Arr, lut2Arr);           break;       case 4:           cm = new IndexColorModel(pixelBits, lut4Arr.length,                                    lut4Arr, lut4Arr, lut4Arr);           break;       default:           {new Exception("Invalid # of bit per pixel").printStackTrace();}       }              DataBuffer db = new DataBufferByte(imageData, imageData.length);       WritableRaster r = Raster.createPackedRaster(db, w, h, pixelBits, null);       return new BufferedImage(cm, r, false, null);    }    private BufferedImage createSGISurface(int w, int h, int pixelBits) {       int rMask32 = 0xFF000000;       int rMask16 = 0xF800;       int gMask32 = 0x00FF0000;       int gMask16 = 0x07C0;       int bMask32 = 0x0000FF00;       int bMask16 = 0x003E;       DirectColorModel dcm = null;       DataBuffer db = null;       WritableRaster wr = null;       switch (pixelBits) {       case 16:	   short[] imageDataUShort = new short[w * h];	   dcm = new DirectColorModel(16, rMask16, gMask16, bMask16);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -