package com.nwalsh.saxon;
import org.xml.sax.SAXException;
import org.w3c.dom.*;
import javax.xml.transform.TransformerException;
import com.icl.saxon.om.NamePool;
import com.icl.saxon.output.Emitter;
import com.icl.saxon.tree.AttributeCollection;
import com.nwalsh.saxon.Callout;
/**
* <p>Utility class for the Verbatim extension (ignore this).</p>
*
* <p>$Id: FormatUnicodeCallout.java,v 1.2 2001/08/05 22:35:38 nwalsh Exp $</p>
*
* <p>Copyright (C) 2000, 2001 Norman Walsh.</p>
*
* <p><b>Change Log:</b></p>
* <dl>
* <dt>1.0</dt>
* <dd><p>Initial release.</p></dd>
* </dl>
*
* @author Norman Walsh
* <a href="mailto:ndw@nwalsh.com">ndw@nwalsh.com</a>
*
* @see Verbatim
*
* @version $Id: FormatUnicodeCallout.java,v 1.2 2001/08/05 22:35:38 nwalsh Exp $
**/
public class FormatUnicodeCallout extends FormatCallout {
int unicodeMax = 0;
int unicodeStart = 0;
String unicodeFont = "";
public FormatUnicodeCallout(NamePool nPool,
String font,
int start,
int max,
boolean fo) {
super(nPool, fo);
unicodeFont = font;
unicodeMax = max;
unicodeStart = start;
}
public void formatCallout(Emitter rtfEmitter,
Callout callout) {
Element area = callout.getArea();
int num = callout.getCallout();
String userLabel = areaLabel(area);
String label = "";
if (userLabel != null) {
label = userLabel;
}
try {
if (userLabel == null && num <= unicodeMax) {
int inName = 0;
AttributeCollection inAttr = null;
int namespaces[] = new int[1];
if (!unicodeFont.equals("")) {
if (foStylesheet) {
inName = namePool.allocate("fo", foURI, "inline");
inAttr = new AttributeCollection(namePool);
inAttr.addAttribute("", "", "font-family", "CDATA", unicodeFont);
} else {
inName = namePool.allocate("", "", "font");
inAttr = new AttributeCollection(namePool);
inAttr.addAttribute("", "", "face", "CDATA", unicodeFont);
}
startSpan(rtfEmitter);
rtfEmitter.startElement(inName, inAttr, namespaces, 0);
}
char chars[] = new char[1];
chars[0] = (char) (unicodeStart + num - 1);
rtfEmitter.characters(chars, 0, 1);
if (!unicodeFont.equals("")) {
rtfEmitter.endElement(inName);
endSpan(rtfEmitter);
}
} else {
formatTextCallout(rtfEmitter, callout);
}
} catch (TransformerException e) {
System.out.println("Transformer Exception in graphic formatCallout");
}
}
}