2 * QuarkGenerator interface
\r
3 * Backend tagged text generator for QuarkXpress
\r
5 * @author Daniel Jackson
\r
6 * @version 0, 07/08/01
\r
11 //import java.util.*;
\r
13 public class QuarkGenerator extends Generator {
\r
14 FileOutputStream output_stream;
\r
15 LinkedList format_stack;
\r
18 public QuarkGenerator (FileOutputStream s) {
\r
22 // stack holds strings used to terminate formats
\r
23 format_stack = /*disjoint llQuarkGen*/ new LinkedList ();
\r
26 public void suppress_on () {
\r
30 public void suppress_off () {
\r
34 private void print (String s) {
\r
35 if (on) output_stream.write (s.getBytes());
\r
38 public void linefeed () {
\r
39 if (on) output_stream.write ('\n');
\r
43 public void new_para (String style) {
\r
44 print ("@" + style + ":");
\r
48 public void new_line () {
\r
52 public void special_char (String font, String index) {
\r
53 print ("<f\"" + font + "\"><\\#" + index + "><f$>");
\r
56 public void special_char (String index) {
\r
57 print ("<\\#" + index + ">");
\r
60 public void plaintext (String text) {
\r
64 public void push_format (int format) {
\r
67 if( format == Generator.ROMAN() ||
\r
68 format == Generator.ITALICS() ) {
\r
70 format_stack.push ("<I>");
\r
74 if( format == Generator.BOLD() ) {
\r
76 format_stack.push ("<B>");
\r
80 if( format == Generator.SUBSCRIPT() ) {
\r
82 format_stack.push ("<->");
\r
86 if( format == Generator.SUPERSCRIPT() ) {
\r
88 format_stack.push ("<+>");
\r
92 Assert.unreachable ();
\r
95 public void pop_format () {
\r
96 // for now, handle too many pops without report
\r
97 if (format_stack.isEmpty ()) return;
\r
98 print ((String) format_stack.pop ());
\r