Package org.locationtech.udig.style.sld

Source Code of org.locationtech.udig.style.sld.StyleGlyph

/*
*    uDig - User Friendly Desktop Internet GIS client
*    http://udig.refractions.net
*    (C) 2012, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*/
package org.locationtech.udig.style.sld;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;

public class StyleGlyph {

    static final int DEFAULT_WIDTH = 16;
    static final int DEFAULT_HEIGHT = 16;
    static final int DEFAULT_DEPTH = 24;

    private static Image image( Display display, RGB[] rgb ) {
        PaletteData palette = new PaletteData(0xFF0000, 0xFF00, 0xFF);
        ImageData imageData = new ImageData(DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_DEPTH, palette);
        imageData.transparentPixel = palette.getPixel(display.getSystemColor(
                SWT.COLOR_WIDGET_BACKGROUND).getRGB());

        return new Image(display, imageData);
    }

    private static ImageDescriptor descriptor( ImageData imageData, Image image, GC gc ) {
        final ImageData finalImageData = (ImageData) image.getImageData().clone();

        image.dispose();
        gc.dispose();

        return new ImageDescriptor(){
            public ImageData getImageData() {
                return finalImageData;
            }
        };
    }

    public static ImageDescriptor point( int color, int width ) {
        Display display = PlatformUI.getWorkbench().getDisplay();
        Color fill = display.getSystemColor(color);
        Color back = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

        Image image = image(display, new RGB[]{fill.getRGB(), back.getRGB()});
        GC gc = new GC(image);

        ImageData imageData = image.getImageData();
        int w = imageData.width;
        int h = imageData.height;

        gc.setBackground(back);
        gc.fillRectangle(0, 0, w, h);

        gc.setBackground(fill);
        gc.fillOval(w / 2 - width / 2, h / 2 - width / 2, width, width);

        return descriptor(imageData, image, gc);
    }

    public static ImageDescriptor text( int color, int width ) {
        Display display = PlatformUI.getWorkbench().getDisplay();
        Color line = display.getSystemColor(color);
        Color back = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

        Image image = image(display, new RGB[]{line.getRGB(), back.getRGB()});
        GC gc = new GC(image);

        ImageData imageData = image.getImageData();
        int w = imageData.width;
        int h = imageData.height;

        gc.setBackground(back);
        gc.fillRectangle(0, 0, w, h);

        gc.setForeground(line);
        gc.setLineWidth(width);

        gc.drawLine(2, 2, 2, 4);
        gc.drawLine(2, 2, w - 2, 2);
        gc.drawLine(w - 2, 2, h - 2, 4);
        gc.drawLine(8, 2, 8, h - 2);
        gc.drawLine(4, h - 2, w - 4, h - 2);

        return descriptor(imageData, image, gc);
    }

    public static void disable( ImageDescriptor descriptor ) {
        ImageData imageData = descriptor.getImageData();
        //PaletteData paletteData = imageData.palette;
       
        for( int i = 2; i < DEFAULT_WIDTH - 2; i++ ) {
            imageData.setPixel(i, i, 0);
        }
    }

    public static ImageDescriptor line( int color, int width ) {

        Display display = PlatformUI.getWorkbench().getDisplay();
        Color line = display.getSystemColor(color);
        Color back = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

        Image image = image(display, new RGB[]{line.getRGB(), back.getRGB()});
        GC gc = new GC(image);

        ImageData imageData = image.getImageData();
        int w = imageData.width;
        int h = imageData.height;

        gc.setBackground(back);
        gc.fillRectangle(0, 0, w, h);

        gc.setBackground(line);
        gc.setForeground(line);
        gc.setLineWidth(width);
        gc.drawLine(1, h / 2, w - 1, h / 2);

        return descriptor(imageData, image, gc);
    }

    public static ImageDescriptor polygon( int lineColor, int fillColor, int width ) {
        Display display = PlatformUI.getWorkbench().getDisplay();
        Color line = display.getSystemColor(lineColor);
        Color fill = display.getSystemColor(fillColor);
        Color back = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

        Image image = image(display, new RGB[]{line.getRGB(), fill.getRGB(), back.getRGB()});
        GC gc = new GC(image);

        ImageData imageData = image.getImageData();
        int w = imageData.width;
        int h = imageData.height;

        gc.setBackground(back);
        gc.fillRectangle(0, 0, w, h);

        gc.setBackground(fill);
        gc.fillRectangle(2, 2, w - 4, h - 4);

        gc.setForeground(line);
        gc.setLineWidth(width);
        gc.drawRectangle(2, 2, w - 4, w - 4);

        return descriptor(imageData, image, gc);
    }
   
    public static ImageDescriptor raster( int lineColor, int fillColor, int width ) {
        Display display = PlatformUI.getWorkbench().getDisplay();
        Color line = display.getSystemColor(lineColor);
        Color fill = display.getSystemColor(fillColor);
        Color back = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

        Image image = image(display, new RGB[]{line.getRGB(), fill.getRGB(), back.getRGB()});
        GC gc = new GC(image);

        ImageData imageData = image.getImageData();
        int w = imageData.width;
        int h = imageData.height;

        gc.setBackground(back);
        gc.fillRectangle(0, 0, w, h);

        gc.setBackground(fill);
        gc.fillRectangle(2, 2, w - 4, h - 4);

        gc.setForeground(line);
        gc.setLineWidth(width);
        gc.drawRectangle(2, 2, w - 4, w - 4);

        return descriptor(imageData, image, gc);
    }
}
TOP

Related Classes of org.locationtech.udig.style.sld.StyleGlyph

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.