package org.activityinfo.legacy.shared.reports.model;
/*
* #%L
* ActivityInfo Server
* %%
* Copyright (C) 2009 - 2013 UNICEF
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.safehtml.shared.UriUtils;
import java.io.Serializable;
/**
* A generic bitmap icon that can be used on the client or server side, in tiled
* maps as well as SVG maps.
*
* @author Alex Bertram
*/
public final class MapIcon implements Serializable, ImageResource {
private static final int DEFAULT_SIZE = 32;
private String name;
private String url;
// Default to 32x32 sized icons
private int width = DEFAULT_SIZE;
private int height = DEFAULT_SIZE;
private int anchorX;
private int anchorY;
public MapIcon() {
}
public MapIcon(String name) {
setName(name);
}
public MapIcon(String name, int width, int height, int anchorX, int anchorY) {
setName(name);
this.width = width;
this.height = height;
this.anchorX = anchorX;
this.anchorY = anchorY;
}
/**
* @return A short name of the icon
*/
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
url = "mapicons/" + name + ".png";
}
/**
* @return The width of the icon image, in pixels
*/
@Override
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
/**
* @return The height of the icon image, in pixels
*/
@Override
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
/**
* @return The distance from the left side at which the image should be
* anchored to the point.
*/
public int getAnchorX() {
return anchorX;
}
public void setAnchorX(int anchorX) {
this.anchorX = anchorX;
}
/**
* @return The distance from the top at which of the image should be
* anchored to the point.
*/
public int getAnchorY() {
return anchorY;
}
public void setAnchorY(int anchorY) {
this.anchorY = anchorY;
}
@Override
public int getLeft() {
return 0;
}
@Override
public int getTop() {
return 0;
}
@Override
public String getURL() {
return url;
}
@Override
public SafeUri getSafeUri() {
return UriUtils.fromTrustedString(getURL());
}
@Override
public boolean isAnimated() {
return false;
}
public static MapIcon fromEnum(Icon icon) {
return new MapIcon(icon.toString());
}
public enum Icon {
Default,
Doctor,
Fire,
Food,
Water
}
}