001 package org.bukkit.map;
002
003 import java.awt.Image;
004
005 /**
006 * Represents a canvas for drawing to a map. Each canvas is associated with a
007 * specific {@link MapRenderer} and represents that renderer's layer on the
008 * map.
009 */
010 public interface MapCanvas {
011
012 /**
013 * Get the map this canvas is attached to.
014 *
015 * @return The MapView this canvas is attached to.
016 */
017 public MapView getMapView();
018
019 /**
020 * Get the cursor collection associated with this canvas.
021 *
022 * @return The MapCursorCollection associated with this canvas.
023 */
024 public MapCursorCollection getCursors();
025
026 /**
027 * Set the cursor collection associated with this canvas. This does not
028 * usually need to be called since a MapCursorCollection is already
029 * provided.
030 *
031 * @param cursors The MapCursorCollection to associate with this canvas.
032 */
033 public void setCursors(MapCursorCollection cursors);
034
035 /**
036 * Draw a pixel to the canvas.
037 *
038 * @param x The x coordinate, from 0 to 127.
039 * @param y The y coordinate, from 0 to 127.
040 * @param color The color. See {@link MapPalette}.
041 */
042 public void setPixel(int x, int y, byte color);
043
044 /**
045 * Get a pixel from the canvas.
046 *
047 * @param x The x coordinate, from 0 to 127.
048 * @param y The y coordinate, from 0 to 127.
049 * @return The color. See {@link MapPalette}.
050 */
051 public byte getPixel(int x, int y);
052
053 /**
054 * Get a pixel from the layers below this canvas.
055 *
056 * @param x The x coordinate, from 0 to 127.
057 * @param y The y coordinate, from 0 to 127.
058 * @return The color. See {@link MapPalette}.
059 */
060 public byte getBasePixel(int x, int y);
061
062 /**
063 * Draw an image to the map. The image will be clipped if necessary.
064 *
065 * @param x The x coordinate of the image.
066 * @param y The y coordinate of the image.
067 * @param image The Image to draw.
068 */
069 public void drawImage(int x, int y, Image image);
070
071 /**
072 * Render text to the map using fancy formatting. Newline (\n) characters
073 * will move down one line and return to the original column, and the text
074 * color can be changed using sequences such as "§12;", replacing 12 with
075 * the palette index of the color (see {@link MapPalette}).
076 *
077 * @param x The column to start rendering on.
078 * @param y The row to start rendering on.
079 * @param font The font to use.
080 * @param text The formatted text to render.
081 */
082 public void drawText(int x, int y, MapFont font, String text);
083
084 }