/*
* 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: 23-Sep-2007
*/
package uk.me.parabola.tdbfmt;
import uk.me.parabola.io.StructuredInputStream;
import uk.me.parabola.io.StructuredOutputStream;
import java.io.IOException;
/**
* One copyright that is within the copyright block.
*
* @author Steve Ratcliffe
*/
class CopyrightSegment {
/**
* Source information text string. Describes what data sources were used
* in generating the map.
*/
public static final int CODE_SOURCE_INFORMATION = 0x00;
/** Copyright information from the map manufacturer. */
public static final int CODE_COPYRIGHT_TEXT_STRING = 0x06;
/**
* A filename that contains a BMP image to be printed along with
* the map.
*/
public static final int CODE_COPYRIGHT_BITMAP_REFERENCE = 0x07;
/**
* A code that shows what kind of copyright information is
* contained in this segment.
* The field {@link #extraProperties} can be used too as extra information.
*/
private final byte copyrightCode;
private final byte whereCode;
private final short extraProperties;
private final String copyright;
CopyrightSegment(StructuredInputStream ds) throws IOException {
copyrightCode = (byte) ds.read();
whereCode = (byte) ds.read();
extraProperties = (short) ds.read2();
copyright = ds.readString();
}
CopyrightSegment(int code, int where, String msg) {
this.copyrightCode = (byte) code;
this.whereCode = (byte) where;
this.copyright = msg;
this.extraProperties = 0;
}
public void write(StructuredOutputStream os) throws IOException {
os.write(copyrightCode);
os.write(whereCode);
os.write2(extraProperties);
os.writeString(copyright);
}
public String toString() {
return "Copyright: "
+ copyrightCode
+ ", where="
+ whereCode
+ ", extra="
+ extraProperties
+ ": "
+ copyright
;
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || !(o instanceof CopyrightSegment)) return false;
CopyrightSegment that = (CopyrightSegment) o;
if (copyrightCode != that.copyrightCode) return false;
if (extraProperties != that.extraProperties) return false;
if (whereCode != that.whereCode) return false;
if (!copyright.equals(that.copyright)) return false;
return true;
}
public int hashCode() {
int result = (int) copyrightCode;
result = 31 * result + (int) whereCode;
result = 31 * result + (int) extraProperties;
result = 31 * result + copyright.hashCode();
return result;
}
}