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 }