<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >Adding a new printer</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="The Developer's Guide to Gimp-Print" HREF="book1.html"><LINK REL="PREVIOUS" TITLE="Reporting Bugs" HREF="c194.html"><LINK REL="NEXT" TITLE="The driver file" HREF="x271.html"><META http-equiv="Content-Type" content="text/html; charset=UTF-8"></HEAD ><BODY CLASS="chapter" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >The Developer's Guide to Gimp-Print</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="c194.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x271.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="chapter" ><H1 ><A NAME="AEN200" ></A >Chapter 4. Adding a new printer</H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT ><A HREF="c200.html#AEN217" ><TT CLASS="filename" >printers.xml</TT ></A ></DT ><DT ><A HREF="x271.html" >The driver file</A ></DT ></DL ></DIV ><P > This chapter covers adding a new ESCP/2, PCL, or Canon printer. Writing a new driver module is not covered. </P ><P > The three steps to adding a printer are: <P ></P ><OL TYPE="1" ><LI ><P > Add an entry to <TT CLASS="filename" >printers.xml</TT >. </P ></LI ><LI ><P > Add the appropriate code and data to the appropriate driver module. </P ></LI ><LI ><P > Tune the printer. </P ></LI ></OL > </P ><P > Printer information is stored in two places: in <TT CLASS="filename" >printers.xml</TT > (which contains the list of printer models available to the the upper-level application), and in the appropriate driver file (<TT CLASS="filename" >print-escp2.c</TT >, <TT CLASS="filename" >print-pcl.c</TT >, or <TT CLASS="filename" >print-canon.c</TT >). </P ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="AEN217" ><TT CLASS="filename" >printers.xml</TT ></A ></H1 ><P > <TT CLASS="filename" >printers.xml</TT > is an XML file that contains very simple printer definitions. A schema may be used to validate the XML (<TT CLASS="filename" >src/main/gimpprint.xsd</TT >). This is an example definition: </P ><DIV CLASS="informalexample" ><P ></P ><A NAME="AEN223" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="programlisting" ><printer name="EPSON Stylus Color 1500" driver="escp2-1500"> <color value="true"/> <model value="2"/> <gamma value="0.597"/> <density value="1.0"/> </printer></PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P > There are other tags that may be present. The only ones that are mandatory are <VAR CLASS="literal" ><printer></VAR >, <VAR CLASS="literal" ><color></VAR > and <VAR CLASS="literal" ><model></VAR >. The other optional parameters (<VAR CLASS="literal" ><gamma></VAR > and <VAR CLASS="literal" ><density></VAR > in this case) can be used to adjust control settings. This is probably not the right place for them; the printer drivers themselves should contain this information. There's probably no good reason for anything but gamma and density to be in here. Gamma refers to the printer's gamma factor; density is the desired base ink density for the printer. The Epson driver contains the density information for each printer at each resolution internally. An even better driver would adjust density and possibly even gamma for paper type. All the more reason not to have that information here. </P ><P > If you really are curious about what tags are permitted, please see the schema. These are the definitions of the tags that do matter: </P ><P ></P ><DIV CLASS="variablelist" ><P ><B >printdef XML elements</B ></P ><DL ><DT ><VAR CLASS="literal" ><family></VAR ></DT ><DD ><P > This defines what driver module this printer uses. The attribute <VAR CLASS="literal" >name</VAR > is the name of the family driver to associate the printers with, for example <VAR CLASS="literal" >escp2</VAR >, <VAR CLASS="literal" >pcl</VAR >, <VAR CLASS="literal" >canon</VAR >, <VAR CLASS="literal" >ps</VAR > or <VAR CLASS="literal" >raw</VAR >. This tag may only contain <VAR CLASS="literal" ><printer></VAR > elements. </P ></DD ><DT ><VAR CLASS="literal" ><printer></VAR ></DT ><DD ><P > This starts the definition of a printer. It must contain the attributes <VAR CLASS="literal" >name</VAR > and <VAR CLASS="literal" >driver</VAR >. <VAR CLASS="literal" >name</VAR > should be is the full name of the printer, and must be human readable. <VAR CLASS="literal" >driver</VAR > should consist of alphanumerics and hyphens, and be fairly short. <VAR CLASS="literal" >name</VAR > is what will appear in the user-visible listing of printers, and may be translated into the user's language, while <VAR CLASS="literal" >driver</VAR > is what is actually used to key into the list of printers. It is legal to have multiple printers with the same driver name. </P ></DD ><DT ><VAR CLASS="literal" ><color></VAR ></DT ><DD ><P > This tag may not contain any content, but the <VAR CLASS="literal" >value</VAR > attribute may be set to <VAR CLASS="literal" >true</VAR > or <VAR CLASS="literal" >false</VAR >. This indicates that this printer is capable of color, or is not capable of color respectively. </P ></DD ><DT ><VAR CLASS="literal" ><model></VAR ></DT ><DD ><P > This defines a model number. This tag may not contain any content, but the <VAR CLASS="literal" >value</VAR > attribute may be set to a positive integer. This is passed into the driver, which may do whatever it cares to with it—index into a table, compute on, or whatever. This need not be unique. </P ></DD ></DL ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="c194.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x271.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Reporting Bugs</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >The driver file</TD ></TR ></TABLE ></DIV ></BODY ></HTML >