20 package net.sf.gridarta.gui.map.renderer;
22 import java.awt.AlphaComposite;
23 import java.awt.Color;
24 import java.awt.Composite;
25 import java.awt.Dimension;
26 import java.awt.Graphics;
27 import java.awt.Graphics2D;
28 import java.awt.Point;
29 import java.awt.Rectangle;
30 import java.awt.geom.AffineTransform;
31 import java.awt.image.BufferedImage;
32 import java.util.Arrays;
34 import javax.swing.Icon;
56 import org.jetbrains.annotations.NotNull;
57 import org.jetbrains.annotations.Nullable;
95 private final Point
origin =
new Point();
130 private final Rectangle
tmpRec =
new Rectangle();
181 public void gridVisibleChanged(
final boolean gridVisible) {
186 public void lightVisibleChanged(
final boolean lightVisible) {
191 public void smoothingChanged(
final boolean smoothing) {
196 public void tileStretchingChanged(
final boolean tileStretching) {
202 public void doubleFacesChanged(
final boolean doubleFaces) {
207 public void alphaTypeChanged(
final int alphaType) {
212 public void editTypeChanged(
final int editType) {
217 public void autojoinChanged(
final boolean autojoin) {
230 public void mapSizeChanged(@NotNull
final Size2D newSize) {
240 public void mapObjectsChanged(@NotNull
final Set<G> gameObjects, @NotNull
final Set<G> transientGameObjects) {
242 boolean resize =
false;
243 for (
final G gameObject : gameObjects) {
244 if (!gameObject.isStretched(
true)) {
251 if (yOffset > maxYOffset || yOffset < minYOffset) {
257 if (mapSquare == null) {
265 if (direction.getDz() != 0) {
269 mapSquare.
getMapLocation(tmpPoint, direction.getDx(), direction.getDy());
273 }
catch (
final IndexOutOfBoundsException ignored) {
276 for (
final G gameObjectAdjacent : mapSquareAdjacent) {
277 if (!gameObjectAdjacent.isStretched(
true)) {
285 gameObjectAdjacent.refreshStretchFactor();
289 gameObject.refreshStretchFactor();
306 public void mapFileChanged(@Nullable
final MapFile oldMapFile) {
311 public void modifiedChanged() {
324 public void mapGridChanged(@NotNull
final MapGridEvent e) {
329 public void mapGridResized(@NotNull
final MapGridEvent e) {
330 mapSize = e.getSource().getSize();
354 protected AbstractIsoMapRenderer(
final int spawnPointTypeNo, @NotNull
final MapViewSettings mapViewSettings, @NotNull
final MapModel<G, A, R> mapModel, @NotNull
final MapGrid mapGrid,
final int borderOffsetX,
final int borderOffsetY, @NotNull
final MultiPositionData multiPositionData, @NotNull
final IsoMapSquareInfo isoMapSquareInfo, @NotNull
final GridMapSquarePainter gridMapSquarePainter, @NotNull
final GameObjectParser<G, A, R> gameObjectParser, @NotNull
final Icon unknownSquareIcon) {
355 super(mapModel, gameObjectParser);
361 borderOffset =
new Point(borderOffsetX, borderOffsetY);
363 mapSize = this.mapModel.getMapArchObject().getMapSize();
367 mapViewSettings.addMapViewSettingsListener(mapViewSettingsListener);
369 setToolTipText(
"dummy");
373 mapModel.addMapModelListener(mapModelListener);
374 mapGrid.addMapGridListener(mapGridListener);
401 borderOffset.setLocation(x, y);
409 final int mapWidth = mapSize.
getWidth();
410 final int mapHeight = mapSize.
getHeight();
411 final int sum = mapWidth + mapHeight;
412 final int viewWidth = sum * isoMapSquareInfo.
getXLen2();
413 final int viewHeight = sum * isoMapSquareInfo.
getYLen2();
416 final BufferedImage image =
new BufferedImage(viewWidth, viewHeight, BufferedImage.TYPE_INT_ARGB);
417 final Graphics2D graphics = image.createGraphics();
418 graphics.setColor(BACKGROUND_COLOR);
419 graphics.fillRect(0, 0, viewWidth, viewHeight);
422 final Point storeOffset =
new Point(borderOffset);
426 final Point pos =
new Point();
427 for (pos.y = 0; pos.y < mapHeight; pos.y++) {
428 int xStart = origin.x - (pos.y + 1) * isoMapSquareInfo.
getXLen2();
429 int yStart = origin.y + pos.y * isoMapSquareInfo.
getYLen2();
430 for (pos.x = 0; pos.x < mapWidth; pos.x++) {
432 xStart += isoMapSquareInfo.
getXLen2();
433 yStart += isoMapSquareInfo.
getYLen2();
457 tmpRec.x = origin.x - (p.y + 1) * isoMapSquareInfo.
getXLen2() + p.x * isoMapSquareInfo.
getXLen2();
458 tmpRec.y = origin.y + p.y * isoMapSquareInfo.
getYLen2() + p.x * isoMapSquareInfo.
getYLen2();
459 tmpRec.width = isoMapSquareInfo.
getXLen();
460 tmpRec.height = isoMapSquareInfo.
getYLen();
486 final Point pos =
new Point();
487 final Point endPos = rec.getLocation();
488 endPos.translate(rec.width, rec.height);
489 for (pos.y = rec.y; pos.y < endPos.y; pos.y++) {
490 int xStart = origin.x - (pos.y - rec.x + 1) * isoMapSquareInfo.
getXLen2();
491 int yStart = origin.y + (pos.y + rec.x) * isoMapSquareInfo.
getYLen2();
492 for (pos.x = rec.x; pos.x < endPos.x; pos.x++) {
496 xStart += isoMapSquareInfo.
getXLen2();
497 yStart += isoMapSquareInfo.
getYLen2();
510 private Rectangle
getRepaintRec(@NotNull
final Rectangle visibleRectangle) {
512 final Rectangle rec =
new Rectangle();
514 final Point posUL = visibleRectangle.getLocation();
516 final Dimension visDim = visibleRectangle.getSize();
518 final Point posUR =
new Point(posUL.x + visDim.width, posUL.y);
519 final Point posDL =
new Point(posUL.x, posUL.y + visDim.height);
520 final Point posDR =
new Point(posUR.x, posDL.y);
545 protected void paintGameObjectIfVisible(@NotNull
final Graphics2D g,
final int xStart,
final int yStart, @NotNull
final G gameObject) {
546 final G head = gameObject.getHead();
560 private void paintGameObject(@NotNull
final Graphics2D g,
final int xStart,
final int yStart, @NotNull
final G gameObject,
final boolean inSpawnPoint) {
561 final G head = gameObject.getHead();
563 if (
"trans.101".equals(head.getFaceObjName())) {
566 final boolean drawDouble = head.isDrawDouble(mapViewSettings.
isDoubleFaces());
567 final boolean isStretched = head.isStretched(mapViewSettings.
isTileStretching());
568 if (mapViewSettings.
isAlphaType(head.getEditType())) {
570 icon = head.getTransparentDoubleImage();
572 icon = head.getTransparentImage();
575 final long stretchFactor;
576 if (isStretched && (stretchFactor = head.getStretchFactor()) != 0) {
577 icon = head.getStretchedImage(stretchFactor);
578 }
else if (drawDouble) {
579 icon = head.getDoubleImage();
581 icon = head.getNormalImage();
586 final int yOffset = head.getYOffset();
590 final int tmpIconWidth;
591 final int tmpIconHeight;
592 if (zoom == 0 || zoom == 100) {
593 tmpIconWidth = icon.getIconWidth();
594 tmpIconHeight = icon.getIconHeight();
596 tmpIconWidth = (icon.getIconWidth() * zoom + 50) / 100;
597 tmpIconHeight = (icon.getIconHeight() * zoom + 50) / 100;
600 final int iconHeight;
601 if (rotate < 0.001) {
602 iconWidth = tmpIconWidth;
603 iconHeight = tmpIconHeight;
605 iconWidth = (int) (Math.abs(Math.cos(rotate) * tmpIconWidth) + 0.5) + (int) (Math.abs(Math.sin(rotate) * tmpIconHeight) + 0.5);
606 iconHeight = (int) (Math.abs(Math.sin(rotate) * tmpIconWidth) + 0.5) + (int) (Math.abs(Math.cos(rotate) * tmpIconHeight) + 0.5);
608 if (head.getMultiRefCount() > 0) {
609 final R archetype = gameObject.getArchetype();
610 if (inSpawnPoint || archetype.isLowestPart()) {
611 final int headMultiShapeID = head.getArchetype().getMultiShapeID();
612 final int multiPartNr = archetype.getMultiPartNr();
613 final int x = xStart - multiPositionData.
getXOffset(headMultiShapeID, multiPartNr) + multiPositionData.
getWidth(headMultiShapeID) / 2 - iconWidth / 2;
614 final int y = yStart - multiPositionData.
getYOffset(headMultiShapeID, multiPartNr) + isoMapSquareInfo.
getYLen() - iconHeight;
615 paintScaledIcon(g, icon, x + xOffset, y - yOffset, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight);
619 if (iconWidth > isoMapSquareInfo.
getXLen()) {
620 x = xStart + isoMapSquareInfo.
getXLen2() - iconWidth / 2;
624 final int y = yStart + isoMapSquareInfo.
getYLen() - iconHeight;
625 paintScaledIcon(g, icon, x + xOffset, y - yOffset, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight);
630 final G mob = head.getFirst();
644 return (rotate < 0 ? rotate + 360 : rotate) * 2 * Math.PI / 360;
661 private void paintScaledIcon(@NotNull
final Graphics2D g, @NotNull
final Icon icon,
final int x,
final int y,
final int zoom,
final int alpha,
final double rotate,
final int oldIconWidth,
final int oldIconHeight,
final int newIconWidth,
final int newIconHeight) {
662 if (zoom <= 0 || zoom == 100) {
663 paintAlphaIcon(g, icon, x, y, alpha, rotate, oldIconWidth, oldIconHeight, newIconWidth, newIconHeight);
665 final AffineTransform savedTransform = g.getTransform();
668 g.scale(zoom / 100.0, zoom / 100.0);
669 paintAlphaIcon(g, icon, 0, 0, alpha, rotate, oldIconWidth, oldIconHeight, newIconWidth, newIconHeight);
671 g.setTransform(savedTransform);
689 private void paintAlphaIcon(@NotNull
final Graphics2D g, @NotNull
final Icon icon,
final int x,
final int y,
final int alpha,
final double rotate,
final int oldIconWidth,
final int oldIconHeight,
final int newIconWidth,
final int newIconHeight) {
690 if (alpha <= 0 || alpha >= 255) {
691 paintRotatedIcon(g, icon, x, y, rotate, oldIconWidth, oldIconHeight, newIconWidth, newIconHeight);
693 final Composite savedComposite = g.getComposite();
695 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha / 255.0F));
696 paintRotatedIcon(g, icon, x, y, rotate, oldIconWidth, oldIconHeight, newIconWidth, newIconHeight);
698 g.setComposite(savedComposite);
715 private void paintRotatedIcon(@NotNull
final Graphics2D g, @NotNull
final Icon icon,
final int x,
final int y,
final double rotate,
final int oldIconWidth,
final int oldIconHeight,
final int newIconWidth,
final int newIconHeight) {
716 if (rotate < 0.001) {
724 final AffineTransform savedTransform = g.getTransform();
726 g.translate(x + newIconWidth / 2, y + newIconHeight / 2);
728 g.translate(-oldIconWidth / 2, -oldIconHeight / 2);
731 g.setTransform(savedTransform);
741 protected void paintIcon(@NotNull
final Graphics2D g, @NotNull
final Icon icon) {
742 icon.paintIcon(
this, g, 0, 0);
762 final Point point =
new Point();
763 for (
int y = 0; y < mapSize.
getHeight(); y++) {
764 int xStart = origin.x - (y + 1) * isoMapSquareInfo.
getXLen2();
765 int yStart = origin.y + y * isoMapSquareInfo.
getYLen2();
767 for (
int x = 0; x < mapSize.
getWidth(); x++) {
771 for (
int subLayer = 0; subLayer < offsets.length; subLayer++) {
772 if (!foundSubLayers[subLayer]) {
775 final int yStart2 = yStart + offsets[subLayer];
776 if (g.hitClip(xStart, yStart2, isoMapSquareInfo.
getXLen(), isoMapSquareInfo.
getYLen())) {
777 final int gridFlags = mapGrid.
getFlags(x, y);
779 gridMapSquarePainter.
paint(g, gridFlags, light, xStart, yStart2,
this);
786 xStart += isoMapSquareInfo.
getXLen2();
787 yStart += isoMapSquareInfo.
getYLen2();
801 g.setColor(Color.black);
803 final int mapWidth = mapSize.
getWidth();
804 final int mapHeight = mapSize.
getHeight();
805 for (
int x = 0; x <= mapWidth; x++) {
806 g.drawLine(origin.x + x * isoMapSquareInfo.
getXLen2() - 1, origin.y + x * isoMapSquareInfo.
getYLen2() - 1, origin.x - (mapHeight - x) * isoMapSquareInfo.
getXLen2() - 1, origin.y + (mapHeight + x) * isoMapSquareInfo.
getYLen2() - 1);
808 for (
int y = 0; y <= mapHeight; y++) {
809 g.drawLine(origin.x - y * isoMapSquareInfo.
getXLen2() - 1, origin.y + y * isoMapSquareInfo.
getYLen2() - 1, origin.x + (mapWidth - y) * isoMapSquareInfo.
getXLen2() - 1, origin.y + (mapWidth + y) * isoMapSquareInfo.
getYLen2() - 1);
822 Arrays.fill(foundSubLayers,
false);
825 boolean foundAny =
false;
827 for (
final G gameObject : mapModel.
getMapSquare(point)) {
828 final G head = gameObject.getHead();
832 if (yOffset > offsets[subLayer]) {
833 offsets[subLayer] = yOffset;
835 foundSubLayers[subLayer] =
true;
842 foundSubLayers[0] =
true;
845 for (
int subLayer = 0; subLayer < offsets.length; subLayer++) {
846 offsets[subLayer] = maxYOffset - offsets[subLayer];
854 if (maxYOffset == 0 && minYOffset == 0) {
855 final int x0 = point.x - origin.x;
856 final int y0 = point.y - origin.y;
857 final int yt = (2 * y0 - x0) / 2;
858 final int xt = yt + x0;
859 final int xm = xt / isoMapSquareInfo.
getXLen2();
860 final int ym = yt / isoMapSquareInfo.
getYLen2() / 2;
865 retPoint.setLocation(xm, ym);
871 boolean retval =
false;
872 for (
int y = 0; y < mapSize.
getHeight(); y++) {
873 int xStart = origin.x - (y + 1) * isoMapSquareInfo.
getXLen2();
874 int yStart = origin.y + y * isoMapSquareInfo.
getYLen2();
875 for (
int x = 0; x < mapSize.
getWidth(); x++) {
876 tmpPoint.setLocation(x, y);
879 for (
int subLayer = 0; subLayer < offsets.length; subLayer++) {
880 if (!foundSubLayers[subLayer]) {
883 final int yPos = yStart + offsets[subLayer];
886 for (
final G gameObject : mapModel.
getMapSquare(tmpPoint)) {
887 final G head = gameObject.getHead();
889 stretch = head.getStretchFactor();
894 if (point.x >= xStart && point.x <= xStart + isoMapSquareInfo.
getXLen() && point.y >= yPos && point.y <= yPos + isoMapSquareInfo.
getYLen() + ((stretch >> 24) & 0xff)) {
896 retPoint.setLocation(tmpPoint);
902 xStart += isoMapSquareInfo.
getXLen2();
903 yStart += isoMapSquareInfo.
getYLen2();
914 final Point pos =
new Point();
915 final int mapWidth = mapSize.
getWidth();
916 final int mapHeight = mapSize.
getHeight();
920 for (pos.y = 0; pos.y < mapHeight; pos.y++) {
921 for (pos.x = 0; pos.x < mapWidth; pos.x++) {
923 final G head = gameObject.getHead();
927 if (yOffset > maxYOffset) {
928 maxYOffset = yOffset;
929 }
else if (yOffset < minYOffset) {
930 minYOffset = yOffset;
938 final int sum = mapWidth + mapHeight;
939 final Dimension forcedSize =
new Dimension(2 * borderOffset.x + sum * isoMapSquareInfo.
getXLen2(), 2 * borderOffset.y + sum * isoMapSquareInfo.
getYLen2() + maxYOffset + Math.abs(minYOffset));
940 setPreferredSize(forcedSize);
941 setMinimumSize(forcedSize);
boolean isAlphaType(int v)
Returns whether the specified edit type is to be shown transparent.
int [] tileStretchingOffsets(@NotNull final Point point, final boolean[] foundSubLayers)
Calculates the tile stretching Y offset.
final MapGridListener mapGridListener
The MapGridListener to track changes in mapGrid.
AbstractIsoMapRenderer(final int spawnPointTypeNo, @NotNull final MapViewSettings mapViewSettings, @NotNull final MapModel< G, A, R > mapModel, @NotNull final MapGrid mapGrid, final int borderOffsetX, final int borderOffsetY, @NotNull final MultiPositionData multiPositionData, @NotNull final IsoMapSquareInfo isoMapSquareInfo, @NotNull final GridMapSquarePainter gridMapSquarePainter, @NotNull final GameObjectParser< G, A, R > gameObjectParser, @NotNull final Icon unknownSquareIcon)
Creates a new instance.
final MultiPositionData multiPositionData
The MultiPositionData instance to query for multi-part objects.
BufferedImage getFullImage()
A set of key/value pairs.
int getYOffset(final int shapeID, final int positionID)
Calculate the y-offset from the topmost pixel of the big face image and the default y-position (The d...
final Point origin
The origin is the point in the north-west corner.
A MapRenderer that renders isometric squares.
final Point borderOffset
The offset to map borders (32 for std.
MapSquare< G, A, R > getMapSquare()
A MapModel reflects the data of a map.
boolean isLight()
Returns whether this map square is affected by any light emitting game objects.
Reading and writing of maps, handling of paths.
boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint)
void paintAlphaIcon(@NotNull final Graphics2D g, @NotNull final Icon icon, final int x, final int y, final int alpha, final double rotate, final int oldIconWidth, final int oldIconHeight, final int newIconWidth, final int newIconHeight)
Paints an icon at a given alpha value.
MapModel< G, A, R > getMapModel()
Returns the MapModel this map square is part of.
This package contains the framework for validating maps.
static final String ZOOM
The name of the "zoom" attribute.
static final String LAYER
The name of the "layer" attribute.
final MapModelListener< G, A, R > mapModelListener
The MapModelListener to track changes in mapModel.
static final String ALPHA
The name of the "alpha" attribute.
Interface for listeners listening on MapModel events.
final MapGrid mapGrid
The MapGrid to render.
final MapModel< G, A, R > mapModel
The MapModel to render.
boolean lightVisible
Whether the setting for lighted map squares is inverted.
Interface for classes that read or write GameObject instances.
int getYLen2()
Returns the vertical center of a square.
static final long serialVersionUID
The serial version UID.
int getFlags(final int x, final int y)
Returns the flags of a square.
void removeMapGridListener(@NotNull final MapGridListener listener)
Removes a MapGridListener.
boolean isLightVisible()
Get the visibility of the light.
void paintScaledIcon(@NotNull final Graphics2D g, @NotNull final Icon icon, final int x, final int y, final int zoom, final int alpha, final double rotate, final int oldIconWidth, final int oldIconHeight, final int newIconWidth, final int newIconHeight)
Paints an icon at a given zoom factor and alpha value.
int getYLen()
Returns the vertical size of a square.
void paintMapSelection(@NotNull final Graphics g)
Paints the selection for the whole map.
Size2D mapSize
The size of the map to render.
final int spawnPointTypeNo
The game object type number of spawn points.
Base package of all Gridarta classes.
int getWidth(final int shapeID)
Returns the total width for a multi-square image.
final MapViewSettings mapViewSettings
The MapViewSettings instance to use.
Abstract base class for classes implementing MapRenderer.
Interface for listeners listening to MapGridEvents.
boolean isGridVisible()
Get the visibility of the grid.
final IsoMapSquareInfo isoMapSquareInfo
The IsoMapSquareInfo to use.
Paints overlays for map grids.
final Point tmpPoint
Temporary point.
Rectangle getSquareBounds(@NotNull final Point p)
void paintMapGrid(@NotNull final Graphics g)
Paints the grid of the whole map.
static final String SUB_LAYER
The name of the "sub_layer" attribute.
Interface for event listeners that are interested in changes on MapViewSettings.
void removeMapViewSettingsListener(@NotNull MapViewSettingsListener listener)
Unregister a MapViewSettingsListener.
Container for settings that affect the rendering of maps.
MapSquare< G, A, R > getMapSquare(@NotNull Point pos)
Get the square at a specified location.
static final String Z
The name of the "z" attribute.
GameObjects are the objects based on Archetypes found on maps.
abstract void clearBackground(@NotNull Graphics g)
Clears the window to background color if necessary.
int getWidth()
Returns the width of the area.
void paintGameObjectIfVisible(@NotNull final Graphics2D g, final int xStart, final int yStart, @NotNull final G gameObject)
Paints a single game object if it is visible according to current editor settings.
Point getMapLocation()
Returns the coordinate on the map.
abstract void paintSquare(@NotNull Graphics2D g, int x, int y, @NotNull MapSquare< G, A, R > square)
Paints one square.
The MultiPositionData class stores an array of numbers which is required in order to calculate displa...
2D-Grid containing flags for selection, pre-selection, cursor, warnings and errors.
void paint(@NotNull final Graphics graphics, final int gridFlags, final boolean light, final int x, final int y, @NotNull final ImageObserver imageObserver)
Paints overlay images for one grid square.
void paintComponent(@NotNull final Graphics g)
static final String ROTATE
The name of the "rotate" attribute.
final Icon unknownSquareIcon
The Icon drawn into squares without game objects.
final GameObjectParser< G, A, R > gameObjectParser
The GameObjectParser for creating tooltip information or.
Provides information about isometric map squares.
int minYOffset
Minimum Y offset.
void removeMapModelListener(@NotNull MapModelListener< G, A, R > listener)
Unregister a map listener.
final boolean [] foundSubLayers
Boolean array for tileStretchingOffsets to avoid allocating lots of arrays.
Rectangle getRepaintRec(@NotNull final Rectangle visibleRectangle)
Returns smallest Rectangle on the map that needs to be repaint.
abstract boolean isGameObjectVisible(@NotNull G gameObject)
Checks whether a game object is visible according to current editor settings.
void paintComponent2(@NotNull final Graphics2D g)
Paints this component.
The face is the appearance of an object.
void calculateOrigin()
Calculates the origin which is located in the NORTH_WEST-corner of the map.
boolean isLightVisible()
Returns whether the setting for lighted map squares should be inverted.
final MapViewSettingsListener mapViewSettingsListener
The MapViewSettingsListener attached to mapViewSettings.
int maxYOffset
Maximum Y offset.
void paintGameObject(@NotNull final Graphics2D g, final int xStart, final int yStart, @NotNull final G gameObject, final boolean inSpawnPoint)
Paints a single game object.
int getXLen2()
Returns the horizontal center of a square.
An interface for classes that collect errors.
void paintIcon(@NotNull final Graphics2D g, @NotNull final Icon icon)
Paints an icon.
An ImageFilter that produces stretched faces.
boolean isSpawnPoint(@NotNull final BaseObject< G, A, R, ?> gameObject)
Returns whether the given BaseObject is a spawn point.
int getHeight()
Returns the height of the area.
void paintRotatedIcon(@NotNull final Graphics2D g, @NotNull final Icon icon, final int x, final int y, final double rotate, final int oldIconWidth, final int oldIconHeight, final int newIconWidth, final int newIconHeight)
Paints an icon at a given rotation angle.
void setBorderOffset(final int x, final int y)
Sets the offset to map borders (32 for std.
Default implementation for GameObject implementing classes.
static double getRotate(@NotNull final Attributes head)
Returns the rotation angle of a game object.
static final Color BACKGROUND_COLOR
The background color for created images.
final Rectangle tmpRec
Temporary rectangle.
static boolean coordsInTile(final long stretch, final int x, final int y)
Checks whether the specified coordinates are inside a (possibly stretched) isometric tile...
static final int MAX_SUB_LAYERS
int getXOffset(final int shapeID, final int positionID)
Calculate the x-offset from the leftmost pixel of the big face image and the default x-position (The ...
boolean isTileStretching()
Returns the tile-stretching setting.
static final String ALIGN
The name of the "align" attribute.
final GridMapSquarePainter gridMapSquarePainter
The GridMapSquarePainter to use.
The location of a map file with a map directory.
int getXLen()
Returns the horizontal size of a square.
Interface for MapArchObjects.
boolean isDoubleFaces()
Get whether double faces are drawn double height.
The class Size2D represents a 2d rectangular area.
This event is created by MapGrid.
void resizeFromModel()
Refreshes the data in the view from the model.