package org.apache.fop.render.ps;
import java.io.IOException;
import org.apache.xmlgraphics.ps.DSCConstants;
import org.apache.xmlgraphics.ps.PSGenerator;
import org.apache.xmlgraphics.ps.PSProcSet;
public final class FOPProcSet extends PSProcSet {
public static final FOPProcSet INSTANCE = new FOPProcSet();
private FOPProcSet() {
super("Apache FOP Std ProcSet", 1.0f, 0);
}
public void writeTo(PSGenerator gen) throws IOException {
gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE,
new Object[] {TYPE_PROCSET, getName(),
Float.toString(getVersion()), Integer.toString(getRevision())});
gen.writeDSCComment(DSCConstants.VERSION,
new Object[] {Float.toString(getVersion()), Integer.toString(getRevision())});
gen.writeDSCComment(DSCConstants.COPYRIGHT, "Copyright 2009 "
+ "The Apache Software Foundation. "
+ "License terms: http://www.apache.org/licenses/LICENSE-2.0");
gen.writeDSCComment(DSCConstants.TITLE,
"Basic set of procedures used by Apache FOP");
gen.writeln("/TJ { % Similar but not equal to PDF's TJ operator");
gen.writeln(" {");
gen.writeln(" dup type /stringtype eq");
gen.writeln(" { show }");
gen.writeln(" {");
gen.writeln(" dup type /arraytype eq");
gen.writeln(" { aload pop neg 1000 div exch 1000 div rmoveto }");
gen.writeln(" { neg 1000 div 0 rmoveto }");
gen.writeln(" ifelse");
gen.writeln(" }");
gen.writeln(" ifelse");
gen.writeln(" } forall");
gen.writeln("} bd");
gen.writeln("/ATJ { % As TJ but adds letter-spacing");
gen.writeln(" /ATJls exch def");
gen.writeln(" {");
gen.writeln(" dup type /stringtype eq");
gen.writeln(" { ATJls 0 3 2 roll ashow }");
gen.writeln(" { neg 1000 div 0 rmoveto }");
gen.writeln(" ifelse");
gen.writeln(" } forall");
gen.writeln("} bd");
gen.writeDSCComment(DSCConstants.END_RESOURCE);
gen.getResourceTracker().registerSuppliedResource(this);
}
}