/* * Copyright (C) 2011. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 or * version 2 as published by the Free Software Foundation. * * 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. */ package uk.me.parabola.imgfmt.app.typ; import java.nio.charset.CharsetEncoder; import uk.me.parabola.imgfmt.app.ImgFileWriter; /** * Represents a POI in the typ file. * * @author Steve Ratcliffe */ public class TypPoint extends TypElement { private Xpm nightXpm; private static final byte F_BITMAP = 0x1; private static final byte F_NIGHT_XPM = 0x2; private static final byte F_LABEL = 0x4; private static final byte F_EXTENDED_FONT = 0x8; public void write(ImgFileWriter writer, CharsetEncoder encoder) { offset = writer.position(); byte flags = F_BITMAP; if (nightXpm != null) flags |= F_NIGHT_XPM; if (!labels.isEmpty()) flags |= F_LABEL; if (fontStyle != 0 || dayFontColour != null || nightFontColour != null) flags |= F_EXTENDED_FONT; writer.put(flags); // Width and height is the same for day and night images, so it is written once only. ColourInfo colourInfo = xpm.getColourInfo(); writer.put((byte) colourInfo.getWidth()); writer.put((byte) colourInfo.getHeight()); // Day or only image writeImage(writer, xpm); if ((flags & F_NIGHT_XPM) != 0) writeImage(writer, nightXpm); if ((flags & F_LABEL) != 0) writeLabelBlock(writer, encoder); if ((flags & F_EXTENDED_FONT) != 0) writeExtendedFontInfo(writer); } public void setNightXpm(Xpm nightXpm) { this.nightXpm = nightXpm; } /** * Points have full pixmaps with multiple colours, including 24 full colour images. */ public boolean simpleBitmap() { return false; } }