/* * $Id$ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ package org.apache.fop.mif; // Java import java.io.*; import java.util.*; /** * The MIF File. * This organises the MIF File and the corresponding elements. * The catalog elements are used to setup the resources that * are referenced. */ public class MIFFile extends MIFElement { protected MIFElement colorCatalog = null; protected PGFElement pgfCatalog = null; protected MIFElement fontCatalog = null; protected RulingElement rulingCatalog = null; protected MIFElement tblCatalog = null; protected MIFElement views = null; protected MIFElement variableFormats = null; protected MIFElement xRefFormats = null; protected MIFElement document = null; protected MIFElement bookComponent = null; protected MIFElement initialAutoNums = null; protected MIFElement aFrames = null; protected MIFElement tbls = null; protected ArrayList pages = new ArrayList(); protected ArrayList textFlows = null; /** */ public MIFFile() { super(""); valueElements = new ArrayList(); setup(); } /** * Do some setup. * Currently adds some dummy values to the resources. */ protected void setup() { MIFElement unit = new MIFElement("Units"); unit.setValue("Ucm"); addElement(unit); colorCatalog = new MIFElement("ColorCatalog"); MIFElement color = new MIFElement("Color"); MIFElement prop = new MIFElement("ColorTag"); prop.setValue("`Black'"); color.addElement(prop); prop = new MIFElement("ColorCyan"); prop.setValue("0.000000"); color.addElement(prop); prop = new MIFElement("ColorMagenta"); prop.setValue("0.000000"); color.addElement(prop); prop = new MIFElement("ColorYellow"); prop.setValue("0.000000"); color.addElement(prop); prop = new MIFElement("ColorBlack"); prop.setValue("100.000000"); color.addElement(prop); prop = new MIFElement("ColorAttribute"); prop.setValue("ColorIsBlack"); color.addElement(prop); prop = new MIFElement("ColorAttribute"); prop.setValue("ColorIsReserved"); color.addElement(prop); color.finish(true); colorCatalog.addElement(color); addElement(colorCatalog); pgfCatalog = new PGFElement(); pgfCatalog.lookupElement(null); addElement(pgfCatalog); rulingCatalog = new RulingElement(); rulingCatalog.lookupElement(null); addElement(rulingCatalog); } public void output(OutputStream os) throws IOException { if(finished) return; if(!started) { os.write((" # Generated by FOP\n"/* + getVersion()*/).getBytes()); started = true; } boolean done = true; for(Iterator iter = valueElements.iterator(); iter.hasNext(); ) { MIFElement el = (MIFElement)iter.next(); boolean d = el.output(os, 0); if(d) { iter.remove(); } else { done = false; break; } } if(done && finish) { os.write(("# end of MIFFile").getBytes()); } } public void addPage(MIFElement p) { pages.add(p); addElement(p); } }