/*******************************************************************************
* Copyright (c) MOBAC developers
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
/* *********************************************
* Copyright: Andreas Sander
*
*
* ********************************************* */
package mobac.program.atlascreators.impl.rmp;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import mobac.exceptions.MapCreationException;
import mobac.program.interfaces.TileImageDataWriter;
/**
* Content of a single tile
*
*/
public class Tiledata {
private final TileImageDataWriter writer;
public int posx;
public int posy;
public int totalOffset;
public MultiImage si;
public BoundingRect rect;
private int dataSize = 0;
public Tiledata(TileImageDataWriter writer) {
this.writer = writer;
}
public int getTileDataSize() {
return dataSize;
}
public void writeTileData(OutputStream out) throws IOException {
try {
BufferedImage image = si.getSubImage(rect, 256, 256);
ByteArrayOutputStream bout = new ByteArrayOutputStream(16384);
writer.processImage(image, bout);
byte[] data = bout.toByteArray();
dataSize = data.length;
// Utilities.saveBytes(String.format("D:/jpg/mobac-%04d-%04d.jpg", posx, posy), data);
RmpTools.writeValue(out, dataSize, 4);
out.write(data);
} catch (MapCreationException e) {
throw new IOException(e.getCause());
}
}
}