/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* $Id$ */ package org.apache.fop.render.mif; // Java import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import java.util.List; /** * 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 List pages = new java.util.ArrayList(); protected List textFlows = null; public MIFFile() { super(""); valueElements = new java.util.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); } }