1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 <!-- SECTION: Programming -->
5 <title>Introduction to CUPS Programming
</title>
6 <meta name=
"keywords" content=
"Programming">
7 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8">
8 <meta name=
"creator" content=
"Mini-XML v2.7">
9 <style type=
"text/css"><!--
11 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
14 H1, H2, H3, H4, H5, H6, P, TD, TH {
15 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
19 font-family: monaco, courier, monospace;
24 font-family: monaco, courier, monospace;
28 border: dotted thin #7f7f7f;
44 border: dotted thin #999999;
49 PRE.command EM, PRE.example EM {
50 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
54 font-family: monaco, courier, monospace;
65 border: solid thin #999999;
76 -moz-border-radius: 10px;
81 text-decoration: none;
84 A:link:hover, A:visited:hover, A:active {
85 text-decoration: underline;
92 TR.data, TD.data, TR.data TD {
95 border-bottom: solid 1pt #999999;
99 border-bottom: solid 1pt #999999;
106 border: solid thin #999999;
107 border-collapse: collapse;
123 border: solid thin #cccccc;
130 border-bottom: solid thin #999999;
139 caption-side: bottom;
163 border: thin solid black;
171 H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
180 border-bottom: solid 2pt #000000;
183 DIV.indent, TABLE.indent {
191 border-collapse: collapse;
194 TABLE.indent TD, TABLE.indent TH {
199 border-collapse: collapse;
207 border-bottom: solid thin #cccccc;
212 vertical-align: bottom;
221 border-bottom: solid thin #eeeeee;
226 TABLE.list TR:nth-child(even) {
230 TABLE.list TR:nth-child(odd) {
249 font-family: monaco, courier, monospace;
253 border: solid thin #999999;
254 border-collapse: collapse;
259 DIV.summary TABLE TD, DIV.summary TABLE TH {
260 border: solid thin #999999;
266 DIV.summary TABLE THEAD TH {
270 /* API documentation styles... */
277 div.body h3, div.body h4, div.body h5 {
278 margin-bottom: 0.5em;
281 .class, .enumeration, .function, .struct, .typedef, .union {
282 border-bottom: solid thin #999999;
289 code, p.code, pre, ul.code li {
290 font-family: monaco, courier, monospace;
293 ul.code, ul.contents, ul.subcontents {
294 list-style-type: none;
304 ul.contents li ul.code, ul.contents li ul.subcontents {
317 margin-bottom: 0.5em;
320 /* This is just for the HTML files generated with the framedhelp target */
323 border: solid thin black;
332 div.contents ul.contents {
335 div.contents ul.subcontents li {
344 "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
346 Introduction to CUPS programming header for CUPS.
348 Copyright 2008-2011 by Apple Inc.
350 These coded instructions, statements, and computer programs are the
351 property of Apple Inc. and are protected by Federal copyright
352 law. Distribution and use rights are outlined in the file "LICENSE.txt"
353 which should have been included with this file. If this file is
354 file is missing or damaged, see the license at "http://www.cups.org/".
357 <h1 class='title'
>Introduction to CUPS Programming
</h1>
359 <div class='summary'
><table summary='General Information'
>
370 cups/sidechannel.h
</th>
381 <td>Programming:
<a href='raster-driver.html' target='_top'
>Developing Raster Printer Drivers
</a><br>
382 Programming:
<a href='postscript-driver.html' target='_top'
>Developing PostScript Printer Drivers
</a><br>
383 Programming:
<a href='api-filter.html' target='_top'
>Filter and Backend Programming
</a><br>
384 Programming:
<a href='ppd-compiler.html' target='_top'
>Introduction to the PPD Compiler
</a><br>
385 Programming:
<a href='api-array.html' target='_top'
>Array API
</a><br>
386 Programming:
<a href='api-cups.html' target='_top'
>CUPS API
</a><br>
387 Programming:
<a href='api-filedir.html' target='_top'
>File and Directory APIs
</a><br>
388 Programming:
<a href='api-httpipp.html' target='_top'
>HTTP and IPP APIs
</a><br>
389 Programming:
<a href='api-ppd.html' target='_top'
>PPD API
</a><br>
390 Programming:
<a href='api-raster.html' target='_top'
>Raster API
</a><br>
391 References:
<a href='ref-ppdcfile.html' target='_top'
>PPD Compiler Driver Information File Reference
</a><br>
392 Specifications:
<a href='spec-ppd.html' target='_top'
>CUPS PPD Extensions
</a></td>
396 <h2 class=
"title">Contents
</h2>
397 <ul class=
"contents">
398 <li><a href=
"#OVERVIEW">Overview
</a></li>
399 <li><a href=
"#COMPILING">Compiling Programs
</a><ul class=
"subcontents">
400 <li><a href=
"#XCODE">Compiling with Xcode
</a></li>
401 <li><a href=
"#COMMANDLINE">Compiling with GCC
</a></li>
403 <li><a href=
"#WHERETOGO">Where to Go Next
</a></li>
406 "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
408 Introduction to CUPS programming content for CUPS.
410 Copyright 2008-2011 by Apple Inc.
412 These coded instructions, statements, and computer programs are the
413 property of Apple Inc. and are protected by Federal copyright
414 law. Distribution and use rights are outlined in the file "LICENSE.txt"
415 which should have been included with this file. If this file is
416 file is missing or damaged, see the license at "http://www.cups.org/".
419 <h2 class=
"title"><a name=
"OVERVIEW">Overview
</a></h2>
421 <p>CUPS provides two libraries that interface with the different parts of the
422 printing system. The
"cups" library provides all of the common application and
423 filter functions while the
"cupsimage" library provides all of the imaging
424 functions used in raster printer drivers. The
"cups" library functions are
425 accessed by including the
<var><cups/cups.h
></var> header, while
426 "cupsimage" functions are found in the
<var><cups/raster.h
></var>
429 <h2 class=
"title"><a name=
"COMPILING">Compiling Programs
</a></h2>
431 <p>The CUPS libraries can be used from any C, C++, or Objective C program.
432 The method of compiling against the libraries varies depending on the
433 operating system and installation of CUPS. The following sections show how
434 to compile a simple program (shown below) in two common environments.
</p>
436 <p>The following simple program lists the available printers on the system:
</p>
438 <pre class=
"example">
439 #include
<stdio.h
>
440 #include
<cups/cups.h
>
445 cups_dest_t *dests, *dest;
446 int num_dests = cupsGetDests(
&dests);
448 for (i = num_dests, dest = dests; i
> 0; i --, dest ++)
451 printf(
"%s/%s\n", dest-
>name, dest-
>instance);
460 <h3><a name=
"XCODE">Compiling with Xcode
</a></h3>
462 <p>In Xcode, choose
<var>New Project...
</var> from the
<var>File
</var> menu,
463 then select the
<var>Standard Tool
</var> project type under
<var>Command Line
464 Utility
</var>. Click
<var>Next
</var> and choose a project directory. Click
465 <var>Next
</var> to create the project.
</p>
467 <p>In the project window, double-click on the
<var>Targets
</var> group and
468 control-click on the simple target to show the context menu. Choose
469 <var>Existing Framework...
</var> from the
<var>Add
</var> submenu. When the file
470 chooser sheet appears, press the
<kbd>/
</kbd> key and enter
"/usr/lib". Scroll
471 down the file list and select the
<var>libcups.dylib
</var> file. Click the
472 <var>Add
</var> button in the file chooser and attributes sheets.
</p>
474 <p>In the project window, double-click on the
<var>main.c
</var> source file.
475 Replace the template source code with the listing above and save it. Click the
476 <var>Build and Go
</var> button to build the sample program and run it.
</p>
478 <h3><a name=
"COMMANDLINE">Compiling with GCC
</a></h3>
480 <p>From the command-line, create a file called
<var>sample.c
</var> using your
481 favorite editor and then run the following command to compile it with GCC and
484 <pre class=
"command">
485 gcc -o simple `cups-config --cflags` simple.c `cups-config --libs`
489 <p>The
<code>cups-config
</code> command provides the compiler flags
490 (
"cups-config --cflags") and libraries (
"cups-config --libs") needed for the
493 <h2 class=
"title"><a name=
"WHERETOGO">Where to Go Next
</a></h2>
495 <p>If you are developing a print filter, driver, or backend, see the
496 <a href=
"api-filter.html" target=
"_top">Filter and Backend Programming
</a>
497 guide. Raster printer driver developers should also read the
498 <a href=
"api-raster.html" target=
"_top">Raster API
</a> reference.
</p>