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

📄 swtutils.java

📁 JFreeChart它主要是用来制作各种各样的图表
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                color.getBlue());    }    /**     * Creates a swt color instance to match the rgb values     * of the specified awt paint. For now, this method test     * if the paint is a color and then return the adequate     * swt color. Otherwise plain black is assumed.     *     * @param device The swt device to draw on (display or gc device).     * @param paint The awt color to match.     * @return a swt color object.     */    public static Color toSwtColor(Device device, java.awt.Paint paint) {        java.awt.Color color;        if (paint instanceof java.awt.Color) {            color = (java.awt.Color) paint;        }        else {            try {                throw new Exception("only color is supported at present... "                        + "setting paint to uniform black color");            }            catch (Exception e) {                e.printStackTrace();                color = new java.awt.Color(0, 0, 0);            }        }        return new org.eclipse.swt.graphics.Color(device,                color.getRed(), color.getGreen(), color.getBlue());    }    /**     * Creates a swt color instance to match the rgb values     * of the specified awt color. alpha channel is not supported.     * Note that the dispose method will need to be called on the     * returned object.     *     * @param device The swt device to draw on (display or gc device).     * @param color The awt color to match.     * @return a swt color object.     */    public static Color toSwtColor(Device device, java.awt.Color color) {        return new org.eclipse.swt.graphics.Color(device,                color.getRed(), color.getGreen(), color.getBlue());    }    /**     * Transform an awt Rectangle2d instance into a swt one.     * The coordinates are rounded to integer for the swt object.     * @param rect2d The awt rectangle to map.     * @return an swt <code>Rectangle</code> object.     */    public static Rectangle toSwtRectangle(Rectangle2D rect2d) {        return new Rectangle(                (int) Math.round(rect2d.getMinX()),                (int) Math.round(rect2d.getMinY()),                (int) Math.round(rect2d.getWidth()),                (int) Math.round(rect2d.getHeight()));    }    /**     * Transform a swt Rectangle instance into an awt one.     * @param rect the swt <code>Rectangle</code>     * @return a Rectangle2D.Double instance with     * the eappropriate location and size.     */    public static Rectangle2D toAwtRectangle(Rectangle rect) {        Rectangle2D rect2d = new Rectangle2D.Double();        rect2d.setRect(rect.x, rect.y, rect.width, rect.height);        return rect2d;    }    /**     * Returns an AWT point with the same coordinates as the specified     * SWT point.     *     * @param p  the SWT point (<code>null</code> not permitted).     *     * @return An AWT point with the same coordinates as <code>p</code>.     *     * @see #toSwtPoint(java.awt.Point)     */    public static Point2D toAwtPoint(Point p) {        return new java.awt.Point(p.x, p.y);    }    /**     * Returns an SWT point with the same coordinates as the specified     * AWT point.     *     * @param p  the AWT point (<code>null</code> not permitted).     *     * @return An SWT point with the same coordinates as <code>p</code>.     *     * @see #toAwtPoint(Point)     */    public static Point toSwtPoint(java.awt.Point p) {        return new Point(p.x, p.y);    }    /**     * Returns an SWT point with the same coordinates as the specified AWT     * point (rounded to integer values).     *     * @param p  the AWT point (<code>null</code> not permitted).     *     * @return An SWT point with the same coordinates as <code>p</code>.     *     * @see #toAwtPoint(Point)     */    public static Point toSwtPoint(java.awt.geom.Point2D p) {        return new Point((int) Math.round(p.getX()),                (int) Math.round(p.getY()));    }    /**     * Creates an AWT <code>MouseEvent</code> from a swt event.     * This method helps passing SWT mouse event to awt components.     * @param event The swt event.     * @return A AWT mouse event based on the given SWT event.     */    public static MouseEvent toAwtMouseEvent(org.eclipse.swt.events.MouseEvent event) {        int button = MouseEvent.NOBUTTON;        switch (event.button) {        case 1: button = MouseEvent.BUTTON1; break;        case 2: button = MouseEvent.BUTTON2; break;        case 3: button = MouseEvent.BUTTON3; break;        }        int modifiers = 0;        if ((event.stateMask & SWT.CTRL) != 0) {            modifiers |= InputEvent.CTRL_DOWN_MASK;        }        if ((event.stateMask & SWT.SHIFT) != 0) {            modifiers |= InputEvent.SHIFT_DOWN_MASK;        }        if ((event.stateMask & SWT.ALT) != 0) {            modifiers |= InputEvent.ALT_DOWN_MASK;        }        MouseEvent awtMouseEvent = new MouseEvent(DUMMY_PANEL, event.hashCode(),                event.time, modifiers, event.x, event.y, 1, false, button);        return awtMouseEvent;    }    /**     * Converts an AWT image to SWT.     *     * @param image  the image (<code>null</code> not permitted).     *     * @return Image data.     */    public static ImageData convertAWTImageToSWT(Image image) {        if (image == null) {            throw new IllegalArgumentException("Null 'image' argument.");        }        int w = image.getWidth(null);        int h = image.getHeight(null);        if (w == -1 || h == -1) {            return null;        }        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);        Graphics g = bi.getGraphics();        g.drawImage(image, 0, 0, null);        g.dispose();        return convertToSWT(bi);    }    /**     * Converts a buffered image to SWT <code>ImageData</code>.     *     * @param bufferedImage  the buffered image (<code>null</code> not     *         permitted).     *     * @return The image data.     */    public static ImageData convertToSWT(BufferedImage bufferedImage) {        if (bufferedImage.getColorModel() instanceof DirectColorModel) {            DirectColorModel colorModel                    = (DirectColorModel) bufferedImage.getColorModel();            PaletteData palette = new PaletteData(colorModel.getRedMask(),                    colorModel.getGreenMask(), colorModel.getBlueMask());            ImageData data = new ImageData(bufferedImage.getWidth(),                    bufferedImage.getHeight(), colorModel.getPixelSize(),                    palette);            WritableRaster raster = bufferedImage.getRaster();            int[] pixelArray = new int[3];            for (int y = 0; y < data.height; y++) {                for (int x = 0; x < data.width; x++) {                    raster.getPixel(x, y, pixelArray);                    int pixel = palette.getPixel(new RGB(pixelArray[0],                            pixelArray[1], pixelArray[2]));                    data.setPixel(x, y, pixel);                }            }            return data;        }        else if (bufferedImage.getColorModel() instanceof IndexColorModel) {            IndexColorModel colorModel = (IndexColorModel)                    bufferedImage.getColorModel();            int size = colorModel.getMapSize();            byte[] reds = new byte[size];            byte[] greens = new byte[size];            byte[] blues = new byte[size];            colorModel.getReds(reds);            colorModel.getGreens(greens);            colorModel.getBlues(blues);            RGB[] rgbs = new RGB[size];            for (int i = 0; i < rgbs.length; i++) {                rgbs[i] = new RGB(reds[i] & 0xFF, greens[i] & 0xFF,                        blues[i] & 0xFF);            }            PaletteData palette = new PaletteData(rgbs);            ImageData data = new ImageData(bufferedImage.getWidth(),                    bufferedImage.getHeight(), colorModel.getPixelSize(),                    palette);            data.transparentPixel = colorModel.getTransparentPixel();            WritableRaster raster = bufferedImage.getRaster();            int[] pixelArray = new int[1];            for (int y = 0; y < data.height; y++) {                for (int x = 0; x < data.width; x++) {                    raster.getPixel(x, y, pixelArray);                    data.setPixel(x, y, pixelArray[0]);                }            }            return data;        }        return null;    }}

⌨️ 快捷键说明

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