/* * Copyright (C) 2009. * * 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.mdr; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import uk.me.parabola.imgfmt.app.ImgFileWriter; /** * POI types. A simple list of the types that are used? * If you have this section, then the ability to select POI categories * goes away. * * @author Steve Ratcliffe */ public class Mdr4 extends MdrSection implements HasHeaderFlags { private final Set<Mdr4Record> poiTypes = new HashSet<Mdr4Record>(); public Mdr4(MdrConfig config) { setConfig(config); } public void writeSectData(ImgFileWriter writer) { List<Mdr4Record> list = new ArrayList<Mdr4Record>(poiTypes); Collections.sort(list); for (Mdr4Record r : list) { writer.put((byte) r.getType()); writer.put((byte) r.getUnknown()); writer.put((byte) r.getSubtype()); } } public int getItemSize() { return 3; } public void addType(int type) { Mdr4Record r = new Mdr4Record(); if (type <= 0xff) r.setType(type); else { r.setType((type >> 8) & 0xff); r.setSubtype(type & 0xff); } r.setUnknown(0); poiTypes.add(r); } /** * The number of records in this section. * * @return The number of items in the section. */ protected int numberOfItems() { return poiTypes.size(); } public int getExtraValue() { return 0x00; } }