Rev 2630 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2007 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License 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.
*
*
* Author: Steve Ratcliffe
* Create date: Dec 14, 2007
*/
package uk.me.parabola.imgfmt.app.trergn;
import uk.me.parabola.imgfmt.ReadFailedException;
import uk.me.parabola.imgfmt.app.CommonHeader;
import uk.me.parabola.imgfmt.app.ImgFileReader;
import uk.me.parabola.imgfmt.app.ImgFileWriter;
import uk.me.parabola.imgfmt.app.Section;
/**
* The header for the RGN file. This is very simple, just a location and size.
*
* @author Steve Ratcliffe
*/
public class RGNHeader extends CommonHeader {
//private static final int DEF_LEN = 29;
private static final int DEF_LEN = 125;
public static final int HEADER_LEN = DEF_LEN;
private final Section data = new Section();
private int extTypeAreasOffset;
private int extTypeAreasSize;
private int extTypeLinesOffset;
private int extTypeLinesSize;
private int extTypePointsOffset;
private int extTypePointsSize;
public RGNHeader() {
super(HEADER_LEN, "GARMIN RGN");
data.setPosition(HEADER_LEN);
}
/**
* Read the rest of the header. Specific to the given file. It is guaranteed
* that the file position will be set to the correct place before this is
* called.
*
* @param reader The header is read from here.
*/
protected void readFileHeader(ImgFileReader reader) throws ReadFailedException {
data.readSectionInfo(reader, false);
if (getHeaderLength() > 29){
extTypeAreasOffset = reader.getInt();
extTypeAreasSize = reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
extTypeLinesOffset = reader.getInt();
extTypeLinesSize = reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
extTypePointsOffset = reader.getInt();
extTypePointsSize = reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
reader.getInt();
}
}
/**
* Write the rest of the header. It is guaranteed that the writer will be set
* to the correct position before calling.
*
* @param writer The header is written here.
*/
protected void writeFileHeader(ImgFileWriter writer) {
data.writeSectionInfo(writer, false);
if (getHeaderLength() > 29) {
writer.putInt(extTypeAreasOffset);
writer.putInt(extTypeAreasSize);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(extTypeLinesOffset);
writer.putInt(extTypeLinesSize);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(extTypePointsOffset);
writer.putInt(extTypePointsSize);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
writer.putInt(0);
}
}
public int getDataOffset() {
return data.getPosition();
}
public void setDataSize(int dataSize) {
data.setSize(dataSize);
}
public void setExtTypeAreasInfo(int offset, int size) {
extTypeAreasOffset = offset;
extTypeAreasSize = size;
}
public void setExtTypeLinesInfo(int offset, int size) {
extTypeLinesOffset = offset;
extTypeLinesSize = size;
}
public void setExtTypePointsInfo(int offset, int size) {
extTypePointsOffset = offset;
extTypePointsSize = size;
}
public int getExtTypeAreasOffset() {
return extTypeAreasOffset;
}
public int getExtTypeAreasSize() {
return extTypeAreasSize;
}
public int getExtTypeLinesOffset() {
return extTypeLinesOffset;
}
public int getExtTypeLinesSize() {
return extTypeLinesSize;
}
public int getExtTypePointsOffset() {
return extTypePointsOffset;
}
public int getExtTypePointsSize() {
return extTypePointsSize;
}
}