/* * Copyright (C) 2010 Medo <smaxein@googlemail.com> * * This file is part of GmkSplitter. * GmkSplitter is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package com.ganggarrison.gmdec.xml; import java.awt.Dimension; import java.awt.Point; import org.lateralgm.resources.Background; import org.lateralgm.resources.Background.PBackground; import com.ganggarrison.easyxml.XmlReader; import com.ganggarrison.easyxml.XmlWriter; import com.ganggarrison.gmdec.DeferredReferenceCreatorNotifier; import com.ganggarrison.gmdec.GmkSplitter; public class BackgroundXmlFormat extends XmlFormat<Background> { @Override public void write(Background background, XmlWriter writer) { writer.startElement("background"); { writeIdAttribute(background, writer); boolean useAsTileset = background.get(PBackground.USE_AS_TILESET); writer.putElement("useAsTileset", useAsTileset); if (useAsTileset || !GmkSplitter.omitDisabledFields) { writer.startElement("tiles"); int width = background.get(PBackground.TILE_WIDTH); int height = background.get(PBackground.TILE_HEIGHT); writeDimension(writer, "size", new Dimension(width, height)); int offsetX = background.get(PBackground.H_OFFSET); int offsetY = background.get(PBackground.V_OFFSET); writePoint(writer, "offset", new Point(offsetX, offsetY)); int sepX = background.get(PBackground.H_SEP); int sepY = background.get(PBackground.V_SEP); writePoint(writer, "separation", new Point(sepX, sepY)); writer.endElement(); } writer.putElement("preload", background.get(PBackground.PRELOAD)); writer.putElement("smoothEdges", background.get(PBackground.SMOOTH_EDGES)); writer.putElement("transparent", background.get(PBackground.TRANSPARENT)); } writer.endElement(); } @Override public Background read(XmlReader reader, DeferredReferenceCreatorNotifier notifier) { Background background = new Background(); reader.enterElement("background"); { readIdAttribute(background, reader); boolean useAsTileset = reader.getBoolElement("useAsTileset"); background.put(PBackground.USE_AS_TILESET, useAsTileset); if (useAsTileset || !GmkSplitter.omitDisabledFields) { reader.enterElement("tiles"); Dimension size = readDimension(reader, "size"); background.put(PBackground.TILE_WIDTH, size.width); background.put(PBackground.TILE_HEIGHT, size.height); Point offset = readPoint(reader, "offset"); background.put(PBackground.H_OFFSET, offset.x); background.put(PBackground.V_OFFSET, offset.y); Point separation = readPoint(reader, "separation"); background.put(PBackground.H_SEP, separation.x); background.put(PBackground.V_SEP, separation.y); reader.leaveElement(); } background.put(PBackground.PRELOAD, reader.getBoolElement("preload")); background.put(PBackground.SMOOTH_EDGES, reader.getBoolElement("smoothEdges")); background.put(PBackground.TRANSPARENT, reader.getBoolElement("transparent")); } reader.leaveElement(); return background; } }