idvi.split

  1. DVISplitApplication

    Main application, invoked by the idvi script. Lets the class idvi.split.Splitter do most of the work. The only contribution here is a weird MessageContext implementation which tries to minimize output.

  2. Splitter

    Main worker of the idvi application. Much in need of an overhaul. Extends the class idvi.dvi.DVIDocument, as sort of a hack so that it can collect font information and page numbers for anchors.

    Uses an idvi.dvi.DVITokenizer and the PageInfo class in the first pass to build up information about the document.

    Uses an idvi.io.DVIInputStream directly in the second pass, so that it can copy pages from the original dvi file to a new dvi file with as little change as possible.

    Uses a parameter.ParameterExpandStub to handle macro expansion in a template html file, to generate the per-page html files.

  3. PageInfo

    Used in the first pass of the application. Uses a DVITokenizer to read one page from the document. Collects bounds information at all magnification levels, and a list of PSFile specials.

  4. HTMLParameters

    Contains constants describing the default definitions for various parameters, including the structure of the applet tag which is generated in the per-page html files.

  5. PSSpecial

    Utility class used to generate the file psheader.ps used by the shell scripts which generate gif images from encapsulates postscript images.

    The Splitter class used to invoke applications directly using System.exec( ), and passed them a copy of the string in this class. But this was not portable enough. So this class is really an anachronism.