/* * Copyright (c) 2010, 2011 Itiner.pl. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Itiner designates this * particular file as subject to the "Classpath" exception as provided * by Itiner in the LICENSE.txt file that accompanied this code. * * This code 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 * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ package com.codename1.maps.layers; import com.codename1.maps.BoundingBox; import com.codename1.maps.Coord; import com.codename1.ui.geom.Point; import com.codename1.maps.Tile; import com.codename1.ui.Graphics; import com.codename1.ui.Image; /** * Do not use this layer directly, you need to add this layer into a PointsLayer class * instance in order for it to work as expected! * * @author Roman Kamyk <roman.kamyk@itiner.pl> */ public class PointLayer extends Coord implements Layer{ private final String name; private Image icon; private boolean displayName; /** * Creates a Point Layer. * * @param position the position of the Point * @param getName the getName of the Point * @param icon icon of the Point */ public PointLayer(Coord position, String name, Image icon) { super(position); this.name = name; this.icon = icon; } /** * Gets the Point name * @return the Point name */ public String getName() { return name; } /** * Gets the point Icon * @return the point Icon */ public Image getIcon() { return icon; } /** * Sets the display icon * @param icon */ public void setIcon(Image icon) { this.icon = icon; } /** * This method declares if the point name should be displayed * * @param displayName */ public void setDisplayName(boolean displayName){ this.displayName = displayName; } /** * {@inheritDoc} */ public void paint(Graphics g, Tile tile) { Point pos = tile.pointPosition(this); int width = 6; int height = 6; if (icon != null) { width = icon.getWidth(); height = icon.getHeight(); } int x = pos.getX() - width / 2; int y = pos.getY() - height / 2; if (icon == null) { g.fillRect(x, y, width, height); } else { g.drawImage(icon, x, y); } if (name != null && displayName) { g.drawString(getName(), x + width + 1, pos.getY() - g.getFont().getHeight() / 2 - 1); } } /** * {@inheritDoc} */ public String toString() { return super.toString() + " " + name; } /** * {@inheritDoc} */ public BoundingBox boundingBox() { return null; } }