/* * 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.LinkedHashMap; import java.util.Map; import uk.me.parabola.imgfmt.app.ImgFileWriter; /** * An index into mdr10. There is a single byte group number followed by * the first record in mdr10 that belongs to that group. * * @author Steve Ratcliffe */ public class Mdr9 extends MdrSection implements HasHeaderFlags { private final Map<Integer, Integer> index = new LinkedHashMap<Integer, Integer>(); public Mdr9(MdrConfig config) { setConfig(config); } public void writeSectData(ImgFileWriter writer) { int poiSize = getSizes().getPoiSize(); for (Map.Entry<Integer, Integer> ent : index.entrySet()) { int group = ent.getKey(); writer.put((byte) group); putN(writer, poiSize, ent.getValue()); } } /** * The item size is one byte for the group and then enough bytes for the * index into mdr10. * @return Just return 4 for now. */ public int getItemSize() { return 1 + getSizes().getPoiSize(); } /** * The number of records in this section. * * @return The number of items in the section. */ protected int numberOfItems() { return index.size(); } public void setGroups(Map<Integer, Integer> groupSizes) { int offset = 1; for (Map.Entry<Integer, Integer> ent : groupSizes.entrySet()) { index.put(ent.getKey(), offset); offset += ent.getValue(); } } public int getExtraValue() { return 0x00; } }