Package org.codemap.communication.util

Source Code of org.codemap.communication.util.CommunicationOverlay

package org.codemap.communication.util;

import static org.codemap.util.CodemapIcons.MEEPLE;
import static org.codemap.util.CodemapIcons.descriptor;

import org.codemap.Location;
import org.codemap.MapSelection;
import org.codemap.layers.SelectionOverlay;
import org.codemap.resources.MapValues;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;


public class CommunicationOverlay extends SelectionOverlay {
   
    private MapSelection selection;
    private Image image;
    private int diameter;
    private Rectangle bounds;

    public CommunicationOverlay(MapSelection communicationSelection) {
        selection = communicationSelection;
    }

    @Override
    public MapSelection getSelection(MapValues map) {
        return selection;
    }
   
    @Override
    public void paintBefore(MapValues map, GC gc) {
        image = descriptor(MEEPLE).createImage();
        bounds = image.getBounds();       
        diameter = (int) Math.sqrt(bounds.width * bounds.width + bounds.height * bounds.height);
       
        Device d = gc.getDevice();
        gc.setBackground(d.getSystemColor(SWT.COLOR_WHITE));
        gc.setForeground(d.getSystemColor(SWT.COLOR_BLACK));
        gc.setLineWidth(1);
        gc.setAntialias(SWT.ON);       
    }
   
    @Override
    public void paintAfter(MapValues map, GC gc) {
        image.dispose();
        // gc maybe ...
        image = null;
        bounds = null;
    }

    @Override
    public void paintChild(MapValues map, GC gc, Location each) {      
        // draw semi-transparent background
        gc.setAlpha(196);
        gc.fillOval(each.px - diameter/2, each.py - diameter/2, diameter, diameter);
        gc.setAlpha(255);
        //draw image
        gc.drawImage(image, each.px - bounds.width/2, each.py - bounds.height/2);       
    }
}
TOP

Related Classes of org.codemap.communication.util.CommunicationOverlay

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.