1238438Sdteskepackage com.nwalsh.xalan;
2238438Sdteske
3249746Sdteskeimport org.xml.sax.helpers.AttributesImpl;
4238438Sdteskeimport org.xml.sax.SAXException;
5238438Sdteskeimport org.w3c.dom.*;
6238438Sdteskeimport org.apache.xml.utils.DOMBuilder;
7238438Sdteskeimport com.nwalsh.xalan.Callout;
8238438Sdteskeimport org.apache.xml.utils.AttList;
9238438Sdteske
10238438Sdteske/**
11238438Sdteske * <p>Utility class for the Verbatim extension (ignore this).</p>
12238438Sdteske *
13238438Sdteske * <p>$Id: FormatDingbatCallout.java,v 1.1 2006/05/04 13:23:51 nwalsh Exp $</p>
14238438Sdteske *
15238438Sdteske * <p>Copyright (C) 2000, 2001 Norman Walsh.</p>
16238438Sdteske *
17238438Sdteske * <p><b>Change Log:</b></p>
18238438Sdteske * <dl>
19238438Sdteske * <dt>1.0</dt>
20238438Sdteske * <dd><p>Initial release.</p></dd>
21238438Sdteske * </dl>
22238438Sdteske *
23238438Sdteske * @author Norman Walsh
24238438Sdteske * <a href="mailto:ndw@nwalsh.com">ndw@nwalsh.com</a>
25238438Sdteske *
26238438Sdteske * @see Verbatim
27238438Sdteske *
28238438Sdteske * @version $Id: FormatDingbatCallout.java,v 1.1 2006/05/04 13:23:51 nwalsh Exp $
29238438Sdteske **/
30238438Sdteske
31240684Sdteskepublic class FormatDingbatCallout extends FormatCallout {
32240684Sdteske  int graphicsMax = 0;
33244675Sdteske
34240684Sdteske  public FormatDingbatCallout(int max, boolean fo) {
35240684Sdteske    graphicsMax = max;
36240684Sdteske    stylesheetFO = fo;
37238438Sdteske  }
38240684Sdteske
39238438Sdteske  public void formatCallout(DOMBuilder rtf,
40238438Sdteske			    Callout callout) {
41243112Sdteske    Element area = callout.getArea();
42238438Sdteske    int num = callout.getCallout();
43238438Sdteske    String label = areaLabel(area);
44238438Sdteske
45238438Sdteske    try {
46238438Sdteske      if (label == null && num <= graphicsMax) {
47238438Sdteske	AttributesImpl imgAttr = new AttributesImpl();
48238438Sdteske	String ns = "";
49238438Sdteske	String prefix = "";
50238438Sdteske	String imgName = "";
51238438Sdteske
52238438Sdteske	if (stylesheetFO) {
53251264Sdteske	  ns = foURI;
54251390Sdteske	  prefix = "fo:"; // FIXME: this could be a problem...
55251390Sdteske	  imgName = "inline";
56251390Sdteske	  imgAttr.addAttribute("", "font-family", "font-family", "CDATA",
57251390Sdteske			       "ZapfDingbats");
58251390Sdteske	} else {
59251390Sdteske	  ns = "";
60251390Sdteske	  prefix = "";
61251390Sdteske	  imgName = "font";
62251390Sdteske	  imgAttr.addAttribute("", "face", "face", "CDATA",
63251390Sdteske			       "ZapfDingbats");
64251390Sdteske	}
65251390Sdteske
66251390Sdteske	startSpan(rtf);
67238438Sdteske	rtf.startElement(ns, imgName, prefix+imgName, imgAttr);
68238438Sdteske
69251264Sdteske	char chars[] = new char[1];
70251264Sdteske	chars[0] = (char) (0x2775 + num);
71238438Sdteske	rtf.characters(chars, 0, 1);
72251190Sdteske
73251190Sdteske	rtf.endElement(ns, imgName, prefix+imgName);
74251190Sdteske	endSpan(rtf);
75251190Sdteske      } else {
76251190Sdteske	formatTextCallout(rtf, callout);
77251190Sdteske      }
78251190Sdteske    } catch (SAXException e) {
79238438Sdteske      System.out.println("SAX Exception in graphics formatCallout");
80249751Sdteske    }
81251390Sdteske  }
82251390Sdteske}
83251390Sdteske