gutenprint: add gutenprint as a mandatory package.
* use the shared library libgutenprint.so * remove the xml data files from the tree and the Haiku package.
2
Jamfile
@ -17,7 +17,7 @@ AddHaikuImagePackages [ FFilterByBuildFeatures
|
||||
curl freetype icu libsolv zlib
|
||||
|
||||
regular_image @{
|
||||
bzip2 ctags ffmpeg findutils gawk glu grep jpeg less libpng
|
||||
bzip2 ctags ffmpeg findutils gawk glu grep gutenprint jpeg less libpng
|
||||
mesa mesa_devel mesa_swrast sed sharutils tar which
|
||||
}@
|
||||
] ;
|
||||
|
@ -210,7 +210,7 @@ if [ IsPackageAvailable gutenprint_devel ] {
|
||||
runtime: lib
|
||||
file: devel gutenprint_devel
|
||||
depends: base
|
||||
library: $(developLibDir)/libgutenprint.a
|
||||
library: $(developLibDir)/libgutenprint.so
|
||||
headers: $(developHeadersDir) $(developHeadersDir)/gutenprint
|
||||
;
|
||||
|
||||
|
@ -140,11 +140,6 @@ SEARCH on $(postInstallFiles)
|
||||
= [ FDirName $(HAIKU_TOP) data system boot post_install ] ;
|
||||
AddFilesToPackage boot post-install : $(postInstallFiles) ;
|
||||
|
||||
# Gutenprint data files
|
||||
CopyDirectoryToPackage data
|
||||
: [ FDirName $(HAIKU_TOP) src libs print libgutenprint src xml ]
|
||||
: gutenprint : -x *.c -x Makefile.am -x Makefile.in ;
|
||||
|
||||
# artwork and sounds
|
||||
local logoArtwork =
|
||||
$(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - big.png"
|
||||
|
@ -1,124 +0,0 @@
|
||||
The original version, up to release 2.0, of the Gimp Print plug-in was
|
||||
written by Mike Sweet <mike@easysw.com>.
|
||||
|
||||
Version 3.0, which is based on version 2, was written by Robert
|
||||
Krawitz <rlk@alum.mit.edu> in late 1999, and frozen in early 2000.
|
||||
The code was based on the 2.0 release.
|
||||
|
||||
Version 4.0 was developed by a team led by Robert Krawitz. It was
|
||||
released in November 2000. We hosted the development on SourceForge,
|
||||
a service provided to the free source community by VA Linux Systems.
|
||||
The complete hosting service provided by SourceForge permitted the
|
||||
development team to concentrate on improving the software rather than
|
||||
having to worry about maintaining a development system.
|
||||
|
||||
Version 4.2 was developed by the same team, with some additions, and
|
||||
was released in November 2001. Roger Leigh in particular has
|
||||
reimplemented the build system to match the GNU standard, making for a
|
||||
far more flexible and powerful system.
|
||||
|
||||
Version 4.3 is being developed by essentially the same team.
|
||||
|
||||
The list of contributors, in alphabetical order, is as follows. The
|
||||
principal areas that each contributed to are listed in addition.
|
||||
|
||||
Andreas Kemnade <akemnade@tzi.de>
|
||||
Cd printing support for Canon PIXMA printers
|
||||
|
||||
Andy Stewart <andystewart@attbi.com>
|
||||
User manual
|
||||
|
||||
Andy Thaller <thaller@ph.tum.de>
|
||||
Canon driver
|
||||
|
||||
Charles Briscoe-Smith <cpbs@debian.org>
|
||||
Epson driver
|
||||
Internals
|
||||
UI
|
||||
|
||||
Dave Hill <dave@minnie.demon.co.uk>
|
||||
PCL driver
|
||||
|
||||
David Pace <dpace@echo-on.net>
|
||||
Inspiration for user interface library
|
||||
Generalized print panel
|
||||
|
||||
Eric Sharkey <sharkey@ale.physics.sunysb.edu>
|
||||
Debian support
|
||||
Epson unprinter
|
||||
|
||||
Eugene Anikin <eugene@anikin.com>
|
||||
Performance instrumentation
|
||||
Sharp-eyed bug fixer
|
||||
|
||||
Grant Taylor <gtaylor@picante.com>
|
||||
Implementor of the "foomatic" spooler configuration system
|
||||
|
||||
Henryk "Buggs" Richter <tfa652@cks1.rz.uni-rostock.de>
|
||||
Initial implementation of the Ghostscript (stp) front end
|
||||
|
||||
Ian Young <ian@iay.org.uk>
|
||||
Documentation of the Epson driver
|
||||
Experimental inks/color management
|
||||
|
||||
Jean-Marc Verbavatz <verbavatz@ifrance.fr>
|
||||
Dithering and color management
|
||||
|
||||
Karl Heinz Kremer <khk@khk.net>
|
||||
Liaison with Epson
|
||||
Engineering and design
|
||||
|
||||
Karsten Festag <karsten.festag@gmx.de>
|
||||
Canon S200 support
|
||||
|
||||
Mark Tomlinson <mark.tomlinson@xtra.co.nz>
|
||||
Implementation of Raph Levien's EvenTone dither
|
||||
|
||||
Michael Mraka <michael.mraka@linux.cz>
|
||||
DyeSub (formerly Olympus) driver
|
||||
|
||||
Michael Natterer <mitschel@cs.tu-berlin.de>
|
||||
New user interface
|
||||
Liaison with the Gimp development team
|
||||
|
||||
Mike Sweet <mike@easysw.com>
|
||||
CUPS front end
|
||||
Portability
|
||||
Lots o'details
|
||||
|
||||
Peter Missel <peter.missel@eplus-online.de>
|
||||
Canon driver
|
||||
|
||||
Piotr Stachura <albert1@autocom.pl>
|
||||
Canon PIXMA iP4200 support
|
||||
|
||||
Richard Wisenoecker <Richard.Wisenoecker@gmx.at>
|
||||
Lexmark driver
|
||||
|
||||
Robert Krawitz <rlk@alum.mit.edu>
|
||||
Epson driver
|
||||
Dithering and color management
|
||||
User interface
|
||||
Engineering/Project lead
|
||||
Documentation
|
||||
Ghostscript front end
|
||||
|
||||
Roger Leigh <rleigh@debian.org>
|
||||
Complete reimplementation of the configure/build system
|
||||
Architecture
|
||||
Debian support
|
||||
|
||||
Sascha Sommer <saschasommer@freenet.de>
|
||||
Canon PIXMA support
|
||||
|
||||
Steve Kann <stevek@stevek.com>
|
||||
Roll feed support for Epson printers
|
||||
|
||||
Steve Miller <smiller@rni.net>
|
||||
User interface
|
||||
|
||||
Thomas Tonino <ttonino@bio.vu.nl>
|
||||
Vastly improved dithering and color management
|
||||
|
||||
Till Kamppeter <till.kamppeter@gmail.com>
|
||||
Foomatic interface
|
@ -1,340 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
@ -1,365 +0,0 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/system',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/system
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
@ -1,3 +0,0 @@
|
||||
SubDir HAIKU_TOP src libs print libgutenprint ;
|
||||
|
||||
SubInclude HAIKU_TOP src libs print libgutenprint src ;
|
@ -1,214 +0,0 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
## $Id: Makefile.am,v 1.155 2008/10/24 00:37:13 rleigh Exp $
|
||||
## Copyright (C) 2000-2004 Roger Leigh
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2, or (at your option)
|
||||
## any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 -I m4local
|
||||
|
||||
include $(top_srcdir)/scripts/global.mk
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
SUBDIRS = include src samples test po man doc scripts
|
||||
DISTDIRS = m4 m4extra
|
||||
|
||||
docdir = $(datadir)/$(PACKAGE)/doc
|
||||
|
||||
## Rules
|
||||
|
||||
# Libtool dependency
|
||||
libtool: $(LIBTOOL_DEPS)
|
||||
cd $(srcdir); \
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
# Don't list ChangeLog as a dependency here because it forces network
|
||||
# access, and because it usually runs as superuser rather than the user
|
||||
# who normally builds Gutenprint.
|
||||
install-data-local: NEWS AUTHORS COPYING README
|
||||
$(mkdir_p) $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/NEWS $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/ChangeLog $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/AUTHORS $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/COPYING $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(docdir)
|
||||
|
||||
# This rather strange-looking code ensures that the change log is only
|
||||
# rebuilt if any of the CVS/Entries files have changed since the change log
|
||||
# was last built.
|
||||
|
||||
ChangeLogPhony:
|
||||
@cd $(top_srcdir) ; \
|
||||
for f in `find . -name Entries -print | grep CVS` ; do \
|
||||
if @TEST@ ! -f ChangeLogStamp -o ChangeLogStamp -ot $$f ; then \
|
||||
rm -f ChangeLogStamp ; \
|
||||
touch ChangeLogStamp ; \
|
||||
fi ; \
|
||||
done
|
||||
|
||||
ChangeLogStamp: ChangeLogPhony
|
||||
@@TRUE@
|
||||
|
||||
ChangeLog: ChangeLogStamp
|
||||
@cd $(top_srcdir) ; \
|
||||
if test -f $(top_builddir)/.noupdate ; then \
|
||||
echo "$@: .noupdate found: NOT updating $@ from CVS" ; \
|
||||
elif test -d CVS ; then \
|
||||
echo "$@: Updating $@ from CVS" ; \
|
||||
cvs log | $(PERL) scripts/mkchlog -e @sourceforge.net -X src/xml/escp2/resolutions -s '^(guten|gimp-|)print-[0-9]+_' > $@.tmp ; \
|
||||
if test -s $@.tmp ; then \
|
||||
mv $@.tmp $@ ; \
|
||||
else \
|
||||
echo "$@: Failed to update $@ ['touch .noupdate' to skip]" ; \
|
||||
$(RM) $@.tmp ; \
|
||||
exit 1 ; \
|
||||
fi \
|
||||
elif test -s $@ ; then \
|
||||
echo "$@: This is not a CVS version of Gutenprint" ; \
|
||||
echo "$@: Not updating $@ from CVS!" ; \
|
||||
else \
|
||||
echo "$@: No $@ or $@ of zero size found!" ; \
|
||||
echo "$@: Failed to update $@ ['touch .noupdate' to skip]" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
|
||||
configure.in:
|
||||
$(LN_S) $(srcdir)/configure.ac $(srcdir)/configure.in
|
||||
|
||||
dist-time-check:
|
||||
@current_date=`date +%Y%m%d`; \
|
||||
configure_date=`ls -l --time-style=+%Y%m%d $(top_builddir)/configure | awk '{print $$6}'`; \
|
||||
echo "Checking that 'configure' was built today."; \
|
||||
if test "$$current_date" != "$$configure_date" ; then \
|
||||
echo "configure is out of date -- rerun ./autogen.sh first!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
dist-hook: dist-time-check
|
||||
for dir in $(DISTDIRS) ; do \
|
||||
if test -d $(srcdir)/$$dir ; then \
|
||||
mkdir $(distdir)/$$dir; \
|
||||
for dirfile in $(srcdir)/$$dir/*; do \
|
||||
if test -f $$dirfile ; then \
|
||||
cp -p $$dirfile $(distdir)/$$dir; \
|
||||
fi \
|
||||
done \
|
||||
fi \
|
||||
done
|
||||
# Remove configure.in (libtool bug workaround)
|
||||
$(RM) -f $(distdir)/configure.in
|
||||
# Remove any backup files found in distdir
|
||||
$(FIND) $(distdir) -name '.*' -print | xargs $(RM) -rf
|
||||
$(FIND) $(distdir) -name '#*' -print | xargs $(RM) -rf
|
||||
$(FIND) $(distdir) -name '*~' -print | xargs $(RM) -rf
|
||||
|
||||
install-cups: all
|
||||
cd src/cups ; \
|
||||
$(MAKE) install
|
||||
|
||||
install-ghost: all
|
||||
cd src/ghost ; \
|
||||
$(MAKE) install
|
||||
|
||||
install-gimp: all
|
||||
cd src/gimp ; \
|
||||
$(MAKE) install
|
||||
|
||||
docs:
|
||||
cd doc ; \
|
||||
$(MAKE) docs
|
||||
|
||||
html:
|
||||
cd doc ; \
|
||||
$(MAKE) html
|
||||
|
||||
ps:
|
||||
cd doc ; \
|
||||
$(MAKE) ps
|
||||
|
||||
pdf:
|
||||
cd doc ; \
|
||||
$(MAKE) pdf
|
||||
|
||||
snapshot:
|
||||
$(MAKE) dist distdir=$(PACKAGE)`date +"%Y%m%d"`
|
||||
|
||||
## Clean
|
||||
|
||||
CLEANSCRIPTS = \
|
||||
scripts/depcomp \
|
||||
scripts/install-sh \
|
||||
scripts/ltconfig \
|
||||
scripts/mdate-sh \
|
||||
scripts/missing \
|
||||
scripts/mkinstalldirs
|
||||
|
||||
CLEANMFOUR = \
|
||||
m4/codeset.m4 \
|
||||
m4/gettext.m4 \
|
||||
m4/glibc21.m4 \
|
||||
m4/iconv.m4 \
|
||||
m4/intdiv0.m4 \
|
||||
m4/inttypes_h.m4 \
|
||||
m4/inttypes.m4 \
|
||||
m4/inttypes-pri.m4 \
|
||||
m4/isc-posix.m4 \
|
||||
m4/lcmessage.m4 \
|
||||
m4/lib-ld.m4 \
|
||||
m4/lib-link.m4 \
|
||||
m4/lib-prefix.m4 \
|
||||
m4/progtest.m4 \
|
||||
m4/stdint_h.m4 \
|
||||
m4/uintmax_t.m4 \
|
||||
m4/ulonglong.m4
|
||||
|
||||
CLEANPO = \
|
||||
po/boldquot.sed \
|
||||
po/en@boldquot.header \
|
||||
po/en@quot.header \
|
||||
po/insert-header.sin \
|
||||
po/Makevars.template \
|
||||
po/quot.sed \
|
||||
po/remove-potcdate.sin \
|
||||
po/Rules-quot
|
||||
|
||||
CLEANFILES = .noupdate ChangeLog.tmp
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
ABOUT-NLS \
|
||||
INSTALL \
|
||||
aclocal.m4 \
|
||||
config.h.in \
|
||||
configure \
|
||||
configure.in \
|
||||
Makefile.in \
|
||||
stamp-h.in \
|
||||
stamp-h1.in \
|
||||
stamp-h2.in \
|
||||
stamp-h3.in \
|
||||
stamp-h4.in \
|
||||
$(CLEANSCRIPTS) \
|
||||
$(CLEANMFOUR) \
|
||||
$(CLEANPO)
|
||||
|
||||
EXTRA_DIST = autogen.sh ChangeLogStamp README.package
|
||||
|
||||
.PHONY: deb html install-cups install-gimp install-ghost snapshot ChangeLog Phony dist-time-check
|
||||
|
@ -1,821 +0,0 @@
|
||||
Welcome to Gutenprint 5.2.7! Please read these notes carefully.
|
||||
|
||||
*** NOTE TO PACKAGERS: Please read the file README.package for issues
|
||||
that are of interest to distributors and packagers of Gutenprint.
|
||||
It is not necessary for end users of Gutenprint to read this file.
|
||||
|
||||
================================================================
|
||||
|
||||
I) INTRODUCTION
|
||||
|
||||
This is Gutenprint version 5.2.7, a stable release of Gutenprint
|
||||
5.2. Gutenprint, formerly named Gimp-Print, is a suite of printer
|
||||
drivers that may be used with most common UNIX print spooling
|
||||
systems, including CUPS, lpr, LPRng, or others. These drivers
|
||||
provide high quality printing for UNIX (including Macintosh OS X
|
||||
10.3 and newer) and Linux systems in many cases equal to or better
|
||||
than proprietary vendor-supplied drivers. Gutenprint also
|
||||
includes an enhanced print plug-in for the GIMP image editor,
|
||||
replacing the Gimp-Print 4.2-based plugin supplied with GIMP 1.2,
|
||||
2.0, and 2.2, and offering an alternative with additional
|
||||
capabilities to the GtkPrint-based plugin supplied with GIMP 2.4
|
||||
and beyond.
|
||||
|
||||
Gutenprint has been renamed in order to clearly distinguish it
|
||||
from GIMP. While this package started out as the Print plugin for
|
||||
GIMP, it has expanded into a collection of general purpose printer
|
||||
drivers, and the enhanced Print plugin for GIMP is now only a
|
||||
small part of the package. Furthermore, the name Gutenprint
|
||||
recognizes Johannes Gutenberg, the inventor of the movable type
|
||||
printing press. Finally, the word "guten" means "good" in German.
|
||||
|
||||
Please read the user's manual (in ODF format as
|
||||
doc/gutenprint-users-manual.odt or PDF format as
|
||||
doc/gutenprint-users-manual.pdf) carefully, as it covers much more
|
||||
information than this README file. The user's manual contains a
|
||||
complete list of supported printers. In addition, please read the
|
||||
release notes (NEWS), as it has information on the latest changes.
|
||||
This package has changed significantly since Gutenprint 5.0.
|
||||
|
||||
Gutenprint supports only the printer part of multi-function
|
||||
devices (devices that typically include scanning, copying, and fax
|
||||
capabilities).
|
||||
|
||||
We recommend that all users who wish to use this package for
|
||||
general purpose printing use either CUPS or, if they use another
|
||||
printing system or no spooler at all, use Foomatic with the
|
||||
Ghostscript driver (both described below), rather than integrating
|
||||
the Ghostscript driver with self-made scripts or even manually
|
||||
typing in Ghostscript command lines. It is much simpler to manage
|
||||
with CUPS or Foomatic and its PPDs. CUPS provides an excellent
|
||||
web-based interface for easy printer administration, and all
|
||||
CUPS-enabled applications (OpenOffice.org, all KDE apps, etc.) and
|
||||
printing dialogs (kprinter, xpp, etc.) show all the options in
|
||||
easy to use GUIs. Please visit http://www.cups.org/ for
|
||||
information on downloading and installing CUPS.
|
||||
|
||||
|
||||
================================================================
|
||||
|
||||
II) INSTALLATION
|
||||
|
||||
This section is provided for people installing the package from
|
||||
source. If you are installing from a pre-compiled package (such
|
||||
as the Macintosh OS X package, or a package provided by your
|
||||
distribution vendor), you may skip this section.
|
||||
|
||||
Installing packages from source requires some level of system
|
||||
administration skills along with superuser privileges. Superuser
|
||||
privilege allows you to perform actions that may be damaging to
|
||||
your system. If you are not comfortable with the material
|
||||
discussed here and in the release notes, or with performing simple
|
||||
administrative actions, we recommend that you not attempt to
|
||||
install this package from source.
|
||||
|
||||
Before beginning, please read the release notes carefully for any
|
||||
updates.
|
||||
|
||||
----------------
|
||||
|
||||
A) OVERVIEW
|
||||
|
||||
Gutenprint includes the following primary components:
|
||||
|
||||
- The core driver library (required for everything else)
|
||||
- A CUPS (Common UNIX Printing System) driver
|
||||
- An enhanced Print plug-in for GIMP
|
||||
- GTK-based UI libraries (used by the enhanced GIMP plug-in)
|
||||
- Support for the Foomatic spooler configuration system
|
||||
- A Ghostscript driver using the IJS plugin facility
|
||||
- A command-line utility to administer and maintain Epson
|
||||
printers
|
||||
|
||||
This package requires the use of GNU Make to compile. On systems
|
||||
with both GNU make and another make installed, GNU make may be
|
||||
named `gmake' or `gnumake'. BSD users in particular must take
|
||||
care to use 'gmake'.
|
||||
|
||||
The general procedure to build Gutenprint is as follows:
|
||||
|
||||
./configure [options]
|
||||
make
|
||||
make install
|
||||
|
||||
The "configure" script, which must be run before doing anything
|
||||
else, controls which of these components are built along with any
|
||||
options desired. This script determines what software is
|
||||
installed on your system and what components will be compatible
|
||||
with it, and prepares the package to be built and installed. If
|
||||
the script emits any warnings or errors, please be certain that
|
||||
you understand them before proceeding.
|
||||
|
||||
After the configure script has completed its work, it will print
|
||||
a summary of its choices. Please ensure that it is correct before
|
||||
proceeding. The summary looks like this:
|
||||
|
||||
Configuration Summary:
|
||||
------------- --------
|
||||
|
||||
If you have any problems, please report the information below to
|
||||
gimp-print-devel@lists.sourceforge.net
|
||||
|
||||
================================================================
|
||||
Release: gutenprint 5.2.7 generated on 02 Mar 2011
|
||||
|
||||
Features:
|
||||
Build CUPS: yes, installing in /usr
|
||||
Build CUPS 1.2 enhancements: yes
|
||||
Build CUPS PPD files: no
|
||||
Generate PS level 3 CUPS PPD files: yes
|
||||
Build genppd statically: yes
|
||||
Build Ghostscript IJS driver: yes
|
||||
Build Foomatic data: yes
|
||||
Build Foomatic 3.x data: yes
|
||||
Build enhanced Print plugin for GIMP: yes
|
||||
GIMP plugin will be named: gutenprint
|
||||
Install plugin(s) in home directory: no
|
||||
Build EPSON Stylus utility: yes
|
||||
Build test programs: yes
|
||||
Build testpattern generator: yes
|
||||
|
||||
Installation summary:
|
||||
Installation prefix: /usr/local
|
||||
Data directory: /usr/local/share/gutenprint
|
||||
Library directory: /usr/local/lib/gutenprint
|
||||
XML data directory: /usr/local/share/gutenprint/5.2/xml
|
||||
Module directory: /usr/local/lib/gutenprint/5.2/modules
|
||||
Install sample images: yes
|
||||
|
||||
General configuration:
|
||||
Compiler options: -Disfinite=finite -O6 -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wwrite-strings -Werror-implicit-function-declaration -Winline -Wformat=2 -finline-limit=131072 -pedantic -Waggregate-return -Wcast-qual -Wshadow -Wredundant-decls
|
||||
Build static libraries: yes
|
||||
Build shared libraries: no
|
||||
Maintainer mode: yes
|
||||
Use i18n: yes
|
||||
Generate profiling information: no
|
||||
Generate debugging symbols: no
|
||||
Use modules: static
|
||||
Use readline libraries: yes, extra arguments: -lncurses
|
||||
uname -a output: Linux dsl092-065-009 2.6.27.45-0.1-default #1 SMP 2010-02-22 16:49:47 +0100 x86_64 x86_64 x86_64 GNU/Linux
|
||||
================================================================
|
||||
|
||||
The CUPS, GIMP, Foomatic, and Ghostscript components require that
|
||||
the appropriate packages be installed on your system. Many
|
||||
distribution vendors separate packages into runtime and
|
||||
development packages. The development packages are required in
|
||||
order to successfully compile Gutenprint. In many cases the
|
||||
configure script cannot detect whether these development packages
|
||||
are installed, in which case you will get an error during
|
||||
compilation. Also note that it is necessary for the versions of
|
||||
the development packages to match exactly the versions of the
|
||||
runtime packages they are related to.
|
||||
|
||||
PLEASE INSPECT THE OUTPUT CAREFULLY BEFORE PROCEEDING. If you
|
||||
expect to build a particular component (particularly the CUPS
|
||||
driver or enhanced Print plugin for GIMP), and the configure
|
||||
output states that that component will not be built, please make
|
||||
certain that you have the required development packages installed,
|
||||
as described below in the sections for the particular components.
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
B) CORE DRIVER LIBRARY
|
||||
|
||||
The core driver library, which is always built, contains all of
|
||||
the printer drivers comprising the Gutenprint package. When the
|
||||
package is built, it consists of a core library (libgutenprint), a
|
||||
set of XML files, and depending upon the options selected,
|
||||
additional libraries containing the drivers for each family of
|
||||
printers.
|
||||
|
||||
By default dynamically loadable modules (plug-ins) will be built
|
||||
for the family drivers, and loaded at run-time if your operating
|
||||
system supports it. If you experience problems,
|
||||
--with-modules=dlopen or --with-modules=ltdl may be used to select
|
||||
the module loading method (dlopen is the default, but GNU libltdl
|
||||
is more portable), or --with-modules=static or --without-modules
|
||||
disables them. If you wish to compile Gutenprint entirely
|
||||
statically (with no use of shared libraries), you may use the
|
||||
option --disable-shared.
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
C) CUPS
|
||||
|
||||
Gutenprint may be used as a driver under CUPS (Common UNIX
|
||||
Printing System), if your system uses that spooler. Full
|
||||
description of CUPS is beyond the scope of this README file; full
|
||||
information may be found at http://www.cups.org. Gutenprint 5.2
|
||||
requires CUPS 1.1.9 or higher. We recommend use of 1.1.15 or
|
||||
above; that release of CUPS fixes some important bugs. Gutenprint
|
||||
supports CUPS 1.2, and supports the CUPS 1.2 enhancements,
|
||||
including dynamic PPD file generation.
|
||||
|
||||
Gutenprint will normally detect the presence of CUPS on your
|
||||
system and will attempt to build the CUPS driver if it finds CUPS
|
||||
installed. If your distribution separates the CUPS installation
|
||||
into development and runtime packages, you must install the CUPS
|
||||
development package (cups-devel or similar). You may need to
|
||||
install other development packages depending upon how your
|
||||
distribution has built CUPS. The list of packages varies, but
|
||||
commonly development packages for TIFF (libtiff-devel), JPEG
|
||||
(jpeg-devel or libjpeg-devel), PNG (libpng-devel), OpenSSL
|
||||
(openssl-devel), and libc (glibc-devel or libc-devel) will be
|
||||
required. Failure to install these packages will lead to errors
|
||||
when the package is compiled. The errors will typically look like
|
||||
this; the important error is "cups/cups.h: No such file or
|
||||
directory" (other ".h" files may also be missing, depending upon
|
||||
the missing packages):
|
||||
|
||||
make[3]: Entering directory `/opt/gutenprint/gutenprint-5.2.7/src/cups'
|
||||
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../include
|
||||
-Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes
|
||||
-Wmissing-declarations -Wnested-externs -Wwrite-strings
|
||||
-Werror-implicit-function-declaration -Winline -Wformat=2
|
||||
-finline-limit=131072 -DCUPS_DRIVER_INTERFACE -DALL_LINGUAS='"cs da
|
||||
de el en_GB es fr hu it ja nb nl pl pt sk sv zh_TW"'
|
||||
-Disfinite=finite -O6 -MT gutenprint_5_2-genppd.o -MD -MP -MF
|
||||
.deps/gutenprint_5_2-genppd.Tpo -c -o gutenprint_5_2-genppd.o
|
||||
`test -f 'genppd.c' || echo './'`genppd.c
|
||||
genppd.c:79:23: error: cups/cups.h: No such file or directory
|
||||
genppd.c:80:25: error: cups/raster.h: No such file or directory
|
||||
make[3]: *** [gutenprint_5_2-genppd.o] Error 1
|
||||
make[3]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7/src/cups'
|
||||
make[2]: *** [all-recursive] Error 1
|
||||
make[2]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7/src'
|
||||
make[1]: *** [all-recursive] Error 1
|
||||
make[1]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7'
|
||||
make: *** [all] Error 2
|
||||
|
||||
Installing the CUPS driver for Gutenprint 5.2 will not interfere
|
||||
with your ability to continue using the Gutenprint 5.0 or
|
||||
Gimp-Print 4.2 CUPS driver.
|
||||
|
||||
WARNING: The "canon" and "epson" CUPS backends that previously
|
||||
were distributed with Gutenprint are no longer distributed, so you
|
||||
will need to ensure that none of your printer queues use these
|
||||
backends. Please read the Critical Upgrade Note in the release
|
||||
notes for more information and the procedure for modifying your
|
||||
printer queues.
|
||||
|
||||
The Gutenprint CUPS driver consists of the following components:
|
||||
|
||||
* The core Gutenprint CUPS driver, rastertogutenprint.5.2. This
|
||||
is a CUPS filter that converts CUPS raster data into
|
||||
printer-specific data. This is most commonly installed in
|
||||
/usr/lib/cups/filter.
|
||||
|
||||
* Additional utilities to send certain commands to these printers
|
||||
are installed as commandtocanon and commandtoepson; they are
|
||||
installed in /usr/lib/cups/filter.
|
||||
|
||||
* One or more sets of PPD files describing all of the printers
|
||||
supported by Gutenprint. These are normally installed in
|
||||
/usr/share/cups/model/gutenprint. These PPD files can only be
|
||||
used by the precise version of Gutenprint that they were built
|
||||
with; for example, it is not possible to use PPD files from
|
||||
Gutenprint 5.0.0 with Gutenprint 5.2.0.
|
||||
|
||||
If you are using CUPS 1.2 or above, these PPD files are not
|
||||
actually installed by default. Instead, a CUPS driver generates
|
||||
these PPD files on demand.
|
||||
|
||||
* A utility to update PPD files from an earlier release of
|
||||
Gutenprint, cups-genppdupdate. This utility may be used to
|
||||
update PPD files generated by earlier versions of Gutenprint
|
||||
starting from 4.3.21, including any 5.0, 5.1, or 5.2 release or
|
||||
pre-release. This is normally installed in /usr/sbin. This
|
||||
utility cannot update PPD files from Gimp-Print 4.2.
|
||||
|
||||
* A utility to generate PPD files, cups-genppd.5.2. Normally this
|
||||
is only required when the package is built, and only with CUPS
|
||||
1.1.
|
||||
|
||||
* A driver to generate PPD files on the fly, gutenprint.5.2. This
|
||||
is normally used to generate PPD files on the fly with CUPS 1.2
|
||||
and above.
|
||||
|
||||
* A utility to permit additional color calibration for
|
||||
Gutenprint-supported printers, cups-calibrate. This is normally
|
||||
installed in /usr/bin.
|
||||
|
||||
WARNING: With certain versions of CUPS and in certain non-standard
|
||||
configurations, if a new version of Gutenprint is installed
|
||||
over an existing version genppd will create PPD files based on
|
||||
the older version of Gutenprint rather than the newer version.
|
||||
This will happen if all of the following are true:
|
||||
|
||||
i) The cups-config provided by the CUPS driver adds
|
||||
-Wl,rpath=/usr/lib (or wherever the CUPS system libraries
|
||||
live). This is done by some versions of CUPS reportedly
|
||||
because in some cases the runtime linker does not pick up
|
||||
libraries out of /usr/lib. This can be checked by running
|
||||
|
||||
cups-config --libs --ldflags
|
||||
|
||||
and inspecting the output for any mention of "rpath",
|
||||
"RPATH", "RUN_PATH", or the like. This is controlled by
|
||||
the CUPS installation on your system.
|
||||
|
||||
ii) There is presently a version of Gutenprint installed in
|
||||
the system default, typically /usr (--prefix=/usr) rather
|
||||
than /usr/local or the like. The default location of
|
||||
Gutenprint installation is in /usr/local, but system
|
||||
vendors typically install Gutenprint in /usr.
|
||||
|
||||
iii) Gutenprint is built dynamically only (--disable-static or
|
||||
--disable-static-genppd). This is not standard, and
|
||||
requires the explicit --disable-static or
|
||||
--disable-static-genppd on the Gutenprint "configure"
|
||||
command line. Therefore, if you build Gutenprint normally
|
||||
you should not be vulnerable to this problem.
|
||||
|
||||
iv) Gutenprint is configured to build the PPD files at compile
|
||||
time. This is the case when using CUPS 1.1, but is not the
|
||||
case when using CUPS 1.2 unless you explicitly use
|
||||
--enable-cups-ppds.
|
||||
|
||||
Note that in general if you install CUPS into a non-standard
|
||||
location, and install Gutenprint into the same location, this
|
||||
problem can surface. For example, if you choose to install
|
||||
CUPS in /usr/local and Gutenprint in /usr/local you are
|
||||
vulnerable to this. However, it is not standard practice to
|
||||
install CUPS anywhere but /usr.
|
||||
|
||||
In this case, the run path embedded in the genppd executable
|
||||
points to the version of Gutenprint installed in /usr/lib.
|
||||
This run path overrides any attempt by libtool to look in the
|
||||
build directory. The result is that cups-genppd and
|
||||
rastertogutenprint are run against the older version of
|
||||
Gutenprint. If the new version contains additional features
|
||||
(more printers, changes to printer options, etc.) they will
|
||||
not be available.
|
||||
|
||||
This bug is difficult to detect in a normal build. It
|
||||
normally does not cause an error to happen during build unless
|
||||
there is an API change from the version installed and the
|
||||
version being built; the only failure is frequently that some
|
||||
PPD files may not be built or may be built with missing
|
||||
options. Due to the PPD version checking introduced in this
|
||||
release, the behavior might manifest itself as a runtime
|
||||
error. It is also possible that there will be no error at all
|
||||
other than the older version of Gutenprint being used, with
|
||||
the result that new features and bug fixes are not available.
|
||||
|
||||
If you wish to use only shared libraries, do not wish to build
|
||||
static libraries at all, and are vulnerable to this issue
|
||||
(because cups-config --ldflags sets the run path), there are
|
||||
three workarounds available:
|
||||
|
||||
i) Build and install Gutenprint into /usr (rather than
|
||||
/usr/local) and then rebuild Gutenprint from scratch. This
|
||||
will install the correct libgutenprint.so in /usr/lib, and
|
||||
in the rebuild genppd will be run against the correct
|
||||
library.
|
||||
|
||||
ii) Remove the old version of Gutenprint prior to building the
|
||||
new version of Gutenprint. The important files to remove
|
||||
are anything named /usr/lib/libgutenprint*.
|
||||
|
||||
iii) Edit cups-config to remove the reference to the run path.
|
||||
|
||||
Following installation of the package with "make install", you
|
||||
must restart CUPS to permit CUPS to see the new PPD files. The
|
||||
exact command to restart CUPS varies; it is typically something
|
||||
like /etc/init.d/cups restart, /etc/software/init.d/cups restart,
|
||||
/etc/rc.d/cups restart, /usr/sbin/rccups, or even
|
||||
/etc/rc.d/init.d/cups restart. Your system may have a different
|
||||
way to restart the CUPS server. OS X (10.3, 10.4, and 10.5), for
|
||||
example, uses the following command:
|
||||
|
||||
sudo /System/Library/StartupItems/PrintingServices/PrintingServices.sh restart
|
||||
|
||||
You may optionally choose to update your existing PPD files using
|
||||
the command cups-genppdupdate, after which you should restart CUPS
|
||||
as described above. We strongly recommend use of this update
|
||||
procedure, which is fast and simple. This script will
|
||||
automatically update Gutenprint PPD files from earlier versions
|
||||
(5.0, 5.1, or 5.2 release or prerelease). This script will only
|
||||
update PPD files from earlier versions of Gutenprint; it will not
|
||||
update Gimp-Print 4.2 PPD files or PPD files from other drivers.
|
||||
However, you may install Gutenprint 5.2 alongside Gimp-Print 4.2,
|
||||
and use both Gimp-Print 4.2 and Gutenprint 5.2 drivers
|
||||
concurrently in separate printer queues. Therefore, you need not
|
||||
convert a workflow based on Gimp-Print 4.2 right away, but can
|
||||
gradually convert or even permanently use both drivers for
|
||||
different printer queues.
|
||||
|
||||
The following options to configure are available for compiling the
|
||||
Gutenprint driver for CUPS:
|
||||
|
||||
--enable-cups-ppds
|
||||
|
||||
With CUPS 1.2, it is possible to arrange for PPD files to be
|
||||
generated when a new printer queue is generated rather than
|
||||
having all pre-generated PPD files in the filesystem. This
|
||||
saves considerable disk space and avoids the possible build
|
||||
problem described above. Normally, Gutenprint detects which
|
||||
version of CUPS is in use and configures itself to create the
|
||||
PPD files at build time only when CUPS 1.1 is in use.
|
||||
|
||||
If you wish to generate the PPD files at build time, you may
|
||||
use this option. If you are running CUPS 1.1, and for some
|
||||
reason do not wish to generate the PPD files, you may use
|
||||
--disable-cups-ppds.
|
||||
|
||||
--disable-translated-cups-ppds
|
||||
|
||||
By default, PPD files for all languages available in
|
||||
Gutenprint are created. If this option is used, only the
|
||||
default (US-English) PPD files are created. Distributors may
|
||||
wish to package up the PPD files separately for each language.
|
||||
|
||||
Some systems may not build the translated PPD files correctly,
|
||||
in which case all of the PPD files will be in English. If
|
||||
this is the case on your system, you should use
|
||||
--disable-translated-cups-ppds to avoid having many duplicate
|
||||
PPD files.
|
||||
|
||||
--disable-globalized-cups-ppds
|
||||
|
||||
Starting with Gutenprint 5.2, Gutenprint builds PPD files
|
||||
containing translations for all languages if CUPS 1.2 or above
|
||||
is in use. This greatly reduces the number of PPD files
|
||||
created or PPD file choices offered.
|
||||
|
||||
If you have problems with the globalized PPD files, you may
|
||||
use this option to generate standard translated PPD files (or
|
||||
English-only, if --disable-translated-cups-ppds is also in
|
||||
use). This option only has effect if --enable-cups-ppds is
|
||||
used.
|
||||
|
||||
--enable-simplified-cups-ppds
|
||||
|
||||
Gutenprint 5.2 offers an option of creating simplified PPD
|
||||
files (containing only basic options and standard paper sizes)
|
||||
in addition to PPD files offering all available options
|
||||
(including all color correction options). If this option is
|
||||
used, both the simplified and standard PPD files are created.
|
||||
If --enable-simplified-cups-ppds=only is specified, only the
|
||||
simplified PPD files are built.
|
||||
|
||||
If the new dynamic PPD file generation is used with CUPS 1.2,
|
||||
the simplified PPD files are always offered.
|
||||
|
||||
--disable-cups-level3-ppds
|
||||
|
||||
By default, the Gutenprint PPD files are configured for
|
||||
PostScript Level 3. If this option is used, Level 2 PPD files
|
||||
are created. This may be useful if you are using a version of
|
||||
CUPS older than 1.1.15. It is normally not necessary to use
|
||||
this explicitly, as the configure script detects the version
|
||||
of CUPS in use and selects the appropriate PostScript level
|
||||
automatically.
|
||||
|
||||
--disable-cups-ppds-at-top-level
|
||||
|
||||
Normally, the PPD files are placed in
|
||||
/usr/share/cups/model/gutenprint/5.2. If this option is used,
|
||||
the PPD files are placed in /usr/share/cups/model. There is
|
||||
normally no good reason to use this option.
|
||||
|
||||
--disable-static-genppd
|
||||
|
||||
Build genppd and rastertogutenprint dynamically linked rather
|
||||
than statically linked. WARNING: Use of this option may lead
|
||||
to failure during build or installation, or incorrect
|
||||
installation. It is *STRONGLY* recommended that you not use
|
||||
this option unless you are certain that you understand the
|
||||
problem and how to work around it.
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
D) FOOMATIC
|
||||
|
||||
Foomatic is a printer meta-driver that can be used with any
|
||||
spooler (CUPS, lpd, LPRng, etc.) or even no spooler at all. It
|
||||
uses XML data describing printer and driver capabilities in
|
||||
conjunction with Ghostscript to allow printing in any environment.
|
||||
Please visit http://www.openprinting.org/foomatic.html for more
|
||||
information.
|
||||
|
||||
We normally recommend using the native CUPS driver described above
|
||||
if your system uses CUPS as its spooler. However, some systems
|
||||
(many releases of Fedora Core, for example) use Foomatic as the
|
||||
repository for all printer information; the tools provided on
|
||||
those systems will not recognize the CUPS PPD files. If your
|
||||
system uses Foomatic in this way, or does not use CUPS, you should
|
||||
use Foomatic to manage your printers. If you are using CUPS,
|
||||
however, we strongly recommend using the CUPS driver described in
|
||||
the previous section in preference to Foomatic.
|
||||
|
||||
The Gutenprint driver for Foomatic requires Foomatic 2.0 or
|
||||
higher; Foomatic 3.0 or above is highly recommended. It also
|
||||
requires GNU Ghostscript 6.53 or newer, AFPL Ghostscript 7.04 or
|
||||
newer, or ESP Ghostscript 7.05 or newer for IJS support. We
|
||||
recommend Ghostscript 8 or above.
|
||||
|
||||
The Foomatic support in Gutenprint consists of a data generator
|
||||
and an IJS-based Ghostscript driver. It is possible to use the
|
||||
Ghostscript driver without Foomatic, but the Gutenprint options
|
||||
are complex and subject to change without notice. Older printer
|
||||
configuration tools such as apsfilter and magicfilter do not
|
||||
provide a convenient interface to the driver's capabilities.
|
||||
Therefore, we no longer provide documentation on direct use of the
|
||||
Ghostscript driver without the Foomatic front end.
|
||||
|
||||
The Ghostscript driver in Gutenprint 5.2 is based on the IJS
|
||||
protocol. IJS is a protocol originally developed by
|
||||
Hewlett-Packard to allow new drivers to be used with Ghostscript
|
||||
without having to be compiled into Ghostscript.
|
||||
|
||||
Gutenprint 5.2 offers two Foomatic drivers, one supporting the
|
||||
full range of options and the other supporting simplified options,
|
||||
as describe above under CUPS. The full-featured driver is named
|
||||
"gutenprint-ijs.5.2"; the simplified driver is named
|
||||
"gutenprint-ijs-simplified.5.2".
|
||||
|
||||
Gutenprint 5.2 may coexist with Gimp-Print 4.2; both drivers may
|
||||
be installed and used (on separate printer queues, of course) on
|
||||
the same system.
|
||||
|
||||
Normally, the Gutenprint configure script will automatically
|
||||
detect the presence of Foomatic and Ghostscript on your system.
|
||||
In some cases, you may have to install a Ghostscript development
|
||||
package that may be named gs-devel, ghostscript-library, or the
|
||||
like for the IJS capability.
|
||||
|
||||
The Foomatic driver will not allow use of PPD files created from
|
||||
Foomatic data from a different version of Gutenprint. This
|
||||
ensures that the PPD files accurately match the driver in use.
|
||||
However, there is no automatic upgrade tool provided for the
|
||||
Foomatic driver, unlike the CUPS driver. Therefore, all queues
|
||||
using a Gutenprint driver must be updated manually, using either
|
||||
tools provided by your distribution or the Foomatic tool
|
||||
"foomatic-ppdfile".
|
||||
|
||||
NOTES TO PACKAGERS:
|
||||
|
||||
* We recommend packaging the IJS driver
|
||||
(/usr/bin/ijsgutenprint.5.2) and its man page
|
||||
(/usr/man/man1/ijsgutenprint.1.gz) together with the Foomatic
|
||||
data.
|
||||
|
||||
* The IJS driver and the Foomatic data kit and PPD files are
|
||||
versioned, and hence you should consider permitting multiple
|
||||
versions to be installed concurrently. The man page
|
||||
(/usr/man/man1/ijsgutenprint.1.gz) is not versioned.
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
E) GIMP
|
||||
|
||||
Gutenprint may be used as an enhanced Print plug-in for GIMP (2.0
|
||||
and above), providing the ability to print images. Please read
|
||||
the release notes in addition to this README. Gutenprint 5.2 no
|
||||
longer supports GIMP 1.2.
|
||||
|
||||
The enhanced Print plugin for GIMP replaces the Gimp-Print
|
||||
4.2-based plugin provided with GIMP 2.0 and 2.2. As of the GIMP
|
||||
2.4, GIMP team provides a new Print plugin based on the GtkPrint
|
||||
framework. This plugin provides standard printing capabilities,
|
||||
but does not provide all of the new Gutenprint 5.2 features.
|
||||
Therefore, the enhanced Print plugin for GIMP distributed with
|
||||
Gutenprint does not replace that plugin, but is installed
|
||||
alongside that plugin.
|
||||
|
||||
If your system separates development packages from runtime
|
||||
packages, you will typically have to install development packages
|
||||
for GIMP itself, in addition to Gtk and Glib. With GIMP 2.x and
|
||||
GTK 2.x, additional packages may be required. Failure to install
|
||||
these packages will lead to errors when the package is compiled.
|
||||
The errors will typically look like this; the important errors are
|
||||
the ones "No such file or directory".
|
||||
|
||||
make[3]: Entering directory `/opt/gutenprint/gutenprint-5.2.7/src/gimp2'
|
||||
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../include
|
||||
-Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes
|
||||
-Wmissing-declarations -Wnested-externs -Wwrite-strings
|
||||
-Werror-implicit-function-declaration -Winline -Wformat=2
|
||||
-finline-limit=131072 -Disfinite=finite -O6 -MT print-image-gimp.o
|
||||
-MD -MP -MF .deps/print-image-gimp.Tpo -c -o print-image-gimp.o
|
||||
print-image-gimp.c
|
||||
In file included from print-image-gimp.c:30:
|
||||
print_gimp.h:36:21: error: gtk/gtk.h: No such file or directory
|
||||
print_gimp.h:37:26: error: libgimp/gimp.h: No such file or directory
|
||||
print_gimp.h:38:28: error: libgimp/gimpui.h: No such file or directory
|
||||
make[3]: *** [print-image-gimp.o] Error 1
|
||||
make[3]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7/src/gimp2'
|
||||
make[2]: *** [all-recursive] Error 1
|
||||
make[2]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7/src'
|
||||
make[1]: *** [all-recursive] Error 1
|
||||
make[1]: Leaving directory `/opt/gutenprint/gutenprint-5.2.7'
|
||||
make: *** [all] Error 2
|
||||
|
||||
Normally, the Gutenprint configure script detects which version,
|
||||
if any, of GIMP is installed and builds an appropriate plugin. If
|
||||
the configure script does not detect it properly, you may need to
|
||||
specify --with-gimp or --with-gimp2. However, it's more likely
|
||||
that you need to install appropriate development packages.
|
||||
|
||||
Normally Gutenprint installs GIMP Print plugin in your system
|
||||
plug-in directory. If you wish to install it in your personal
|
||||
plugin directory, you may use
|
||||
|
||||
./configure --enable-user-install
|
||||
|
||||
It is not possible for Gimp-Print 4.2, Gutenprint 5.0, and
|
||||
Gutenprint 5.2 (or any future release) to coexist in the same
|
||||
installation of GIMP. The Gutenprint 5.2-based plugin can read
|
||||
settings from previous versions of Gutenprint and Gimp-Print, but
|
||||
the configuration file format in Gutenprint 5.2 cannot be read by
|
||||
older versions of Gimp-Print or Gutenprint.
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
F) ESCPUTIL
|
||||
|
||||
"escputil" is a command line utility for administering Epson
|
||||
inkjet printers. It performs head alignment, retrieval of ink
|
||||
levels and status information, printing of test patterns, etc. It
|
||||
is built and installed by default; if you don't want it, you may
|
||||
use --without-escputil when configuring.
|
||||
|
||||
escputil uses the readline package for interactive commands
|
||||
(currently only head alignment falls into this category). Linking
|
||||
against libreadline sometimes requires linking against other
|
||||
packages. Gutenprint attempts to determine the correct packages
|
||||
to link against; the exact sequence is described in the release
|
||||
notes. If you do not wish to use readline, you may use
|
||||
--without-readline.
|
||||
|
||||
|
||||
================================================================
|
||||
|
||||
III) GETTING STARTED
|
||||
|
||||
This section describes how to get started by installing printers
|
||||
under Gutenprint. Please see the user's manual (in
|
||||
doc/gutenprint-users-manual.odt or
|
||||
doc/gutenprint-users-manual.pdf) for more information.
|
||||
|
||||
----------------
|
||||
|
||||
A) PRINTER INSTALLATION
|
||||
|
||||
The actual procedure to install a printer depends upon your
|
||||
operating system and the spooler (printing system) in use on your
|
||||
system.
|
||||
|
||||
Gutenprint does not normally require the use of non-standard
|
||||
procedures (such as starting special programs) to install
|
||||
printers. Assuming that you are using either CUPS or Foomatic, it
|
||||
integrates with your printing system, so the tools provided by
|
||||
your distribution vendor should work correctly with Gutenprint.
|
||||
|
||||
Most printing systems currently use PPD files to describe printer
|
||||
capabilities. Some printers are supported by more than one
|
||||
driver, so you may find more than one PPD file for your printer.
|
||||
Gutenprint PPD files are described as
|
||||
|
||||
Epson Stylus Photo R300 - CUPS+Gutenprint v5.2.0
|
||||
Epson Stylus Photo R300 - CUPS+Gutenprint v5.2.0 Simplified
|
||||
Epson Stylus Photo R300 Foomatic/gutenprint-ijs.5.2
|
||||
Epson Stylus Photo R300 Foomatic/gutenprint-ijs-simplified.5.2
|
||||
|
||||
The "simplified" PPD files offer a basic set of options only, for
|
||||
selecting printer options, standard paper sizes, and basic quality
|
||||
settings. The PPD files that are not "simplified" offer a much
|
||||
broader set of controls, giving the user extensive control over
|
||||
quality and color adjustment.
|
||||
|
||||
If you are using CUPS, you may be offered a choice between
|
||||
CUPS+Gutenprint and Foomatic/gutenprint-ijs PPD files. While
|
||||
either kind of PPD file will work, we recommend using the
|
||||
CUPS+Gutenprint PPD files. These PPD files can be automatically
|
||||
updated with cups-genppdupdate when you later upgrade your
|
||||
Gutenprint installation. Some systems mark the Foomatic PPD files
|
||||
as "(recommended)"; we nevertheless recommend using the
|
||||
CUPS+Gutenprint PPD files.
|
||||
|
||||
Other PPD files are described differently, such as
|
||||
|
||||
Epson MJ 520C Foomatic/stcolor (recommended)
|
||||
|
||||
These PPD files, whether "recommended" or not, are not Gutenprint
|
||||
PPD files.
|
||||
|
||||
NOTES FOR CUPS USERS:
|
||||
|
||||
If you do not choose to automatically update existing PPD files,
|
||||
you should reinstall any printer queues that you are using
|
||||
Gutenprint PPD files with. The Gutenprint driver and the PPD
|
||||
files must be kept in sync, since the PPD files reflect the
|
||||
particular version of the driver that they were built against. If
|
||||
you attempt to use a version of Gutenprint with PPD files not
|
||||
built for that precise version, the driver will fail with a
|
||||
diagnostic error message. For example, PPD files built for
|
||||
Gutenprint 5.2.1 will not work with driver version 5.2.2. You can
|
||||
identify printers using Gutenprint PPD files by the name of the
|
||||
PPD file, which will be something like:
|
||||
|
||||
EPSON Stylus Photo EX - CUPS+Gutenprint v5.2.2(en)
|
||||
|
||||
Linux users please note: If you are using CUPS 1.1.11 or higher,
|
||||
and you have a USB-connected printer, you must have a printer
|
||||
connected to each USB port that you plan to use and powered on
|
||||
when you restart CUPS. If you do not do so, you will not be able
|
||||
to reinstall the printer. It is only necessary to do this if you
|
||||
wish to update PPD files manually; if you use cups-genppdupdate,
|
||||
you do not need to do this.
|
||||
|
||||
Starting with CUPS 1.1.11, you cannot choose an AppSocket
|
||||
connection and enter "usb:/dev/usblp0" or the like as the URI; you
|
||||
will get a "client-error-not-possible" error at the end of the
|
||||
installation process, and you will have a message like the
|
||||
following in your CUPS error log (typically
|
||||
/var/log/cups/error_log):
|
||||
|
||||
E [21/Nov/2001:17:59:07 +0500] add_printer: bad device-uri attribute 'usb:/dev/usb/lp0'!
|
||||
|
||||
If the printer was turned on correctly, you will be given a choice
|
||||
of a USB connection in the Device dialog.
|
||||
|
||||
You may also have problems if you have a .lpoptions file that has
|
||||
old options set. If you have problems printing, please remove any
|
||||
existing .lpoptions file in your home directory and try printing
|
||||
again.
|
||||
|
||||
================================================================
|
||||
|
||||
IV) SOLVING PROBLEMS
|
||||
|
||||
While we have attempted to make use of Gutenprint as
|
||||
straightforward and trouble-free as possible, we certainly
|
||||
recognize that there may be problems with installing and using
|
||||
Gutenprint. In the event of any difficulty, we ask that you take
|
||||
the following actions:
|
||||
|
||||
1) Read the release notes (NEWS).
|
||||
|
||||
2) Read the FAQ, in doc/FAQ.html. Your question may be answered
|
||||
there.
|
||||
|
||||
3) Make sure that the paper type and size, and media source, that
|
||||
you have selected matches the paper loaded into the printer.
|
||||
This is only necessary if the printer attempts to print, but
|
||||
does not succeed. It is a good starting point if quality is
|
||||
poor (too dark or too light, wet ink on the paper, etc.).
|
||||
|
||||
4) Reset all settings (particularly the color and quality
|
||||
settings) to their defaults.
|
||||
|
||||
5) If you are using CUPS, search /var/log/cups/error_log (which
|
||||
may be located elsewhere on some systems) for lines starting
|
||||
with 'E' (these lines indicate errors). Also search for log
|
||||
information produced by Gutenprint; all such output lines will
|
||||
contain "Gutenprint". These lines may help you solve the
|
||||
problem and will help us investigate your problem if necessary.
|
||||
|
||||
6) If you are using CUPS, enable debugging output. This can be
|
||||
done by editing /etc/cups/cupsd.conf (which must be done as
|
||||
root). There will be a line in that file:
|
||||
|
||||
LogLevel Info
|
||||
|
||||
which should be changed to
|
||||
|
||||
LogLevel Debug
|
||||
|
||||
This will allow CUPS to produce extensive debugging output.
|
||||
You will need to restart CUPS (the exact procedure is
|
||||
system-dependent) after doing this. If you report a problem to
|
||||
the Gutenprint team, you will be asked for this information.
|
||||
|
||||
7) There are public forums on Sourceforge dedicated to this
|
||||
package. Please see
|
||||
http://sourceforge.net/forum/?group_id=1537 for more
|
||||
information. The Help forum is a good source of information.
|
||||
|
||||
8) If you have a technical support issue that does not appear to
|
||||
be a bug in the software, you can use the Tech Support Manager.
|
||||
Please see http://sourceforge.net/support/?group_id=1537.
|
||||
|
||||
9) If you have found a clear bug in the package, you may file a
|
||||
bug report at http://sourceforge.net/bugs/?group_id=1537.
|
||||
|
||||
10) You may send mail to the gimp-print-devel@sourceforge.net
|
||||
mailing list. This is recommended as a last resort only.
|
||||
|
||||
================================================================
|
||||
|
||||
V) USE OF THE CVS REPOSITORY
|
||||
|
||||
Please read doc/README.maintaining for instructions on how to
|
||||
build from the CVS repository. You will need additional packages
|
||||
and tools for this purpose.
|
@ -1,258 +0,0 @@
|
||||
This file describes issues that packagers and distributors of
|
||||
Gutenprint should be aware of. This information is targeted at Linux
|
||||
distributions and others who deliver Gutenprint packages intended for
|
||||
end-user use.
|
||||
|
||||
1) As of 5.2 and until further notice, Gutenprint will no longer
|
||||
deliver separate "development" and "stable" release series.
|
||||
|
||||
The point release will be advanced between beta/RC releases and
|
||||
stable releases. The first stable release of 5.2 will be numbered
|
||||
5.2.1; the betas and release candidates will be numbered
|
||||
5.2.0-betaN or 5.2.0-rcN. Any betas for the next stable release
|
||||
will be numbered 5.2.2-betaN; the next stable release will be
|
||||
numbered 5.2.3 (if there are beta or release candidate builds) or
|
||||
5.2.2 (if there are not).
|
||||
|
||||
This ensures that the highest numbered release is always the most
|
||||
current, and that there will be no confusion between beta releases
|
||||
and stable releases. Our experience with 5.0 was that many users
|
||||
continued to use beta releases of 5.0 even after 5.0.0 was
|
||||
released, and worse, in some cases referred to the 5.0.0-beta2
|
||||
release (for example) as "5.0.2". We believe that the numbering
|
||||
scheme described above will avoid that problem.
|
||||
|
||||
2) We request that you subscribe to
|
||||
gimp-print-devel@lists.sourceforge.net to get the latest
|
||||
information about upcoming changes.
|
||||
|
||||
3) If you intend to make any changes or patches to the source code of
|
||||
this package, we request that you inform us of these changes and
|
||||
discuss them with us prior to distribution, and identify a point of
|
||||
contact to us.
|
||||
|
||||
While this is not required by the GPL, we would greatly appreciate
|
||||
knowing about any changes you plan to make for three reasons:
|
||||
|
||||
* The changes may benefit all users of Gutenprint.
|
||||
|
||||
* We may have already considered this kind of change in the past
|
||||
and elected not to make it, or may be planning to make this kind
|
||||
of change in a different way from what you have done.
|
||||
Coordination in this case may save everyone a lot of work.
|
||||
|
||||
* If we receive bug reports or support requests from users of your
|
||||
package, we will either know who we can direct them to or will
|
||||
have a better understanding of what is different in your package
|
||||
that may cause observed differences from what we expect.
|
||||
|
||||
4) We specifically request that you *not* make changes to the margins
|
||||
of any paper size in src/xml/papers.xml, or in general change
|
||||
papers.xml other than to add additional paper sizes. In the past,
|
||||
a number of distributions have imposed margins for certain paper
|
||||
sizes in this file because printing on certain printers was cut off
|
||||
(cropped). Change to papers.xml to work around these problems is
|
||||
not an appropriate workaround for this problem, as it results in
|
||||
*all* printers being bound by those margins. Furthermore, the
|
||||
margin problem has since been fixed in a different way. Margins
|
||||
should only be listed in papers.xml for papers that intrinsically
|
||||
have margins of their own, such as photo papers with tear-off
|
||||
margins.
|
||||
|
||||
Historically, in Gutenprint 5.0.0 all printers that offered
|
||||
different margins under different circumstances (e. g. a choice
|
||||
between normal margins and full-bleed printing, such as many Epson
|
||||
inkjet printers, or different margins for certain paper sizes, such
|
||||
as many laser printers that offer different margins for A4 than for
|
||||
other paper sizes) always listed the wide margins in the PPD files,
|
||||
and if the full bleed option was not selected (or a paper size that
|
||||
required narrower margins was), the printed image was simply
|
||||
clipped to the margins. This preserved the image dimension on the
|
||||
page, but in some cases resulted in parts of the image being
|
||||
clipped. The workaround that some packagers applied, to add
|
||||
margins in papers.xml, made it impossible to print full bleed to
|
||||
these paper sizes even on printers capable of this. None of these
|
||||
packagers ever discussed this change with us, and as a result we
|
||||
were caught by surprise by some bug reports that it took us a while
|
||||
to track down.
|
||||
|
||||
This issue was fixed in 5.0.1 (in the native CUPS driver) by means
|
||||
of a new PPD option to allow users to either shrink the image to
|
||||
the appropriate margins or to crop the image. This allows users to
|
||||
select whether they prefer dimensional accuracy or printing the
|
||||
entire image. However, we have observed that this workaround has
|
||||
still not been removed from all distributors' packages.
|
||||
|
||||
At this point, there should be no reason to specify margins in
|
||||
papers.xml for any reason other than adding a media size that has
|
||||
intrinsic margins of its own, such as a new paper with tear-off
|
||||
margins. If you think you need to do this for any other reason,
|
||||
please discuss it with us first!
|
||||
|
||||
5) Packaging the Core Library (libgutenprint)
|
||||
|
||||
* You may wish to create a development package containing header
|
||||
files and linkable libraries separate from the runtime package.
|
||||
There are a few third party applications that link against
|
||||
Gutenprint.
|
||||
|
||||
* Gutenprint permits installation of Gimp-Print 4.2 and Gutenprint
|
||||
5.0 alongside Gutenprint 5.2, and in the future will permit
|
||||
concurrent installation of different stable versions of
|
||||
Gutenprint with different minor version numbers. Therefore, you
|
||||
may consider allowing Gutenprint 5.0, Gutenprint 5.2, and
|
||||
Gimp-Print 4.2 to be installed concurrently.
|
||||
|
||||
* The core driver library component also includes XML data files
|
||||
(in src/xml), locale files for the libary, and documentation.
|
||||
The XML data files in src/xml are mandatory; the driver will not
|
||||
function without these files.
|
||||
|
||||
* We do not recommend installing any program linked against
|
||||
libgutenprint with enhanced privileges (via the setuid or setgid
|
||||
mechanism, or any other such mechanism). We have not audited
|
||||
libgutenprint for safety in this kind of environment, and changes
|
||||
in Gutenprint 5.2 (in particular, moving the Epson driver data
|
||||
into external data files whose root can be changed by means of
|
||||
the environment variable STP_DATA_PATH) may increase risk.
|
||||
Furthermore, if you build the Gutenprint library in modular
|
||||
fashion, such that drivers may be dynamically loaded into running
|
||||
applications, there is an additional hazard in the form of an
|
||||
environment variable that allows specifying where those modules
|
||||
should be loaded from (STP_MODULE_PATH).
|
||||
|
||||
The only program in the core Gutenprint package that has any
|
||||
reason to be installed this way is escputil, because it needs to
|
||||
talk directly to the printer. See the discussion of escputil
|
||||
below.
|
||||
|
||||
6) Packaging the CUPS Driver
|
||||
|
||||
* IMPORTANT: As a special part of the install/upgrade procedure,
|
||||
your installer should check for any queues using the "epson" or
|
||||
"canon" backends and convert them to use an appropriate standard
|
||||
backend, usually the "usb" or "parallel" backend. Please see the
|
||||
Critical Upgrade Note in the release notes (NEWS file) for more
|
||||
information.
|
||||
|
||||
Note that the epson and canon backends are no longer distributed
|
||||
by Gutenprint, so your installer will have to fix this up in any
|
||||
event.
|
||||
|
||||
* We recommend that your installation package run cups-genppdupdate
|
||||
and restart CUPS as part of the installation process. This will
|
||||
copy changes made by the user and ensure that the user has
|
||||
correct PPD files. The CUPS driver will refuse to use a PPD file
|
||||
built with a different version of Gutenprint.
|
||||
|
||||
* Some applications do not translate PPD file contents (option
|
||||
names and values) when globalized PPD files are used (see the
|
||||
release notes for general discussion of globalized PPD files).
|
||||
At the time these notes are being written, we have determined
|
||||
that versions of OpenOffice.org up to and including 3.0.0-rc1 do
|
||||
not translate PPD file contents with globalized PPD files, but
|
||||
language-specific localized PPD files are translated correctly.
|
||||
We have also determined that GIMP 2.4, using the GtkPrint plugin,
|
||||
does not translate PPD contents using globalized PPD files, but
|
||||
does with single language files.
|
||||
|
||||
The CUPS development team has informed us that they have not
|
||||
received complaints from users about this, despite the fact that
|
||||
the basic set of PPD files distributed by CUPS is globalized.
|
||||
Unlike Gutenprint, however, CUPS does not require that its PPD
|
||||
files be upgraded with each release, so users upgrading from
|
||||
older versions of CUPS may not be exposed to this issue.
|
||||
|
||||
Gutenprint does provide a way to upgrade PPD files to
|
||||
language-specific ones, using the -l option to
|
||||
cups-genppdupdate. PPD files that are being upgraded from a
|
||||
previous release of Gutenprint may be upgraded with
|
||||
cups-genppdupdate -loriginal to update to the original language.
|
||||
Note that this works even if the PPD files have been updated to
|
||||
globalized files, since cups-genppdupdate stores the language of
|
||||
the PPD file it was upgrading. cups-genppdupdate -l<language>
|
||||
updates PPD files into the specified language; see the release
|
||||
notes or user's manual for the set of languages supported.
|
||||
|
||||
Note that -loriginal will *not* work with PPD files that had been
|
||||
upgraded with Gutenprint 5.2.0-beta4, since cups-genppdupdate in
|
||||
that release does not preserve the original language of the PPD
|
||||
file.
|
||||
|
||||
Distributions have a number of possible options to address this
|
||||
issue, for example:
|
||||
|
||||
- Use globalized PPD files and accept the translation problem or
|
||||
fix the applications that do not translate the PPD files
|
||||
correctly. You may wish to document the procedure of using
|
||||
cups-genppdupdate to generate language-specific PPD files in
|
||||
this case.
|
||||
|
||||
- Configure Gutenprint with --disable-globalized-cups-ppds, to
|
||||
generate only single-language PPD files.
|
||||
|
||||
- Provide an administrative utility to update either individual
|
||||
PPD files or all PPD files on the system. If you provide this
|
||||
kind of utility, we recommend using the -l<language> option
|
||||
rather than -loriginal.
|
||||
|
||||
* All files and directories with versioned names (such as
|
||||
rastertogutenprint and the PPD files) may be installed and used
|
||||
concurrently with other versions of Gimp-Print and Gutenprint as
|
||||
described above. Other executables (such as cups-calibrate) are
|
||||
not versioned, but are not linked against libgutenprint and do
|
||||
not have any other dependencies on Gutenprint.
|
||||
|
||||
7) Packaging the IJS Driver and Foomatic Data
|
||||
|
||||
* We recommend packaging the IJS driver
|
||||
(/usr/bin/ijsgutenprint.5.2) and its man page
|
||||
(/usr/man/man1/ijsgutenprint.1.gz) together with the Foomatic
|
||||
data.
|
||||
|
||||
* If your distribution uses CUPS as its print spooler, we very
|
||||
strongly recommend using the native CUPS driver rather than
|
||||
Foomatic. The native CUPS driver has been better tested than the
|
||||
IJS driver, and has more complete solutions for some issues
|
||||
involving paper dimensions and presentation of numerical
|
||||
options. The native CUPS driver also has better management tools
|
||||
(cups-genppdupdate, specifically).
|
||||
|
||||
If you wish to improve the IJS driver and Foomatic data, please
|
||||
contact us.
|
||||
|
||||
* The IJS driver and the Foomatic data kit and PPD files are
|
||||
versioned (major and minor), and hence you may consider
|
||||
permitting multiple versions to be installed concurrently. The
|
||||
man page (/usr/man/man1/ijsgutenprint.1.gz) is not versioned, but
|
||||
the interface to this command, which is intended only to be
|
||||
invoked from within Ghostscript, is not likely to change.
|
||||
|
||||
8) Packaging the Enhanced Print Plugin for GIMP
|
||||
|
||||
* The enhanced Print plugin for GIMP, unlike the core library and
|
||||
the Foomatic and CUPS drivers, may not be installed concurrently
|
||||
with other versions. For example, you may not install both the
|
||||
Gimp-Print 4.2 and the Gutenprint 5.2 version of the Print
|
||||
plugin, as they use different configuration file formats.
|
||||
|
||||
9) Packaging the Epson Inkjet Management Utility, escputil
|
||||
|
||||
* We do not recommend installing this utility with enhanced
|
||||
privileges (via the setuid or setgid mechanism, or any other such
|
||||
mechanism) without a careful security audit on your part. If
|
||||
elevated privileges are required in your installation, we suggest
|
||||
ensuring that the variables STP_DATA_PATH and STP_MODULE_PATH be
|
||||
cleared prior to invoking escputil (or that you patch escputil to
|
||||
clear those variables prior to calling stp_init()) and otherwise
|
||||
using the least privilege required to allow escputil to run.
|
||||
Another option may be to allow (by means of device permissions)
|
||||
an appropriate group of users to run this command.
|
||||
|
||||
With the conversion of the Epson driver to using external data
|
||||
files in XML format rather than data hard-coded into the library
|
||||
binary, there are more opportunities for injection of bad data
|
||||
into the driver.
|
||||
|
||||
Note that the default configuration of Gutenprint does not
|
||||
install escputil with elevated privileges.
|
1274
src/libs/print/libgutenprint/aclocal.m4
vendored
@ -1,25 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir="`dirname $0`"
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="gutenprint"
|
||||
|
||||
(test -f "$srcdir/configure.ac") || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test $# -gt 0 ; then
|
||||
case "$1" in
|
||||
-h|--help|--help=*)
|
||||
if test -f "$srcdir/configure" ; then
|
||||
exec "$srcdir/configure" "$1"
|
||||
fi ;;
|
||||
*) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
. $srcdir/scripts/autogen.sh
|
@ -1,214 +0,0 @@
|
||||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* CUPS data directory. */
|
||||
/* Not used in Haiku */
|
||||
#define CUPS_DATADIR "/system/data/cups"
|
||||
|
||||
/* Not used in Haiku */
|
||||
#define CUPS_MODELDIR "/system/data/model/gutenprint/5.2/"
|
||||
|
||||
/* */
|
||||
/* Not used in Haiku */
|
||||
#define CUPS_PPD_NICKNAME_STRING " - CUPS+Gutenprint v"
|
||||
|
||||
/* CUPS PPD PostScript level */
|
||||
/* Not used in Haiku */
|
||||
#define CUPS_PPD_PS_LEVEL 2
|
||||
|
||||
/* Define to 1 if translation of program messages to the user's native
|
||||
language is requested. */
|
||||
/* #define ENABLE_NLS 1 */
|
||||
|
||||
/* */
|
||||
#define GUTENPRINT_RELEASE_VERSION "5.2"
|
||||
|
||||
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
|
||||
CoreFoundation framework. */
|
||||
/* #undef HAVE_CFLOCALECOPYCURRENT */
|
||||
|
||||
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
|
||||
the CoreFoundation framework. */
|
||||
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
|
||||
|
||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
||||
*/
|
||||
#define HAVE_DCGETTEXT 1
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define to 1 if GCC special attributes are supported */
|
||||
#define HAVE_GCC_ATTRIBUTES 1
|
||||
|
||||
#if !defined(HAVE_GCC_ATTRIBUTES) && !defined(__attribute__)
|
||||
/* This should really be a C99 anonymous variadic macro. */
|
||||
#define __attribute__(attr)
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the <getopt.h> header file. */
|
||||
#define HAVE_GETOPT_H 1
|
||||
|
||||
/* Define to 1 if you have the `getopt_long' function. */
|
||||
#define HAVE_GETOPT_LONG 1
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#define HAVE_GETTEXT 1
|
||||
|
||||
/* Define if GNU ld is present. */
|
||||
/* #undef HAVE_GNU_LD */
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#define HAVE_ICONV 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Is libreadline present? */
|
||||
#define HAVE_LIBREADLINE 0
|
||||
|
||||
/* Define if libz is present. */
|
||||
/* #undef HAVE_LIBZ */
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#define HAVE_LIMITS_H 1
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#define HAVE_LOCALE_H 1
|
||||
|
||||
/* Define to 1 if you have the <ltdl.h> header file. */
|
||||
#define HAVE_LTDL_H 1
|
||||
|
||||
/* Define if maintainer-mode is to be used. */
|
||||
/* #undef HAVE_MAINTAINER_MODE */
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `nanosleep' function. */
|
||||
#define HAVE_NANOSLEEP 1
|
||||
|
||||
/* Define to 1 if you have the `poll' function. */
|
||||
#define HAVE_POLL 1
|
||||
|
||||
/* Define if libreadline header is present. */
|
||||
/* #undef HAVE_READLINE_READLINE_H */
|
||||
|
||||
/* Define to 1 if you have the <stdarg.h> header file. */
|
||||
#define HAVE_STDARG_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <time.h> header file. */
|
||||
#define HAVE_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to 1 if you have the `usleep' function. */
|
||||
#define HAVE_USLEEP 1
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Build a modular libgutenprint */
|
||||
/* #undef MODULE */
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
/* #undef NO_MINUS_C_MINUS_O */
|
||||
|
||||
/* The operating system to build for */
|
||||
#define OSTYPE "haiku"
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "gutenprint"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "gimp-print-devel@lists.sourceforge.net"
|
||||
|
||||
/* */
|
||||
#define PACKAGE_DATA_DIR "/system/data/gutenprint"
|
||||
|
||||
/* */
|
||||
#define PACKAGE_LIB_DIR "/system/lib/gutenprint"
|
||||
|
||||
/* */
|
||||
#define PACKAGE_LOCALE_DIR "/NOT_USED/locale"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "gutenprint"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "gutenprint 5.2.7"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "gutenprint"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "5.2.7"
|
||||
|
||||
/* */
|
||||
#define PKGMODULEDIR "/system/lib/gutenprint/5.2/modules"
|
||||
|
||||
/* */
|
||||
#define PKGXMLDATADIR "/system/data/gutenprint"
|
||||
|
||||
/* Package release date. */
|
||||
#define RELEASE_DATE "01 May 2011"
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#define RETSIGTYPE void
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Use libdl/dlopen as module loader */
|
||||
/* #undef USE_DLOPEN */
|
||||
|
||||
/* Use GNU libltdl as module loader */
|
||||
/* #undef USE_LTDL */
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "5.2.7"
|
||||
|
||||
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
|
||||
`char[]'. */
|
||||
#define YYTEXT_POINTER 1
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
/* #undef inline */
|
||||
#endif
|
||||
|
||||
/* Define to `long int' if <sys/types.h> does not define. */
|
||||
/* #undef off_t */
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
@ -1,213 +0,0 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* CUPS data directory. */
|
||||
#undef CUPS_DATADIR
|
||||
|
||||
/* */
|
||||
#undef CUPS_MODELDIR
|
||||
|
||||
/* */
|
||||
#undef CUPS_PPD_NICKNAME_STRING
|
||||
|
||||
/* CUPS PPD PostScript level */
|
||||
#undef CUPS_PPD_PS_LEVEL
|
||||
|
||||
/* Define to 1 if translation of program messages to the user's native
|
||||
language is requested. */
|
||||
#undef ENABLE_NLS
|
||||
|
||||
/* */
|
||||
#undef GUTENPRINT_RELEASE_VERSION
|
||||
|
||||
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
|
||||
CoreFoundation framework. */
|
||||
#undef HAVE_CFLOCALECOPYCURRENT
|
||||
|
||||
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
|
||||
the CoreFoundation framework. */
|
||||
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
|
||||
|
||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
||||
*/
|
||||
#undef HAVE_DCGETTEXT
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if GCC special attributes are supported */
|
||||
#undef HAVE_GCC_ATTRIBUTES
|
||||
|
||||
#if !defined(HAVE_GCC_ATTRIBUTES) && !defined(__attribute__)
|
||||
/* This should really be a C99 anonymous variadic macro. */
|
||||
#define __attribute__(attr)
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the <getopt.h> header file. */
|
||||
#undef HAVE_GETOPT_H
|
||||
|
||||
/* Define to 1 if you have the `getopt_long' function. */
|
||||
#undef HAVE_GETOPT_LONG
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Define if GNU ld is present. */
|
||||
#undef HAVE_GNU_LD
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#undef HAVE_ICONV
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Is libreadline present? */
|
||||
#undef HAVE_LIBREADLINE
|
||||
|
||||
/* Define if libz is present. */
|
||||
#undef HAVE_LIBZ
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#undef HAVE_LIMITS_H
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define to 1 if you have the <ltdl.h> header file. */
|
||||
#undef HAVE_LTDL_H
|
||||
|
||||
/* Define if maintainer-mode is to be used. */
|
||||
#undef HAVE_MAINTAINER_MODE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `nanosleep' function. */
|
||||
#undef HAVE_NANOSLEEP
|
||||
|
||||
/* Define to 1 if you have the `poll' function. */
|
||||
#undef HAVE_POLL
|
||||
|
||||
/* Define if libreadline header is present. */
|
||||
#undef HAVE_READLINE_READLINE_H
|
||||
|
||||
/* Define to 1 if you have the <stdarg.h> header file. */
|
||||
#undef HAVE_STDARG_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <time.h> header file. */
|
||||
#undef HAVE_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `usleep' function. */
|
||||
#undef HAVE_USLEEP
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Build a modular libgutenprint */
|
||||
#undef MODULE
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* The operating system to build for */
|
||||
#undef OSTYPE
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* */
|
||||
#undef PACKAGE_DATA_DIR
|
||||
|
||||
/* */
|
||||
#undef PACKAGE_LIB_DIR
|
||||
|
||||
/* */
|
||||
#undef PACKAGE_LOCALE_DIR
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* */
|
||||
#undef PKGMODULEDIR
|
||||
|
||||
/* */
|
||||
#undef PKGXMLDATADIR
|
||||
|
||||
/* Package release date. */
|
||||
#undef RELEASE_DATE
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Use libdl/dlopen as module loader */
|
||||
#undef USE_DLOPEN
|
||||
|
||||
/* Use GNU libltdl as module loader */
|
||||
#undef USE_LTDL
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
|
||||
`char[]'. */
|
||||
#undef YYTEXT_POINTER
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define to `long int' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
21355
src/libs/print/libgutenprint/configure
vendored
@ -1,286 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>The Gutenprint FAQ</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Gutenprint FAQ</h2>
|
||||
|
||||
<ol>
|
||||
|
||||
<p><li><h3>Is it only for Gimp?</h3>
|
||||
|
||||
<p>No, it can be used for many printing needs. Gimp-print started out
|
||||
as a driver for The Gimp, the well known image manipulation program.
|
||||
Early in development versions for Ghostscript and later CUPS were
|
||||
added. The emphasis is still on quality color printing, though
|
||||
performance gets a lot of attention these days.
|
||||
|
||||
<p><li><h3>I cannot install it, it complains about missing Gimp files</h3>
|
||||
|
||||
<ul>
|
||||
|
||||
<p><li>If you have the Gimp installed on your system, you probably
|
||||
have the user package, but not the development package, installed.
|
||||
You will need to install the latter from your installation media; it's
|
||||
usually named gimp-devel.
|
||||
|
||||
<p><li>If you do have the Gimp installed, and you've installed the
|
||||
gimp-devel package, you may also need to install the gtk-devel and
|
||||
glib-devel packages.
|
||||
|
||||
<p><li>If you've installed the Gimp from source, you may need to run
|
||||
<tt>ldconfig</tt> as root. The installation procedure for the Gimp
|
||||
doesn't run ldconfig, which is needed on many systems to tell the
|
||||
system about the shared libraries that are installed. If you don't
|
||||
understand this, don't worry; just do it. If you're nervous about
|
||||
doing that, reboot.
|
||||
|
||||
<p><li>If you don't have the Gimp installed on your system, and just
|
||||
want to compile Gutenprint for CUPS (for example), you need to pass
|
||||
<tt>configure</tt> the option <tt>--with-gimp=no</tt>, so it won't try
|
||||
to look for the Gimp and fail.
|
||||
|
||||
</ul>
|
||||
|
||||
<p><li><h3>What is the difference between B/W, Line art, solid color and
|
||||
Photo mode (or ImageType in Ghostscript)?</h3>
|
||||
|
||||
<p>Photo mode does a lot of work to make colors as similar to screen
|
||||
presentation as possible. This takes time. Line art is faster, but
|
||||
colors may be off. Solid Colors is somewhere in between. B/W mode
|
||||
does not use color ink when printing, and is much faster.
|
||||
|
||||
<p><li><h3>I selected my printer and it doesn't work at all!</h3>
|
||||
|
||||
<p>Please check your printing system (lpd, CUPS, LPRng, etc.)
|
||||
configuration. You may also have a problem with your parallel port
|
||||
or USB connection, so take a look at <tt>/var/log/messages</tt> (or
|
||||
wherever your system logs are kept).
|
||||
|
||||
<p><li><h3>I selected my printer and it simply feeds paper without
|
||||
printing</h3>
|
||||
|
||||
<p>Many Epson printers (in particular) do this if they encounter an
|
||||
error in the command stream. This usually indicates a bug in
|
||||
Gutenprint; please report it to <a
|
||||
mailto="gimp-print-devel@sourceforge.net">gimp-print-devel@sourceforge.net</a>
|
||||
or via the bug tracking system at <a
|
||||
href="http://gimp-print.sourceforge.net">http://gimp-print.sourceforge.net</a>.
|
||||
Make sure you report the printer you have and all of the settings that
|
||||
you used. But first, triple check that you're using the right printer
|
||||
model!
|
||||
|
||||
<p><li><h3>I selected my printer, and it prints the image badly
|
||||
distorted, or at completely the wrong place on the page</h3>
|
||||
|
||||
<p>This usually indicates a bug in the package. Please report it as
|
||||
described above. Also as described above, make sure you've set the
|
||||
right printer.
|
||||
|
||||
<p><li><h3>I selected the right printer and nonsense, or only part of
|
||||
the page, gets printed</h3>
|
||||
|
||||
<p>Printers for which support just has been added may not have been
|
||||
tested, as the developers do not have access to the printer. It is
|
||||
worth trying different settings. For example, change the resolution to
|
||||
a mainstream value as used on that printer. Also photo mode is better
|
||||
tested than the optimized versions. When you find out what works and
|
||||
what doesn't, file a bug report.
|
||||
|
||||
<p>One common cause of this is not using "raw" mode when printing from
|
||||
the Gimp plugin. Depending upon your printing system, you will need
|
||||
to use either <tt>-l</tt> (traditional BSD lpd), <tt>-oraw</tt> (CUPS
|
||||
lpr), or <tt>-d</tt> (most versions of System V lp, including CUPS).
|
||||
Otherwise the printing system attempts to interpret the output as
|
||||
something else, and tries to apply a filter to it to convert it to
|
||||
something else (usually PostScript).
|
||||
|
||||
<p>Another less common cause of this (it usually causes other
|
||||
symptoms, like printing only part of a page) is lack of space
|
||||
somewhere. This is most commonly an issue when using the Gimp Print
|
||||
plugin. The plugin creates a huge temporary file that gets sent to
|
||||
the printing system. The size of the file varies; it's proportional
|
||||
to the page size and the resolution setting chosen. Full-page, high
|
||||
resolution photographs can result in 100 MB of output. The system may
|
||||
need to have 2 or 3 copies of this file for short periods of time. If
|
||||
your /tmp, /var, or wherever your spooler keeps its temporary files is
|
||||
too small, you'll have problems.
|
||||
|
||||
<p>Finally, problems with your parallel or USB port may be the cause
|
||||
of problems here. Certain Epson printers in particular are known to
|
||||
be very sensitive to the quality of connecting cables, and may have
|
||||
trouble with long or low quality cables, or USB hubs. If nothing else
|
||||
works, and you're certain you've tried everything else, try a better
|
||||
cable or a direct USB connection.
|
||||
|
||||
<p><li><h3>What's up with the HP Deskjet 1200?</h3>
|
||||
|
||||
<p>HP had sold two printers with the 1200 model designation. The old
|
||||
version is 300 DPI and has a heating element to dry the ink. It was
|
||||
manufactured around 1990. The new version is of 2000 vintage and has
|
||||
higher resolution. The one supported by this package is the new
|
||||
one???
|
||||
|
||||
<p><li><h3>I selected the right printer and the quality is lousy</h3>
|
||||
|
||||
<p>Try selecting a different resolution or quality setting. Especially
|
||||
lower resolutions have a problem putting enough ink on paper. Also,
|
||||
use Photo mode. If you find settings that do not work at all (you get
|
||||
garbage or no output, but other settings work), report these as bugs.
|
||||
High resolutions should produce a similar (but smoother) result than
|
||||
medium resolutions. Resolutions under a certain printer dependent
|
||||
figure are seen as draft-only - for example lower than 360 DPI on
|
||||
Epsons with standard paper or lower than 300 DPI on HP.
|
||||
|
||||
<p>Also make sure that you have the right kind of paper selected.
|
||||
Selecting plain paper when you're printing on high quality photo paper
|
||||
is certain to result in a light, grainy image. Selecting photo paper
|
||||
when you're printing on plain paper will result in a dark, muddy image
|
||||
that bleeds through the paper. There are differences between
|
||||
different kinds of paper; you may need to tweak the density and color
|
||||
settings slightly.
|
||||
|
||||
<p>In addition, certain printers don't work well on certain kinds of
|
||||
paper. Epson printers work well on Epson papers, but don't work
|
||||
well on many third party papers (particularly the high quality photo
|
||||
papers made by other vendors). This isn't a conspiracy to lock you
|
||||
into their paper, it's because they've formulated the paper and ink to
|
||||
work well together.
|
||||
|
||||
<p>If you use Ghostscript, make sure the Ghostscript resolution is not
|
||||
set higher than the driver resolution. If it is higher, the driver has
|
||||
to throw away part of the pixels, leading to uneven strokes in text
|
||||
and slanted lines with interruptions.
|
||||
|
||||
<p><li><h3>How do I start setting options for Ghostscript?</h3>
|
||||
|
||||
<p>Please see src/ghost/README for more information.
|
||||
|
||||
<p><li><h3><tt>escputil -i</tt> or <tt>escputil -d</tt> fails as follows:</h3>
|
||||
|
||||
<p><pre>
|
||||
% escputil -r /dev/lp0 -i
|
||||
|
||||
[ ... license info omitted ... ]
|
||||
|
||||
Cannot read from /dev/lp0: Invalid argument
|
||||
</pre>
|
||||
|
||||
<p>You need to rebuild your kernel with CONFIG_PRINTER_READBACK
|
||||
enabled.
|
||||
|
||||
<p><li><h3>I tried to test my Epson printer by 'cat .cshrc > /dev/lp0'
|
||||
and nothing prints!!!???</h3>
|
||||
|
||||
<p>The classic test of printer connectivity -- sending an ASCII file
|
||||
to it -- doesn't work on many Epson printers out of the box (or after
|
||||
printing from Windows or Macintosh). Epson printers from the Stylus
|
||||
Color 740 and newer use a special "packet mode" in which they do not
|
||||
recognize standard commands or ASCII text. They must be sent a
|
||||
special sequence that takes them out of packet mode. The command
|
||||
|
||||
<p><pre>escputil -u -s -r /dev/lp0</pre>
|
||||
|
||||
<p>will take the printer out of packet mode and enable you to print to
|
||||
it. Of course, as soon as you've read back status from the printer,
|
||||
you know it's working (although if you're unable to read status out of
|
||||
the printer, you might have a different problem; see above).
|
||||
|
||||
<p>Printing to your printer from Gutenprint, whether you use the Print
|
||||
plugin, the CUPS driver, or the Ghostscript driver, will also take the
|
||||
printer out of packet mode. But then again, if you successfully print
|
||||
to your printer, you know it's working, so why worry? If you're
|
||||
trying to test your spooler, though, the escputil trick above will do
|
||||
it. Just make sure that /dev/lp0 is the right device; if it isn't,
|
||||
substitute whatever is.
|
||||
|
||||
<p><em>Note:</em> this does not apply to printers prior to the 740
|
||||
(such as the Stylus Photo EX, Stylus Color 850, or anything even
|
||||
older). Those printers are always capable of printing ASCII text, and
|
||||
don't have packet mode. You can read status from them, but you must
|
||||
leave off the '-u' option.
|
||||
|
||||
<p><li><h3>My USB-connected Epson Stylus printer won't work with
|
||||
{Free,Net,Open}BSD!</h3>
|
||||
|
||||
<p>By default, the BSD device driver for the USB printer device (usually
|
||||
ulpt0) does a prime, or USB bus reset, when the device is opened. This
|
||||
causes the printer to reset itself (one can hear the print head moving back
|
||||
and forth when this happens) and lose sync. After this the printer
|
||||
won't go into graphics mode and instead spews characters all over you
|
||||
expensive photo paper. This has been observed on the Stylus Photo
|
||||
870; it likely exists with other USB-connected Epson Stylus printers.
|
||||
|
||||
<p>The fix is to use the "unlpt0" device instead of "ulpt0". The driver
|
||||
doesn't perform the USB prime when unlpt is opened. If this device
|
||||
doesn't exist on your system you can create it with
|
||||
|
||||
<p><pre>mknod unlpt0 c 113 64 root wheel</pre>
|
||||
|
||||
<p>in the /dev directory.
|
||||
|
||||
<p><li><h3>I try to print with StarOffice and it doesn't print
|
||||
correctly!</h3>
|
||||
|
||||
<p>If you use CUPS, and your prints from StarOffice come out
|
||||
incorrectly (particularly at low resolution), try the following. This
|
||||
assumes a network installation of StarOffice 5.2.
|
||||
|
||||
<ol>
|
||||
|
||||
<p><li>Ensure that <tt>root</tt> does not have a .Xpdefaults file (if
|
||||
it does, the procedure below will edit root's version rather than the
|
||||
system-wide version in <tt>.../office52/share/xp3/Xpdefaults</tt>).
|
||||
|
||||
<p><li>As root, start <tt>.../office52/program/spadmin</tt>. This is
|
||||
the StarOffice printer administration program.
|
||||
|
||||
<p><li>Click on <b>Install New Driver</b>. For the <b>Driver
|
||||
directory</b>, select your CUPS PPD directory. This is usually
|
||||
<tt>/etc/cups/ppd</tt>. This should list the names of all of the
|
||||
drivers you have installed.
|
||||
|
||||
<p><li>If there are no drivers visible, you may need to give the .ppd
|
||||
files names ending in .PS. The following script will accomplish this:
|
||||
|
||||
<p><pre>
|
||||
# cd /etc/cups/ppd
|
||||
# for f in * ; do
|
||||
> ln -s $f `echo $f | sed 's/ppd$/PS/'`
|
||||
> done
|
||||
</pre>
|
||||
|
||||
<p>Following this, restart <tt>spadmin</tt> and click on <b>Install
|
||||
New Driver</b>. When you select your CUPS PPD directory, you will
|
||||
find the necessary drivers listed.
|
||||
|
||||
<p><li>Select the drivers you want StarOffice to know about and click
|
||||
OK.
|
||||
|
||||
<p><li>If you have been using the generic Postscript printer, remove
|
||||
all of your old queues.
|
||||
|
||||
<p><li>Select the appropriate new driver(s) and click <b>Add New
|
||||
Printer</b>.
|
||||
|
||||
<p><li>Select the appropriate printer queue and click <b>Connect</b>
|
||||
to connect it to the printer queue of your choice.
|
||||
|
||||
</ol>
|
||||
|
||||
<p>You can now set up appropriate options for this printer. Note that
|
||||
you can create multiple queues with different settings, for example
|
||||
one for draft mode and one for high quality.
|
||||
|
||||
<p><li><h3>I'm printing through Samba, and my printer prints
|
||||
garbage!</h3>
|
||||
|
||||
<p>There are a number of Samba configuration issues that cause
|
||||
problems; a common problem is translation from UNIX newlines (\n) to
|
||||
Windows newlines (\r\n). It's important to ensure that sending raw
|
||||
data, with no translation, to the printer.
|
||||
|
||||
</ol>
|
||||
|
||||
</body></html>
|
@ -1,92 +0,0 @@
|
||||
## $Id: Makefile.am,v 1.49 2006/07/30 23:24:38 rleigh Exp $
|
||||
## Copyright (C) 2000 Roger Leigh
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2, or (at your option)
|
||||
## any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
SUBDIRS = developer
|
||||
|
||||
include $(top_srcdir)/scripts/global.mk
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
docdir = $(datadir)/$(PACKAGE)/doc
|
||||
|
||||
## Rules
|
||||
|
||||
if MAINTAINER_MODE
|
||||
all-local: gutenprint-stamp gutenprintui2-stamp
|
||||
else
|
||||
all-local:
|
||||
endif
|
||||
|
||||
# Rerun doxygen whenever autogen is run
|
||||
gutenprintui2: gutenprintui2-stamp
|
||||
gutenprintui2-stamp: gutenprintui2.dox $(top_srcdir)/configure
|
||||
$(RM) -rf gutenprintui2/html
|
||||
$(DOXYGEN) gutenprintui2.dox
|
||||
touch $@
|
||||
|
||||
gutenprint: gutenprint-stamp
|
||||
gutenprint-stamp: gutenprint.dox $(top_srcdir)/configure
|
||||
$(RM) -rf gutenprint/html
|
||||
$(DOXYGEN) gutenprint.dox
|
||||
touch $@
|
||||
|
||||
docs: gutenprint-stamp
|
||||
cd developer; $(MAKE)
|
||||
|
||||
ps: $(MANUAL).ps
|
||||
cd developer; $(MAKE) ps
|
||||
|
||||
pdf: $(MANUAL).pdf
|
||||
cd developer; $(MAKE) pdf
|
||||
|
||||
html:
|
||||
cd developer; $(MAKE) html
|
||||
|
||||
install-data-local: FAQ.html gutenprint-users-manual.odt gutenprint-users-manual.pdf
|
||||
$(mkdir_p) $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/FAQ.html $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint-users-manual.odt $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint-users-manual.pdf $(DESTDIR)$(docdir)
|
||||
|
||||
|
||||
## Clean
|
||||
|
||||
maintainer-clean-local:
|
||||
$(RM) -r gutenprint
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in \
|
||||
gutenprint-stamp
|
||||
|
||||
EXTRA_DIST = \
|
||||
FAQ.html \
|
||||
README.maintaining \
|
||||
gutenprint-users-manual.odt \
|
||||
gutenprint-users-manual.pdf \
|
||||
gutenprint.dox.in \
|
||||
gutenprintui2.dox.in \
|
||||
gutenprint \
|
||||
gutenprintui2 \
|
||||
gutenprint-stamp \
|
||||
gutenprintui2-stamp
|
||||
|
||||
.PHONY: html ps pdf docs
|
@ -1,737 +0,0 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Variables
|
||||
|
||||
#export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main
|
||||
#export STP_DATA_PATH = $(top_srcdir)/src/xml
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/gutenprint.dox.in $(srcdir)/gutenprintui2.dox.in \
|
||||
$(top_srcdir)/scripts/global.mk
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \
|
||||
$(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_gimp.m4 \
|
||||
$(top_srcdir)/m4/stp_option.m4 $(top_srcdir)/m4/stp_release.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = gutenprint.dox gutenprintui2.dox
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALL_LINGUAS = @ALL_LINGUAS@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONVERT = @CONVERT@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CUPS_CFLAGS = @CUPS_CFLAGS@
|
||||
CUPS_CONFIG = @CUPS_CONFIG@
|
||||
CUPS_LIBS = @CUPS_LIBS@
|
||||
CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DB2HTML = @DB2HTML@
|
||||
DB2PDF = @DB2PDF@
|
||||
DB2PS = @DB2PS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DIALOG = @DIALOG@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
DVIPDF = @DVIPDF@
|
||||
DVIPS = @DVIPS@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FIND = @FIND@
|
||||
FOOMATIC_CONFIGURE = @FOOMATIC_CONFIGURE@
|
||||
FOOMATIC_KITLOAD = @FOOMATIC_KITLOAD@
|
||||
FOOMATIC_PPDFILE = @FOOMATIC_PPDFILE@
|
||||
GENPPD_LIBS = @GENPPD_LIBS@
|
||||
GIMP2_CFLAGS = @GIMP2_CFLAGS@
|
||||
GIMP2_LIBS = @GIMP2_LIBS@
|
||||
GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@
|
||||
GLIB_MKENUMS = @GLIB_MKENUMS@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GNUCFLAGS = @GNUCFLAGS@
|
||||
GREP = @GREP@
|
||||
GTK2_CFLAGS = @GTK2_CFLAGS@
|
||||
GTK2_LIBS = @GTK2_LIBS@
|
||||
GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@
|
||||
GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@
|
||||
GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@
|
||||
GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@
|
||||
GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@
|
||||
GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la
|
||||
GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@
|
||||
GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@
|
||||
GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@
|
||||
GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@
|
||||
GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@
|
||||
GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@
|
||||
|
||||
# Libraries
|
||||
GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la
|
||||
GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@
|
||||
GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@
|
||||
GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@
|
||||
GUTENPRINT_VERSION = @GUTENPRINT_VERSION@
|
||||
IJS_CFLAGS = @IJS_CFLAGS@
|
||||
IJS_CONFIG = @IJS_CONFIG@
|
||||
IJS_LIBS = @IJS_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBREADLINE_DEPS = @LIBREADLINE_DEPS@
|
||||
LIBS = $(INTLLIBS) @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTALLOCA = @LTALLOCA@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PLUG_IN_PATH = @PLUG_IN_PATH@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
RELEASE_DATE = @RELEASE_DATE@
|
||||
RM = @RM@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEST = @TEST@
|
||||
TEXI2HTML = @TEXI2HTML@
|
||||
TRUE = @TRUE@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WHICH_PPDS = @WHICH_PPDS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
cups_bindir = @cups_bindir@
|
||||
cups_conf_datadir = @cups_conf_datadir@
|
||||
cups_conf_serverbin = @cups_conf_serverbin@
|
||||
cups_conf_serverroot = @cups_conf_serverroot@
|
||||
cups_exec_prefix = @cups_exec_prefix@
|
||||
cups_prefix = @cups_prefix@
|
||||
cups_sbindir = @cups_sbindir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = $(datadir)/$(PACKAGE)/doc
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
gimp2_plug_indir = @gimp2_plug_indir@
|
||||
gutenprint_cflags = @gutenprint_cflags@
|
||||
gutenprint_libdeps = @gutenprint_libdeps@
|
||||
gutenprint_libs = @gutenprint_libs@
|
||||
gutenprintui2_cflags = @gutenprintui2_cflags@
|
||||
gutenprintui2_libdeps = @gutenprintui2_libdeps@
|
||||
gutenprintui2_libs = @gutenprintui2_libs@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = developer
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS)
|
||||
GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in \
|
||||
gutenprint-stamp
|
||||
|
||||
EXTRA_DIST = \
|
||||
FAQ.html \
|
||||
README.maintaining \
|
||||
gutenprint-users-manual.odt \
|
||||
gutenprint-users-manual.pdf \
|
||||
gutenprint.dox.in \
|
||||
gutenprintui2.dox.in \
|
||||
gutenprint \
|
||||
gutenprintui2 \
|
||||
gutenprint-stamp \
|
||||
gutenprintui2-stamp
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
gutenprint.dox: $(top_builddir)/config.status $(srcdir)/gutenprint.dox.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
gutenprintui2.dox: $(top_builddir)/config.status $(srcdir)/gutenprintui2.dox.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile all-local
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic \
|
||||
maintainer-clean-local
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||
install-am install-strip tags-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool ctags ctags-recursive distclean \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-data-local install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-local mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Rules
|
||||
|
||||
$(top_builddir)/src/main/libgutenprint.la:
|
||||
cd $(top_builddir)/src/main; \
|
||||
$(MAKE)
|
||||
|
||||
$(top_builddir)/src/gutenprintui/libgutenprintui.la:
|
||||
cd $(top_builddir)/src/gutenprintui; \
|
||||
$(MAKE)
|
||||
|
||||
$(top_builddir)/src/gutenprintui2/libgutenprintui2.la:
|
||||
cd $(top_builddir)/src/gutenprintui2; \
|
||||
$(MAKE)
|
||||
|
||||
@MAINTAINER_MODE_TRUE@all-local: gutenprint-stamp gutenprintui2-stamp
|
||||
@MAINTAINER_MODE_FALSE@all-local:
|
||||
|
||||
# Rerun doxygen whenever autogen is run
|
||||
gutenprintui2: gutenprintui2-stamp
|
||||
gutenprintui2-stamp: gutenprintui2.dox $(top_srcdir)/configure
|
||||
$(RM) -rf gutenprintui2/html
|
||||
$(DOXYGEN) gutenprintui2.dox
|
||||
touch $@
|
||||
|
||||
gutenprint: gutenprint-stamp
|
||||
gutenprint-stamp: gutenprint.dox $(top_srcdir)/configure
|
||||
$(RM) -rf gutenprint/html
|
||||
$(DOXYGEN) gutenprint.dox
|
||||
touch $@
|
||||
|
||||
docs: gutenprint-stamp
|
||||
cd developer; $(MAKE)
|
||||
|
||||
ps: $(MANUAL).ps
|
||||
cd developer; $(MAKE) ps
|
||||
|
||||
pdf: $(MANUAL).pdf
|
||||
cd developer; $(MAKE) pdf
|
||||
|
||||
html:
|
||||
cd developer; $(MAKE) html
|
||||
|
||||
install-data-local: FAQ.html gutenprint-users-manual.odt gutenprint-users-manual.pdf
|
||||
$(mkdir_p) $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/FAQ.html $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint-users-manual.odt $(DESTDIR)$(docdir)
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint-users-manual.pdf $(DESTDIR)$(docdir)
|
||||
|
||||
maintainer-clean-local:
|
||||
$(RM) -r gutenprint
|
||||
|
||||
.PHONY: html ps pdf docs
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -1,564 +0,0 @@
|
||||
BUILD SCRIPTS: how they work and how to modify them
|
||||
===================================================
|
||||
|
||||
A guide to the Gutenprint build system.
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Gutenprint uses GNU autoconf and automake to generate the scripts that
|
||||
build the software. It also uses libtool to create shared libraries.
|
||||
This file describes how they work together. It also discusses the
|
||||
thinking behind how they are used in Gutenprint, and how to modify the
|
||||
Gutenprint build scripts without breaking other things. If you have
|
||||
used autoconf and automake before, there will be little that is new in
|
||||
this file, but you should note the conventions used in Gutenprint.
|
||||
|
||||
This file is split into the following sections:
|
||||
|
||||
o Setting up the autotools
|
||||
o Integration of the autotools
|
||||
o Normal use of the tools
|
||||
- Using CVS
|
||||
- Setting up the build scripts from CVS
|
||||
- Building the package
|
||||
o configure.ac
|
||||
- Layout
|
||||
- AC_SUBST
|
||||
- AC_DEFINE and AC_DEFINE_UNQUOTED
|
||||
- AM_CONDITIONAL
|
||||
o Makefile.am
|
||||
- Automake basics
|
||||
- Make and subdirectories
|
||||
- Conditional compilation
|
||||
- When automake is not enough...
|
||||
+ Rule syntax
|
||||
+ Correctly referencing files
|
||||
o aclocal
|
||||
o config.h
|
||||
o libgutenprint
|
||||
o automake subtleties
|
||||
o libtool tricks
|
||||
o Testing changes to the build scripts
|
||||
o Further information
|
||||
o Known problems
|
||||
|
||||
I hope you find this useful. If any part was not clear, or there was
|
||||
something that you would like covering, please let me know!
|
||||
|
||||
-- Roger Leigh <rleigh@debian.org>
|
||||
|
||||
$Id: README.maintaining,v 1.27 2008/07/29 01:52:09 rlk Exp $
|
||||
|
||||
|
||||
1. Setting up the autotools
|
||||
---------------------------
|
||||
|
||||
To build Gutenprint from CVS, or to regenerate the build scripts after
|
||||
modifying them, you need to install a number of GNU tools:
|
||||
|
||||
i. GNU autoconf (at least 2.54; at least 2.59 recommended)
|
||||
ii. GNU automake (at least 1.9)
|
||||
iii. GNU libtool (at least 1.5; at least 1.5.20 recommended)
|
||||
iv. GNU gettext (at least 0.16)
|
||||
v. GNU make (any recent version)
|
||||
|
||||
and also
|
||||
|
||||
vi. pkg-config (at least 0.18.0)
|
||||
|
||||
Additional packages are required to build certain parts of Gutenprint
|
||||
from CVS that are not needed when building from a normal distribution.
|
||||
These packages include:
|
||||
|
||||
vii. flex/lex (for building the GIMP plugin and the test pattern generator)
|
||||
viii. bison/yacc (for building the GIMP plugin and the test pattern generator)
|
||||
ix. doxygen (for building documentation)
|
||||
x. DocBook processors (db2html, db2pdf) (for building documentation)
|
||||
xi. DocBook-toys (for building documentation
|
||||
|
||||
These packages are in addition to the packages normally required to
|
||||
build Gutenprint, as described in the README at top level.
|
||||
|
||||
|
||||
2. Integration of the autotools
|
||||
-------------------------------
|
||||
|
||||
Each directory has a Makefile.am file which is processed by automake
|
||||
to produce a Makefile.in. In the root directory there is a
|
||||
configure.ac.in which is processed by autoconf to make a script called
|
||||
configure. When run, configure does various tests and checks, and
|
||||
then reads each Makefile.in to make a Makefile, and also generates a
|
||||
header called config.h from config.h.in. config.h.in is produced with
|
||||
autoheader from configure.ac and acconfig.h. autoconf also requires a
|
||||
file aclocal.m4 which is generated by aclocal.
|
||||
|
||||
All these files are generated simply by running `./autogen.sh' in the
|
||||
top directory. If you are using a distributed version of Gutenprint,
|
||||
as opposed to CVS, then they will already be present and the following
|
||||
will not be necessary.
|
||||
|
||||
This is probably best demonstrated graphically. The relationships
|
||||
between the files are as follows:
|
||||
|
||||
During package setup (from CVS), running autogen.sh:
|
||||
|
||||
autogen.sh
|
||||
m4extra/stp_release.m4.in ------------> m4/stp_release.m4
|
||||
|
||||
gettext files added
|
||||
libtool files added
|
||||
aclocal
|
||||
m4/* + m4local/* + configure.ac ------------> aclocal.m4
|
||||
|
||||
autoheader
|
||||
acconfig.h + configure.ac ------------> config.h.in
|
||||
|
||||
automake
|
||||
Makefile.am ------------> Makefile.in
|
||||
|
||||
autoconf
|
||||
aclocal.m4 + configure.ac ------------> configure
|
||||
|
||||
Running configure:
|
||||
configure (->config.status)
|
||||
Makefile.in ------------> Makefile
|
||||
config.h.in ------------> config.h
|
||||
headers.h.in ------------> headers.h
|
||||
manpage.n.in ------------> manpage.n
|
||||
|
||||
|
||||
3. Normal use of the tools
|
||||
--------------------------
|
||||
|
||||
This section describes how to use the scripts for basic day-to-day
|
||||
working.
|
||||
|
||||
3.1 Using CVS
|
||||
-------------
|
||||
The latest working copy of Gutenprint (HEAD) and all prior releases
|
||||
are available from CVS either anonymously (read-only with CVS pserver)
|
||||
or authenticated (read-write with SSH). The modulename for Gutenprint
|
||||
is 'print'.
|
||||
|
||||
Anonymous CVS access:
|
||||
The module you wish to check out must be specified as the modulename.
|
||||
When prompted for a password for anonymous, simply press the Enter
|
||||
key.
|
||||
|
||||
$ cvs -d:pserver:anonymous@gimp-print.cvs.sourceforge.net:/cvsroot/gimp-print login
|
||||
$ cvs -z3 -d:pserver:anonymous@gimp-print.cvs.sourceforge.net:/cvsroot/gimp-print co -P print
|
||||
|
||||
Developer CVS access via SSH:
|
||||
Only project developers can access the CVS tree via this method. SSH1
|
||||
must be installed on your client machine. Substitute modulename and
|
||||
developername with the proper values. Enter your site password when
|
||||
prompted. See the sourceforge documentation for more details,
|
||||
including how to use RSA keys for authentication.
|
||||
|
||||
$ export CVS_RSH=ssh
|
||||
$ cvs -z3 -d:ext:developername@gimp-print.cvs.sourceforge.net:/cvsroot/gimp-print co -P print
|
||||
|
||||
The CVS info documentation has very detailed explanations of
|
||||
everything that can be done with CVS.
|
||||
|
||||
3.2 Setting up the build scripts from CVS
|
||||
-----------------------------------------
|
||||
After initially getting a copy of Gutenprint from CVS, or if any of
|
||||
the scripts have changed, simply run autogen.sh:
|
||||
|
||||
$ ./autogen.sh [options]
|
||||
|
||||
Note that one can pass any options to autogen.sh that one would
|
||||
normally pass to configure. './configure --help' will give a complete
|
||||
list of options one can use.
|
||||
|
||||
3.3 Building the package
|
||||
------------------------
|
||||
The normal method for building from CVS is to run the `autogen.sh'
|
||||
script, and then `make'. The package can then be installed with 'make
|
||||
install':
|
||||
|
||||
$ ./autogen.sh [options]
|
||||
$ make
|
||||
$ make [DESTDIR=... VAR1=val1 VARn=valn] install
|
||||
|
||||
If the build scripts have been modified, it will not normally be
|
||||
necessary to re-run autogen.sh: the Makefiles will notice and
|
||||
regenerate themselves, running autoconf, automake, aclocal and
|
||||
configure again if needed.
|
||||
|
||||
The build is only guaranteed to work if make is run from the top
|
||||
level. It should be possible to make individual subdirectories, but
|
||||
sometimes this will cause problems e.g. if it depends on some other
|
||||
directory that should have been built first.
|
||||
|
||||
A common problem is getting errors about a non-existent file called
|
||||
`doc/version.texi'. This file is automatically generated. It will be
|
||||
generated if you run make after running './autogen.sh' or './configure
|
||||
--enable-maintainer-mode'. It is only generated if `maintainer-mode'
|
||||
is enabled, and should be present in the release tarball.
|
||||
|
||||
3.4 Extra make targets
|
||||
----------------------
|
||||
The Makefiles can do much more than build the package. `targets' can
|
||||
be given to make, which do various things. They are used as follows:
|
||||
|
||||
$ make target1 target2 ...
|
||||
|
||||
Some of the targets available are:
|
||||
|
||||
all same as make with no targets
|
||||
clean remove everything generated by 'make all'
|
||||
distclean as clean, and everything generated by configure
|
||||
maintainer-clean as distclean, and everything generated by
|
||||
autogen.sh
|
||||
install install the package
|
||||
uninstall uninstall the package
|
||||
tags make tags tables
|
||||
dist make a distribution
|
||||
distcheck as dist, but test it as well
|
||||
|
||||
Other targets are available. See Makefile for details.
|
||||
|
||||
|
||||
4. configure.ac
|
||||
---------------
|
||||
|
||||
This file is a Bourne shell script with m4 macros embedded in it.
|
||||
autoconf expands the m4 macros to produce configure. The configure
|
||||
script includes macros from the m4 and m4local directories, including
|
||||
ones to hard-code the release date into configure.
|
||||
|
||||
4.1 Layout
|
||||
----------
|
||||
The file is split into mostly discrete sections:
|
||||
|
||||
i. Versioning details (including library versioning)
|
||||
ii. autoconf and automake initialisation
|
||||
iii. libtool setup
|
||||
iv. Default settings (now part of v)
|
||||
v. configure --with and --enable options
|
||||
vi. Checks for programs
|
||||
vii. Compiler flags
|
||||
viii. Checks for libraries
|
||||
ix. Checks for headers
|
||||
x. Checks for typedefs, structures, and compiler characteristics
|
||||
xi. Define what has to be built (conditional compilation of things)
|
||||
xii. CUPS path settings
|
||||
xiii. Definitions and substitutions
|
||||
xiv. Parse and output files
|
||||
|
||||
The ordering of sections is based solely on that some checks depend on
|
||||
checks being performed previously. There is sometimes some overlap
|
||||
between sections, but any additions should go into the appropriate
|
||||
section, if at all possible. A new section may be created if there is
|
||||
no suitable section.
|
||||
|
||||
4.2 AC_SUBST
|
||||
------------
|
||||
The main use of the configure script is to produce customised
|
||||
Makefiles, and other files too. This is done through the use of
|
||||
AC_SUBST, which makes a variable get substituted in a file:
|
||||
|
||||
ESCPUTIL_BIN="escputil"
|
||||
AC_SUBST(ESCPUTIL_BIN)
|
||||
|
||||
will replace any instance of @ESCPUTIL_BIN@ in a template file (ending
|
||||
in .in'). E.g.
|
||||
|
||||
bin_PROGRAMS = @ESCPUTIL_BIN@
|
||||
|
||||
4.3 AC_DEFINE and AC_DEFINE_UNQUOTED
|
||||
------------------------------------
|
||||
These macros are used to insert a #define in config.h.
|
||||
|
||||
AC_DEFINE(MACRO)
|
||||
|
||||
will cause '#define MACRO 1' to appear in config.h (this will be of
|
||||
the form '#undef MACRO' in config.h.in)
|
||||
|
||||
AC_DEFINE_UNQUOTED is the same as AC_DEFINE, except that a second
|
||||
option can be used to define a string literal.
|
||||
|
||||
4.4 AM_CONDITIONAL
|
||||
------------------
|
||||
This is used to make certain parts of a Makefile conditional depending
|
||||
on what happens in configure. It is used in the form:
|
||||
|
||||
AM_CONDITIONAL(NAME, test)
|
||||
where name is the name of the conditional you define, and test
|
||||
is a check that must return true for the conditional to be
|
||||
defined.
|
||||
|
||||
This is used in a Makefile.am as follows:
|
||||
|
||||
if NAME
|
||||
[do stuff]
|
||||
endif
|
||||
|
||||
Note that you cannot also use normal make conditionals. Its main use
|
||||
is to define macros, or to make a rule conditional.
|
||||
|
||||
|
||||
5. Makefile.am
|
||||
--------------
|
||||
|
||||
There is a Makefile.am in each directory, apart from a few where the
|
||||
Makefile the next level up handles things. Each Makefile.am is split
|
||||
into several sections:
|
||||
|
||||
i. Macros common to every Makefile.am
|
||||
ii. Path macros
|
||||
iii. Compiler macros
|
||||
iv. Build dependencies. This is further split into a) binaries and b) data.
|
||||
Each of these sections has
|
||||
1. list of objects to build (if applicable)
|
||||
2. EXTRA_ objects (if applicable)
|
||||
3. Dependencies for each object (e.g. sources)
|
||||
v. Rules
|
||||
vi. Cleaning macros
|
||||
vii. EXTRA_DIST
|
||||
|
||||
Keeping everything in this logical order keeps them neat and readable.
|
||||
Not every Makefile.am will have all these sections, but those that are
|
||||
present should be ordered in this way.
|
||||
|
||||
5.1 Automake basics
|
||||
-------------------
|
||||
Automake parses Makefile.am, and generates rules in Makefile.in
|
||||
depending on what it finds. There are `primary' variables, such as
|
||||
PROGRAMS, SCRIPTS, MANS, HEADERS and DATA that describe the type of
|
||||
source one is defining. These are coupled with a location to install
|
||||
into. For example, these are a few standard locations: bindir,
|
||||
sbindir, mandir, datadir, pkgdatadir. You can define your own quite
|
||||
easily. They are used together as follows:
|
||||
|
||||
bin_PROGRAMS = myprog [where bindir=$(prefix)/bin]
|
||||
pkgdata_DATA = datafile1 datafile2
|
||||
[where pkgdatadir=$(prefix)/share/$(PACKAGE)]
|
||||
|
||||
Note! the 'dir' postfix is stripped off the location. I.e. bindir ->
|
||||
bin. That is all there is to it! You can use these simple variables
|
||||
to describe everything in your source, and where is gets installed to.
|
||||
|
||||
In the case of PROGRAMS, one also has to specify the SOURCES as well.
|
||||
E.g. in the example above, a binary called `myprog' was defined. The
|
||||
sources for this program are defined as follows:
|
||||
|
||||
myprog_SOURCES = myprog.c myprog.h
|
||||
|
||||
automake will create all of the rules needed to build and install
|
||||
everything. An extra point is that suppose one doesn't want to
|
||||
install something? For this there is a 'noinst' macro, so that
|
||||
noinst_PROGRAMS will not ever be installed. One might also want
|
||||
noinst_HEADERS. If one wanted to install headers, one would define
|
||||
|
||||
includedir=$(prefix)/include
|
||||
and then
|
||||
pkgincludedir=$(includedir)/$(PACKAGE).
|
||||
Now
|
||||
pkginclude_HEADERS = myheader.h
|
||||
|
||||
will install the header into the correct location. Some of the
|
||||
locations in the above examples are defined by default. The others
|
||||
must be defined by hand.
|
||||
|
||||
There are also some macros with specific functions. Any file that is
|
||||
not mentioned in a macro, and also and MANS, will have to be put in an
|
||||
EXTRA_DIST macro, so that automake knows to distribute them.
|
||||
|
||||
Also, some files might not be automatically cleaned. There are
|
||||
CLEANFILES, DISTCLEANFILES and MAINTAINERCLEANFILES macros for use
|
||||
with the 'clean', 'distclean' and 'maintainer-clean' make targets
|
||||
respectively. Use with caution! One does not want to clean things
|
||||
that cannot be recreated! CLEANFILES should be regenerated with
|
||||
'make' as part of the build process, DISTCLEANFILES by configure
|
||||
(e.g. Makefiles) and MAINTAINERCLEANFILES should be created by
|
||||
'autogen.sh' and the programs it calls (e.g. Makefile.in's which are
|
||||
created by automake).
|
||||
|
||||
5.2 Make and subdirectories
|
||||
---------------------------
|
||||
If a Makefile.am has a SUBDIRS macro, make will recurse through these
|
||||
subdirectories, running make in each one. e.g. in the top-level
|
||||
Makefile.am:
|
||||
|
||||
SUBDIRS = include src samples test po man doc scripts
|
||||
|
||||
In this case the order of directories is critical: lib, src and test
|
||||
depend on include being built. Also, test depends on libgutenprint in
|
||||
src and po must be run after all the source has been built (as it
|
||||
parses all C source, possibly including dynamically generated code).
|
||||
The same applies in src/Makefile.am: most directories require
|
||||
libgutenprint for linking with, and libgutenprint requires printdef.
|
||||
|
||||
Therefore the order of building is critical! It should be technically
|
||||
possible to run make in any subdirectory and have all the dependencies
|
||||
satisfied by rules in that Makefile. Unfortunately, this requires
|
||||
complex rules in each directory, and this cannot be done as the source
|
||||
tree gets bigger and more complex. As a result, one should only run
|
||||
make from the top level, as only this is certain to satisfy all
|
||||
dependencies.
|
||||
|
||||
5.3 Conditional compilation
|
||||
---------------------------
|
||||
Most of the source is conditionally compiled according to the defaults
|
||||
in configure.ac, which may be overridden by passing options to
|
||||
configure, or possibly by the results of configure checks. Depending
|
||||
on the result, configure may substitute what to build into the
|
||||
generated Makefile, e.g.:
|
||||
|
||||
if BUILD_ESCPUTIL
|
||||
bin_PROGRAMS = escputil
|
||||
endif
|
||||
|
||||
If you use @@ substitutions, make sure that you use the EXTRA_ prefix
|
||||
(e.g. EXTRA_PROGRAMS), so that automake knows what is to be built.
|
||||
|
||||
5.4 When automake is not enough...
|
||||
----------------------------------
|
||||
When one wants to do something that is not within the scope of the
|
||||
facilities automake provides, one can write one's own rules, just like
|
||||
in any other Makefile.
|
||||
|
||||
4.4.1 Rule syntax
|
||||
Make rules take the following form:
|
||||
|
||||
target ... : prerequisites ...
|
||||
commands
|
||||
...
|
||||
...
|
||||
where
|
||||
target is the name of a file (or files) to create
|
||||
prerequisites are files that are needed to make the target
|
||||
commands are commands to make the target
|
||||
|
||||
The target will only be made if it does not exist or the timestamp on
|
||||
any of the prerequisites is newer, indicating that it is out of date.
|
||||
|
||||
make is a complex program, and this is just the bare basic
|
||||
operation. See the GNU make info documentation for a detailed
|
||||
explanation.
|
||||
|
||||
4.4.2 Correctly referencing files
|
||||
A file may be present either in the _source_ or _build_ directory,
|
||||
which may or may not be the same. The source directory contains the
|
||||
unchanging source files, whereas the build directory contains all the
|
||||
generated files, such as Makefiles, object code, libraries and
|
||||
executables and also generated headers, C source and manual pages.
|
||||
The macros to use are:
|
||||
|
||||
$(srcdir) The equivalent directory in the source tree
|
||||
. The build directory (current directory)
|
||||
$(top_srcdir) The highest level of the source tree
|
||||
$(top_builddir) The highest level of the build tree
|
||||
|
||||
|
||||
6. aclocal
|
||||
----------
|
||||
|
||||
aclocal contains all the macros that are needed by autoconf to
|
||||
generate configure from configure.ac. It is created by running
|
||||
'aclocal'. If any of the macros are not present on your system, you
|
||||
can point out where the macros distributed with Gutenprint are by
|
||||
using '-I macrodir' with aclocal.
|
||||
|
||||
|
||||
7. config.h
|
||||
-----------
|
||||
|
||||
config.h is created by configure and should beincluded by all of the C
|
||||
source files in the distribution. It is created from config.h.in by
|
||||
'configure'. config.h.in is created from configure.ac by
|
||||
'autoheader'.
|
||||
|
||||
|
||||
8. libgutenprint
|
||||
----------------
|
||||
|
||||
Any source that is to link with libgutenprint should include the gutenprint.h
|
||||
header. The right way to do this is as follows:
|
||||
|
||||
#include <gutenprint/gutenprint.h>
|
||||
|
||||
To ensure proper linking, the Makefile.am should have the following:
|
||||
|
||||
program_LDADD = $(LIBGUTENPRINT_LIBS)
|
||||
|
||||
The Makefile.am should also include any necessary CFLAGS with:
|
||||
|
||||
LOCAL_CPPFLAGS = $(LIBGUTENPRINT_CFLAGS)
|
||||
|
||||
|
||||
9. automake subtleties
|
||||
----------------------
|
||||
|
||||
Automake parses Makefile.am to produce Makefile.in. Makefile.am looks
|
||||
much like a normal Makefile, e.g. you can write your own rules in it.
|
||||
However, it is not entirely like a normal Makefile. In particular,
|
||||
automake conditionals are not the same as make conditionals (which are
|
||||
not available).
|
||||
|
||||
Another gotcha is that automake adds rules of its own, so you must make sure
|
||||
that the names do not clash, or you may get obscure problems occuring
|
||||
when you override an automake rule.
|
||||
|
||||
|
||||
10. libtool tricks
|
||||
------------------
|
||||
|
||||
libtool is used to create shared libraries. One gotcha with libtool
|
||||
is that if a program is linked with a libtool shared library in the
|
||||
build tree, then it is actually created in '.libs/program', and not
|
||||
'program'. However, if it is statically linked (e.g. the platform
|
||||
does not support shared libraries, or you used --disable-shared with
|
||||
configure, perhaps to make the build faster or to be able to use
|
||||
`valgrind' usefully), then it will be created as 'program'. This is
|
||||
so that you can run the program before you install it. If it is
|
||||
linked with shared libraries, a wrapper script does some magic with
|
||||
LD_LIBRARY_PATH. However, this means that your install rules must
|
||||
take this into account by checking that '.libs/program exists', and
|
||||
installing it if it is present, but otherwise installing 'program'.
|
||||
Automake install rules do this automatically, but it you write your
|
||||
own, you must take this into consideration. The best option is to not
|
||||
use custom install rules for binaries.
|
||||
|
||||
|
||||
11. Testing changes to the build scripts
|
||||
---------------------------------------
|
||||
|
||||
If you make a change to one of the scripts, simply running autogen.sh
|
||||
and seeing if 'make' and 'make install' work is not enough. In
|
||||
particular, you must check that it does not break 'VPATH' builds where
|
||||
the source and build directories are not the same. To do this:
|
||||
|
||||
$ mkdir /var/tmp/tmp-build
|
||||
$ cd /var/tmp/tmp-build
|
||||
$ ~roger/gutenprint/current/configure [options]
|
||||
$ make
|
||||
$ make DESTDIR=/var/tmp/tmp-inst install
|
||||
|
||||
You should also test that 'make install' works with and without
|
||||
DESTDIR set. Note that old gettext releases do not support DESTDIR,
|
||||
but the current 0.10.x versions do. The old gettext also breaks in
|
||||
VPATH builds due to MKINSTALLDIRS being wrongly defined. This is also
|
||||
fixed in the current version.
|
||||
|
||||
|
||||
12. Further information
|
||||
-----------------------
|
||||
|
||||
autoconf: autoconf.info
|
||||
automake: automake.info
|
||||
CVS: cvs.info
|
||||
gettext: gettext.info
|
||||
libtool: libtool.info
|
||||
make: make.info
|
||||
|
||||
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
End:
|
@ -1,193 +0,0 @@
|
||||
## $Id: Makefile.am,v 1.22 2008/02/27 12:28:06 rlk Exp $
|
||||
## Copyright (C) 2001 Andy Stewart and Roger Leigh
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2, or (at your option)
|
||||
## any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
include $(top_srcdir)/scripts/global.mk
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
MANUAL_SRC_FILES = \
|
||||
copying.xml \
|
||||
dither.xml \
|
||||
escp2.xml \
|
||||
gutenprint.xml \
|
||||
gpl-appendix.xml \
|
||||
introduction.xml \
|
||||
new-printer.xml \
|
||||
problems.xml \
|
||||
using.xml \
|
||||
weave.xml
|
||||
|
||||
HTMLDIR = reference-html
|
||||
|
||||
STANDARD_TARGETS = html
|
||||
|
||||
DISTHOOKDIRS = $(HTMLDIR)
|
||||
|
||||
|
||||
if MAINTAINER_MODE
|
||||
MAINT_MODE = true
|
||||
else
|
||||
MAINT_MODE = false
|
||||
endif
|
||||
|
||||
if MAINTAINER_MODE
|
||||
ALL_LOCAL_TARGETS = docs
|
||||
else
|
||||
ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
|
||||
endif
|
||||
|
||||
all-local: $(ALL_LOCAL_TARGETS)
|
||||
|
||||
|
||||
## Rules
|
||||
|
||||
dist-hook: html-stamp
|
||||
for dir in $(DISTHOOKDIRS) ; do \
|
||||
if test -d $(srcdir)/$$dir ; then \
|
||||
mkdir $(distdir)/$$dir; \
|
||||
for dirfile in $(srcdir)/$$dir/*; do \
|
||||
if test -f $$dirfile ; then \
|
||||
cp -p $$dirfile $(distdir)/$$dir ; \
|
||||
fi ; \
|
||||
if test -d $$dirfile ; then \
|
||||
cp -pR $$dirfile $(distdir)/$$dir ; \
|
||||
fi ; \
|
||||
done \
|
||||
fi \
|
||||
done
|
||||
for file in $(DISTHOOKFILES) ; do \
|
||||
if test -f $$file ; then \
|
||||
cp -p $$file $(distdir) ; \
|
||||
fi ; \
|
||||
done
|
||||
|
||||
docs: html pdf
|
||||
|
||||
pdf: gutenprint.pdf
|
||||
|
||||
gutenprint.pdf: $(MANUAL_SRC_FILES)
|
||||
@if [ -z "$(DB2PDF)" ] ; then \
|
||||
echo "No db2pdf: cannot build documentation!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
if test $(srcdir) = '.' ; then \
|
||||
: ; \
|
||||
else \
|
||||
for file in $(MANUAL_SRC_FILES) ; do \
|
||||
if test -L $$file ; then \
|
||||
$(RM) -f $$file ; \
|
||||
fi ; \
|
||||
$(LN_S) -f $(srcdir)/$$file $$file ; \
|
||||
done ; \
|
||||
fi ; \
|
||||
$(DB2PDF) gutenprint.xml
|
||||
|
||||
html: html-stamp
|
||||
|
||||
# This ugly workaround with SOURCE is because db2html doesn't seem to like
|
||||
# "./users-guide.sgml". Note that db2ps does not have the same limitation.
|
||||
# html-stamp should *only* be called by html--it's just a timestamp!
|
||||
|
||||
html-stamp: $(MANUAL_SRC_FILES)
|
||||
@if [ -z "$(DB2HTML)" ] ; then \
|
||||
echo "No db2html: cannot build documentation!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
if test $(srcdir) = '.' ; then \
|
||||
: ; \
|
||||
else \
|
||||
for file in $(MANUAL_SRC_FILES) ; do \
|
||||
if test -L $$file ; then \
|
||||
$(RM) -f $$file ; \
|
||||
fi ; \
|
||||
$(LN_S) -f $(srcdir)/$$file $$file ; \
|
||||
done ; \
|
||||
fi
|
||||
$(DB2HTML) gutenprint.xml
|
||||
-$(RM) -rf $(HTMLDIR)
|
||||
mv gutenprint $(HTMLDIR)
|
||||
chmod a+rx $(HTMLDIR)
|
||||
touch html-stamp
|
||||
|
||||
install-data-local: $(STANDARD_TARGETS)
|
||||
if test -n '$(STANDARD_TARGETS)' ; then \
|
||||
$(mkdir_p) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
|
||||
if test -f gutenprint.pdf ; then \
|
||||
$(INSTALL_DATA) gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
|
||||
elif test -f $(srcdir)/gutenprint.pdf ; then \
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
|
||||
fi ; \
|
||||
if test -d $(HTMLDIR) ; then \
|
||||
HTMLGENDIR="$(HTMLDIR)" ; \
|
||||
elif test -d $(srcdir)/$(HTMLDIR) ; then \
|
||||
HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
|
||||
else \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
for file in $$HTMLGENDIR/*.html $$HTMLGENDIR/*.css ; do \
|
||||
if test -f $$file ; then \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
|
||||
fi ; \
|
||||
done ; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
-$(RM) -r $(DESTDIR)$(datadir)/$(PACKAGE)/doc
|
||||
|
||||
CLEAN_MANUALS = \
|
||||
$(RM) -f gutenprint.pdf gutenprint.ps; \
|
||||
$(RM) -rf *html-stamp $(HTMLDIR)
|
||||
|
||||
clean-local:
|
||||
if test $(srcdir) = "." -a $(MAINT_MODE) = false ; then \
|
||||
echo "clean-local: Not removing $(HTMLDIR)" ; \
|
||||
echo 'clean-local: Not removing gutenprint.pdf' ; \
|
||||
echo 'clean-local: Not removing gutenprint.ps' ; \
|
||||
else \
|
||||
$(CLEAN_MANUALS) ; \
|
||||
fi
|
||||
if test $(srcdir) = "." ; then \
|
||||
: ; \
|
||||
else \
|
||||
$(RM) -f $(MANUAL_SRC_FILES) ; \
|
||||
fi
|
||||
-$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
|
||||
-$(RM) -rf db2html* DB2HTML* CATALOG.local
|
||||
|
||||
veryclean:
|
||||
$(MAKE) MAINT_MODE=true clean
|
||||
|
||||
maintainer-clean-local:
|
||||
$(CLEAN_MANUALS)
|
||||
|
||||
|
||||
## Clean
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in *html-stamp
|
||||
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(MANUAL_SRC_FILES) \
|
||||
gutenprint.pdf \
|
||||
html-stamp
|
||||
|
||||
.PHONY: docs html ps pdf
|
@ -1,628 +0,0 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Variables
|
||||
|
||||
#export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main
|
||||
#export STP_DATA_PATH = $(top_srcdir)/src/xml
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/scripts/global.mk
|
||||
subdir = doc/developer
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \
|
||||
$(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_gimp.m4 \
|
||||
$(top_srcdir)/m4/stp_option.m4 $(top_srcdir)/m4/stp_release.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALL_LINGUAS = @ALL_LINGUAS@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONVERT = @CONVERT@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CUPS_CFLAGS = @CUPS_CFLAGS@
|
||||
CUPS_CONFIG = @CUPS_CONFIG@
|
||||
CUPS_LIBS = @CUPS_LIBS@
|
||||
CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DB2HTML = @DB2HTML@
|
||||
DB2PDF = @DB2PDF@
|
||||
DB2PS = @DB2PS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DIALOG = @DIALOG@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
DVIPDF = @DVIPDF@
|
||||
DVIPS = @DVIPS@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FIND = @FIND@
|
||||
FOOMATIC_CONFIGURE = @FOOMATIC_CONFIGURE@
|
||||
FOOMATIC_KITLOAD = @FOOMATIC_KITLOAD@
|
||||
FOOMATIC_PPDFILE = @FOOMATIC_PPDFILE@
|
||||
GENPPD_LIBS = @GENPPD_LIBS@
|
||||
GIMP2_CFLAGS = @GIMP2_CFLAGS@
|
||||
GIMP2_LIBS = @GIMP2_LIBS@
|
||||
GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@
|
||||
GLIB_MKENUMS = @GLIB_MKENUMS@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GNUCFLAGS = @GNUCFLAGS@
|
||||
GREP = @GREP@
|
||||
GTK2_CFLAGS = @GTK2_CFLAGS@
|
||||
GTK2_LIBS = @GTK2_LIBS@
|
||||
GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@
|
||||
GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@
|
||||
GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@
|
||||
GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@
|
||||
GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@
|
||||
GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la
|
||||
GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@
|
||||
GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@
|
||||
GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@
|
||||
GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@
|
||||
GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@
|
||||
GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@
|
||||
|
||||
# Libraries
|
||||
GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la
|
||||
GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@
|
||||
GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@
|
||||
GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@
|
||||
GUTENPRINT_VERSION = @GUTENPRINT_VERSION@
|
||||
IJS_CFLAGS = @IJS_CFLAGS@
|
||||
IJS_CONFIG = @IJS_CONFIG@
|
||||
IJS_LIBS = @IJS_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBREADLINE_DEPS = @LIBREADLINE_DEPS@
|
||||
LIBS = $(INTLLIBS) @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTALLOCA = @LTALLOCA@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PLUG_IN_PATH = @PLUG_IN_PATH@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
RELEASE_DATE = @RELEASE_DATE@
|
||||
RM = @RM@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEST = @TEST@
|
||||
TEXI2HTML = @TEXI2HTML@
|
||||
TRUE = @TRUE@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WHICH_PPDS = @WHICH_PPDS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
cups_bindir = @cups_bindir@
|
||||
cups_conf_datadir = @cups_conf_datadir@
|
||||
cups_conf_serverbin = @cups_conf_serverbin@
|
||||
cups_conf_serverroot = @cups_conf_serverroot@
|
||||
cups_exec_prefix = @cups_exec_prefix@
|
||||
cups_prefix = @cups_prefix@
|
||||
cups_sbindir = @cups_sbindir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
gimp2_plug_indir = @gimp2_plug_indir@
|
||||
gutenprint_cflags = @gutenprint_cflags@
|
||||
gutenprint_libdeps = @gutenprint_libdeps@
|
||||
gutenprint_libs = @gutenprint_libs@
|
||||
gutenprintui2_cflags = @gutenprintui2_cflags@
|
||||
gutenprintui2_libdeps = @gutenprintui2_libdeps@
|
||||
gutenprintui2_libs = @gutenprintui2_libs@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS)
|
||||
GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la
|
||||
MANUAL_SRC_FILES = \
|
||||
copying.xml \
|
||||
dither.xml \
|
||||
escp2.xml \
|
||||
gutenprint.xml \
|
||||
gpl-appendix.xml \
|
||||
introduction.xml \
|
||||
new-printer.xml \
|
||||
problems.xml \
|
||||
using.xml \
|
||||
weave.xml
|
||||
|
||||
HTMLDIR = reference-html
|
||||
STANDARD_TARGETS = html
|
||||
DISTHOOKDIRS = $(HTMLDIR)
|
||||
@MAINTAINER_MODE_FALSE@MAINT_MODE = false
|
||||
@MAINTAINER_MODE_TRUE@MAINT_MODE = true
|
||||
@MAINTAINER_MODE_FALSE@ALL_LOCAL_TARGETS = $(STANDARD_TARGETS)
|
||||
@MAINTAINER_MODE_TRUE@ALL_LOCAL_TARGETS = docs
|
||||
CLEAN_MANUALS = \
|
||||
$(RM) -f gutenprint.pdf gutenprint.ps; \
|
||||
$(RM) -rf *html-stamp $(HTMLDIR)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in *html-stamp
|
||||
EXTRA_DIST = \
|
||||
$(MANUAL_SRC_FILES) \
|
||||
gutenprint.pdf \
|
||||
html-stamp
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/developer/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/developer/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic \
|
||||
maintainer-clean-local
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-local
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool clean-local dist-hook distclean \
|
||||
distclean-generic distclean-libtool distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-local mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
uninstall uninstall-am uninstall-local
|
||||
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Rules
|
||||
|
||||
$(top_builddir)/src/main/libgutenprint.la:
|
||||
cd $(top_builddir)/src/main; \
|
||||
$(MAKE)
|
||||
|
||||
$(top_builddir)/src/gutenprintui/libgutenprintui.la:
|
||||
cd $(top_builddir)/src/gutenprintui; \
|
||||
$(MAKE)
|
||||
|
||||
$(top_builddir)/src/gutenprintui2/libgutenprintui2.la:
|
||||
cd $(top_builddir)/src/gutenprintui2; \
|
||||
$(MAKE)
|
||||
|
||||
all-local: $(ALL_LOCAL_TARGETS)
|
||||
|
||||
dist-hook: html-stamp
|
||||
for dir in $(DISTHOOKDIRS) ; do \
|
||||
if test -d $(srcdir)/$$dir ; then \
|
||||
mkdir $(distdir)/$$dir; \
|
||||
for dirfile in $(srcdir)/$$dir/*; do \
|
||||
if test -f $$dirfile ; then \
|
||||
cp -p $$dirfile $(distdir)/$$dir ; \
|
||||
fi ; \
|
||||
if test -d $$dirfile ; then \
|
||||
cp -pR $$dirfile $(distdir)/$$dir ; \
|
||||
fi ; \
|
||||
done \
|
||||
fi \
|
||||
done
|
||||
for file in $(DISTHOOKFILES) ; do \
|
||||
if test -f $$file ; then \
|
||||
cp -p $$file $(distdir) ; \
|
||||
fi ; \
|
||||
done
|
||||
|
||||
docs: html pdf
|
||||
|
||||
pdf: gutenprint.pdf
|
||||
|
||||
gutenprint.pdf: $(MANUAL_SRC_FILES)
|
||||
@if [ -z "$(DB2PDF)" ] ; then \
|
||||
echo "No db2pdf: cannot build documentation!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
if test $(srcdir) = '.' ; then \
|
||||
: ; \
|
||||
else \
|
||||
for file in $(MANUAL_SRC_FILES) ; do \
|
||||
if test -L $$file ; then \
|
||||
$(RM) -f $$file ; \
|
||||
fi ; \
|
||||
$(LN_S) -f $(srcdir)/$$file $$file ; \
|
||||
done ; \
|
||||
fi ; \
|
||||
$(DB2PDF) gutenprint.xml
|
||||
|
||||
html: html-stamp
|
||||
|
||||
# This ugly workaround with SOURCE is because db2html doesn't seem to like
|
||||
# "./users-guide.sgml". Note that db2ps does not have the same limitation.
|
||||
# html-stamp should *only* be called by html--it's just a timestamp!
|
||||
|
||||
html-stamp: $(MANUAL_SRC_FILES)
|
||||
@if [ -z "$(DB2HTML)" ] ; then \
|
||||
echo "No db2html: cannot build documentation!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
if test $(srcdir) = '.' ; then \
|
||||
: ; \
|
||||
else \
|
||||
for file in $(MANUAL_SRC_FILES) ; do \
|
||||
if test -L $$file ; then \
|
||||
$(RM) -f $$file ; \
|
||||
fi ; \
|
||||
$(LN_S) -f $(srcdir)/$$file $$file ; \
|
||||
done ; \
|
||||
fi
|
||||
$(DB2HTML) gutenprint.xml
|
||||
-$(RM) -rf $(HTMLDIR)
|
||||
mv gutenprint $(HTMLDIR)
|
||||
chmod a+rx $(HTMLDIR)
|
||||
touch html-stamp
|
||||
|
||||
install-data-local: $(STANDARD_TARGETS)
|
||||
if test -n '$(STANDARD_TARGETS)' ; then \
|
||||
$(mkdir_p) $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
|
||||
if test -f gutenprint.pdf ; then \
|
||||
$(INSTALL_DATA) gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
|
||||
elif test -f $(srcdir)/gutenprint.pdf ; then \
|
||||
$(INSTALL_DATA) $(srcdir)/gutenprint.pdf $(DESTDIR)$(datadir)/$(PACKAGE)/doc ; \
|
||||
fi ; \
|
||||
if test -d $(HTMLDIR) ; then \
|
||||
HTMLGENDIR="$(HTMLDIR)" ; \
|
||||
elif test -d $(srcdir)/$(HTMLDIR) ; then \
|
||||
HTMLGENDIR="$(srcdir)/$(HTMLDIR)" ; \
|
||||
else \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
for file in $$HTMLGENDIR/*.html $$HTMLGENDIR/*.css ; do \
|
||||
if test -f $$file ; then \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/$(PACKAGE)/doc/$(HTMLDIR) ; \
|
||||
fi ; \
|
||||
done ; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
-$(RM) -r $(DESTDIR)$(datadir)/$(PACKAGE)/doc
|
||||
|
||||
clean-local:
|
||||
if test $(srcdir) = "." -a $(MAINT_MODE) = false ; then \
|
||||
echo "clean-local: Not removing $(HTMLDIR)" ; \
|
||||
echo 'clean-local: Not removing gutenprint.pdf' ; \
|
||||
echo 'clean-local: Not removing gutenprint.ps' ; \
|
||||
else \
|
||||
$(CLEAN_MANUALS) ; \
|
||||
fi
|
||||
if test $(srcdir) = "." ; then \
|
||||
: ; \
|
||||
else \
|
||||
$(RM) -f $(MANUAL_SRC_FILES) ; \
|
||||
fi
|
||||
-$(RM) -rf *.tex *.log *.aux *.dvi *.gz *.out *.junk *.out *.fot
|
||||
-$(RM) -rf db2html* DB2HTML* CATALOG.local
|
||||
|
||||
veryclean:
|
||||
$(MAKE) MAINT_MODE=true clean
|
||||
|
||||
maintainer-clean-local:
|
||||
$(CLEAN_MANUALS)
|
||||
|
||||
.PHONY: docs html ps pdf
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -1,40 +0,0 @@
|
||||
<chapter>
|
||||
<title>Copying, modification and redistribution</title>
|
||||
<para>
|
||||
Gutenprint is <emphasis>free</emphasis>; this means that everyone
|
||||
is free to use it and free to redistribute it on a free basis.
|
||||
Gutenprint is not in the public domain; it is copyrighted and
|
||||
there are restrictions on its distribution, but these restrictions
|
||||
are designed to permit everything that a good cooperating citizen
|
||||
would want to do. What is not allowed is to try to prevent others
|
||||
from further sharing any version of Gutenprint that they might get
|
||||
from you.
|
||||
</para>
|
||||
<para>
|
||||
Specifically, we want to make sure that you have the right to give
|
||||
away copies of Gutenprint, that you receive source code or else
|
||||
can get it if you want it, that you can change Gutenprint or use
|
||||
pieces of it in new free programs, and that you know you can do
|
||||
these things.
|
||||
</para>
|
||||
<para>
|
||||
To make sure that everyone has such rights, we have to forbid you
|
||||
to deprive anyone else of these rights. For example, if you
|
||||
distribute copies of Gutenprint, you must give the recipients all
|
||||
the rights that you have. You must make sure that they, too,
|
||||
receive or can get the source code, and you must tell them their
|
||||
rights.
|
||||
</para>
|
||||
<para>
|
||||
Also, for our own protection, we must make certain that everyone
|
||||
finds out that there is no warranty for Gutenprint. If Gutenprint
|
||||
is modified by someone else and passed on, we want their
|
||||
recipients to know that what they have is not what we distributed,
|
||||
so that any problems introduced by others will no reflect on our
|
||||
reputation.
|
||||
</para>
|
||||
<para>
|
||||
Gutenprint is licensed under the terms of the GNU General Public
|
||||
License (GPL), reproduced in <xref linkend="gpl"/>.
|
||||
</para>
|
||||
</chapter>
|
@ -1,679 +0,0 @@
|
||||
<chapter>
|
||||
<title>Dithering</title>
|
||||
<para>
|
||||
The dithering code in
|
||||
<filename>src/main/print-dither.c</filename> attempts to
|
||||
reproduce various shades of gray (or all colors) from only a few
|
||||
different inks (black, cyan, magenta, yellow, and sometimes
|
||||
light cyan and light magenta). The dots can't vary in darkness
|
||||
or size (except for certain special printers), and so we need to
|
||||
lay down a certain fraction of dots to represent each distinct
|
||||
level.
|
||||
</para>
|
||||
<para>
|
||||
This sounds straightforward; in practice, it isn't. Completely
|
||||
random distribution of dots (simple probabilistic dithering)
|
||||
would create grainy clumps and light spots. The smoothest
|
||||
pattern results from an equidistant spacing of dots.
|
||||
Approximating this requires sophisticated algorithms. We have
|
||||
two dithering algorithms, an ordered dither algorithm that uses
|
||||
a grid (matrix) to decide whether to print, and a modified
|
||||
Floyd-Steinberg error diffusion algorithm that uses a grid in a
|
||||
slightly different way.
|
||||
</para>
|
||||
<para>
|
||||
We currently have three dithering functions:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><literal>dither_fastblack</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This produces pure black or white from a pre-dithered
|
||||
input. This is used for two purposes: for printing pure
|
||||
black and white very quickly (e.g. text), and for printing
|
||||
pre-screened monochrome output that was rasterized
|
||||
externally.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>dither_black</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This produces black from grayscale input. The new
|
||||
dither_black can produce either a single or multiple
|
||||
levels of black, for printers supporting variable dot
|
||||
size.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>dither_cmyk</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
|
||||
CcMmYK, CcMmYy, CcMmYyK, or any variants). The new
|
||||
routine can handle single or multiple levels of each
|
||||
color.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
There is a choice of dithering algorithms. Four of them are
|
||||
based on a basic error diffusion, with a few tweaks of my own.
|
||||
The other one is ‘ordered’. However, they all share
|
||||
the basic operation in common. First, the algorithm picks what
|
||||
kind of dot (if there are multiple dot sizes and/or tones that
|
||||
may be picked) is the candidate to be printed. This decision is
|
||||
made based on the darkness at the point being dithered. Then,
|
||||
it decides whether the dot will be printed at all. What this is
|
||||
based on depends upon which algorithm family we use. This is
|
||||
all described in more detail below.
|
||||
</para>
|
||||
<para>
|
||||
Ordered dithering works by comparing the value at a given point
|
||||
with the value of a tiled matrix. If the value at the point is
|
||||
greater than the value in the matrix, the dot is printed. The
|
||||
matrix should consist of a set of evenly spaced points between 0
|
||||
and the upper limit. The choice of matrix is very important for
|
||||
print quality. A good dither matrix will emphasize high
|
||||
frequency components, which distributes dots evenly with a
|
||||
minimum of clumping. The matrices used here are all simple
|
||||
matrices that are expanded recursively to create larger matrices
|
||||
with the same kind of even point distribution. This is
|
||||
described below.
|
||||
</para>
|
||||
<para>
|
||||
Note that it is important to use different matrices for the two
|
||||
sub-operations, because otherwise the choice about whether to
|
||||
print and the choice of dot size will be correlated. The usual
|
||||
result is that the print is either too dark or too light, but
|
||||
there can be other problems.
|
||||
</para>
|
||||
<para>
|
||||
Ordered dithering works quite well on single dot size, four
|
||||
color printers. It has not been well tested on four color,
|
||||
variable dot size printers. It should be avoided on six color
|
||||
printers.
|
||||
</para>
|
||||
<para>
|
||||
Error diffusion works by taking the output error at a given
|
||||
pixel and “diffusing” it into surrounding pixels.
|
||||
Output error is the difference between the amount of ink output
|
||||
and the input level at each pixel. For simple printers, with
|
||||
one or four ink colors and only one dot size, the amount of ink
|
||||
output is either 65536 (i. e. full output) or 0 (no output).
|
||||
The difference between this and the input level is the error.
|
||||
Normal error diffusion adds part of this error to the adjoining
|
||||
pixels in the next column and the next row (the algorithm simply
|
||||
scans each row in turn, never backing up). The error adds up
|
||||
until it reaches a threshold (half of the full output level, or
|
||||
32768), at which point a dot is output, the output is subtracted
|
||||
from the current value, and the (now negative) error is diffused
|
||||
similarly.
|
||||
</para>
|
||||
<para>
|
||||
Error diffusion works quite well in general, but it tends to
|
||||
generate artifacts which usually appear as worm-like lines or
|
||||
areas of anomalous density. I have devised some ways, as
|
||||
described below, of ameliorating these artifacts.
|
||||
</para>
|
||||
<para>
|
||||
There are two sub-classes of error diffusion that we use here,
|
||||
‘random’ and ‘hybrid’. One of the
|
||||
techniques that we use to ameliorate the artifacts is to use a
|
||||
fuzzy threshold rather than the hard threshold of half of the
|
||||
output level. Random error diffusion uses a pseudo-random
|
||||
number to perturb the threshold, while hybrid error diffusion
|
||||
uses a matrix. Hybrid error diffusion worked very poorly in
|
||||
3.1.3, and I couldn't figure out why until I found a bug. It
|
||||
now works very well.
|
||||
</para>
|
||||
<para>
|
||||
There is one additional variant (on both sub-classes), called
|
||||
‘adaptive hybrid’ and ‘adaptive random’.
|
||||
The adaptive variant takes advantage of the fact that the
|
||||
patterns that ordered dithering create are less visible at very
|
||||
low densities, while the artifacts created by error diffusion
|
||||
are more objectionable at low densities. At low densities,
|
||||
therefore, it uses ordered dithering; at higher densities it
|
||||
uses error diffusion.
|
||||
</para>
|
||||
<para>
|
||||
Handling multiple output levels makes life a bit more
|
||||
complicated. In principle, it shouldn't be much harder: simply
|
||||
figure out what the ratio between the available output levels is
|
||||
and have multiple thresholds. In practice, getting these right
|
||||
involves a lot of trial and error. The other thing that's
|
||||
important is to maximize the number of dots that have some ink.
|
||||
This will reduce the amount of speckling. More on this later.
|
||||
</para>
|
||||
<para>
|
||||
The next question: how do we handle black when printing in
|
||||
color? Black ink is much darker than colored inks. It's
|
||||
possible to produce black by adding some mixture of cyan,
|
||||
magenta, and yellow—in principle. In practice, the black
|
||||
really isn't very black, and different inks and different papers
|
||||
will produce different color casts. However, by using CMY to
|
||||
produce gray, we can output a lot more dots! This makes for a
|
||||
much smoother image. What's more, one cyan, one magenta, and
|
||||
one yellow dot produce less darkness than one black dot, so
|
||||
we're outputting that many more dots. Better yet, with 6 or 7
|
||||
color printers, we have to output even more light ink dots. So
|
||||
Epson Stylus Photo printers can produce really smooth grays---if
|
||||
we do everything right. The right idea is to use CMY at lower
|
||||
black levels, and gradually mix in black as the overall amount
|
||||
of ink increases, so the black dots don't really become visible
|
||||
within the ink mass.
|
||||
</para>
|
||||
<para>
|
||||
Variable dot sizes are handled by dividing the range between 0
|
||||
and 65536 into segments. Each segment can either represent a
|
||||
range in which all of one kind of ink (color and/or dot size) is
|
||||
used, with varying amounts of ink, or a transition region
|
||||
between inks, in which equal numbers of dots are printed but the
|
||||
amount of each ink will be adjusted throughout the range. Each
|
||||
range is represented by four numbers:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Bottom of the range.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Top of the range.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Value of the lighter ink.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Value of the darker ink.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
In addition, the bit patterns and which type of ink are also
|
||||
represented, but they don't affect the actual algorithm.
|
||||
</para>
|
||||
<para>
|
||||
As mentioned above, the basic algorithm is the same whether we
|
||||
use ordered dither or error diffusion. We perform the following
|
||||
steps on each color of each pixel:
|
||||
</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Compute the value of the particular color we're printing.
|
||||
This isn't usually the pure CMY value; it's adjusted to
|
||||
improve saturation and to limit the use of black in light
|
||||
toned regions (to avoid speckling).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Find the range containing this value.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Compute where this value lies within the range. We scale
|
||||
the endpoints between 0 and 65536 for this purpose. So for
|
||||
example, if the bottom of the range is 10,000 and the top of
|
||||
the range is 20,000, and the value is 12,500, we're 1/4 of
|
||||
the way between the bottom and the top of the range, so our
|
||||
scale point is 16384.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Compute the “virtual value”. The virtual value
|
||||
is the distance between the value of the lighter and the
|
||||
value of the darker ink. So if the value of the light ink
|
||||
is 32768 and the dark ink is 65536, we compute a virtual
|
||||
value scaled appropriately between these two values, which
|
||||
is 40960 in this case.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Using either error diffusion or ordered dither, the standard
|
||||
threshold is 1/2 of the value (20480 in this case). Using
|
||||
ordered dither, we want to compute a value between 0 and
|
||||
40960 that we will compare the input value against to decide
|
||||
whether to print. Using pure error diffusion, we would
|
||||
compare the accumulated error against 20480 to decide
|
||||
whether to print. In practice, we use the same matrix
|
||||
method to decide whether to print. The correct amount of
|
||||
ink will be printed this way, but we minimize the squiggly
|
||||
lines characteristic of error diffusion by dithering the
|
||||
threshold in this fashion. A future enhancement will allow
|
||||
us to control the amount of dithering applied to the
|
||||
threshold.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para>
|
||||
The matrices were generated by Thomas Tonino
|
||||
<email>ttonino@bio.vu.nl</email> with an algorithm of his
|
||||
devising. The algorithm is designed to maximize the spacing
|
||||
between dots at any given density by searching the matrix for
|
||||
holes and placing a dot in the largest available hole. It
|
||||
requires careful selection of initial points to achieve good
|
||||
results, and is very time consuming. For best results, a
|
||||
different matrix must be used for modes with 2:1 aspect ratio
|
||||
(e.g. 1440×720) than for 1:1 (e. g. 720×720). It is
|
||||
essential with any of these matrices that every point be used.
|
||||
Skipping points generates low-frequency noise.
|
||||
</para>
|
||||
<para>
|
||||
It's essential to use different matrices for deciding whether to
|
||||
print and for deciding what color (dark or light) to print.
|
||||
This should be obvious; the decision about whether to print at
|
||||
all should be as independent as possible from the decision about
|
||||
what color to print, because any bias will result in excess
|
||||
light or dark ink being printed, shifting the tonal balance. We
|
||||
actually use the same matrices, but we shift them vertically and
|
||||
horizontally. Assuming that the matrices are not
|
||||
self-correlated, this will yield good results.
|
||||
</para>
|
||||
<para>
|
||||
The ranges are computed from a list of ink values (between 0 and
|
||||
1 for each possible combination of dot size and ink tone, where
|
||||
the value represents the darkness of the ink) and the desired
|
||||
maximum density of the ink. This is done in dither_set_ranges,
|
||||
and needs more documentation.
|
||||
</para>
|
||||
<para>
|
||||
I stated earlier that I've tweaked the basic error diffusion
|
||||
algorithm. Here's what I've done to improve it:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
We use a variable threshold to decide when to print, as
|
||||
discussed above. This does two things for us: it reduces
|
||||
the slightly squiggly diagonal lines that are the mark of
|
||||
error diffusion; and it allows us to lay down some ink even
|
||||
in very light areas near the edge of the image. The
|
||||
squiggly lines that error diffusion algorithms tend to
|
||||
generate are caused by the gradual accumulation of error.
|
||||
This error is partially added horizontally and partially
|
||||
vertically. The horizontal accumulation results in a dot
|
||||
eventually being printed. The vertical accumulation results
|
||||
in a dot getting laid down in roughly the same horizontal
|
||||
position in the next row. The diagonal squigglies result
|
||||
from the error being added to pixels one forward and one
|
||||
below the current pixel; these lines slope from the top
|
||||
right to the bottom left of the image.
|
||||
</para>
|
||||
<para>
|
||||
Error diffusion also results in pale areas being completely
|
||||
white near the top left of the image (the origin of the
|
||||
printing coordinates). This is because enough error has to
|
||||
accumulate for anything at all to get printed. In very pale
|
||||
areas it takes quite a long time to build up anything
|
||||
printable at all; this results in the bare spots.
|
||||
</para>
|
||||
<para>
|
||||
Randomizing the threshold somewhat breaks up the diagonals
|
||||
to some degree by randomizing the exact location that the
|
||||
accumulated output crosses the threshold. It reduces the
|
||||
false white areas by allowing some dots to be printed even
|
||||
when the accumulated output level is very low. It doesn't
|
||||
result in excess ink because the full output level is still
|
||||
subtracted and diffused.
|
||||
</para>
|
||||
<para>
|
||||
Excessive randomization leads to blobs at high densities.
|
||||
Therefore, as the density increases, the degree of
|
||||
randomization decreases.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Alternating scan direction between rows (first row is
|
||||
scanned left to right, second is scanned right to left, and
|
||||
so on). This also helps break up white areas, and it also
|
||||
seems to break up squigglies a bit. Furthermore, it
|
||||
eliminates directional biases in the horizontal direction.
|
||||
This isn't necessary for ordered dither, but it doesn't hurt
|
||||
either.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Diffusing the error into more pixels. Instead of diffusing
|
||||
the entire error into (X+1, Y) and (X, Y+1), we diffuse it
|
||||
into (X+1, Y), (X+K, Y+1), (X, Y+1), (X-K, Y+1) where K
|
||||
depends upon the output level (it never exceeds about 10
|
||||
dots, and is greater at higher output levels). This really
|
||||
reduces squigglies and graininess. The amount of this
|
||||
spread can be controlled; for line art, it should be less
|
||||
than for photographs (of course, line art doesn't usually
|
||||
contain much light color, but the <emphasis>error</emphasis>
|
||||
value can be small in places!) In addition to requiring
|
||||
more computation, a wide ink spread results in patterning at
|
||||
high dot densities (note that the dot density can be high
|
||||
even in fairly pale regions if multiple dot sizes are in
|
||||
use).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Don't lay down any colored ink if we're laying down black
|
||||
ink. There's no point; the colored ink won't show. We
|
||||
still pretend that we did for purposes of error diffusion
|
||||
(otherwise excessive error will build up, and will take a
|
||||
long time to clear, resulting in heavy bleeding of ink into
|
||||
surrounding areas, which is very ugly indeed), but we don't
|
||||
bother wasting the ink. How well this will do with variable
|
||||
dot size remains to be seen.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Oversampling. This is how to print 1440×720 with Epson
|
||||
Stylus printers. Printing full density at 1440×720 will
|
||||
result in excess ink being laid down. The trick is to print
|
||||
only every other dot. We still compute the error as though we
|
||||
printed every dot. It turns out that randomizing which dots
|
||||
are printed results in very speckled output. This can be
|
||||
taken too far; oversampling at 1440×1440 or
|
||||
1440×2880 virtual resolution results in other problems.
|
||||
However, at present 1440×1440 (which is more accurately
|
||||
called "1440×720 enhanced", as the Epson printers cannot
|
||||
print 1440 rows per inch) does quite well, although it's slow.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
What about multiple output levels? For 6 and 7 color printers,
|
||||
simply using different threshold levels has a problem: the pale
|
||||
inks have trouble being seen when a lot of darker ink is being
|
||||
printed. So rather than just using the output level of the
|
||||
particular color to decide which ink to print, we look at the
|
||||
total density (sum of all output levels). If the density's high
|
||||
enough, we prefer to use the dark ink. Speckling is less
|
||||
visible when there's a lot of ink, anyway. I haven't yet
|
||||
figured out what to do for multiple levels of one color.
|
||||
</para>
|
||||
<para>
|
||||
You'll note that I haven't quoted a single source on color or
|
||||
printing theory. I simply did all of this empirically.
|
||||
</para>
|
||||
<para>
|
||||
There are various other tricks to reduce speckling. One that
|
||||
I've seen is to reduce the amount of ink printed in regions
|
||||
where one color (particularly cyan, which is perceived as the
|
||||
darkest) is very pale. This does reduce speckling all right,
|
||||
but it also results in strange tonal curves and weird (to my
|
||||
eye) colors.
|
||||
</para>
|
||||
<para>
|
||||
Before any dither routine is used,
|
||||
<function>init_dither</function> must be called. This takes
|
||||
three arguments: the input width (number of pixels in the
|
||||
input), the output width (number of pixels in the output), and a
|
||||
<type>stp_vars_t</type> structure containing the parameters for
|
||||
the print job.
|
||||
</para>
|
||||
<para>
|
||||
<function>init_dither</function> returns a pointer to an opaque
|
||||
object representing the dither. This object is passed as the first
|
||||
argument to all of the dither-related routines.
|
||||
</para>
|
||||
<para>
|
||||
After a page is fully dithered, <function>free_dither</function>
|
||||
must be called to free the dither object and perform any
|
||||
cleanup. In the future, this may do more (such as flush
|
||||
output). This arrangement permits using these routines with
|
||||
programs that create multiple output pages, such as GhostScript.
|
||||
</para>
|
||||
<para>
|
||||
The dithering routines themselves have a number of control knobs
|
||||
that control internal aspects of the dithering process. These
|
||||
knobs are accessible via a number of functions that can be
|
||||
called after <function>init_dither</function>.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_density</function> takes a double
|
||||
between 0 and 1 representing the desired ink density for
|
||||
printing solid colors. This is used in a number of places
|
||||
in the dithering routine to make decisions.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_black_density</function> takes a double
|
||||
between 0 and 1 representing the desired ink density for
|
||||
printing black ink in color printing. This is used to
|
||||
balance black against color ink. By default, this is equal
|
||||
to the density set by
|
||||
<function>dither_set_density</function>. By setting it
|
||||
higher, more black ink will be printed. For example, if the
|
||||
base density is .4 and the black density is .8, twice as
|
||||
much black ink will be printed as would otherwise be called
|
||||
for.
|
||||
</para>
|
||||
<para>
|
||||
This is not used when printing in monochrome. When printing
|
||||
monochrome, the base density
|
||||
(<function>dither_set_density</function>) should be adjusted
|
||||
appropriately.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_ink_budget</function> takes an unsigned
|
||||
number representing the most ink that may be deposited at a
|
||||
given point. This number is arbitrary; the limit is
|
||||
computed by summing the size of each ink dot, which is
|
||||
supplied as a parameter in
|
||||
<function>dither_set_X_ranges</function>. By default, there
|
||||
is no limit.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_black_lower</function> takes a double
|
||||
that should be between 0 and 1 that represents the lowest
|
||||
density level at which black ink will start to mix in with
|
||||
colored ink to generate grays. The lower this is, the less
|
||||
density is required to use black ink. Setting this too low
|
||||
will result in speckling from black dots, particularly on 6
|
||||
and 7 color printers. Setting this too high will make it
|
||||
hard to get satisfactory black or may result in sharp
|
||||
transition between blended colors and black. Default:
|
||||
0.0468.
|
||||
</para>
|
||||
<para>
|
||||
It is important to note that since the density scale is
|
||||
never linear (and since this value is adjusted via other
|
||||
things happening during the dithering process) that this
|
||||
does not mean that 95% gray will use any black ink. At this
|
||||
setting, there will be no black ink used until about 50%
|
||||
gray.
|
||||
</para>
|
||||
<para>
|
||||
This only applies to color mode.
|
||||
</para>
|
||||
<para>
|
||||
This value should be set lower for printers capable of
|
||||
variable dot size, since more dots can be laid down close to
|
||||
each other.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_black_upper</function> takes a double
|
||||
that should be between 0 and 1 that represents the highest
|
||||
density level at which colored inks will be mixed to create
|
||||
gray. Setting this too low will result in speckly dark
|
||||
grays because there is not enough ink to fill all the holes,
|
||||
or sharp transition between blended colors and black if it
|
||||
is too close to the value of
|
||||
<function>dither_set_black_upper</function> Setting this too
|
||||
high will result in poor black and dark tone quality.
|
||||
Default: 0.5. This results in 10% and darker grays being
|
||||
printed with essentially all black.
|
||||
</para>
|
||||
<para>
|
||||
This only applies to color mode.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_black_levels</function> takes three
|
||||
doubles that represent the amount of cyan, magenta, and
|
||||
yellow respectively that are blended to create gray. The
|
||||
defaults are 1.0 for each, which is probably too low for
|
||||
most printers. These values are adjusted to create a good
|
||||
gray balance. Setting these too low will result in pale
|
||||
light and midtone grays, with a sharp transition to darker
|
||||
tones as black mixes in. Setting them too high will result
|
||||
in overly dark grays and use of too much ink, possibly
|
||||
creating bleed-through.
|
||||
</para>
|
||||
<para>
|
||||
This only applies to color mode.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_randomizers</function> takes four
|
||||
integer values representing the degree of randomness used
|
||||
for cyan, magenta, yellow, and black. This is used to allow
|
||||
some printing to take place in pale areas. Zero is the most
|
||||
random; greater than 8 or so gives very little randomness at
|
||||
all. Defaults are 0 for cyan, magenta, and yellow, and 4
|
||||
for black. Setting the value for black too low will result
|
||||
in black speckling in pale areas. Setting values too high
|
||||
will result in pale areas getting no ink at all.
|
||||
</para>
|
||||
<para>
|
||||
This currently only applies to single dot size in color and
|
||||
black. It should be extended to operate in variable dot
|
||||
size mode, although actually applying it correctly will be
|
||||
tricky.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_ink_darkness</function> takes three
|
||||
doubles representing the contribution to perceived darkness
|
||||
of cyan, magenta, and yellow. This is used to help decide
|
||||
when to switch between light and dark inks in 6 and 7 color
|
||||
printers (with light cyan, light magenta, and possibly light
|
||||
yellow). Setting these too low will result in too much
|
||||
light ink being laid down, creating flat spots in the
|
||||
darkness curves and bleed-through. Setting them too high
|
||||
will result in dark ink being used in pale areas, creating
|
||||
speckle. The defaults are .4 for cyan, .3 for magenta, and
|
||||
.2 for yellow. Dark cyan will show against yellow much more
|
||||
than dark magenta will show against cyan, since the cyan
|
||||
appears much darker than the yellow.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_light_inks</function> takes three
|
||||
doubles between 0 and 1 representing the ratio in darkness
|
||||
between the light and dark versions of the inks. Setting
|
||||
these too low will result in too much dark ink being used in
|
||||
pale areas, creating speckling, while setting them too high
|
||||
will result in very smooth texture but too much use of light
|
||||
ink, resulting in flat spots in the density curves and ink
|
||||
bleed-through. There are no defaults. Any light ink
|
||||
specified as zero indicates that there is no light ink for
|
||||
that color.
|
||||
</para>
|
||||
<para>
|
||||
This only applies to 6 and 7 color printers in single dot
|
||||
size color mode, and only to those inks which have light
|
||||
versions (usually cyan and magenta).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_ink_spread</function> takes a small
|
||||
integer representing the amount of ink spread in the dither.
|
||||
Larger numbers mean less spread. Larger values are
|
||||
appropriate for line art and solid tones; they will yield
|
||||
sharper transitions but more dither artifacts. Smaller
|
||||
values are more appropriate for photos. They will reduce
|
||||
resolution and sharpness but reduce dither artifacts up to a
|
||||
point. A value of 16 or higher implies minimum ink spread
|
||||
at any resolution no matter what the overdensity. A value
|
||||
of 14 is typical for photos on single dot size, 6 color
|
||||
printers. For 4 color printers, subtract 1 (more spread;
|
||||
the dots are farther apart). For variable dot size
|
||||
printers, add 1 (more small dots are printed; less spread is
|
||||
desirable).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_adaptive_divisor</function> takes a
|
||||
float representing the transition point between error
|
||||
diffusion and ordered dither if adaptive dithering is used.
|
||||
The float is a fraction of the printing density. For
|
||||
example, if you wish the transition to be at 1/4 of the
|
||||
maximum density (which works well on simple 4-color
|
||||
printers), you would pass .25 here. With six colors and/or
|
||||
with multiple dot sizes, the values should be set lower.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_transition</function> takes a float
|
||||
representing the exponent of the transition curve between
|
||||
light and dark inks/dot sizes. A value less than 1 (typical
|
||||
when using error diffusion) mixes in less dark ink/small
|
||||
dots at lower ends of the range, to reduce speckling. When
|
||||
using ordered dithering, this must be set to 1.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_X_ranges_simple</function>
|
||||
(<literal>X</literal> = <literal>c</literal>,
|
||||
<literal>m</literal>, <literal>y</literal> or
|
||||
<literal>k</literal>) describes the ink choices available
|
||||
for each color. This is useful in typical cases where a
|
||||
four color printer with variable dot sizes is in use. It is
|
||||
passed an array of doubles between (0, 1] representing the
|
||||
relative darkness of each dot size. The dot sizes are
|
||||
assigned bit patterns (and ink quantities, see
|
||||
<function>dither_set_ink_budget</function> above) from 1 to
|
||||
the number of levels. This also requires a density, which
|
||||
is the desired density for this color. This density need
|
||||
not equal the density specified in
|
||||
<function>dither_set_density</function>. Setting it lower
|
||||
will tend to print more dark ink (because the curves are
|
||||
calculated for this color assuming a lower density than is
|
||||
actually supplied).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>dither_set_X_ranges</function>
|
||||
(<literal>X</literal> = <literal>c</literal>,
|
||||
<literal>m</literal>, <literal>y</literal> or
|
||||
<literal>k</literal>) describes in a more general way the
|
||||
ink choices available for each color. For each possible ink
|
||||
choice, a bit pattern, dot size, value (i. e. relative
|
||||
darkness), and whether the ink is the dark or light variant
|
||||
ink is specified.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</chapter>
|
@ -1,502 +0,0 @@
|
||||
<!--
|
||||
The GNU Public License 2 in DocBook
|
||||
Markup by Eric Baudais <baudais@okstate.edu>
|
||||
Maintained by the GNOME Documentation Project
|
||||
http://developer.gnome.org/projects/gdp
|
||||
Version: 1.0.1
|
||||
Last Modified: Nov 16, 2000
|
||||
-->
|
||||
|
||||
<appendix id="gpl">
|
||||
<appendixinfo>
|
||||
<releaseinfo>
|
||||
Version 2, June 1991
|
||||
</releaseinfo>
|
||||
<copyright>
|
||||
<year>2000</year><holder>Free Software Foundation, Inc.</holder>
|
||||
</copyright>
|
||||
<legalnotice id="gpl-legalnotice">
|
||||
<para>
|
||||
<address>Free Software Foundation, Inc.
|
||||
<street>59 Temple Place, Suite 330</street>,
|
||||
<city>Boston</city>,
|
||||
<state>MA</state>
|
||||
<postcode>02111-1307</postcode>
|
||||
<country>USA</country>
|
||||
</address>
|
||||
</para>
|
||||
<para>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
</para>
|
||||
</legalnotice>
|
||||
</appendixinfo>
|
||||
<title>GNU General Public License</title>
|
||||
|
||||
<sect1 id="gpl-preamble">
|
||||
<title>Preamble</title>
|
||||
|
||||
<para>
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General
|
||||
Public License is intended to guarantee your freedom to share
|
||||
and change free software - to make sure the software is free for
|
||||
all its users. This General Public License applies to most of
|
||||
the Free Software Foundation's software and to any other program
|
||||
whose authors commit to using it. (Some other Free Software
|
||||
Foundation software is covered by the GNU Library General Public
|
||||
License instead.) You can apply it to your programs, too.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure
|
||||
that you have the freedom to distribute copies of free software
|
||||
(and charge for this service if you wish), that you receive
|
||||
source code or can get it if you want it, that you can change
|
||||
the software or use pieces of it in new free programs; and that
|
||||
you know you can do these things.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the
|
||||
rights. These restrictions translate to certain responsibilities
|
||||
for you if you distribute copies of the software, or if you
|
||||
modify it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights
|
||||
that you have. You must make sure that they, too, receive or can
|
||||
get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
We protect your rights with two steps:
|
||||
|
||||
<orderedlist numeration="arabic">
|
||||
<listitem>
|
||||
<para>
|
||||
copyright the software, and
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
offer you this license which gives you legal permission to
|
||||
copy, distribute and/or modify the software.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Also, for each author's protection and ours, we want to make
|
||||
certain that everyone understands that there is no warranty for
|
||||
this free software. If the software is modified by someone else
|
||||
and passed on, we want its recipients to know that what they
|
||||
have is not the original, so that any problems introduced by
|
||||
others will not reflect on the original authors' reputations.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a
|
||||
free program will individually obtain patent licenses, in effect
|
||||
making the program proprietary. To prevent this, we have made it
|
||||
clear that any patent must be licensed for everyone's free use
|
||||
or not licensed at all.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="gpl-terms">
|
||||
<title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title>
|
||||
|
||||
<sect2 id="gpl-sect0">
|
||||
<title>Section 0</title>
|
||||
<para>
|
||||
This License applies to any program or other work which
|
||||
contains a notice placed by the copyright holder saying it may
|
||||
be distributed under the terms of this General Public
|
||||
License. The "Program", below, refers to any such program or
|
||||
work, and a <quote>work based on the Program</quote> means
|
||||
either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of
|
||||
it, either verbatim or with modifications and/or translated
|
||||
into another language. (Hereinafter, translation is included
|
||||
without limitation in the term <quote>modification</quote>.)
|
||||
Each licensee is addressed as <quote>you</quote>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Activities other than copying, distribution and modification
|
||||
are not covered by this License; they are outside its
|
||||
scope. The act of running the Program is not restricted, and
|
||||
the output from the Program is covered only if its contents
|
||||
constitute a work based on the Program (independent of having
|
||||
been made by running the Program). Whether that is true
|
||||
depends on what the Program does.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect1">
|
||||
<title>Section 1</title>
|
||||
<para>
|
||||
You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep
|
||||
intact all the notices that refer to this License and to the
|
||||
absence of any warranty; and give any other recipients of the
|
||||
Program a copy of this License along with the Program.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You may charge a fee for the physical act of transferring a
|
||||
copy, and you may at your option offer warranty protection in
|
||||
exchange for a fee.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect2">
|
||||
<title>Section 2</title>
|
||||
<para>
|
||||
You may modify your copy or copies of the Program or any
|
||||
portion of it, thus forming a work based on the Program, and
|
||||
copy and distribute such modifications or work under the terms
|
||||
of <link linkend="gpl-sect1">Section 1</link> above, provided
|
||||
that you also meet all of these conditions:
|
||||
|
||||
<orderedlist numeration="loweralpha">
|
||||
<listitem>
|
||||
<para>
|
||||
You must cause the modified files to carry prominent
|
||||
notices stating that you changed the files and the date
|
||||
of any change.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
You must cause any work that you distribute or publish,
|
||||
that in whole or in part contains or is derived from the
|
||||
Program or any part thereof, to be licensed as a whole
|
||||
at no charge to all third parties under the terms of
|
||||
this License.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
If the modified program normally reads commands
|
||||
interactively when run, you must cause it, when started
|
||||
running for such interactive use in the most ordinary
|
||||
way, to print or display an announcement including an
|
||||
appropriate copyright notice and a notice that there is
|
||||
no warranty (or else, saying that you provide a
|
||||
warranty) and that users may redistribute the program
|
||||
under these conditions, and telling the user how to view
|
||||
a copy of this License.
|
||||
|
||||
<note>
|
||||
<title>Exception:</title>
|
||||
<para>
|
||||
If the Program itself is interactive but does not
|
||||
normally print such an announcement, your work based
|
||||
on the Program is not required to print an
|
||||
announcement.)
|
||||
</para>
|
||||
</note>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the
|
||||
Program, and can be reasonably considered independent and
|
||||
separate works in themselves, then this License, and its
|
||||
terms, do not apply to those sections when you distribute them
|
||||
as separate works. But when you distribute the same sections
|
||||
as part of a whole which is a work based on the Program, the
|
||||
distribution of the whole must be on the terms of this
|
||||
License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of
|
||||
who wrote it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Thus, it is not the intent of this section to claim rights or
|
||||
contest your rights to work written entirely by you; rather,
|
||||
the intent is to exercise the right to control the
|
||||
distribution of derivative or collective works based on the
|
||||
Program.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In addition, mere aggregation of another work not based on the
|
||||
Program with the Program (or with a work based on the Program)
|
||||
on a volume of a storage or distribution medium does not bring
|
||||
the other work under the scope of this License.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect3">
|
||||
<title>Section 3</title>
|
||||
|
||||
<para>
|
||||
You may copy and distribute the Program (or a work based on
|
||||
it, under <link linkend="gpl-sect2">Section 2</link> in object
|
||||
code or executable form under the terms of <link
|
||||
linkend="gpl-sect1">Sections 1</link> and <link
|
||||
linkend="gpl-sect2">2</link> above provided that you also do
|
||||
one of the following:
|
||||
|
||||
<orderedlist numeration="loweralpha">
|
||||
<listitem>
|
||||
<para>
|
||||
Accompany it with the complete corresponding
|
||||
machine-readable source code, which must be distributed
|
||||
under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Accompany it with a written offer, valid for at least
|
||||
three years, to give any third party, for a charge no
|
||||
more than your cost of physically performing source
|
||||
distribution, a complete machine-readable copy of the
|
||||
corresponding source code, to be distributed under the
|
||||
terms of Sections 1 and 2 above on a medium customarily
|
||||
used for software interchange; or,
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Accompany it with the information you received as to the
|
||||
offer to distribute corresponding source code. (This
|
||||
alternative is allowed only for noncommercial
|
||||
distribution and only if you received the program in
|
||||
object code or executable form with such an offer, in
|
||||
accord with Subsection b above.)
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The source code for a work means the preferred form of the
|
||||
work for making modifications to it. For an executable work,
|
||||
complete source code means all the source code for all modules
|
||||
it contains, plus any associated interface definition files,
|
||||
plus the scripts used to control compilation and installation
|
||||
of the executable. However, as a special exception, the source
|
||||
code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating
|
||||
system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If distribution of executable or object code is made by
|
||||
offering access to copy from a designated place, then offering
|
||||
equivalent access to copy the source code from the same place
|
||||
counts as distribution of the source code, even though third
|
||||
parties are not compelled to copy the source along with the
|
||||
object code.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect4">
|
||||
<title>Section 4</title>
|
||||
|
||||
<para>
|
||||
You may not copy, modify, sublicense, or distribute the
|
||||
Program except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense or distribute
|
||||
the Program is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received
|
||||
copies, or rights, from you under this License will not have
|
||||
their licenses terminated so long as such parties remain in
|
||||
full compliance.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect5">
|
||||
<title>Section 5</title>
|
||||
|
||||
<para>
|
||||
You are not required to accept this License, since you have
|
||||
not signed it. However, nothing else grants you permission to
|
||||
modify or distribute the Program or its derivative works.
|
||||
These actions are prohibited by law if you do not accept this
|
||||
License. Therefore, by modifying or distributing the Program
|
||||
(or any work based on the Program), you indicate your
|
||||
acceptance of this License to do so, and all its terms and
|
||||
conditions for copying, distributing or modifying the Program
|
||||
or works based on it.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect6">
|
||||
<title>Section 6</title>
|
||||
|
||||
<para>
|
||||
Each time you redistribute the Program (or any work based on
|
||||
the Program), the recipient automatically receives a license
|
||||
from the original licensor to copy, distribute or modify the
|
||||
Program subject to these terms and conditions. You may not
|
||||
impose any further restrictions on the recipients' exercise of
|
||||
the rights granted herein. You are not responsible for
|
||||
enforcing compliance by third parties to this License.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect7">
|
||||
<title>Section 7</title>
|
||||
|
||||
<para>
|
||||
If, as a consequence of a court judgment or allegation of
|
||||
patent infringement or for any other reason (not limited to
|
||||
patent issues), conditions are imposed on you (whether by
|
||||
court order, agreement or otherwise) that contradict the
|
||||
conditions of this License, they do not excuse you from the
|
||||
conditions of this License. If you cannot distribute so as to
|
||||
satisfy simultaneously your obligations under this License and
|
||||
any other pertinent obligations, then as a consequence you may
|
||||
not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the
|
||||
Program by all those who receive copies directly or indirectly
|
||||
through you, then the only way you could satisfy both it and
|
||||
this License would be to refrain entirely from distribution of
|
||||
the Program.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If any portion of this section is held invalid or
|
||||
unenforceable under any particular circumstance, the balance
|
||||
of the section is intended to apply and the section as a whole
|
||||
is intended to apply in other circumstances.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It is not the purpose of this section to induce you to
|
||||
infringe any patents or other property right claims or to
|
||||
contest validity of any such claims; this section has the sole
|
||||
purpose of protecting the integrity of the free software
|
||||
distribution system, which is implemented by public license
|
||||
practices. Many people have made generous contributions to the
|
||||
wide range of software distributed through that system in
|
||||
reliance on consistent application of that system; it is up to
|
||||
the author/donor to decide if he or she is willing to
|
||||
distribute software through any other system and a licensee
|
||||
cannot impose that choice.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This section is intended to make thoroughly clear what is
|
||||
believed to be a consequence of the rest of this License.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect8">
|
||||
<title>Section 8</title>
|
||||
|
||||
<para>
|
||||
If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted
|
||||
interfaces, the original copyright holder who places the
|
||||
Program under this License may add an explicit geographical
|
||||
distribution limitation excluding those countries, so that
|
||||
distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the
|
||||
limitation as if written in the body of this License.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect9">
|
||||
<title>Section 9</title>
|
||||
|
||||
<para>
|
||||
The Free Software Foundation may publish revised and/or new
|
||||
versions of the General Public License from time to time. Such
|
||||
new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies a version number of this License which
|
||||
applies to it and "any later version", you have the option of
|
||||
following the terms and conditions either of that version or
|
||||
of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number
|
||||
of this License, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect10">
|
||||
<title>Section 10</title>
|
||||
|
||||
<para>
|
||||
If you wish to incorporate parts of the Program into other
|
||||
free programs whose distribution conditions are different,
|
||||
write to the author to ask for permission. For software which
|
||||
is copyrighted by the Free Software Foundation, write to the
|
||||
Free Software Foundation; we sometimes make exceptions for
|
||||
this. Our decision will be guided by the two goals of
|
||||
preserving the free status of all derivatives of our free
|
||||
software and of promoting the sharing and reuse of software
|
||||
generally.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect11">
|
||||
<title>NO WARRANTY</title>
|
||||
<subtitle>Section 11</subtitle>
|
||||
|
||||
<para>
|
||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
|
||||
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS
|
||||
IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gpl-sect12">
|
||||
<title>Section 12</title>
|
||||
|
||||
<para>
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
||||
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
||||
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||||
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
|
||||
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
|
||||
SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
|
||||
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
@ -1,59 +0,0 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
|
||||
<!ENTITY copying SYSTEM "copying.xml">
|
||||
<!ENTITY dither SYSTEM "dither.xml">
|
||||
<!ENTITY escp2 SYSTEM "escp2.xml">
|
||||
<!ENTITY gpl SYSTEM "gpl-appendix.xml">
|
||||
<!ENTITY introduction SYSTEM "introduction.xml">
|
||||
<!ENTITY new-printer SYSTEM "new-printer.xml">
|
||||
<!ENTITY problems SYSTEM "problems.xml">
|
||||
<!ENTITY using SYSTEM "using.xml">
|
||||
<!ENTITY weave SYSTEM "weave.xml">
|
||||
]>
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<title>The Developer's Guide to Gutenprint</title>
|
||||
<date>7th Nov, 2003</date>
|
||||
<pubdate>7th Nov, 2003</pubdate>
|
||||
<corpauthor>
|
||||
The Gutenprint Project
|
||||
</corpauthor>
|
||||
<copyright>
|
||||
<year>2003</year>
|
||||
<holder>The Gutenprint Project</holder>
|
||||
</copyright>
|
||||
<legalnotice>
|
||||
<para>
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
</para>
|
||||
<para>
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
</para>
|
||||
<para>
|
||||
You should have received a copy of the GNU General Public
|
||||
License along with this program; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA.
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
&introduction;
|
||||
©ing;
|
||||
&using;
|
||||
&problems;
|
||||
&new-printer;
|
||||
&escp2;
|
||||
&weave;
|
||||
&dither;
|
||||
&gpl;
|
||||
|
||||
</book>
|
@ -1,62 +0,0 @@
|
||||
<preface>
|
||||
<title>Preface</title>
|
||||
<indexterm><primary>reading</primary></indexterm>
|
||||
<indexterm><primary>manual, how to read</primary></indexterm>
|
||||
<para>
|
||||
Gutenprint is the print facility of the GNU Image Manipulation
|
||||
Program (GIMP). It is in addition a suite of drivers that may be
|
||||
used with common UNIX spooling systems using Ghostscript or CUPS.
|
||||
These drivers provide printing quality for Linux, MacOS X and UNIX
|
||||
on a par with proprietary vendor-supplied drivers in many cases,
|
||||
and can be used for many of the most demanding printing tasks,
|
||||
especially for high quality printing on modern inkjets, including
|
||||
“photographic quality” models which offer very high
|
||||
resolutions and several inks. The core of Gutenprint is a shared
|
||||
library (libgutenprint) which may be used by any program that
|
||||
wishes to produce high-quality printed output.
|
||||
</para>
|
||||
<para>
|
||||
This manual documents the use of the
|
||||
<application>Gutenprint</application> package, focusing mainly on
|
||||
the libgutenprint library that is the core of
|
||||
<application>Gutenprint</application>. Parts of the manual which
|
||||
describe the use of libgutenprint are aimed primarily at
|
||||
programmers, and do assume that the reader is familiar with C
|
||||
programming, and using standard programming tools on GNU or UNIX
|
||||
systems.
|
||||
</para>
|
||||
<para>
|
||||
For the end-user, there is a separate manual documenting
|
||||
programs that come with Gutenprint, including the
|
||||
<application>GIMP</application> <command>print</command> plugin,
|
||||
and the <application>CUPS</application> and
|
||||
<application>Ghostscript</application> drivers.
|
||||
</para>
|
||||
<para>
|
||||
To learn how to use libgutenprint in your own programs is to look
|
||||
at the source of the <command>testpattern</command>, located in
|
||||
<filename class="directory">src/testpattern</filename>, as well as
|
||||
the source of the other programs that use libgutenprint, and
|
||||
libgutenprint itself. Most importantly, please consult the API
|
||||
reference and libgutenprint headers.
|
||||
</para>
|
||||
<para>
|
||||
The manual is split into several parts for the programmer. It
|
||||
starts with a simple usage example of how to link a program with
|
||||
libgutenprint, then how to integrate this into package build
|
||||
scripts, using <command>make</command>,
|
||||
<command>autoconf</command> and <command>automake</command>. The
|
||||
appendices cover the detail of the inner workings of some parts of
|
||||
libgutenprint.
|
||||
</para>
|
||||
<para>
|
||||
The following sections detail the dither and weave algorithms used
|
||||
in libgutenprint, the ESC/P2 printer control language used in Epson
|
||||
printers and how to add support for a new printer to libgutenprint.
|
||||
</para>
|
||||
<para>
|
||||
<literallayout>We hope you enjoy using Gutenprint!
|
||||
—The Gutenprint project
|
||||
</literallayout>
|
||||
</para>
|
||||
</preface>
|
@ -1,883 +0,0 @@
|
||||
<chapter>
|
||||
<title>Adding a new printer</title>
|
||||
<para>
|
||||
This chapter covers adding a new ESCP/2, PCL, or Canon printer.
|
||||
Writing a new driver module is not covered.
|
||||
</para>
|
||||
<para>
|
||||
The three steps to adding a printer are:
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Add an entry to <filename>printers.xml</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Add the appropriate code and data to the appropriate
|
||||
driver module.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Tune the printer.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para>
|
||||
Printer information is stored in two places: in
|
||||
<filename>printers.xml</filename> (which contains the list of
|
||||
printer models available to the the upper-level application),
|
||||
and in the appropriate driver file
|
||||
(<filename>print-escp2.c</filename>,
|
||||
<filename>print-pcl.c</filename>, or
|
||||
<filename>print-canon.c</filename>).
|
||||
</para>
|
||||
<sect1>
|
||||
<title><filename>printers.xml</filename></title>
|
||||
<para>
|
||||
<filename>printers.xml</filename> is an XML file that contains
|
||||
very simple printer definitions. A schema may be used to
|
||||
validate the XML (<filename>src/main/gutenprint.xsd</filename>).
|
||||
This is an example definition:
|
||||
</para>
|
||||
<informalexample>
|
||||
<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></programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
There are other tags that may be present. The only ones that
|
||||
are mandatory are <literal><printer></literal>,
|
||||
<literal><color></literal> and
|
||||
<literal><model></literal>. The other optional parameters
|
||||
(<literal><gamma></literal> and
|
||||
<literal><density></literal> 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.
|
||||
</para>
|
||||
<para>
|
||||
If you really are curious about what tags are permitted, please
|
||||
see the schema. These are the definitions of the tags that do
|
||||
matter:
|
||||
</para>
|
||||
<variablelist>
|
||||
<title>printdef XML elements</title>
|
||||
<varlistentry>
|
||||
<term><literal><family></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This defines what driver module this printer uses. The
|
||||
attribute <literal>name</literal> is the name of the
|
||||
family driver to associate the printers with, for example
|
||||
<literal>escp2</literal>, <literal>pcl</literal>,
|
||||
<literal>canon</literal>, <literal>ps</literal> or
|
||||
<literal>raw</literal>. This tag may only contain
|
||||
<literal><printer></literal> elements.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal><printer></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This starts the definition of a printer. It must contain
|
||||
the attributes <literal>name</literal> and
|
||||
<literal>driver</literal>. <literal>name</literal> should
|
||||
be is the full name of the printer, and must be human
|
||||
readable. <literal>driver</literal> should consist of
|
||||
alphanumerics and hyphens, and be fairly short.
|
||||
<literal>name</literal> is what will appear in the
|
||||
user-visible listing of printers, and may be translated
|
||||
into the user's language, while <literal>driver</literal>
|
||||
is what is actually used to key into the list of printers.
|
||||
It is legal to have multiple printers with the same driver
|
||||
name.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal><color></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This tag may not contain any content, but the
|
||||
<literal>value</literal> attribute may be set to
|
||||
<literal>true</literal> or <literal>false</literal>. This
|
||||
indicates that this printer is capable of color, or is not
|
||||
capable of color respectively.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal><model></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This defines a model number. This tag may not contain any
|
||||
content, but the <literal>value</literal> 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.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>The driver file</title>
|
||||
<para>
|
||||
Adding a new printer to a driver module
|
||||
<filename>print-canon.c</filename>,
|
||||
<filename>print-escp2.c</filename>,
|
||||
<filename>print-lexmark.c</filename>, or
|
||||
<filename>print-pcl.c</filename> or
|
||||
(<filename>print-ps.c</filename> is really ad hoc) requires a
|
||||
bit more planning. Each driver is somewhat different, but they
|
||||
all generally have a vector of printer definitions, and the code
|
||||
does some special casing based on particular printer
|
||||
capabilities. The PCL and Canon drivers are quite similar; the
|
||||
Canon driver was actually cribbed from the PCL driver, but it
|
||||
then returned the favor.
|
||||
</para>
|
||||
<para>
|
||||
The Epson driver is a little bit different. Canon and PCL
|
||||
printers have some amount of intelligence; a lot of them have
|
||||
specific ink options, and know about specific paper sizes and
|
||||
types, and must be told the right thing. Epson printers have
|
||||
somewhat less intelligence and will more or less do exactly what
|
||||
the host tells it to do in a fairly regular fashion. I actually
|
||||
prefer this; it isn't materially more work for the host to
|
||||
compute things like exact paper sizes and such, it allows a lot
|
||||
more tweaking, and it may be why Epson has been more open with
|
||||
information—the communication protocol doesn't really
|
||||
contain very much IP, so they have less reason to keep it
|
||||
secret.
|
||||
</para>
|
||||
<para>
|
||||
The sections about PCL and Canon printers need completing.
|
||||
</para>
|
||||
<sect2>
|
||||
<title>Epson inkjet printers</title>
|
||||
<para>
|
||||
The <varname>model_capabilities</varname> vector in
|
||||
<filename>print-escp2.c</filename> contains one entry for each
|
||||
defined printer model. The <literal>model</literal> parameter
|
||||
in <filename>printers.xml</filename> is an index into this
|
||||
table.
|
||||
</para>
|
||||
<para>
|
||||
In general, the new printers have fewer eccentricities than
|
||||
the older printers. That doesn't mean they're simpler, just
|
||||
that they're more consistent.
|
||||
</para>
|
||||
<para>
|
||||
<type>escp2_printer_t</type> is a C struct defined as follows:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>typedef struct escp2_printer
|
||||
{
|
||||
model_cap_t flags; /* Bitmask of flags, see below */
|
||||
/*****************************************************************************/
|
||||
int nozzles; /* Number of nozzles per color */
|
||||
int min_nozzles; /* Minimum number of nozzles per color */
|
||||
int nozzle_separation; /* Separation between rows, in 1/360" */
|
||||
int black_nozzles; /* Number of black nozzles (may be extra) */
|
||||
int min_black_nozzles; /* # of black nozzles (may be extra) */
|
||||
int black_nozzle_separation; /* Separation between rows */
|
||||
/*****************************************************************************/
|
||||
int xres; /* Normal distance between dots in */
|
||||
/* softweave mode (inverse inches) */
|
||||
int enhanced_xres; /* Distance between dots in highest */
|
||||
/* quality modes */
|
||||
int base_separation; /* Basic unit of row separation */
|
||||
int base_resolution; /* Base hardware spacing (above this */
|
||||
/* always requires multiple passes) */
|
||||
int enhanced_resolution;/* Above this we use the */
|
||||
/* enhanced_xres rather than xres */
|
||||
int resolution_scale; /* Scaling factor for ESC(D command */
|
||||
int max_black_resolution; /* Above this resolution, we */
|
||||
/* must use color parameters */
|
||||
/* rather than (faster) black */
|
||||
/* only parameters*/
|
||||
int max_hres;
|
||||
int max_vres;
|
||||
int min_hres;
|
||||
int min_vres;
|
||||
/*****************************************************************************/
|
||||
int max_paper_width; /* Maximum paper width, in points */
|
||||
int max_paper_height; /* Maximum paper height, in points */
|
||||
int min_paper_width; /* Maximum paper width, in points */
|
||||
int min_paper_height; /* Maximum paper height, in points */
|
||||
/* Softweave: */
|
||||
int left_margin; /* Left margin, points */
|
||||
int right_margin; /* Right margin, points */
|
||||
int top_margin; /* Absolute top margin, points */
|
||||
int bottom_margin; /* Absolute bottom margin, points */
|
||||
/* "Micro"weave: */
|
||||
int m_left_margin; /* Left margin, points */
|
||||
int m_right_margin; /* Right margin, points */
|
||||
int m_top_margin; /* Absolute top margin, points */
|
||||
int m_bottom_margin; /* Absolute bottom margin, points */
|
||||
/*****************************************************************************/
|
||||
int extra_feed; /* Extra distance the paper can be spaced */
|
||||
/* beyond the bottom margin, in 1/360". */
|
||||
/* (maximum useful value is */
|
||||
/* nozzles * nozzle_separation) */
|
||||
int separation_rows; /* Some printers require funky spacing */
|
||||
/* arguments in microweave mode. */
|
||||
int pseudo_separation_rows;/* Some printers require funky */
|
||||
/* spacing arguments in softweave mode */
|
||||
|
||||
int zero_margin_offset; /* Offset to use to achieve */
|
||||
/* zero-margin printing */
|
||||
/*****************************************************************************/
|
||||
/* The stylus 480 and 580 have an unusual arrangement of
|
||||
color jets that need special handling */
|
||||
const int *head_offset;
|
||||
int initial_vertical_offset;
|
||||
int black_initial_vertical_offset;
|
||||
|
||||
/*****************************************************************************/
|
||||
const int *dot_sizes; /* Vector of dot sizes for resolutions */
|
||||
const double *densities; /* List of densities for each printer */
|
||||
const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
|
||||
/*****************************************************************************/
|
||||
const double *lum_adjustment;
|
||||
const double *hue_adjustment;
|
||||
const double *sat_adjustment;
|
||||
const paperlist_t *paperlist;
|
||||
} escp2_printer_t;</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
The printer definition block is divided into 8 sections.
|
||||
The first section is a set of miscellaneous printer options.
|
||||
These are described in the code, and will not be discussed
|
||||
further here.
|
||||
</para>
|
||||
<para>
|
||||
The second section describes the number of nozzles and the
|
||||
separation between nozzles in base units. The base unit is
|
||||
1/360" for all currently supported printers, but future
|
||||
printers may support a smaller base unit.
|
||||
</para>
|
||||
<para>
|
||||
Many printers have more black nozzles than nozzles of other
|
||||
colors, and when used in black and white mode, it's possible
|
||||
to use these extra nozzles, which speeds up printing. As an
|
||||
example, a printer that is specified to have 48 cyan, magenta,
|
||||
and yellow nozzles, and 144 black nozzles, can use all 144
|
||||
black nozzles when printing black ink only. When printing in
|
||||
color, only 48 nozzles of each color (including black) can be
|
||||
used.
|
||||
</para>
|
||||
<para>
|
||||
Most printers can print using either the number of nozzles
|
||||
available or any smaller number. Some printers require that
|
||||
all of the nozzles be used. Those printers will set
|
||||
<varname>min_nozzles</varname> and/or
|
||||
<varname>min_black_nozzles</varname> to the same value as
|
||||
<varname>nozzles</varname> and/or
|
||||
<varname>black_nozzles</varname>.
|
||||
</para>
|
||||
<para>
|
||||
The third section defines basic units of measure for the
|
||||
printer, including the standard separation between dots, the
|
||||
base nozzle separation, and the minimum and maximum printing
|
||||
resolutions the printer supports. Most of these are fairly
|
||||
self-explanatory, but some are not obvious.
|
||||
</para>
|
||||
<para>
|
||||
Most Epson printers, other than the high-end Stylus Pro
|
||||
models, cannot print dots spaced more closely than 1/360" or
|
||||
1/720" apart (this is the setting for <varname>xres</varname>.
|
||||
This is true even for printers that support resolutions of
|
||||
1440 or 2880 DPI. In these cases, the data must be printed in
|
||||
2, 4, or 8 passes. While the printer can position the head to
|
||||
a resolution of 1/1440" or 1/2880", the head cannot deposit
|
||||
ink that frequently.
|
||||
</para>
|
||||
<para>
|
||||
Some printers can only print in their very best quality (using
|
||||
the smallest dots available) printing at a lower resolution.
|
||||
For example, the Stylus Photo EX can normally print with a dot
|
||||
spacing of 1/720". The smallest dot size cannot be printed
|
||||
with a dot spacing of less than 1/360", however. In this
|
||||
case, we use <varname>enhanced_xres</varname> to specify the
|
||||
resolution to be used in this enhanced mode, and
|
||||
<varname>enhanced_resolution</varname> to specify the printing
|
||||
resolution above which we use the
|
||||
<varname>enhanced_xres</varname>.
|
||||
</para>
|
||||
<para>
|
||||
The <varname>resolution_scale</varname> command is used to
|
||||
specify scaling factors for the dot separation on newer
|
||||
printers. It should always be 14400 with current printers.
|
||||
</para>
|
||||
<para>
|
||||
The fourth section specifies the minimum and maximum paper
|
||||
sizes, and the margins. Some printers allow use of narrower
|
||||
margins when softweave is used; both sets of margins are
|
||||
specified.
|
||||
</para>
|
||||
<para>
|
||||
There is a convenient <function>INCH</function> macro defined
|
||||
to make specification of the
|
||||
<varname>max_paper_width</varname> and
|
||||
<varname>max_paper_height</varname> more legible. It
|
||||
multiplies <constant>72</constant> by the provided expression
|
||||
to get the appropriate number of points. For example, to
|
||||
specify 8.5", <literal>INCH(17/2)</literal> expands to
|
||||
<literal>(72 * 17/2)</literal>, which is evaluated left to
|
||||
right, and hence generates the correct value.
|
||||
</para>
|
||||
<para>
|
||||
The fifth section specifies some miscellaneous values that are
|
||||
required for certain printers. For most printers, the correct
|
||||
values are <constant>1</constant> for
|
||||
<varname>separation_rows</varname> and <constant>0</constant>
|
||||
for the others. Very, very few printers require (or allow)
|
||||
<varname>separation_rows</varname> to be anything but
|
||||
<constant>1</constant> and
|
||||
<varname>pseudo_separation_rows</varname> other than
|
||||
<constant>0</constant>. The Stylus Color 1520, Stylus Color
|
||||
800, Stylus Color 850, and (strangely enough to my mind, since
|
||||
it's a newer printer) Stylus Color 660 seem to be the only
|
||||
exceptions.
|
||||
</para>
|
||||
<para>
|
||||
<varname>zero_margin_offset</varname> is used to specify an
|
||||
additional negative horizontal offset required to print to the
|
||||
edges of the paper on newer Stylus Photo printers. These must
|
||||
be determined empirically; good starting values are
|
||||
<constant>100</constant> for 1440 DPI and
|
||||
<constant>50</constant> for 2880 DPI printers. The goal is to
|
||||
print to the edge of the page, but not over it.
|
||||
</para>
|
||||
<para>
|
||||
The sixth section specifies head offsets for printers that do
|
||||
not have the color jets aligned. Certain printers, such as
|
||||
the Stylus Color 480, have an unusual head arrangement whereby
|
||||
instead of all of the colors being aligned vertically, the
|
||||
nozzles are configured in groups. These printers are easy to
|
||||
determine; if the normal head offset of zero for each color is
|
||||
used, the printing will be vertically out of alignment. Most
|
||||
of these printers require specification of a negative offset
|
||||
for printing to the top edge of the paper; typically these
|
||||
printers do not require such an offset when printing black
|
||||
only.
|
||||
</para>
|
||||
<para>
|
||||
The seventh section specifies the most difficult values to
|
||||
tune, the dot sizes, printing densities, and ink values (for
|
||||
variable dot size enabled printers). These will be described
|
||||
in detail below.
|
||||
</para>
|
||||
<para>
|
||||
The last section specifies luminosity, hue, and saturation
|
||||
adjustment vectors for the printer, and the paper definitions.
|
||||
These are used to adjust the color in
|
||||
<emphasis>Photograph</emphasis> and <emphasis>Solid
|
||||
Colors</emphasis> output modes. These are each vectors of 48
|
||||
(actually 49, as the first value must be duplicated) doubles
|
||||
that remap the luminosity, hue, and saturation respectively.
|
||||
The hue is calculated, and the value used to interpolate
|
||||
between the two closest points in each vector.
|
||||
</para>
|
||||
<para>
|
||||
The paper definitions is a set of paper definitions. The
|
||||
paper definition contains the name of the paper type, special
|
||||
settings that are required for printers to process the paper
|
||||
correctly, and a set of adjustment values. These are not
|
||||
currently discussed here.
|
||||
</para>
|
||||
<para>
|
||||
The lists of dot sizes and densities contain values for 13
|
||||
printing modes: 120/180 DPI using printer weaving (single row;
|
||||
incorrectly referred to as “microweave”) and
|
||||
“soft” weaving (the driver determines the exact
|
||||
pattern of dot layout), 360 DPI microweave and softweave,
|
||||
720×360 DPI microweave and softweave, 720 DPI microweave
|
||||
and softweave, 1440×720 microweave and softweave,
|
||||
2880×720 microweave and softweave, and 2880×1440
|
||||
softweave only. Printer weaving is referred to as
|
||||
“microweave” for historical reasons.
|
||||
</para>
|
||||
<para>
|
||||
For the dot sizes, the value for each element in the vector
|
||||
selects the dot size to be used when printing at this (or
|
||||
similar) resolution. The dot sizes are determined by
|
||||
consulting the programming manual for the printer and
|
||||
experimenting as described below. Current Epson printers
|
||||
always use dot sizes less than <constant>16</constant>
|
||||
(<constant>0x10</constant>), to indicate single dot size (each
|
||||
dot is represented by 1 bit, and it's either printed or not),
|
||||
and dot sizes of <constant>16</constant> or greater to
|
||||
indicate variable dot size (each dot is represented by 2 bits,
|
||||
and it can either be not printed or take on 2 or 3 values,
|
||||
representing the relative size of the printed dot). Variable
|
||||
dot sizes permit the use of very small dots (which would be
|
||||
too small to fill the page and produce solid black) in light
|
||||
areas, while allowing the page to be filled with larger dots
|
||||
in darker areas.
|
||||
</para>
|
||||
<para>
|
||||
Even single dot size printers can usually produce dots of
|
||||
different sizes; it's just illegal to actually try to switch
|
||||
dot size during a page. These dots are also much bigger than
|
||||
those used in true variable dot size printing.
|
||||
</para>
|
||||
<para>
|
||||
A dot size of <constant>-1</constant> indicates that this
|
||||
resolution is illegal for the printer in question. Any
|
||||
resolutions that would use this dot size will not be presented
|
||||
to the user. A dot size of <constant>-2</constant> indicates
|
||||
that this resolution is legal, but that the driver is not to
|
||||
attempt to set any dot size. Some very old printers do not
|
||||
support the command to set the dot size.
|
||||
</para>
|
||||
<para>
|
||||
Most printers support a dot size of <constant>0</constant> as
|
||||
a mode-specific default, but it's often a bigger dot than
|
||||
necessary. Printers usually also support some dot sizes
|
||||
between <constant>1</constant> and <constant>3</constant>.
|
||||
Usually <constant>1</constant> is the right dot size for 720
|
||||
and 1440 DPI printing, and <constant>3</constant> works best
|
||||
at 360 DPI.
|
||||
</para>
|
||||
<para>
|
||||
Variable dot size printers usually support 2 or 3 sets of
|
||||
variable dot sizes. Older printers based on a 6 picolitre
|
||||
drop (the 480, 720, 740, 750, 900, and 1200) support two: mode
|
||||
16 (0x10 in hexadecimal) for normal variable dots at 1440 or
|
||||
720 DPI, and mode 17 (0x10) for special larger dots at 360
|
||||
DPI. Newer printers based on 4 picolitre drops normally
|
||||
support three sizes: <constant>0x10</constant> for 4 pl base
|
||||
drops, <constant>0x11</constant> for 6 pl base drops, and
|
||||
<constant>0x12</constant> for special large drops. On these
|
||||
printers, <constant>0x10</constant> usually works best at
|
||||
1440×720 and <constant>0x11</constant> works best at
|
||||
720×720. Unfortunately, <constant>0x10</constant>
|
||||
doesn't seem to generate quite enough density at
|
||||
720×720, because if it did the output would be very
|
||||
smooth. Perhaps it's possible to tweak things…
|
||||
</para>
|
||||
<para>
|
||||
The list of densities is a list of base density values for all
|
||||
of the above listed modes. “Density” refers to
|
||||
the amount of ink deposited when a solid color (or solid
|
||||
black) is printed. So if the density is
|
||||
<constant>0.5</constant>, solid black actually prints only
|
||||
half the possible dots. “Base density” refers to
|
||||
the fact that the density value can be scaled in the GUI or on
|
||||
the Ghostscript command line. The density value specified
|
||||
(which is not made visible to the user) is multiplied by the
|
||||
base density to obtain the effective density value. All other
|
||||
things (such as ink drop size) remaining the same, doubling
|
||||
the resolution requires halving the base density. The base
|
||||
density in the density vector may exceed
|
||||
<constant>1</constant>, as many paper types require lower
|
||||
density than the base driver. The driver ensures that the
|
||||
actual density never exceeds <constant>1</constant>.
|
||||
</para>
|
||||
<para>
|
||||
Tuning the density should be done on high quality paper
|
||||
(usually glossy photo paper). The goal is to find the lowest
|
||||
density value that results in solid black (no visible gaps
|
||||
under a fairly high power magnifying glass or loupe). If an
|
||||
appropriate density value is found for 720 DPI, it could be
|
||||
divided by 2 for 1440×720, by 4 for 2880×720, and
|
||||
by 8 for 2880×1440.
|
||||
</para>
|
||||
<para>
|
||||
However, for printers that offer a choice of dot size, this
|
||||
may not be the best strategy. The best choice for dot size is
|
||||
the smallest dot size that allows choosing a density value not
|
||||
greater than <constant>1</constant> that gives full coverage.
|
||||
This dot size may be different for different resolutions.
|
||||
Tuning variable dot size printers is more complicated; the
|
||||
process is described below.
|
||||
</para>
|
||||
<para>
|
||||
The last member is a pointer to a structure containing a list
|
||||
of ink values for variable dot size (or 6 color) inks. We
|
||||
model variable dot size inks as producing a certain
|
||||
“value” of ink for each available dot size, where
|
||||
the largest dot size has a value of <constant>1</constant>.
|
||||
6-color inks are handled similarly; the light cyan and light
|
||||
magenta inks are treated as a fractional ink value. The
|
||||
combination of variable dot size and 6 color inks, of course,
|
||||
just creates that many more different ink choices.
|
||||
</para>
|
||||
<para>
|
||||
This structure is actually rather complicated; it contains
|
||||
entries for each combination of physical printer resolution
|
||||
(180, 360, 720, and 1440 DPI), ink colors (4, 6, and 7), and
|
||||
single and variable dot sizes (since some printer modes can't
|
||||
handle variable dot size inks). Since there's so much data,
|
||||
it's actually a somewhat deeply nested structure.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
An <type>escp2_printer_t</type> contains a pointer
|
||||
(essentially, a reference rather than a copy) to an
|
||||
<type>escp2_variable_inklist_t</type>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
An <type>escp2_variable_inklist_t</type> contains pointers
|
||||
to <type>escp2_variable_inkset_t</type> structures. There
|
||||
is one such pointer for each combination of resolution,
|
||||
dot type, and ink colors as described above. Yes, this is
|
||||
rather inflexible.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
An <type>escp2_variable_inkset_t</type> contains pointers
|
||||
to <type>escp2_variable_ink_t</type> structures. There is
|
||||
one such pointer for each of the four colors (C, M, Y, and
|
||||
K).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
An <type>escp2_variable_ink_t</type> contains a pointer to
|
||||
the actual list of ink values
|
||||
(<type>simple_dither_range_t</type>), the number of ink
|
||||
values, and a density value to be used for computing the
|
||||
transitions. This density value is actually a scaling
|
||||
value; it is multiplied by the effective density to
|
||||
compute the density to be used for computing the
|
||||
transitions. Normally, this value is
|
||||
<constant>1</constant>, but in some cases it may be
|
||||
possible to get smoother results with a different value
|
||||
(in particular, the single dot size 6-color inks work best
|
||||
with the effective density scaled to
|
||||
<constant>.75</constant> for this purpose). A lower
|
||||
density lowers the transition points, which results in
|
||||
more ink being deposited.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
A <type>simple_dither_range_t</type> is a structure containing four values:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The value of the particular ink
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The bit pattern used to represent the ink
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Whether the ink is light (0) or dark (1), for inks
|
||||
with light and dark variants
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The relative amount of ink actually deposited by
|
||||
this dot (not currently used for much; it can be
|
||||
used for ink reduction purposes, to reduce the
|
||||
amount of ink deposited on the paper).
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
These things are interesting as arrays. From an array of
|
||||
<type>simple_dither_range_t</type>'s, the dither code
|
||||
computes transition values that it looks up at run time to
|
||||
decide what ink to print, as well as whether to print at
|
||||
all.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
<emphasis>Really</emphasis> confused now? Yup. You'll
|
||||
probably find it easier to simply read the code.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Tuning the printer</title>
|
||||
<para>
|
||||
Now, how do you use all this to tune a printer? There are a
|
||||
number of ways to do it; this one is my personal favorite.
|
||||
</para>
|
||||
<para>
|
||||
There's a file named <filename>test/cyan-sweep.tif</filename>.
|
||||
This consists of a thin bar of cyan sweeping from white to
|
||||
almost pure cyan, and from pure cyan to black. The first
|
||||
thing to do is to pick the appropriate
|
||||
<type>simple_dither_range_t</type> (or create a whole new
|
||||
<type>escp2_variable_inklist_t</type>) and comment out all but
|
||||
the darkest ink (this means you'll be using the largest dots
|
||||
of dark ink). At 8.5" width (the width of a letter-size piece
|
||||
of paper), the bar will be 1/8" high. Printing it on wider or
|
||||
narrower paper will change the height accordingly. Print it
|
||||
width-wise across a piece of photo quality paper in line art
|
||||
mode using ordered or adaptive hybrid dither. Do not use
|
||||
photographic mode; the colors in photographic mode vary
|
||||
non-linearly depending upon the presence of the three color
|
||||
components, while in line art mode the colors are much purer.
|
||||
Make sure that all the color adjustments are set to defaults
|
||||
(1.0). Use the highest quality version of the print mode
|
||||
you're testing to reduce banding and other artifacts. This is
|
||||
much easier to do with the Gimp than with Ghostscript.
|
||||
</para>
|
||||
<para>
|
||||
At this stage, you want to look for four things:
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The black near the center of the line is solid, but not
|
||||
more so than that.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The cyan immediately to the left of the black is
|
||||
<emphasis>almost</emphasis> solid.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The dark cyan at the far right of the page is solid, but
|
||||
not more so. You can try tuning the density so that it
|
||||
isn't quite solid, then nudging up the density until it
|
||||
is.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Both sweeps sweep smoothly from light to dark. In
|
||||
particular, the dark half of the bar shouldn't visibly
|
||||
change color; it should go smoothly from cyan to black.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para>
|
||||
Repeat this stage until you have everything just right. Use
|
||||
the positioning entry boxes in the dialog to position each bar
|
||||
exactly 1/8" further down the page. Adjacent bars will be
|
||||
touching.
|
||||
</para>
|
||||
<para>
|
||||
The next step is to uncomment out the second darkest dot size.
|
||||
If you're using variable dots, use the second largest dot size
|
||||
of the dark ink rather than the largest dot size of the light
|
||||
ink. This will give you two inks.
|
||||
</para>
|
||||
<para>
|
||||
When you recompile the plugin, you simply need to copy the new
|
||||
executable into the correct place. You do not need to exit
|
||||
and restart the Gimp.
|
||||
</para>
|
||||
<para>
|
||||
Print another bar adjacent to the first one. Your goal is to
|
||||
match the bar using a single dot size as closely as possible.
|
||||
You'll find that the dark region of the bar shouldn't change
|
||||
to any great degree, but the light half probably will. If the
|
||||
lighter part of the light half is too dark, you need to
|
||||
increase the value of the smaller dot; if it's too light, you
|
||||
need to decrease the value. The reasoning is that if the
|
||||
value is too low, the ink isn't being given enough credit for
|
||||
its contribution to the darkness of the ink, and vice versa.
|
||||
Repeat until you have a good match. Make sure you let the ink
|
||||
dry fully, which will take a few minutes. Wet ink will look
|
||||
too dark. Don't look at the paper too closely; hold it at a
|
||||
distance. The extra graininess of the largest dot size will
|
||||
probably make it look lighter than it should; if you hold it
|
||||
far enough away so that you can't see the dots, you'll get a
|
||||
more accurate picture of what's going on.
|
||||
</para>
|
||||
<para>
|
||||
After you have what looks like a good match, print another bar
|
||||
using only the largest dot size (or dark ink, for single dot
|
||||
size 6-color printers). You want to ensure that the bars
|
||||
touching each other look identical, or as close as possible to
|
||||
it; your eye won't give you a good reading if the bars are
|
||||
separated from each other. You'll probably have to repeat the
|
||||
procedure.
|
||||
</para>
|
||||
<para>
|
||||
The next step is to comment out all but the largest and
|
||||
third-largest dot size, and repeat the procedure. When they
|
||||
match, use all three dot sizes of dark ink. Again, the goal
|
||||
is to match the single dot size.
|
||||
</para>
|
||||
<para>
|
||||
You'll probably find the match is imperfect. Now you have to
|
||||
figure out what region isn't right, which takes some
|
||||
experimentation. Even small adjustments can make a noticeable
|
||||
difference in what you see. At this stage, it's very
|
||||
important to hold the page far enough from your eye; when you
|
||||
use all three dot sizes, the texture will be much more even,
|
||||
which sometimes makes it look darker and sometimes lighter.
|
||||
</para>
|
||||
<para>
|
||||
After this is calibrated, it's time to calibrate the light ink
|
||||
against the dark ink. To do this, comment out all but the
|
||||
large dot version of the two inks, and repeat the procedure.
|
||||
This is trickier, because the hues of the inks might not be
|
||||
quite identical. Look at the dark half of the bar as well as
|
||||
the light half to see that the hue really doesn't change as
|
||||
you sweep from cyan to black. Sometimes it's easier to judge
|
||||
that way. You may find that it looks blotchy, in which case
|
||||
you should switch from ordered dither to adaptive hybrid.
|
||||
</para>
|
||||
<para>
|
||||
After you have the light and dark inks calibrated against each
|
||||
other, it's time to add everything back in. Usually you don't
|
||||
want to use the largest dot size of light ink. These dots
|
||||
will be much larger than the small dots of dark ink, but
|
||||
they'll still be lighter. This will cause problems when
|
||||
printing mixed colors, since you'll be depositing more ink on
|
||||
lighter regions of the page, and you'll probably get strange
|
||||
color casts that you can't get rid of in neutral tones. I
|
||||
normally use only the smallest one or two dot sizes of light
|
||||
ink.
|
||||
</para>
|
||||
<para>
|
||||
After you've tweaked everything, print the color bar with
|
||||
saturation set to zero. This will print neutral tones using
|
||||
color inks. Your goal here is to look for neutral tonality.
|
||||
If you're using a 6-color printer and get a yellow cast, it
|
||||
means that the values for your light inks are too high
|
||||
(remember, that means they're getting too much credit, so
|
||||
you're not depositing enough cyan and magenta ink, and the
|
||||
yellow dominates). If you get a bluish or bluish-purple cast,
|
||||
your light inks are too low (you're not giving them enough
|
||||
credit, so too much cyan and magenta is deposited, which
|
||||
overwhelms the yellow). Make sure you do this on very white,
|
||||
very high grade inkjet paper that's designed for
|
||||
1440×720 DPI or higher; otherwise the ink will spread on
|
||||
contact and you'll get values that aren't really true for high
|
||||
grade paper. You can, of course, calibrate for low grade
|
||||
paper if that's what you're going to use, but that shouldn't
|
||||
be put into the distribution.
|
||||
</para>
|
||||
<para>
|
||||
You can also fully desaturate this bar inside the Gimp and
|
||||
print it as monochrome (don't print the cyan as monochrome;
|
||||
the driver does funny things with luminance), for comparison.
|
||||
You'll find it very hard to get rid of all color casts.
|
||||
</para>
|
||||
<para>
|
||||
There are other ways of tuning printers, but this one works
|
||||
pretty well for me.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Canon inkjet printers</title>
|
||||
<para>
|
||||
Basically, a new Canon printer can be added to
|
||||
<filename>print-canon.c</filename> in a similar way as
|
||||
described above for the epson inkjet printers. The main
|
||||
differences are noted here.
|
||||
</para>
|
||||
<para>
|
||||
In general, Canon printers have more “built-in
|
||||
intelligence“ than Epson printers which results in the
|
||||
fact that the driver only has to tell the printing conditions
|
||||
like resolutions, dot sizes, etc. to the printer and
|
||||
afterwards transfer the raster data line by line for each
|
||||
color used.
|
||||
</para>
|
||||
<para>
|
||||
<type>canon_cap_t</type> is a C struct defined as follows:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>typedef struct canon_caps {
|
||||
int model; /* model number as used in printers.xml */
|
||||
int max_width; /* maximum printable paper size */
|
||||
int max_height;
|
||||
int base_res; /* base resolution - shall be 150 or 180 */
|
||||
int max_xdpi; /* maximum horizontal resolution */
|
||||
int max_ydpi; /* maximum vertical resolution */
|
||||
int max_quality;
|
||||
int border_left; /* left margin, points */
|
||||
int border_right; /* right margin, points */
|
||||
int border_top; /* absolute top margin, points */
|
||||
int border_bottom; /* absolute bottom margin, points */
|
||||
int inks; /* installable cartridges (CANON_INK_*) */
|
||||
int slots; /* available paperslots */
|
||||
int features; /* special bjl settings */
|
||||
canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
|
||||
canon_densities_t densities; /* List of densities for each printer */
|
||||
canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
|
||||
} canon_cap_t;</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
Since there are Canon printers which print in resolutions of
|
||||
2<superscript>n</superscript> × 150 DPI (e.g. 300, 600,
|
||||
1200) and others which support resolutions of
|
||||
2<superscript>n</superscript> × 180 DPI (e.g. 360, 720,
|
||||
1440), there's a base resolution (150 or 180, respectively)
|
||||
given in the <type>canon_cap_t</type>. The structs
|
||||
<type>canon_dot_size_t</type>, <type>canon_densities_t</type>
|
||||
and <type>canon_variable_inklist_t</type> refer to resolutions
|
||||
being multiples of the base resolution.
|
||||
</para>
|
||||
<para>
|
||||
For the Canon driver, the struct <type>canon_dot_size_t</type>
|
||||
holds values for a model's capabilities at a given resolution,
|
||||
or <constant>-1</constant> if the resolution is not supported.
|
||||
<constant>0</constant> if it can be used and
|
||||
<constant>1</constant> if the resolution can be used for
|
||||
variable dot size printing.
|
||||
</para>
|
||||
<para>
|
||||
In <type>canon_densities_t</type> the base densities for each
|
||||
resolution can be specified like for an epson printer. The
|
||||
same holds true for <type>canon_variable_inklist_t</type>.
|
||||
See the descriptions above to learn about how to adjust your
|
||||
model's output to yield nice results.
|
||||
</para>
|
||||
<para>
|
||||
There's a slight difference though in the way the Canon driver
|
||||
and the escp2 driver define their variable inklists: In the
|
||||
Canon driver, you need to define an inklist like this:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>static const canon_variable_inklist_t canon_ink_myinks[] =
|
||||
{
|
||||
{
|
||||
1,4, /* 1bit/pixel, 4 colors */
|
||||
&ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
|
||||
&ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
|
||||
},
|
||||
{
|
||||
3,4, /* 3bit/pixel, 4 colors */
|
||||
&ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
|
||||
&ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
|
||||
},
|
||||
};</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
where the <literal>&ci_CMYK_1</literal> and
|
||||
<literal>&ci_CMYK_3</literal> entries are references to a
|
||||
previously defined const of type
|
||||
<type>canon_variable_inkset_t</type>.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
@ -1,22 +0,0 @@
|
||||
<chapter>
|
||||
<title>Reporting Bugs</title>
|
||||
<para>
|
||||
If you find a bug in Gutenprint or have any suggestions for
|
||||
modification or improvement, please send electronic mail to the
|
||||
Gutenprint bug reporting address,
|
||||
<email>gimp-print-devel@lists.sourceforge.net</email>. Please
|
||||
include the version number, which you can find at the bottom of
|
||||
each manual page. Also include in your message the output that
|
||||
the program produced and the output you expected, if applicable,
|
||||
otherwise the best description of the problem that you can
|
||||
provide.
|
||||
</para>
|
||||
<para>
|
||||
If you have other questions, comments or suggestions about
|
||||
Gutenprint, contact the developers via electronic mail to the
|
||||
Gutenprint mailing list
|
||||
<email>gimp-print-devel@lists.sourceforge.net</email>. They
|
||||
will try to help you out, although they may not have time to fix
|
||||
your problems.
|
||||
</para>
|
||||
</chapter>
|
@ -1,18 +0,0 @@
|
||||
book1.html
|
||||
f14.html
|
||||
c39.html
|
||||
c48.html
|
||||
x67.html
|
||||
x79.html
|
||||
c194.html
|
||||
c200.html
|
||||
x271.html
|
||||
c464.html
|
||||
x955.html
|
||||
x1669.html
|
||||
c1717.html
|
||||
x1734.html
|
||||
c1968.html
|
||||
gpl.html
|
||||
gpl-terms.html
|
||||
ln10.html
|
@ -1,453 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>The Developer's Guide to Gutenprint</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Preface"
|
||||
HREF="f14.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="book"
|
||||
><DIV
|
||||
CLASS="BOOK"
|
||||
><A
|
||||
NAME="AEN1"
|
||||
></A
|
||||
><DIV
|
||||
CLASS="TITLEPAGE"
|
||||
><H1
|
||||
CLASS="title"
|
||||
><A
|
||||
NAME="AEN2"
|
||||
>The Developer's Guide to Gutenprint</A
|
||||
></H1
|
||||
><H3
|
||||
CLASS="corpauthor"
|
||||
> The Gutenprint Project
|
||||
</H3
|
||||
><P
|
||||
CLASS="copyright"
|
||||
><A
|
||||
HREF="ln10.html"
|
||||
>Copyright</A
|
||||
> © 2003 The Gutenprint Project</P
|
||||
><HR></DIV
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="f14.html"
|
||||
>Preface</A
|
||||
></DT
|
||||
><DT
|
||||
>1. <A
|
||||
HREF="c39.html"
|
||||
>Copying, modification and redistribution</A
|
||||
></DT
|
||||
><DT
|
||||
>2. <A
|
||||
HREF="c48.html"
|
||||
>Using libgutenprint</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="c48.html#AEN51"
|
||||
>Code prerequisites</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x67.html"
|
||||
>Linking with libgutenprint</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html"
|
||||
>Integrating libgutenprint</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html#AEN86"
|
||||
><B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
></A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html#AEN123"
|
||||
><B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
></A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html#AEN133"
|
||||
><B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
></A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html#AEN150"
|
||||
><B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
></A
|
||||
></DT
|
||||
></DL
|
||||
></DD
|
||||
></DL
|
||||
></DD
|
||||
><DT
|
||||
>3. <A
|
||||
HREF="c194.html"
|
||||
>Reporting Bugs</A
|
||||
></DT
|
||||
><DT
|
||||
>4. <A
|
||||
HREF="c200.html"
|
||||
>Adding a new printer</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="c200.html#AEN217"
|
||||
><TT
|
||||
CLASS="filename"
|
||||
>printers.xml</TT
|
||||
></A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x271.html"
|
||||
>The driver file</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="x271.html#AEN281"
|
||||
>Epson inkjet printers</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x271.html#AEN403"
|
||||
>Tuning the printer</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x271.html#AEN433"
|
||||
>Canon inkjet printers</A
|
||||
></DT
|
||||
></DL
|
||||
></DD
|
||||
></DL
|
||||
></DD
|
||||
><DT
|
||||
>5. <A
|
||||
HREF="c464.html"
|
||||
>ESC/P2</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="c464.html#AEN477"
|
||||
>Standard commands</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x955.html"
|
||||
>Remote Mode Commands</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1669.html"
|
||||
>Appropriate Remote Commands</A
|
||||
></DT
|
||||
></DL
|
||||
></DD
|
||||
><DT
|
||||
>6. <A
|
||||
HREF="c1717.html"
|
||||
>Weaving for inkjet printers</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="c1717.html#AEN1719"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html"
|
||||
>Weaving algorithms</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html#AEN1740"
|
||||
>Simple weaving algorithms</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html#AEN1757"
|
||||
>Perfect weaving</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html#AEN1791"
|
||||
>Weaving collisions</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html#AEN1809"
|
||||
>What makes a “perfect” weave?</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html#AEN1937"
|
||||
>Oversampling</A
|
||||
></DT
|
||||
></DL
|
||||
></DD
|
||||
></DL
|
||||
></DD
|
||||
><DT
|
||||
>7. <A
|
||||
HREF="c1968.html"
|
||||
>Dithering</A
|
||||
></DT
|
||||
><DT
|
||||
>A. <A
|
||||
HREF="gpl.html"
|
||||
>GNU General Public License</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl.html#gpl-preamble"
|
||||
>Preamble</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html"
|
||||
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A
|
||||
></DT
|
||||
><DD
|
||||
><DL
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect0"
|
||||
>Section 0</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect1"
|
||||
>Section 1</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect2"
|
||||
>Section 2</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect3"
|
||||
>Section 3</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect4"
|
||||
>Section 4</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect5"
|
||||
>Section 5</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect6"
|
||||
>Section 6</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect7"
|
||||
>Section 7</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect8"
|
||||
>Section 8</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect9"
|
||||
>Section 9</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect10"
|
||||
>Section 10</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect11"
|
||||
>NO WARRANTY</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html#gpl-sect12"
|
||||
>Section 12</A
|
||||
></DT
|
||||
></DL
|
||||
></DD
|
||||
></DL
|
||||
></DD
|
||||
></DL
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="LOT"
|
||||
><DL
|
||||
CLASS="LOT"
|
||||
><DT
|
||||
><B
|
||||
>List of Tables</B
|
||||
></DT
|
||||
><DT
|
||||
>5-1. <A
|
||||
HREF="c464.html#AEN728"
|
||||
>Colors</A
|
||||
></DT
|
||||
><DT
|
||||
>5-2. <A
|
||||
HREF="c464.html#AEN767"
|
||||
>Compression modes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-3. <A
|
||||
HREF="c464.html#AEN827"
|
||||
>Extended Colors</A
|
||||
></DT
|
||||
><DT
|
||||
>5-4. <A
|
||||
HREF="c464.html#AEN876"
|
||||
>Compression modes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-5. <A
|
||||
HREF="x955.html#AEN1015"
|
||||
>Head cleaning parameters</A
|
||||
></DT
|
||||
><DT
|
||||
>5-6. <A
|
||||
HREF="x955.html#AEN1139"
|
||||
>Media types</A
|
||||
></DT
|
||||
><DT
|
||||
>5-7. <A
|
||||
HREF="x955.html#AEN1349"
|
||||
>Printer status codes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-8. <A
|
||||
HREF="x955.html#AEN1389"
|
||||
>Printer error codes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-9. <A
|
||||
HREF="x955.html#AEN1454"
|
||||
>Printer additional ink codes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-10. <A
|
||||
HREF="x955.html#AEN1482"
|
||||
>Printer warning codes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-11. <A
|
||||
HREF="x955.html#AEN1621"
|
||||
>Paper cutting codes</A
|
||||
></DT
|
||||
><DT
|
||||
>5-12. <A
|
||||
HREF="x955.html#AEN1645"
|
||||
>Paper cutting units</A
|
||||
></DT
|
||||
></DL
|
||||
></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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="f14.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Preface</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,294 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Weaving for inkjet printers</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Appropriate Remote Commands"
|
||||
HREF="x1669.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Weaving algorithms"
|
||||
HREF="x1734.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x1669.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x1734.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="chapter"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN1717"
|
||||
></A
|
||||
>Chapter 6. Weaving for inkjet printers</H1
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="c1717.html#AEN1719"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x1734.html"
|
||||
>Weaving algorithms</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="AEN1719"
|
||||
>Introduction</A
|
||||
></H1
|
||||
><P
|
||||
> The Epson Stylus Color/Photo printers don't have memory to print
|
||||
using all of the nozzles in the print head. For example, the
|
||||
Stylus Photo 700/EX has 32 nozzles. At 720 dpi, with an 8" wide
|
||||
image, a single line requires ((8 × 720 × 6) / 8)
|
||||
bytes, or 4320 bytes (because the Stylus Photo printers have 6
|
||||
ink colors). To use 32 nozzles per color would require 138240
|
||||
bytes. It's actually worse than that, though, because the
|
||||
nozzles are spaced 8 rows apart. Therefore, in order to store
|
||||
enough data to permit sending the page as a simple raster, the
|
||||
printer would require enough memory to store 256 rows, or
|
||||
1105920 bytes. Considering that the Photo EX can print 11"
|
||||
wide, we're looking at more like 1.5 MB. In fact, these
|
||||
printers are capable of 1440 dpi horizontal resolution. This
|
||||
would require 3 MB. The printers actually have 64K-256K.
|
||||
</P
|
||||
><P
|
||||
> With the newer (740/750 and later) printers it's even worse,
|
||||
since these printers support multiple dot sizes; of course, the
|
||||
even newer 2880×720 printers don't help either.
|
||||
</P
|
||||
><P
|
||||
> Older Epson printers had a mode called
|
||||
MicroWeave<SUP
|
||||
>™</SUP
|
||||
>. In this mode, the
|
||||
host fed the printer individual rows of dots, and the printer
|
||||
bundled them up and sent them to the print head in the correct
|
||||
order to achieve high quality. This MicroWeave mode still works
|
||||
in new printers, but in some cases the implementation is very
|
||||
minimal: the printer uses exactly one nozzle of each color (the
|
||||
first one). This makes printing extremely slow (more than 30
|
||||
minutes for one 8.5×11" page), although the quality is
|
||||
extremely high with no visible banding whatsoever. It's not
|
||||
good for the print head, though, since no ink is flowing through
|
||||
the other nozzles. This leads to drying of ink and possible
|
||||
permanent damage to the print head.
|
||||
</P
|
||||
><P
|
||||
> By the way, although the Epson manual says that microweave mode
|
||||
should be used at 720 dpi, 360 dpi continues to work in much the
|
||||
same way. At 360 dpi, data is fed to the printer one row at a
|
||||
time on all Epson printers. The pattern that the printer uses
|
||||
to print is very prone to banding. However, 360 dpi is
|
||||
inherently a low quality mode; if you're using it, presumably
|
||||
you don't much care about quality. It is possible to do
|
||||
microweave at 360 DPI, with significantly improved quality.
|
||||
</P
|
||||
><P
|
||||
> Except for the Stylus Pro printers (5000, 5500, 7000, 7500,
|
||||
9000, 9500, and when it's released the 10000), which can do
|
||||
microweave at any resolution, printers from roughly the Stylus
|
||||
Color 600 and later do not have the capability to do MicroWeave
|
||||
correctly in many cases (some printers can do MicroWeave
|
||||
correctly at 720 DPI). Instead, the host must arrange the
|
||||
output in the order that it will be sent to the print head.
|
||||
This is a very complex process; the jets in the print head are
|
||||
spaced more than one row (1/720") apart, so we can't simply send
|
||||
consecutive rows of dots to the printer. Instead, we have to
|
||||
pass e. g. the first, ninth, 17th, 25th... rows in order for
|
||||
them to print in the correct position on the paper. This
|
||||
interleaving process is called "soft" weaving.
|
||||
</P
|
||||
><P
|
||||
> This decision was probably made to save money on memory in the
|
||||
printer. It certainly makes the driver code far more
|
||||
complicated than it would be if the printer could arrange the
|
||||
output. Is that a bad thing? Usually this takes far less CPU
|
||||
time than the dithering process, and it does allow us more
|
||||
control over the printing process, e.g. to reduce banding.
|
||||
Conceivably, we could even use this ability to map out bad jets.
|
||||
</P
|
||||
><P
|
||||
> Interestingly, apparently the Windows (and presumably Macintosh)
|
||||
drivers for most or all Epson printers still list a
|
||||
“microweave” mode. Experiments have demonstrated
|
||||
that this does not in fact use the “microweave” mode
|
||||
of the printer. Possibly it does nothing, or it uses a
|
||||
different weave pattern from what the
|
||||
“non-microweave” mode does. This is unnecessarily
|
||||
confusing, at least for people who write drivers who try to
|
||||
explain them to people who don't.
|
||||
</P
|
||||
><P
|
||||
> What makes this interesting is that there are many different
|
||||
ways of of accomplishing this goal. The naive way would be to
|
||||
divide the image up into groups of 256 rows (for a printer with
|
||||
32 jets and a separation of 8 rows), and print all the mod8=0
|
||||
rows in the first pass, mod8=1 rows in the second, and so forth.
|
||||
The problem with this approach is that the individual ink jets
|
||||
are not perfectly uniform; some emit slightly bigger or smaller
|
||||
drops than others. Since each group of 8 adjacent rows is
|
||||
printed with the same nozzle, that means that there will be
|
||||
distinct streaks of lighter and darker bands within the image (8
|
||||
rows is 1/90", which is visible; 1/720" is not). Possibly worse
|
||||
is that these patterns will repeat every 256 rows. This creates
|
||||
banding patterns that are about 1/3" wide.
|
||||
</P
|
||||
><P
|
||||
> So we have to do something to break up this patterning.
|
||||
</P
|
||||
><P
|
||||
> Epson do not publish the weaving algorithms that they use in
|
||||
their bundled drivers. Indeed, their developer web site
|
||||
(http://www.ercipd.com/isv/edr_docs.htm) does not even describe
|
||||
how to do this weaving at all; it says that the only way to
|
||||
achieve 720 dpi is to use MicroWeave. It does note (correctly)
|
||||
that 1440 dpi horizontal can only be achieved by the driver
|
||||
(i. e. in software). The manual actually makes it fairly clear
|
||||
how to do this (it requires two passes with horizontal head
|
||||
movement between passes), and it is presumably possible to do
|
||||
this with MicroWeave.
|
||||
</P
|
||||
><P
|
||||
> The information about how to do this is apparently available
|
||||
under non-disclosure agreement (NDA). It's actually easy enough
|
||||
to reverse engineer what's inside a print file with a simple
|
||||
Perl script, which is supplied with the Gutenprint distribution
|
||||
as tests/parse-escp2. In any event, we weren't particularly
|
||||
interested in the weaving patterns Epson used. There are many
|
||||
factors that go into choosing a good weaving pattern; we're
|
||||
learning them as we go along. Issues such as drying time
|
||||
(giving the ink a few seconds more or less to dry can have
|
||||
highly visible effects) affect the quality of the output.
|
||||
</P
|
||||
><P
|
||||
> The Uniprint GhostScript driver has been able to do weaving for
|
||||
a long time. It uses patterns that must be specified for each
|
||||
choice of resolution and printer. We preferred an algorithmic
|
||||
approach that computes a weave pattern for any given choice of
|
||||
inputs. This obviously requires extensive testing; we developed
|
||||
a test suite specifically for this purpose.
|
||||
</P
|
||||
></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="x1669.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="x1734.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Appropriate Remote Commands</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Weaving algorithms</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,164 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Reporting Bugs</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Integrating libgutenprint"
|
||||
HREF="x79.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Adding a new printer"
|
||||
HREF="c200.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x79.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c200.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="chapter"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN194"
|
||||
></A
|
||||
>Chapter 3. Reporting Bugs</H1
|
||||
><P
|
||||
> If you find a bug in Gutenprint or have any suggestions for
|
||||
modification or improvement, please send electronic mail to the
|
||||
Gutenprint bug reporting address,
|
||||
<CODE
|
||||
CLASS="email"
|
||||
><<A
|
||||
HREF="mailto:gimp-print-devel@lists.sourceforge.net"
|
||||
>gimp-print-devel@lists.sourceforge.net</A
|
||||
>></CODE
|
||||
>. Please
|
||||
include the version number, which you can find at the bottom of
|
||||
each manual page. Also include in your message the output that
|
||||
the program produced and the output you expected, if applicable,
|
||||
otherwise the best description of the problem that you can
|
||||
provide.
|
||||
</P
|
||||
><P
|
||||
> If you have other questions, comments or suggestions about
|
||||
Gutenprint, contact the developers via electronic mail to the
|
||||
Gutenprint mailing list
|
||||
<CODE
|
||||
CLASS="email"
|
||||
><<A
|
||||
HREF="mailto:gimp-print-devel@lists.sourceforge.net"
|
||||
>gimp-print-devel@lists.sourceforge.net</A
|
||||
>></CODE
|
||||
>. They
|
||||
will try to help you out, although they may not have time to fix
|
||||
your problems.
|
||||
</P
|
||||
></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="x79.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="c200.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Integrating libgutenprint</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Adding a new printer</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,950 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Dithering</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Weaving algorithms"
|
||||
HREF="x1734.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="GNU General Public License"
|
||||
HREF="gpl.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x1734.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="gpl.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="chapter"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN1968"
|
||||
></A
|
||||
>Chapter 7. Dithering</H1
|
||||
><P
|
||||
> The dithering code in
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>src/main/print-dither.c</TT
|
||||
> attempts to
|
||||
reproduce various shades of gray (or all colors) from only a few
|
||||
different inks (black, cyan, magenta, yellow, and sometimes
|
||||
light cyan and light magenta). The dots can't vary in darkness
|
||||
or size (except for certain special printers), and so we need to
|
||||
lay down a certain fraction of dots to represent each distinct
|
||||
level.
|
||||
</P
|
||||
><P
|
||||
> This sounds straightforward; in practice, it isn't. Completely
|
||||
random distribution of dots (simple probabilistic dithering)
|
||||
would create grainy clumps and light spots. The smoothest
|
||||
pattern results from an equidistant spacing of dots.
|
||||
Approximating this requires sophisticated algorithms. We have
|
||||
two dithering algorithms, an ordered dither algorithm that uses
|
||||
a grid (matrix) to decide whether to print, and a modified
|
||||
Floyd-Steinberg error diffusion algorithm that uses a grid in a
|
||||
slightly different way.
|
||||
</P
|
||||
><P
|
||||
> We currently have three dithering functions:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><DIV
|
||||
CLASS="variablelist"
|
||||
><DL
|
||||
><DT
|
||||
><TT
|
||||
CLASS="literal"
|
||||
>dither_fastblack</TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This produces pure black or white from a pre-dithered
|
||||
input. This is used for two purposes: for printing pure
|
||||
black and white very quickly (e.g. text), and for printing
|
||||
pre-screened monochrome output that was rasterized
|
||||
externally.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
><TT
|
||||
CLASS="literal"
|
||||
>dither_black</TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This produces black from grayscale input. The new
|
||||
dither_black can produce either a single or multiple
|
||||
levels of black, for printers supporting variable dot
|
||||
size.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
><TT
|
||||
CLASS="literal"
|
||||
>dither_cmyk</TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This produces 3, 4, 5, 6, or 7 color output (CMY, CMYK,
|
||||
CcMmYK, CcMmYy, CcMmYyK, or any variants). The new
|
||||
routine can handle single or multiple levels of each
|
||||
color.
|
||||
</P
|
||||
></DD
|
||||
></DL
|
||||
></DIV
|
||||
><P
|
||||
> There is a choice of dithering algorithms. Four of them are
|
||||
based on a basic error diffusion, with a few tweaks of my own.
|
||||
The other one is ‘ordered’. However, they all share
|
||||
the basic operation in common. First, the algorithm picks what
|
||||
kind of dot (if there are multiple dot sizes and/or tones that
|
||||
may be picked) is the candidate to be printed. This decision is
|
||||
made based on the darkness at the point being dithered. Then,
|
||||
it decides whether the dot will be printed at all. What this is
|
||||
based on depends upon which algorithm family we use. This is
|
||||
all described in more detail below.
|
||||
</P
|
||||
><P
|
||||
> Ordered dithering works by comparing the value at a given point
|
||||
with the value of a tiled matrix. If the value at the point is
|
||||
greater than the value in the matrix, the dot is printed. The
|
||||
matrix should consist of a set of evenly spaced points between 0
|
||||
and the upper limit. The choice of matrix is very important for
|
||||
print quality. A good dither matrix will emphasize high
|
||||
frequency components, which distributes dots evenly with a
|
||||
minimum of clumping. The matrices used here are all simple
|
||||
matrices that are expanded recursively to create larger matrices
|
||||
with the same kind of even point distribution. This is
|
||||
described below.
|
||||
</P
|
||||
><P
|
||||
> Note that it is important to use different matrices for the two
|
||||
sub-operations, because otherwise the choice about whether to
|
||||
print and the choice of dot size will be correlated. The usual
|
||||
result is that the print is either too dark or too light, but
|
||||
there can be other problems.
|
||||
</P
|
||||
><P
|
||||
> Ordered dithering works quite well on single dot size, four
|
||||
color printers. It has not been well tested on four color,
|
||||
variable dot size printers. It should be avoided on six color
|
||||
printers.
|
||||
</P
|
||||
><P
|
||||
> Error diffusion works by taking the output error at a given
|
||||
pixel and “diffusing” it into surrounding pixels.
|
||||
Output error is the difference between the amount of ink output
|
||||
and the input level at each pixel. For simple printers, with
|
||||
one or four ink colors and only one dot size, the amount of ink
|
||||
output is either 65536 (i. e. full output) or 0 (no output).
|
||||
The difference between this and the input level is the error.
|
||||
Normal error diffusion adds part of this error to the adjoining
|
||||
pixels in the next column and the next row (the algorithm simply
|
||||
scans each row in turn, never backing up). The error adds up
|
||||
until it reaches a threshold (half of the full output level, or
|
||||
32768), at which point a dot is output, the output is subtracted
|
||||
from the current value, and the (now negative) error is diffused
|
||||
similarly.
|
||||
</P
|
||||
><P
|
||||
> Error diffusion works quite well in general, but it tends to
|
||||
generate artifacts which usually appear as worm-like lines or
|
||||
areas of anomalous density. I have devised some ways, as
|
||||
described below, of ameliorating these artifacts.
|
||||
</P
|
||||
><P
|
||||
> There are two sub-classes of error diffusion that we use here,
|
||||
‘random’ and ‘hybrid’. One of the
|
||||
techniques that we use to ameliorate the artifacts is to use a
|
||||
fuzzy threshold rather than the hard threshold of half of the
|
||||
output level. Random error diffusion uses a pseudo-random
|
||||
number to perturb the threshold, while hybrid error diffusion
|
||||
uses a matrix. Hybrid error diffusion worked very poorly in
|
||||
3.1.3, and I couldn't figure out why until I found a bug. It
|
||||
now works very well.
|
||||
</P
|
||||
><P
|
||||
> There is one additional variant (on both sub-classes), called
|
||||
‘adaptive hybrid’ and ‘adaptive random’.
|
||||
The adaptive variant takes advantage of the fact that the
|
||||
patterns that ordered dithering create are less visible at very
|
||||
low densities, while the artifacts created by error diffusion
|
||||
are more objectionable at low densities. At low densities,
|
||||
therefore, it uses ordered dithering; at higher densities it
|
||||
uses error diffusion.
|
||||
</P
|
||||
><P
|
||||
> Handling multiple output levels makes life a bit more
|
||||
complicated. In principle, it shouldn't be much harder: simply
|
||||
figure out what the ratio between the available output levels is
|
||||
and have multiple thresholds. In practice, getting these right
|
||||
involves a lot of trial and error. The other thing that's
|
||||
important is to maximize the number of dots that have some ink.
|
||||
This will reduce the amount of speckling. More on this later.
|
||||
</P
|
||||
><P
|
||||
> The next question: how do we handle black when printing in
|
||||
color? Black ink is much darker than colored inks. It's
|
||||
possible to produce black by adding some mixture of cyan,
|
||||
magenta, and yellow—in principle. In practice, the black
|
||||
really isn't very black, and different inks and different papers
|
||||
will produce different color casts. However, by using CMY to
|
||||
produce gray, we can output a lot more dots! This makes for a
|
||||
much smoother image. What's more, one cyan, one magenta, and
|
||||
one yellow dot produce less darkness than one black dot, so
|
||||
we're outputting that many more dots. Better yet, with 6 or 7
|
||||
color printers, we have to output even more light ink dots. So
|
||||
Epson Stylus Photo printers can produce really smooth grays---if
|
||||
we do everything right. The right idea is to use CMY at lower
|
||||
black levels, and gradually mix in black as the overall amount
|
||||
of ink increases, so the black dots don't really become visible
|
||||
within the ink mass.
|
||||
</P
|
||||
><P
|
||||
> Variable dot sizes are handled by dividing the range between 0
|
||||
and 65536 into segments. Each segment can either represent a
|
||||
range in which all of one kind of ink (color and/or dot size) is
|
||||
used, with varying amounts of ink, or a transition region
|
||||
between inks, in which equal numbers of dots are printed but the
|
||||
amount of each ink will be adjusted throughout the range. Each
|
||||
range is represented by four numbers:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
><P
|
||||
> Bottom of the range.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Top of the range.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Value of the lighter ink.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
>Value of the darker ink.
|
||||
</P
|
||||
></LI
|
||||
></UL
|
||||
><P
|
||||
> In addition, the bit patterns and which type of ink are also
|
||||
represented, but they don't affect the actual algorithm.
|
||||
</P
|
||||
><P
|
||||
> As mentioned above, the basic algorithm is the same whether we
|
||||
use ordered dither or error diffusion. We perform the following
|
||||
steps on each color of each pixel:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><OL
|
||||
TYPE="1"
|
||||
><LI
|
||||
><P
|
||||
> Compute the value of the particular color we're printing.
|
||||
This isn't usually the pure CMY value; it's adjusted to
|
||||
improve saturation and to limit the use of black in light
|
||||
toned regions (to avoid speckling).
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Find the range containing this value.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Compute where this value lies within the range. We scale
|
||||
the endpoints between 0 and 65536 for this purpose. So for
|
||||
example, if the bottom of the range is 10,000 and the top of
|
||||
the range is 20,000, and the value is 12,500, we're 1/4 of
|
||||
the way between the bottom and the top of the range, so our
|
||||
scale point is 16384.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Compute the “virtual value”. The virtual value
|
||||
is the distance between the value of the lighter and the
|
||||
value of the darker ink. So if the value of the light ink
|
||||
is 32768 and the dark ink is 65536, we compute a virtual
|
||||
value scaled appropriately between these two values, which
|
||||
is 40960 in this case.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Using either error diffusion or ordered dither, the standard
|
||||
threshold is 1/2 of the value (20480 in this case). Using
|
||||
ordered dither, we want to compute a value between 0 and
|
||||
40960 that we will compare the input value against to decide
|
||||
whether to print. Using pure error diffusion, we would
|
||||
compare the accumulated error against 20480 to decide
|
||||
whether to print. In practice, we use the same matrix
|
||||
method to decide whether to print. The correct amount of
|
||||
ink will be printed this way, but we minimize the squiggly
|
||||
lines characteristic of error diffusion by dithering the
|
||||
threshold in this fashion. A future enhancement will allow
|
||||
us to control the amount of dithering applied to the
|
||||
threshold.
|
||||
</P
|
||||
></LI
|
||||
></OL
|
||||
><P
|
||||
> The matrices were generated by Thomas Tonino
|
||||
<CODE
|
||||
CLASS="email"
|
||||
><<A
|
||||
HREF="mailto:ttonino@bio.vu.nl"
|
||||
>ttonino@bio.vu.nl</A
|
||||
>></CODE
|
||||
> with an algorithm of his
|
||||
devising. The algorithm is designed to maximize the spacing
|
||||
between dots at any given density by searching the matrix for
|
||||
holes and placing a dot in the largest available hole. It
|
||||
requires careful selection of initial points to achieve good
|
||||
results, and is very time consuming. For best results, a
|
||||
different matrix must be used for modes with 2:1 aspect ratio
|
||||
(e.g. 1440×720) than for 1:1 (e. g. 720×720). It is
|
||||
essential with any of these matrices that every point be used.
|
||||
Skipping points generates low-frequency noise.
|
||||
</P
|
||||
><P
|
||||
> It's essential to use different matrices for deciding whether to
|
||||
print and for deciding what color (dark or light) to print.
|
||||
This should be obvious; the decision about whether to print at
|
||||
all should be as independent as possible from the decision about
|
||||
what color to print, because any bias will result in excess
|
||||
light or dark ink being printed, shifting the tonal balance. We
|
||||
actually use the same matrices, but we shift them vertically and
|
||||
horizontally. Assuming that the matrices are not
|
||||
self-correlated, this will yield good results.
|
||||
</P
|
||||
><P
|
||||
> The ranges are computed from a list of ink values (between 0 and
|
||||
1 for each possible combination of dot size and ink tone, where
|
||||
the value represents the darkness of the ink) and the desired
|
||||
maximum density of the ink. This is done in dither_set_ranges,
|
||||
and needs more documentation.
|
||||
</P
|
||||
><P
|
||||
> I stated earlier that I've tweaked the basic error diffusion
|
||||
algorithm. Here's what I've done to improve it:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
><P
|
||||
> We use a variable threshold to decide when to print, as
|
||||
discussed above. This does two things for us: it reduces
|
||||
the slightly squiggly diagonal lines that are the mark of
|
||||
error diffusion; and it allows us to lay down some ink even
|
||||
in very light areas near the edge of the image. The
|
||||
squiggly lines that error diffusion algorithms tend to
|
||||
generate are caused by the gradual accumulation of error.
|
||||
This error is partially added horizontally and partially
|
||||
vertically. The horizontal accumulation results in a dot
|
||||
eventually being printed. The vertical accumulation results
|
||||
in a dot getting laid down in roughly the same horizontal
|
||||
position in the next row. The diagonal squigglies result
|
||||
from the error being added to pixels one forward and one
|
||||
below the current pixel; these lines slope from the top
|
||||
right to the bottom left of the image.
|
||||
</P
|
||||
><P
|
||||
> Error diffusion also results in pale areas being completely
|
||||
white near the top left of the image (the origin of the
|
||||
printing coordinates). This is because enough error has to
|
||||
accumulate for anything at all to get printed. In very pale
|
||||
areas it takes quite a long time to build up anything
|
||||
printable at all; this results in the bare spots.
|
||||
</P
|
||||
><P
|
||||
> Randomizing the threshold somewhat breaks up the diagonals
|
||||
to some degree by randomizing the exact location that the
|
||||
accumulated output crosses the threshold. It reduces the
|
||||
false white areas by allowing some dots to be printed even
|
||||
when the accumulated output level is very low. It doesn't
|
||||
result in excess ink because the full output level is still
|
||||
subtracted and diffused.
|
||||
</P
|
||||
><P
|
||||
> Excessive randomization leads to blobs at high densities.
|
||||
Therefore, as the density increases, the degree of
|
||||
randomization decreases.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Alternating scan direction between rows (first row is
|
||||
scanned left to right, second is scanned right to left, and
|
||||
so on). This also helps break up white areas, and it also
|
||||
seems to break up squigglies a bit. Furthermore, it
|
||||
eliminates directional biases in the horizontal direction.
|
||||
This isn't necessary for ordered dither, but it doesn't hurt
|
||||
either.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Diffusing the error into more pixels. Instead of diffusing
|
||||
the entire error into (X+1, Y) and (X, Y+1), we diffuse it
|
||||
into (X+1, Y), (X+K, Y+1), (X, Y+1), (X-K, Y+1) where K
|
||||
depends upon the output level (it never exceeds about 10
|
||||
dots, and is greater at higher output levels). This really
|
||||
reduces squigglies and graininess. The amount of this
|
||||
spread can be controlled; for line art, it should be less
|
||||
than for photographs (of course, line art doesn't usually
|
||||
contain much light color, but the <SPAN
|
||||
CLASS="emphasis"
|
||||
><I
|
||||
CLASS="emphasis"
|
||||
>error</I
|
||||
></SPAN
|
||||
>
|
||||
value can be small in places!) In addition to requiring
|
||||
more computation, a wide ink spread results in patterning at
|
||||
high dot densities (note that the dot density can be high
|
||||
even in fairly pale regions if multiple dot sizes are in
|
||||
use).
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Don't lay down any colored ink if we're laying down black
|
||||
ink. There's no point; the colored ink won't show. We
|
||||
still pretend that we did for purposes of error diffusion
|
||||
(otherwise excessive error will build up, and will take a
|
||||
long time to clear, resulting in heavy bleeding of ink into
|
||||
surrounding areas, which is very ugly indeed), but we don't
|
||||
bother wasting the ink. How well this will do with variable
|
||||
dot size remains to be seen.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Oversampling. This is how to print 1440×720 with Epson
|
||||
Stylus printers. Printing full density at 1440×720 will
|
||||
result in excess ink being laid down. The trick is to print
|
||||
only every other dot. We still compute the error as though we
|
||||
printed every dot. It turns out that randomizing which dots
|
||||
are printed results in very speckled output. This can be
|
||||
taken too far; oversampling at 1440×1440 or
|
||||
1440×2880 virtual resolution results in other problems.
|
||||
However, at present 1440×1440 (which is more accurately
|
||||
called "1440×720 enhanced", as the Epson printers cannot
|
||||
print 1440 rows per inch) does quite well, although it's slow.
|
||||
</P
|
||||
></LI
|
||||
></UL
|
||||
><P
|
||||
> What about multiple output levels? For 6 and 7 color printers,
|
||||
simply using different threshold levels has a problem: the pale
|
||||
inks have trouble being seen when a lot of darker ink is being
|
||||
printed. So rather than just using the output level of the
|
||||
particular color to decide which ink to print, we look at the
|
||||
total density (sum of all output levels). If the density's high
|
||||
enough, we prefer to use the dark ink. Speckling is less
|
||||
visible when there's a lot of ink, anyway. I haven't yet
|
||||
figured out what to do for multiple levels of one color.
|
||||
</P
|
||||
><P
|
||||
> You'll note that I haven't quoted a single source on color or
|
||||
printing theory. I simply did all of this empirically.
|
||||
</P
|
||||
><P
|
||||
> There are various other tricks to reduce speckling. One that
|
||||
I've seen is to reduce the amount of ink printed in regions
|
||||
where one color (particularly cyan, which is perceived as the
|
||||
darkest) is very pale. This does reduce speckling all right,
|
||||
but it also results in strange tonal curves and weird (to my
|
||||
eye) colors.
|
||||
</P
|
||||
><P
|
||||
> Before any dither routine is used,
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>init_dither</CODE
|
||||
> must be called. This takes
|
||||
three arguments: the input width (number of pixels in the
|
||||
input), the output width (number of pixels in the output), and a
|
||||
<SPAN
|
||||
CLASS="type"
|
||||
>stp_vars_t</SPAN
|
||||
> structure containing the parameters for
|
||||
the print job.
|
||||
</P
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>init_dither</CODE
|
||||
> returns a pointer to an opaque
|
||||
object representing the dither. This object is passed as the first
|
||||
argument to all of the dither-related routines.
|
||||
</P
|
||||
><P
|
||||
> After a page is fully dithered, <CODE
|
||||
CLASS="function"
|
||||
>free_dither</CODE
|
||||
>
|
||||
must be called to free the dither object and perform any
|
||||
cleanup. In the future, this may do more (such as flush
|
||||
output). This arrangement permits using these routines with
|
||||
programs that create multiple output pages, such as GhostScript.
|
||||
</P
|
||||
><P
|
||||
> The dithering routines themselves have a number of control knobs
|
||||
that control internal aspects of the dithering process. These
|
||||
knobs are accessible via a number of functions that can be
|
||||
called after <CODE
|
||||
CLASS="function"
|
||||
>init_dither</CODE
|
||||
>.
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_density</CODE
|
||||
> takes a double
|
||||
between 0 and 1 representing the desired ink density for
|
||||
printing solid colors. This is used in a number of places
|
||||
in the dithering routine to make decisions.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_black_density</CODE
|
||||
> takes a double
|
||||
between 0 and 1 representing the desired ink density for
|
||||
printing black ink in color printing. This is used to
|
||||
balance black against color ink. By default, this is equal
|
||||
to the density set by
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>dither_set_density</CODE
|
||||
>. By setting it
|
||||
higher, more black ink will be printed. For example, if the
|
||||
base density is .4 and the black density is .8, twice as
|
||||
much black ink will be printed as would otherwise be called
|
||||
for.
|
||||
</P
|
||||
><P
|
||||
> This is not used when printing in monochrome. When printing
|
||||
monochrome, the base density
|
||||
(<CODE
|
||||
CLASS="function"
|
||||
>dither_set_density</CODE
|
||||
>) should be adjusted
|
||||
appropriately.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_ink_budget</CODE
|
||||
> takes an unsigned
|
||||
number representing the most ink that may be deposited at a
|
||||
given point. This number is arbitrary; the limit is
|
||||
computed by summing the size of each ink dot, which is
|
||||
supplied as a parameter in
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>dither_set_X_ranges</CODE
|
||||
>. By default, there
|
||||
is no limit.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_black_lower</CODE
|
||||
> takes a double
|
||||
that should be between 0 and 1 that represents the lowest
|
||||
density level at which black ink will start to mix in with
|
||||
colored ink to generate grays. The lower this is, the less
|
||||
density is required to use black ink. Setting this too low
|
||||
will result in speckling from black dots, particularly on 6
|
||||
and 7 color printers. Setting this too high will make it
|
||||
hard to get satisfactory black or may result in sharp
|
||||
transition between blended colors and black. Default:
|
||||
0.0468.
|
||||
</P
|
||||
><P
|
||||
> It is important to note that since the density scale is
|
||||
never linear (and since this value is adjusted via other
|
||||
things happening during the dithering process) that this
|
||||
does not mean that 95% gray will use any black ink. At this
|
||||
setting, there will be no black ink used until about 50%
|
||||
gray.
|
||||
</P
|
||||
><P
|
||||
> This only applies to color mode.
|
||||
</P
|
||||
><P
|
||||
> This value should be set lower for printers capable of
|
||||
variable dot size, since more dots can be laid down close to
|
||||
each other.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_black_upper</CODE
|
||||
> takes a double
|
||||
that should be between 0 and 1 that represents the highest
|
||||
density level at which colored inks will be mixed to create
|
||||
gray. Setting this too low will result in speckly dark
|
||||
grays because there is not enough ink to fill all the holes,
|
||||
or sharp transition between blended colors and black if it
|
||||
is too close to the value of
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>dither_set_black_upper</CODE
|
||||
> Setting this too
|
||||
high will result in poor black and dark tone quality.
|
||||
Default: 0.5. This results in 10% and darker grays being
|
||||
printed with essentially all black.
|
||||
</P
|
||||
><P
|
||||
> This only applies to color mode.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_black_levels</CODE
|
||||
> takes three
|
||||
doubles that represent the amount of cyan, magenta, and
|
||||
yellow respectively that are blended to create gray. The
|
||||
defaults are 1.0 for each, which is probably too low for
|
||||
most printers. These values are adjusted to create a good
|
||||
gray balance. Setting these too low will result in pale
|
||||
light and midtone grays, with a sharp transition to darker
|
||||
tones as black mixes in. Setting them too high will result
|
||||
in overly dark grays and use of too much ink, possibly
|
||||
creating bleed-through.
|
||||
</P
|
||||
><P
|
||||
> This only applies to color mode.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_randomizers</CODE
|
||||
> takes four
|
||||
integer values representing the degree of randomness used
|
||||
for cyan, magenta, yellow, and black. This is used to allow
|
||||
some printing to take place in pale areas. Zero is the most
|
||||
random; greater than 8 or so gives very little randomness at
|
||||
all. Defaults are 0 for cyan, magenta, and yellow, and 4
|
||||
for black. Setting the value for black too low will result
|
||||
in black speckling in pale areas. Setting values too high
|
||||
will result in pale areas getting no ink at all.
|
||||
</P
|
||||
><P
|
||||
> This currently only applies to single dot size in color and
|
||||
black. It should be extended to operate in variable dot
|
||||
size mode, although actually applying it correctly will be
|
||||
tricky.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_ink_darkness</CODE
|
||||
> takes three
|
||||
doubles representing the contribution to perceived darkness
|
||||
of cyan, magenta, and yellow. This is used to help decide
|
||||
when to switch between light and dark inks in 6 and 7 color
|
||||
printers (with light cyan, light magenta, and possibly light
|
||||
yellow). Setting these too low will result in too much
|
||||
light ink being laid down, creating flat spots in the
|
||||
darkness curves and bleed-through. Setting them too high
|
||||
will result in dark ink being used in pale areas, creating
|
||||
speckle. The defaults are .4 for cyan, .3 for magenta, and
|
||||
.2 for yellow. Dark cyan will show against yellow much more
|
||||
than dark magenta will show against cyan, since the cyan
|
||||
appears much darker than the yellow.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_light_inks</CODE
|
||||
> takes three
|
||||
doubles between 0 and 1 representing the ratio in darkness
|
||||
between the light and dark versions of the inks. Setting
|
||||
these too low will result in too much dark ink being used in
|
||||
pale areas, creating speckling, while setting them too high
|
||||
will result in very smooth texture but too much use of light
|
||||
ink, resulting in flat spots in the density curves and ink
|
||||
bleed-through. There are no defaults. Any light ink
|
||||
specified as zero indicates that there is no light ink for
|
||||
that color.
|
||||
</P
|
||||
><P
|
||||
> This only applies to 6 and 7 color printers in single dot
|
||||
size color mode, and only to those inks which have light
|
||||
versions (usually cyan and magenta).
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_ink_spread</CODE
|
||||
> takes a small
|
||||
integer representing the amount of ink spread in the dither.
|
||||
Larger numbers mean less spread. Larger values are
|
||||
appropriate for line art and solid tones; they will yield
|
||||
sharper transitions but more dither artifacts. Smaller
|
||||
values are more appropriate for photos. They will reduce
|
||||
resolution and sharpness but reduce dither artifacts up to a
|
||||
point. A value of 16 or higher implies minimum ink spread
|
||||
at any resolution no matter what the overdensity. A value
|
||||
of 14 is typical for photos on single dot size, 6 color
|
||||
printers. For 4 color printers, subtract 1 (more spread;
|
||||
the dots are farther apart). For variable dot size
|
||||
printers, add 1 (more small dots are printed; less spread is
|
||||
desirable).
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_adaptive_divisor</CODE
|
||||
> takes a
|
||||
float representing the transition point between error
|
||||
diffusion and ordered dither if adaptive dithering is used.
|
||||
The float is a fraction of the printing density. For
|
||||
example, if you wish the transition to be at 1/4 of the
|
||||
maximum density (which works well on simple 4-color
|
||||
printers), you would pass .25 here. With six colors and/or
|
||||
with multiple dot sizes, the values should be set lower.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_transition</CODE
|
||||
> takes a float
|
||||
representing the exponent of the transition curve between
|
||||
light and dark inks/dot sizes. A value less than 1 (typical
|
||||
when using error diffusion) mixes in less dark ink/small
|
||||
dots at lower ends of the range, to reduce speckling. When
|
||||
using ordered dithering, this must be set to 1.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_X_ranges_simple</CODE
|
||||
>
|
||||
(<TT
|
||||
CLASS="literal"
|
||||
>X</TT
|
||||
> = <TT
|
||||
CLASS="literal"
|
||||
>c</TT
|
||||
>,
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>m</TT
|
||||
>, <TT
|
||||
CLASS="literal"
|
||||
>y</TT
|
||||
> or
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>k</TT
|
||||
>) describes the ink choices available
|
||||
for each color. This is useful in typical cases where a
|
||||
four color printer with variable dot sizes is in use. It is
|
||||
passed an array of doubles between (0, 1] representing the
|
||||
relative darkness of each dot size. The dot sizes are
|
||||
assigned bit patterns (and ink quantities, see
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>dither_set_ink_budget</CODE
|
||||
> above) from 1 to
|
||||
the number of levels. This also requires a density, which
|
||||
is the desired density for this color. This density need
|
||||
not equal the density specified in
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>dither_set_density</CODE
|
||||
>. Setting it lower
|
||||
will tend to print more dark ink (because the curves are
|
||||
calculated for this color assuming a lower density than is
|
||||
actually supplied).
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> <CODE
|
||||
CLASS="function"
|
||||
>dither_set_X_ranges</CODE
|
||||
>
|
||||
(<TT
|
||||
CLASS="literal"
|
||||
>X</TT
|
||||
> = <TT
|
||||
CLASS="literal"
|
||||
>c</TT
|
||||
>,
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>m</TT
|
||||
>, <TT
|
||||
CLASS="literal"
|
||||
>y</TT
|
||||
> or
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>k</TT
|
||||
>) describes in a more general way the
|
||||
ink choices available for each color. For each possible ink
|
||||
choice, a bit pattern, dot size, value (i. e. relative
|
||||
darkness), and whether the ink is the dark or light variant
|
||||
ink is specified.
|
||||
</P
|
||||
></LI
|
||||
></UL
|
||||
></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="x1734.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="gpl.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Weaving algorithms</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>GNU General Public License</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,424 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Adding a new printer</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
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=@encoding@"></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 Gutenprint</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/gutenprint.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 <TT
|
||||
CLASS="literal"
|
||||
><printer></TT
|
||||
>,
|
||||
<TT
|
||||
CLASS="literal"
|
||||
><color></TT
|
||||
> and
|
||||
<TT
|
||||
CLASS="literal"
|
||||
><model></TT
|
||||
>. The other optional parameters
|
||||
(<TT
|
||||
CLASS="literal"
|
||||
><gamma></TT
|
||||
> and
|
||||
<TT
|
||||
CLASS="literal"
|
||||
><density></TT
|
||||
> 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
|
||||
><TT
|
||||
CLASS="literal"
|
||||
><family></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This defines what driver module this printer uses. The
|
||||
attribute <TT
|
||||
CLASS="literal"
|
||||
>name</TT
|
||||
> is the name of the
|
||||
family driver to associate the printers with, for example
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>escp2</TT
|
||||
>, <TT
|
||||
CLASS="literal"
|
||||
>pcl</TT
|
||||
>,
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>canon</TT
|
||||
>, <TT
|
||||
CLASS="literal"
|
||||
>ps</TT
|
||||
> or
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>raw</TT
|
||||
>. This tag may only contain
|
||||
<TT
|
||||
CLASS="literal"
|
||||
><printer></TT
|
||||
> elements.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
><TT
|
||||
CLASS="literal"
|
||||
><printer></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This starts the definition of a printer. It must contain
|
||||
the attributes <TT
|
||||
CLASS="literal"
|
||||
>name</TT
|
||||
> and
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>driver</TT
|
||||
>. <TT
|
||||
CLASS="literal"
|
||||
>name</TT
|
||||
> should
|
||||
be is the full name of the printer, and must be human
|
||||
readable. <TT
|
||||
CLASS="literal"
|
||||
>driver</TT
|
||||
> should consist of
|
||||
alphanumerics and hyphens, and be fairly short.
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>name</TT
|
||||
> is what will appear in the
|
||||
user-visible listing of printers, and may be translated
|
||||
into the user's language, while <TT
|
||||
CLASS="literal"
|
||||
>driver</TT
|
||||
>
|
||||
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
|
||||
><TT
|
||||
CLASS="literal"
|
||||
><color></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This tag may not contain any content, but the
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>value</TT
|
||||
> attribute may be set to
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>true</TT
|
||||
> or <TT
|
||||
CLASS="literal"
|
||||
>false</TT
|
||||
>. This
|
||||
indicates that this printer is capable of color, or is not
|
||||
capable of color respectively.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
><TT
|
||||
CLASS="literal"
|
||||
><model></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> This defines a model number. This tag may not contain any
|
||||
content, but the <TT
|
||||
CLASS="literal"
|
||||
>value</TT
|
||||
> 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
|
||||
>
|
@ -1,179 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Copying, modification and redistribution</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Preface"
|
||||
HREF="f14.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Using libgutenprint"
|
||||
HREF="c48.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="f14.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c48.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="chapter"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN39"
|
||||
></A
|
||||
>Chapter 1. Copying, modification and redistribution</H1
|
||||
><P
|
||||
> Gutenprint is <SPAN
|
||||
CLASS="emphasis"
|
||||
><I
|
||||
CLASS="emphasis"
|
||||
>free</I
|
||||
></SPAN
|
||||
>; this means that everyone
|
||||
is free to use it and free to redistribute it on a free basis.
|
||||
Gutenprint is not in the public domain; it is copyrighted and
|
||||
there are restrictions on its distribution, but these restrictions
|
||||
are designed to permit everything that a good cooperating citizen
|
||||
would want to do. What is not allowed is to try to prevent others
|
||||
from further sharing any version of Gutenprint that they might get
|
||||
from you.
|
||||
</P
|
||||
><P
|
||||
> Specifically, we want to make sure that you have the right to give
|
||||
away copies of Gutenprint, that you receive source code or else
|
||||
can get it if you want it, that you can change Gutenprint or use
|
||||
pieces of it in new free programs, and that you know you can do
|
||||
these things.
|
||||
</P
|
||||
><P
|
||||
> To make sure that everyone has such rights, we have to forbid you
|
||||
to deprive anyone else of these rights. For example, if you
|
||||
distribute copies of Gutenprint, you must give the recipients all
|
||||
the rights that you have. You must make sure that they, too,
|
||||
receive or can get the source code, and you must tell them their
|
||||
rights.
|
||||
</P
|
||||
><P
|
||||
> Also, for our own protection, we must make certain that everyone
|
||||
finds out that there is no warranty for Gutenprint. If Gutenprint
|
||||
is modified by someone else and passed on, we want their
|
||||
recipients to know that what they have is not what we distributed,
|
||||
so that any problems introduced by others will no reflect on our
|
||||
reputation.
|
||||
</P
|
||||
><P
|
||||
> Gutenprint is licensed under the terms of the GNU General Public
|
||||
License (GPL), reproduced in <A
|
||||
HREF="gpl.html"
|
||||
>Appendix A</A
|
||||
>.
|
||||
</P
|
||||
></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="f14.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="c48.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Preface</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Using libgutenprint</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,252 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Using libgutenprint</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Copying, modification and redistribution"
|
||||
HREF="c39.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Linking with libgutenprint"
|
||||
HREF="x67.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c39.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x67.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="chapter"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN48"
|
||||
></A
|
||||
>Chapter 2. Using libgutenprint</H1
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="c48.html#AEN51"
|
||||
>Code prerequisites</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x67.html"
|
||||
>Linking with libgutenprint</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x79.html"
|
||||
>Integrating libgutenprint</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
><P
|
||||
> This chapter describes how to write programs that use
|
||||
libgutenprint.
|
||||
</P
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="AEN51"
|
||||
>Code prerequisites</A
|
||||
></H1
|
||||
><P
|
||||
> To use libgutenprint with a program, several steps must be taken:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
><P
|
||||
> Include the master libgutenprint header:
|
||||
<DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN57"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
><gimp-print/gimp-print.h></PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
>
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Call <CODE
|
||||
CLASS="function"
|
||||
>stp_init</CODE
|
||||
>.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Link with the libgutenprint library.
|
||||
</P
|
||||
></LI
|
||||
></UL
|
||||
><P
|
||||
> The following is a short example program. It does not do
|
||||
anything useful, but it does everything required to link with
|
||||
libgutenprint and call other functions from libgutenprint.
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN65"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
>#include <gimp-print/gimp-print.h>
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
stp_init();
|
||||
return 0;
|
||||
}
|
||||
</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></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="c39.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="x67.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Copying, modification and redistribution</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Linking with libgutenprint</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,12 +0,0 @@
|
||||
.NAVHEADER { display: none }
|
||||
.NAVFOOTER { display: none }
|
||||
.TOC { display: none }
|
||||
|
||||
.NAVTOC { margin-left: 15;
|
||||
display: none }
|
||||
|
||||
.NAVBTN { font-size: 10pt }
|
||||
|
||||
.TOCTITLE { font-size: 10pt;
|
||||
color: blue;
|
||||
text-decoration: underline; }
|
@ -1,226 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Preface</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Copying, modification and redistribution"
|
||||
HREF="c39.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="preface"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="book1.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c39.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="preface"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN14"
|
||||
></A
|
||||
>Preface</H1
|
||||
><P
|
||||
> Gutenprint is the print facility of the GNU Image Manipulation
|
||||
Program (GIMP). It is in addition a suite of drivers that may be
|
||||
used with common UNIX spooling systems using Ghostscript or CUPS.
|
||||
These drivers provide printing quality for Linux, MacOS X and UNIX
|
||||
on a par with proprietary vendor-supplied drivers in many cases,
|
||||
and can be used for many of the most demanding printing tasks,
|
||||
especially for high quality printing on modern inkjets, including
|
||||
“photographic quality” models which offer very high
|
||||
resolutions and several inks. The core of Gutenprint is a shared
|
||||
library (libgutenprint) which may be used by any program that
|
||||
wishes to produce high-quality printed output.
|
||||
</P
|
||||
><P
|
||||
> This manual documents the use of the
|
||||
<SPAN
|
||||
CLASS="application"
|
||||
>Gutenprint</SPAN
|
||||
> package, focusing mainly on
|
||||
the libgutenprint library that is the core of
|
||||
<SPAN
|
||||
CLASS="application"
|
||||
>Gutenprint</SPAN
|
||||
>. Parts of the manual which
|
||||
describe the use of libgutenprint are aimed primarily at
|
||||
programmers, and do assume that the reader is familiar with C
|
||||
programming, and using standard programming tools on GNU or UNIX
|
||||
systems.
|
||||
</P
|
||||
><P
|
||||
> For the end-user, there is a separate manual documenting
|
||||
programs that come with Gutenprint, including the
|
||||
<SPAN
|
||||
CLASS="application"
|
||||
>GIMP</SPAN
|
||||
> <B
|
||||
CLASS="command"
|
||||
>print</B
|
||||
> plugin,
|
||||
and the <SPAN
|
||||
CLASS="application"
|
||||
>CUPS</SPAN
|
||||
> and
|
||||
<SPAN
|
||||
CLASS="application"
|
||||
>Ghostscript</SPAN
|
||||
> drivers.
|
||||
</P
|
||||
><P
|
||||
> To learn how to use libgutenprint in your own programs is to look
|
||||
at the source of the <B
|
||||
CLASS="command"
|
||||
>testpattern</B
|
||||
>, located in
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>src/testpattern</TT
|
||||
>, as well as
|
||||
the source of the other programs that use libgutenprint, and
|
||||
libgutenprint itself. Most importantly, please consult the API
|
||||
reference and libgutenprint headers.
|
||||
</P
|
||||
><P
|
||||
> The manual is split into several parts for the programmer. It
|
||||
starts with a simple usage example of how to link a program with
|
||||
libgutenprint, then how to integrate this into package build
|
||||
scripts, using <B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
>,
|
||||
<B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> and <B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
>. The
|
||||
appendices cover the detail of the inner workings of some parts of
|
||||
libgutenprint.
|
||||
</P
|
||||
><P
|
||||
> The following sections detail the dither and weave algorithms used
|
||||
in libgutenprint, the ESC/P2 printer control language used in Epson
|
||||
printers and how to add support for a new printer to libgutenprint.
|
||||
</P
|
||||
><P
|
||||
> <P
|
||||
CLASS="literallayout"
|
||||
>We hope you enjoy using Gutenprint!<br>
|
||||
—The Gutenprint project<br>
|
||||
</P
|
||||
>
|
||||
</P
|
||||
></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="book1.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="c39.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>The Developer's Guide to Gutenprint</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Copying, modification and redistribution</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,588 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="GNU General Public License"
|
||||
HREF="gpl.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="GNU General Public License"
|
||||
HREF="gpl.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="sect1"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="gpl.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
>Appendix A. GNU General Public License</TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="gpl-terms"
|
||||
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A
|
||||
></H1
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect0"
|
||||
>Section 0</A
|
||||
></H2
|
||||
><P
|
||||
> This License applies to any program or other work which
|
||||
contains a notice placed by the copyright holder saying it may
|
||||
be distributed under the terms of this General Public
|
||||
License. The "Program", below, refers to any such program or
|
||||
work, and a <SPAN
|
||||
CLASS="QUOTE"
|
||||
>"work based on the Program"</SPAN
|
||||
> means
|
||||
either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of
|
||||
it, either verbatim or with modifications and/or translated
|
||||
into another language. (Hereinafter, translation is included
|
||||
without limitation in the term <SPAN
|
||||
CLASS="QUOTE"
|
||||
>"modification"</SPAN
|
||||
>.)
|
||||
Each licensee is addressed as <SPAN
|
||||
CLASS="QUOTE"
|
||||
>"you"</SPAN
|
||||
>.
|
||||
</P
|
||||
><P
|
||||
> Activities other than copying, distribution and modification
|
||||
are not covered by this License; they are outside its
|
||||
scope. The act of running the Program is not restricted, and
|
||||
the output from the Program is covered only if its contents
|
||||
constitute a work based on the Program (independent of having
|
||||
been made by running the Program). Whether that is true
|
||||
depends on what the Program does.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect1"
|
||||
>Section 1</A
|
||||
></H2
|
||||
><P
|
||||
> You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep
|
||||
intact all the notices that refer to this License and to the
|
||||
absence of any warranty; and give any other recipients of the
|
||||
Program a copy of this License along with the Program.
|
||||
</P
|
||||
><P
|
||||
> You may charge a fee for the physical act of transferring a
|
||||
copy, and you may at your option offer warranty protection in
|
||||
exchange for a fee.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect2"
|
||||
>Section 2</A
|
||||
></H2
|
||||
><P
|
||||
> You may modify your copy or copies of the Program or any
|
||||
portion of it, thus forming a work based on the Program, and
|
||||
copy and distribute such modifications or work under the terms
|
||||
of <A
|
||||
HREF="gpl-terms.html#gpl-sect1"
|
||||
>Section 1</A
|
||||
> above, provided
|
||||
that you also meet all of these conditions:
|
||||
|
||||
<P
|
||||
></P
|
||||
><OL
|
||||
TYPE="a"
|
||||
><LI
|
||||
><P
|
||||
> You must cause the modified files to carry prominent
|
||||
notices stating that you changed the files and the date
|
||||
of any change.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> You must cause any work that you distribute or publish,
|
||||
that in whole or in part contains or is derived from the
|
||||
Program or any part thereof, to be licensed as a whole
|
||||
at no charge to all third parties under the terms of
|
||||
this License.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> If the modified program normally reads commands
|
||||
interactively when run, you must cause it, when started
|
||||
running for such interactive use in the most ordinary
|
||||
way, to print or display an announcement including an
|
||||
appropriate copyright notice and a notice that there is
|
||||
no warranty (or else, saying that you provide a
|
||||
warranty) and that users may redistribute the program
|
||||
under these conditions, and telling the user how to view
|
||||
a copy of this License.
|
||||
|
||||
<DIV
|
||||
CLASS="note"
|
||||
><BLOCKQUOTE
|
||||
CLASS="note"
|
||||
><P
|
||||
><B
|
||||
>Exception:: </B
|
||||
>
|
||||
If the Program itself is interactive but does not
|
||||
normally print such an announcement, your work based
|
||||
on the Program is not required to print an
|
||||
announcement.)
|
||||
</P
|
||||
></BLOCKQUOTE
|
||||
></DIV
|
||||
>
|
||||
|
||||
</P
|
||||
></LI
|
||||
></OL
|
||||
>
|
||||
</P
|
||||
><P
|
||||
> These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the
|
||||
Program, and can be reasonably considered independent and
|
||||
separate works in themselves, then this License, and its
|
||||
terms, do not apply to those sections when you distribute them
|
||||
as separate works. But when you distribute the same sections
|
||||
as part of a whole which is a work based on the Program, the
|
||||
distribution of the whole must be on the terms of this
|
||||
License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of
|
||||
who wrote it.
|
||||
</P
|
||||
><P
|
||||
> Thus, it is not the intent of this section to claim rights or
|
||||
contest your rights to work written entirely by you; rather,
|
||||
the intent is to exercise the right to control the
|
||||
distribution of derivative or collective works based on the
|
||||
Program.
|
||||
</P
|
||||
><P
|
||||
> In addition, mere aggregation of another work not based on the
|
||||
Program with the Program (or with a work based on the Program)
|
||||
on a volume of a storage or distribution medium does not bring
|
||||
the other work under the scope of this License.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect3"
|
||||
>Section 3</A
|
||||
></H2
|
||||
><P
|
||||
> You may copy and distribute the Program (or a work based on
|
||||
it, under <A
|
||||
HREF="gpl-terms.html#gpl-sect2"
|
||||
>Section 2</A
|
||||
> in object
|
||||
code or executable form under the terms of <A
|
||||
HREF="gpl-terms.html#gpl-sect1"
|
||||
>Sections 1</A
|
||||
> and <A
|
||||
HREF="gpl-terms.html#gpl-sect2"
|
||||
>2</A
|
||||
> above provided that you also do
|
||||
one of the following:
|
||||
|
||||
<P
|
||||
></P
|
||||
><OL
|
||||
TYPE="a"
|
||||
><LI
|
||||
><P
|
||||
> Accompany it with the complete corresponding
|
||||
machine-readable source code, which must be distributed
|
||||
under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Accompany it with a written offer, valid for at least
|
||||
three years, to give any third party, for a charge no
|
||||
more than your cost of physically performing source
|
||||
distribution, a complete machine-readable copy of the
|
||||
corresponding source code, to be distributed under the
|
||||
terms of Sections 1 and 2 above on a medium customarily
|
||||
used for software interchange; or,
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Accompany it with the information you received as to the
|
||||
offer to distribute corresponding source code. (This
|
||||
alternative is allowed only for noncommercial
|
||||
distribution and only if you received the program in
|
||||
object code or executable form with such an offer, in
|
||||
accord with Subsection b above.)
|
||||
</P
|
||||
></LI
|
||||
></OL
|
||||
>
|
||||
</P
|
||||
><P
|
||||
> The source code for a work means the preferred form of the
|
||||
work for making modifications to it. For an executable work,
|
||||
complete source code means all the source code for all modules
|
||||
it contains, plus any associated interface definition files,
|
||||
plus the scripts used to control compilation and installation
|
||||
of the executable. However, as a special exception, the source
|
||||
code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating
|
||||
system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
</P
|
||||
><P
|
||||
> If distribution of executable or object code is made by
|
||||
offering access to copy from a designated place, then offering
|
||||
equivalent access to copy the source code from the same place
|
||||
counts as distribution of the source code, even though third
|
||||
parties are not compelled to copy the source along with the
|
||||
object code.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect4"
|
||||
>Section 4</A
|
||||
></H2
|
||||
><P
|
||||
> You may not copy, modify, sublicense, or distribute the
|
||||
Program except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense or distribute
|
||||
the Program is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received
|
||||
copies, or rights, from you under this License will not have
|
||||
their licenses terminated so long as such parties remain in
|
||||
full compliance.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect5"
|
||||
>Section 5</A
|
||||
></H2
|
||||
><P
|
||||
> You are not required to accept this License, since you have
|
||||
not signed it. However, nothing else grants you permission to
|
||||
modify or distribute the Program or its derivative works.
|
||||
These actions are prohibited by law if you do not accept this
|
||||
License. Therefore, by modifying or distributing the Program
|
||||
(or any work based on the Program), you indicate your
|
||||
acceptance of this License to do so, and all its terms and
|
||||
conditions for copying, distributing or modifying the Program
|
||||
or works based on it.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect6"
|
||||
>Section 6</A
|
||||
></H2
|
||||
><P
|
||||
> Each time you redistribute the Program (or any work based on
|
||||
the Program), the recipient automatically receives a license
|
||||
from the original licensor to copy, distribute or modify the
|
||||
Program subject to these terms and conditions. You may not
|
||||
impose any further restrictions on the recipients' exercise of
|
||||
the rights granted herein. You are not responsible for
|
||||
enforcing compliance by third parties to this License.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect7"
|
||||
>Section 7</A
|
||||
></H2
|
||||
><P
|
||||
> If, as a consequence of a court judgment or allegation of
|
||||
patent infringement or for any other reason (not limited to
|
||||
patent issues), conditions are imposed on you (whether by
|
||||
court order, agreement or otherwise) that contradict the
|
||||
conditions of this License, they do not excuse you from the
|
||||
conditions of this License. If you cannot distribute so as to
|
||||
satisfy simultaneously your obligations under this License and
|
||||
any other pertinent obligations, then as a consequence you may
|
||||
not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the
|
||||
Program by all those who receive copies directly or indirectly
|
||||
through you, then the only way you could satisfy both it and
|
||||
this License would be to refrain entirely from distribution of
|
||||
the Program.
|
||||
</P
|
||||
><P
|
||||
> If any portion of this section is held invalid or
|
||||
unenforceable under any particular circumstance, the balance
|
||||
of the section is intended to apply and the section as a whole
|
||||
is intended to apply in other circumstances.
|
||||
</P
|
||||
><P
|
||||
> It is not the purpose of this section to induce you to
|
||||
infringe any patents or other property right claims or to
|
||||
contest validity of any such claims; this section has the sole
|
||||
purpose of protecting the integrity of the free software
|
||||
distribution system, which is implemented by public license
|
||||
practices. Many people have made generous contributions to the
|
||||
wide range of software distributed through that system in
|
||||
reliance on consistent application of that system; it is up to
|
||||
the author/donor to decide if he or she is willing to
|
||||
distribute software through any other system and a licensee
|
||||
cannot impose that choice.
|
||||
</P
|
||||
><P
|
||||
> This section is intended to make thoroughly clear what is
|
||||
believed to be a consequence of the rest of this License.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect8"
|
||||
>Section 8</A
|
||||
></H2
|
||||
><P
|
||||
> If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted
|
||||
interfaces, the original copyright holder who places the
|
||||
Program under this License may add an explicit geographical
|
||||
distribution limitation excluding those countries, so that
|
||||
distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the
|
||||
limitation as if written in the body of this License.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect9"
|
||||
>Section 9</A
|
||||
></H2
|
||||
><P
|
||||
> The Free Software Foundation may publish revised and/or new
|
||||
versions of the General Public License from time to time. Such
|
||||
new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
</P
|
||||
><P
|
||||
> Each version is given a distinguishing version number. If the
|
||||
Program specifies a version number of this License which
|
||||
applies to it and "any later version", you have the option of
|
||||
following the terms and conditions either of that version or
|
||||
of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number
|
||||
of this License, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect10"
|
||||
>Section 10</A
|
||||
></H2
|
||||
><P
|
||||
> If you wish to incorporate parts of the Program into other
|
||||
free programs whose distribution conditions are different,
|
||||
write to the author to ask for permission. For software which
|
||||
is copyrighted by the Free Software Foundation, write to the
|
||||
Free Software Foundation; we sometimes make exceptions for
|
||||
this. Our decision will be guided by the two goals of
|
||||
preserving the free status of all derivatives of our free
|
||||
software and of promoting the sharing and reuse of software
|
||||
generally.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect11"
|
||||
>NO WARRANTY</A
|
||||
></H2
|
||||
><FONT
|
||||
COLOR="RED"
|
||||
>Section 11</FONT
|
||||
><P
|
||||
> BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
|
||||
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS
|
||||
IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="gpl-sect12"
|
||||
>Section 12</A
|
||||
></H2
|
||||
><P
|
||||
> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
||||
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
||||
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||||
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
|
||||
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
|
||||
SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
|
||||
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
</P
|
||||
></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="gpl.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"
|
||||
> </TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>GNU General Public License</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="gpl.html"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,236 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>GNU General Public License</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Dithering"
|
||||
HREF="c1968.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION"
|
||||
HREF="gpl-terms.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="appendix"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c1968.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="gpl-terms.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="appendix"
|
||||
><H1
|
||||
><A
|
||||
NAME="gpl"
|
||||
></A
|
||||
>Appendix A. GNU General Public License</H1
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl.html#gpl-preamble"
|
||||
>Preamble</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="gpl-terms.html"
|
||||
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="gpl-preamble"
|
||||
>Preamble</A
|
||||
></H1
|
||||
><P
|
||||
> The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General
|
||||
Public License is intended to guarantee your freedom to share
|
||||
and change free software - to make sure the software is free for
|
||||
all its users. This General Public License applies to most of
|
||||
the Free Software Foundation's software and to any other program
|
||||
whose authors commit to using it. (Some other Free Software
|
||||
Foundation software is covered by the GNU Library General Public
|
||||
License instead.) You can apply it to your programs, too.
|
||||
</P
|
||||
><P
|
||||
> When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure
|
||||
that you have the freedom to distribute copies of free software
|
||||
(and charge for this service if you wish), that you receive
|
||||
source code or can get it if you want it, that you can change
|
||||
the software or use pieces of it in new free programs; and that
|
||||
you know you can do these things.
|
||||
</P
|
||||
><P
|
||||
> To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the
|
||||
rights. These restrictions translate to certain responsibilities
|
||||
for you if you distribute copies of the software, or if you
|
||||
modify it.
|
||||
</P
|
||||
><P
|
||||
> For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights
|
||||
that you have. You must make sure that they, too, receive or can
|
||||
get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
</P
|
||||
><P
|
||||
> We protect your rights with two steps:
|
||||
|
||||
<P
|
||||
></P
|
||||
><OL
|
||||
TYPE="1"
|
||||
><LI
|
||||
><P
|
||||
> copyright the software, and
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> offer you this license which gives you legal permission to
|
||||
copy, distribute and/or modify the software.
|
||||
</P
|
||||
></LI
|
||||
></OL
|
||||
>
|
||||
</P
|
||||
><P
|
||||
> Also, for each author's protection and ours, we want to make
|
||||
certain that everyone understands that there is no warranty for
|
||||
this free software. If the software is modified by someone else
|
||||
and passed on, we want its recipients to know that what they
|
||||
have is not the original, so that any problems introduced by
|
||||
others will not reflect on the original authors' reputations.
|
||||
</P
|
||||
><P
|
||||
> Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a
|
||||
free program will individually obtain patent licenses, in effect
|
||||
making the program proprietary. To prevent this, we have made it
|
||||
clear that any patent must be licensed for everyone's free use
|
||||
or not licensed at all.
|
||||
</P
|
||||
><P
|
||||
> The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
</P
|
||||
></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="c1968.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="gpl-terms.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Dithering</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,97 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Preface"
|
||||
HREF="f14.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="legalnotice"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN10"
|
||||
></A
|
||||
><P
|
||||
> This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
</P
|
||||
><P
|
||||
> This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
</P
|
||||
><P
|
||||
> You should have received a copy of the GNU General Public
|
||||
License along with this program; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA.
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
></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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="book1.html"
|
||||
ACCESSKEY="H"
|
||||
>Home</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 995 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 964 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 944 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 843 B |
Before Width: | Height: | Size: 846 B |
Before Width: | Height: | Size: 922 B |
Before Width: | Height: | Size: 1.0 KiB |
@ -1,372 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Appropriate Remote Commands</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="ESC/P2"
|
||||
HREF="c464.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Remote Mode Commands"
|
||||
HREF="x955.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Weaving for inkjet printers"
|
||||
HREF="c1717.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="sect1"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x955.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
>Chapter 5. ESC/P2</TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c1717.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="AEN1669"
|
||||
>Appropriate Remote Commands</A
|
||||
></H1
|
||||
><P
|
||||
> All of the remote commands described above are wrapped up with
|
||||
the usual boilerplate. The files always start with
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>00 00 00</TT
|
||||
> and the “magic”
|
||||
command described above, then two <TT
|
||||
CLASS="literal"
|
||||
>ESC @</TT
|
||||
>s to
|
||||
reset the printer. The remote command sequences come next; if
|
||||
they print anything that is usually followed by a
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>FF</TT
|
||||
> (<TT
|
||||
CLASS="literal"
|
||||
>0C</TT
|
||||
> hex) character to
|
||||
feed the page, then the file ends with another two
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>ESC @</TT
|
||||
>s to get back to the ground state.
|
||||
</P
|
||||
><P
|
||||
> An alignment sequence goes like this:
|
||||
</P
|
||||
><P
|
||||
></P
|
||||
><OL
|
||||
TYPE="1"
|
||||
><LI
|
||||
><P
|
||||
> Host uses <TT
|
||||
CLASS="literal"
|
||||
>DT</TT
|
||||
> to print an alignment
|
||||
sheet.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> User eyeballs the sheet to see which is the best aligned
|
||||
pattern.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> Host sends a <TT
|
||||
CLASS="literal"
|
||||
>DA</TT
|
||||
> command indicating
|
||||
which pattern the user chose.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> If the user said “realign”, meaning he isn't
|
||||
done yet, go to step 1.
|
||||
</P
|
||||
></LI
|
||||
><LI
|
||||
><P
|
||||
> We are done: host sends a <TT
|
||||
CLASS="literal"
|
||||
>SV</TT
|
||||
> command
|
||||
and exits.
|
||||
</P
|
||||
></LI
|
||||
></OL
|
||||
><P
|
||||
> The sequence used (by the STC 3000, at least) to print from
|
||||
the roll feed is (with byte count omitted):
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN1693"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
>PM 00 00
|
||||
SN 00 00 00
|
||||
EX 00 00 00 00 05 01
|
||||
ST 00 01
|
||||
SM 00 02</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
><P
|
||||
> The sequence used by the STP 870 to print on plain paper is
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN1696"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
>PM 00 00
|
||||
IR 00 03
|
||||
SN 00 00 01
|
||||
SN 00 01 00
|
||||
SN 00 02 01
|
||||
EX 00 00 00 00 05 00
|
||||
FP 00 00 00</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
><P
|
||||
> and the job finishes with
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN1699"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
>IR 00 02
|
||||
LD</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
><P
|
||||
> For different paper type settings on the STP 870, the
|
||||
arguments to <TT
|
||||
CLASS="literal"
|
||||
>SN</TT
|
||||
> vary. The arguments to the
|
||||
first and third <TT
|
||||
CLASS="literal"
|
||||
>SN</TT
|
||||
> commands are as outlined
|
||||
in the description of the <TT
|
||||
CLASS="literal"
|
||||
>SN</TT
|
||||
> command above;
|
||||
the arguments to the second (“platen gap”) are
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>00 01 01</TT
|
||||
> for thick papers (“matte
|
||||
paper—heavyweight”, “photo paper” and
|
||||
“premium glossy photo paper”) and <TT
|
||||
CLASS="literal"
|
||||
>00 01
|
||||
00</TT
|
||||
> for all others.
|
||||
</P
|
||||
><P
|
||||
> For roll-mode printing, the STP 870's sequence changes as
|
||||
follows. <TT
|
||||
CLASS="literal"
|
||||
>IR</TT
|
||||
>'s arguments become <TT
|
||||
CLASS="literal"
|
||||
>00
|
||||
01</TT
|
||||
> in the header, and <TT
|
||||
CLASS="literal"
|
||||
>00 00</TT
|
||||
> after
|
||||
the job, and <TT
|
||||
CLASS="literal"
|
||||
>EX</TT
|
||||
>'s last argument changes
|
||||
from <CODE
|
||||
CLASS="constant"
|
||||
>00</CODE
|
||||
> to <CODE
|
||||
CLASS="constant"
|
||||
>01</CODE
|
||||
>.
|
||||
</P
|
||||
><P
|
||||
> For zero-margin printing on the STP 870, the arguments to
|
||||
<TT
|
||||
CLASS="literal"
|
||||
>FP</TT
|
||||
> become <TT
|
||||
CLASS="literal"
|
||||
>00 0xb0 0xff</TT
|
||||
>.
|
||||
This moves the origin about 5.5mm to the left, to a point one
|
||||
tenth of an inch to the left of the left-hand edge of the
|
||||
paper, allowing printing right up to (and beyond) the edge of
|
||||
the paper. Some printers (at least the STP 870) include white
|
||||
absorbent pads at the left margin position and other positions
|
||||
(89mm and 100mm on the STP 870) to soak up ink which misses
|
||||
the edge of the paper. Printing off the edge of paper of a
|
||||
width not aligned with a pad could result in making a mess of
|
||||
the inside of the printer and ink getting on the reverse of
|
||||
the paper.
|
||||
</P
|
||||
></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="x955.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="c1717.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Remote Mode Commands</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="c464.html"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Weaving for inkjet printers</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,188 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Linking with libgutenprint</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="Using libgutenprint"
|
||||
HREF="c48.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Using libgutenprint"
|
||||
HREF="c48.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Integrating libgutenprint"
|
||||
HREF="x79.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="sect1"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c48.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
>Chapter 2. Using libgutenprint</TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x79.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="AEN67"
|
||||
>Linking with libgutenprint</A
|
||||
></H1
|
||||
><P
|
||||
> To link a program with libgutenprint, the option
|
||||
<CODE
|
||||
CLASS="option"
|
||||
>-lgutenprint</CODE
|
||||
> needs to be passed to the compiler
|
||||
when linking. For example, to compile and link
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>stpimage.c</TT
|
||||
> the following commands would be
|
||||
used:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
><SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>gcc -c stpimage.c</KBD
|
||||
>
|
||||
<SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>gcc -o stpimage -lgutenprint stpimage.o</KBD
|
||||
></PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> The compiler and linker flags needed may vary depending on the
|
||||
options Gutenprint was configured with when it was built. The
|
||||
<B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
> script will give the correct
|
||||
parameters for the local installation.
|
||||
</P
|
||||
></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="c48.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="x79.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Using libgutenprint</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="c48.html"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Integrating libgutenprint</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,669 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Integrating libgutenprint</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
|
||||
REL="HOME"
|
||||
TITLE="The Developer's Guide to Gutenprint"
|
||||
HREF="book1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="Using libgutenprint"
|
||||
HREF="c48.html"><LINK
|
||||
REL="PREVIOUS"
|
||||
TITLE="Linking with libgutenprint"
|
||||
HREF="x67.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Reporting Bugs"
|
||||
HREF="c194.html"><META
|
||||
http-equiv="Content-Type"
|
||||
content="text/html; charset=@encoding@"></HEAD
|
||||
><BODY
|
||||
CLASS="sect1"
|
||||
><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 Gutenprint</TH
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="left"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x67.html"
|
||||
ACCESSKEY="P"
|
||||
>Prev</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
>Chapter 2. Using libgutenprint</TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="c194.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="sect1"
|
||||
><H1
|
||||
CLASS="sect1"
|
||||
><A
|
||||
NAME="AEN79"
|
||||
>Integrating libgutenprint</A
|
||||
></H1
|
||||
><P
|
||||
> This section describes how to integrate the compiling and
|
||||
linking of programs using libgutenprint with build
|
||||
scripts. Commonly used systems include <B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
>,
|
||||
but often <TT
|
||||
CLASS="filename"
|
||||
>Makefile</TT
|
||||
> files are generated by
|
||||
using tools such as <B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> and
|
||||
<B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
>.
|
||||
</P
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="AEN86"
|
||||
><B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
></A
|
||||
></H2
|
||||
><P
|
||||
> Depending on the nature of the computer system Gutenprint was
|
||||
installed on, as well as the options passed to
|
||||
<B
|
||||
CLASS="command"
|
||||
>configure</B
|
||||
> when configuring the package when
|
||||
it was built, the <CODE
|
||||
CLASS="varname"
|
||||
>CFLAGS</CODE
|
||||
> and
|
||||
<CODE
|
||||
CLASS="varname"
|
||||
>LIBS</CODE
|
||||
> parameters needed to compile and link
|
||||
programs with libgutenprint may vary. To make it simple to
|
||||
determine what these are on any given system, a
|
||||
<B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
> datafile was created when
|
||||
Gutenprint was built. <B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
> will
|
||||
output the correct parameters for the setup on your system.
|
||||
See the
|
||||
<SPAN
|
||||
CLASS="citerefentry"
|
||||
><SPAN
|
||||
CLASS="refentrytitle"
|
||||
>pkg-config(1)</SPAN
|
||||
></SPAN
|
||||
> manual page for a compete synopsis.
|
||||
</P
|
||||
><P
|
||||
> The correct <CODE
|
||||
CLASS="varname"
|
||||
>CFLAGS</CODE
|
||||
> to use can be obtained
|
||||
with the <CODE
|
||||
CLASS="option"
|
||||
>--cflags</CODE
|
||||
> option:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
><SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>pkg-config --cflags gutenprint</KBD
|
||||
>
|
||||
-I/usr/local/include</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> The correct <CODE
|
||||
CLASS="varname"
|
||||
>LIBS</CODE
|
||||
> to use can the obtained
|
||||
with the <CODE
|
||||
CLASS="option"
|
||||
>--libs</CODE
|
||||
> option:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
><SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>pkg-config --libs gutenprint</KBD
|
||||
>
|
||||
-L/usr/local/lib -lgutenprint -lm -ldl</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> Lastly, the installed version of Gutenprint can be obtained with the
|
||||
<CODE
|
||||
CLASS="varname"
|
||||
>--version</CODE
|
||||
> option:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
><SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>pkg-config --modversion gutenprint</KBD
|
||||
>
|
||||
4.3.23</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> The command can be used from the shell by enclosing it in
|
||||
backquotes ‘`’:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="screen"
|
||||
><SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>gcc `pkg-config --cflags gutenprint` -c stpimage.c</KBD
|
||||
>
|
||||
<SAMP
|
||||
CLASS="prompt"
|
||||
>$</SAMP
|
||||
> <KBD
|
||||
CLASS="userinput"
|
||||
>gcc `pkg-config --libs gutenprint` -o
|
||||
stpimage stpimage.o</KBD
|
||||
></PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> However, this is not the way it it typically used. Normally
|
||||
it is used in a <TT
|
||||
CLASS="filename"
|
||||
>Makefile</TT
|
||||
> or by an m4
|
||||
macro in a <B
|
||||
CLASS="command"
|
||||
>configure</B
|
||||
> script.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="AEN123"
|
||||
><B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
></A
|
||||
></H2
|
||||
><P
|
||||
> If you use <B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
> with your own
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>Makefile</TT
|
||||
> files, then you are on your
|
||||
own. This manual offers no assistance with doing this. Only
|
||||
the following suggestion is offered, for use with GNU
|
||||
<B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
>:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
>GUTENPRINT_VERSION = $(shell pkg-config --version gutenprint)
|
||||
GUTENPRINT_CFLAGS = $(shell pkg-config --cflags gutenprint)
|
||||
GUTENPRINT_LIBS = $(shell pkg-config --libs gutenprint)</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> How you choose to use these variables is entirely up to
|
||||
you. See the GNU <B
|
||||
CLASS="command"
|
||||
>make</B
|
||||
> manual for more
|
||||
information.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="AEN133"
|
||||
><B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
></A
|
||||
></H2
|
||||
><P
|
||||
> The <B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> program produces a Bourne
|
||||
shell script called <TT
|
||||
CLASS="filename"
|
||||
>configure</TT
|
||||
> from a
|
||||
template file called <TT
|
||||
CLASS="filename"
|
||||
>configure.ac</TT
|
||||
>.
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>configure.ac</TT
|
||||
> contains both Bourne shell
|
||||
script, and m4 macros. <B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> expands
|
||||
the m4 macros into ‘real’ shell script. The
|
||||
resulting <B
|
||||
CLASS="command"
|
||||
>configure</B
|
||||
> script performs various
|
||||
checks for installed programs, compiler characteristics and
|
||||
other system information such as available headers and
|
||||
libraries. See the GNU <B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> manual for
|
||||
more information.
|
||||
</P
|
||||
><P
|
||||
> <B
|
||||
CLASS="command"
|
||||
>pkg-config</B
|
||||
> provides an m4 macro,
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>PKG_CHECK_MODULES</CODE
|
||||
>, suitable for use in a
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>configure.ac</TT
|
||||
> script. It defines the
|
||||
environment variables required for building libgutenprint-based
|
||||
programs. For example, to set GUTENPRINT_CFLAGS and
|
||||
GUTENPRINT_LIBS:
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN148"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
>PKG_CHECK_MODULES(GUTENPRINT, gutenprint)</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="sect2"
|
||||
><H2
|
||||
CLASS="sect2"
|
||||
><A
|
||||
NAME="AEN150"
|
||||
><B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
></A
|
||||
></H2
|
||||
><P
|
||||
> The <B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
> program can be used to
|
||||
generate <TT
|
||||
CLASS="filename"
|
||||
>Makefile.in</TT
|
||||
> files suitable for
|
||||
use with a <TT
|
||||
CLASS="filename"
|
||||
>configure</TT
|
||||
> script generated by
|
||||
<B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
>. As <B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
>
|
||||
<SPAN
|
||||
CLASS="emphasis"
|
||||
><I
|
||||
CLASS="emphasis"
|
||||
>requires</I
|
||||
></SPAN
|
||||
> <B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
>,
|
||||
this section will assume the use of a
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>configure.ac</TT
|
||||
> script which uses the
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>PKG_CHECK_MODULES</CODE
|
||||
> macro described above
|
||||
(there is little point in <SPAN
|
||||
CLASS="emphasis"
|
||||
><I
|
||||
CLASS="emphasis"
|
||||
>not</I
|
||||
></SPAN
|
||||
> using it!).
|
||||
</P
|
||||
><P
|
||||
> It is highly recommended that you use GNU
|
||||
<B
|
||||
CLASS="command"
|
||||
>autoconf</B
|
||||
> and
|
||||
<B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
>. They will allow you to make your
|
||||
software build on most platforms with most compilers.
|
||||
<B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
> makes writing complex
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>Makefile</TT
|
||||
>'s very easy, by expressing how
|
||||
to build your packages in terms of what files are required to
|
||||
build a project and the installation locations of the files.
|
||||
It imposes a few limitations over using plain
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>Makefile</TT
|
||||
>'s, such as in the use of
|
||||
conditionals, but these problems are vastly outweighed by the
|
||||
benefits it brings. It also creates many extra targets in the
|
||||
generated <TT
|
||||
CLASS="filename"
|
||||
>Makefile.in</TT
|
||||
> files such as
|
||||
<CODE
|
||||
CLASS="option"
|
||||
>dist</CODE
|
||||
>, <CODE
|
||||
CLASS="option"
|
||||
>distcheck</CODE
|
||||
>,
|
||||
<CODE
|
||||
CLASS="option"
|
||||
>clean</CODE
|
||||
>, <CODE
|
||||
CLASS="option"
|
||||
>distclean</CODE
|
||||
>,
|
||||
<CODE
|
||||
CLASS="option"
|
||||
>maintainer-clean</CODE
|
||||
> and <CODE
|
||||
CLASS="option"
|
||||
>tags</CODE
|
||||
>,
|
||||
and there are many more more available. See the GNU
|
||||
<B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
> manual for more information.
|
||||
</P
|
||||
><P
|
||||
> Because <CODE
|
||||
CLASS="function"
|
||||
>PKG_CHECK_MODULES</CODE
|
||||
> calls
|
||||
<CODE
|
||||
CLASS="function"
|
||||
>AC_SUBST</CODE
|
||||
> to substitute
|
||||
<CODE
|
||||
CLASS="varname"
|
||||
>GUTENPRINT_CFLAGS</CODE
|
||||
> and
|
||||
<CODE
|
||||
CLASS="varname"
|
||||
>GUTENPRINT_LIBS</CODE
|
||||
>, <B
|
||||
CLASS="command"
|
||||
>automake</B
|
||||
>
|
||||
will automatically set these variables in the
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>Makefile.in</TT
|
||||
> files it generates, requiring
|
||||
no additional effort on your part!
|
||||
</P
|
||||
><P
|
||||
> As in previous examples, we will make a program
|
||||
<B
|
||||
CLASS="command"
|
||||
>stpimage</B
|
||||
> from
|
||||
<TT
|
||||
CLASS="filename"
|
||||
>stpimage.c</TT
|
||||
>. This is how one might build
|
||||
write a <TT
|
||||
CLASS="filename"
|
||||
>Makefile.am</TT
|
||||
> to do this:
|
||||
</P
|
||||
><DIV
|
||||
CLASS="informalexample"
|
||||
><P
|
||||
></P
|
||||
><A
|
||||
NAME="AEN189"
|
||||
></A
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
>@SET_MAKE@
|
||||
|
||||
AM_CFLAGS = $(GUTENPRINT_CFLAGS)
|
||||
|
||||
bin_PROGRAMS = stpimage
|
||||
stpimage_SOURCES = stpimage.c
|
||||
stpimage_LDADD = $(GUTENPRINT_LIBS)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
></DIV
|
||||
><P
|
||||
> That's all there is to it! Please note that this example also
|
||||
requires the macro <CODE
|
||||
CLASS="function"
|
||||
>AC_PROG_MAKE_SET</CODE
|
||||
> to be
|
||||
used in <TT
|
||||
CLASS="filename"
|
||||
>configure.ac</TT
|
||||
>.
|
||||
</P
|
||||
></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="x67.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="c194.html"
|
||||
ACCESSKEY="N"
|
||||
>Next</A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Linking with libgutenprint</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="c48.html"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Reporting Bugs</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
@ -1,235 +0,0 @@
|
||||
<chapter>
|
||||
<title>Using libgutenprint</title>
|
||||
<para>
|
||||
This chapter describes how to write programs that use
|
||||
libgutenprint.
|
||||
</para>
|
||||
<sect1>
|
||||
<title>Code prerequisites</title>
|
||||
<para>
|
||||
To use libgutenprint with a program, several steps must be taken:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Include the master libgutenprint header:
|
||||
<informalexample>
|
||||
<programlisting><gimp-print/gimp-print.h></programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Call <function>stp_init</function>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Link with the libgutenprint library.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
The following is a short example program. It does not do
|
||||
anything useful, but it does everything required to link with
|
||||
libgutenprint and call other functions from libgutenprint.
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>#include <gimp-print/gimp-print.h>
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
stp_init();
|
||||
return 0;
|
||||
}
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>Linking with libgutenprint</title>
|
||||
<para>
|
||||
To link a program with libgutenprint, the option
|
||||
<option>-lgutenprint</option> needs to be passed to the compiler
|
||||
when linking. For example, to compile and link
|
||||
<filename>stpimage.c</filename> the following commands would be
|
||||
used:
|
||||
</para>
|
||||
<screen><prompt>$</prompt> <userinput>gcc -c stpimage.c</userinput>
|
||||
<prompt>$</prompt> <userinput>gcc -o stpimage -lgutenprint stpimage.o</userinput></screen>
|
||||
<para>
|
||||
The compiler and linker flags needed may vary depending on the
|
||||
options Gutenprint was configured with when it was built. The
|
||||
<command>pkg-config</command> script will give the correct
|
||||
parameters for the local installation.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>Integrating libgutenprint</title>
|
||||
<para>
|
||||
This section describes how to integrate the compiling and
|
||||
linking of programs using libgutenprint with build
|
||||
scripts. Commonly used systems include <command>make</command>,
|
||||
but often <filename>Makefile</filename> files are generated by
|
||||
using tools such as <command>autoconf</command> and
|
||||
<command>automake</command>.
|
||||
</para>
|
||||
<sect2>
|
||||
<title><command>pkg-config</command></title>
|
||||
<para>
|
||||
Depending on the nature of the computer system Gutenprint was
|
||||
installed on, as well as the options passed to
|
||||
<command>configure</command> when configuring the package when
|
||||
it was built, the <varname>CFLAGS</varname> and
|
||||
<varname>LIBS</varname> parameters needed to compile and link
|
||||
programs with libgutenprint may vary. To make it simple to
|
||||
determine what these are on any given system, a
|
||||
<command>pkg-config</command> datafile was created when
|
||||
Gutenprint was built. <command>pkg-config</command> will
|
||||
output the correct parameters for the setup on your system.
|
||||
See the
|
||||
<citerefentry><refentrytitle>pkg-config(1)</refentrytitle>
|
||||
</citerefentry> manual page for a compete synopsis.
|
||||
</para>
|
||||
<para>
|
||||
The correct <varname>CFLAGS</varname> to use can be obtained
|
||||
with the <option>--cflags</option> option:
|
||||
</para>
|
||||
<screen><prompt>$</prompt> <userinput>pkg-config --cflags gutenprint</userinput>
|
||||
-I/usr/local/include</screen>
|
||||
<para>
|
||||
The correct <varname>LIBS</varname> to use can the obtained
|
||||
with the <option>--libs</option> option:
|
||||
</para>
|
||||
<screen><prompt>$</prompt> <userinput>pkg-config --libs gutenprint</userinput>
|
||||
-L/usr/local/lib -lgutenprint -lm -ldl</screen>
|
||||
<para>
|
||||
Lastly, the installed version of Gutenprint can be obtained with the
|
||||
<varname>--version</varname> option:
|
||||
</para>
|
||||
<screen><prompt>$</prompt> <userinput>pkg-config --modversion gutenprint</userinput>
|
||||
4.3.23</screen>
|
||||
<para>
|
||||
The command can be used from the shell by enclosing it in
|
||||
backquotes ‘`’:
|
||||
</para>
|
||||
<screen><prompt>$</prompt> <userinput>gcc `pkg-config --cflags gutenprint` -c stpimage.c</userinput>
|
||||
<prompt>$</prompt> <userinput>gcc `pkg-config --libs gutenprint` -o
|
||||
stpimage stpimage.o</userinput></screen>
|
||||
<para>
|
||||
However, this is not the way it it typically used. Normally
|
||||
it is used in a <filename>Makefile</filename> or by an m4
|
||||
macro in a <command>configure</command> script.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title><command>make</command></title>
|
||||
<para>
|
||||
If you use <command>make</command> with your own
|
||||
<filename>Makefile</filename> files, then you are on your
|
||||
own. This manual offers no assistance with doing this. Only
|
||||
the following suggestion is offered, for use with GNU
|
||||
<command>make</command>:
|
||||
</para>
|
||||
<programlisting>GUTENPRINT_VERSION = $(shell pkg-config --version gutenprint)
|
||||
GUTENPRINT_CFLAGS = $(shell pkg-config --cflags gutenprint)
|
||||
GUTENPRINT_LIBS = $(shell pkg-config --libs gutenprint)</programlisting>
|
||||
<para>
|
||||
How you choose to use these variables is entirely up to
|
||||
you. See the GNU <command>make</command> manual for more
|
||||
information.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title><command>autoconf</command></title>
|
||||
<para>
|
||||
The <command>autoconf</command> program produces a Bourne
|
||||
shell script called <filename>configure</filename> from a
|
||||
template file called <filename>configure.ac</filename>.
|
||||
<filename>configure.ac</filename> contains both Bourne shell
|
||||
script, and m4 macros. <command>autoconf</command> expands
|
||||
the m4 macros into ‘real’ shell script. The
|
||||
resulting <command>configure</command> script performs various
|
||||
checks for installed programs, compiler characteristics and
|
||||
other system information such as available headers and
|
||||
libraries. See the GNU <command>autoconf</command> manual for
|
||||
more information.
|
||||
</para>
|
||||
<para>
|
||||
<command>pkg-config</command> provides an m4 macro,
|
||||
<function>PKG_CHECK_MODULES</function>, suitable for use in a
|
||||
<filename>configure.ac</filename> script. It defines the
|
||||
environment variables required for building libgutenprint-based
|
||||
programs. For example, to set GUTENPRINT_CFLAGS and
|
||||
GUTENPRINT_LIBS:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>PKG_CHECK_MODULES(GUTENPRINT, gutenprint)</programlisting>
|
||||
</informalexample>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title><command>automake</command></title>
|
||||
<para>
|
||||
The <command>automake</command> program can be used to
|
||||
generate <filename>Makefile.in</filename> files suitable for
|
||||
use with a <filename>configure</filename> script generated by
|
||||
<command>autoconf</command>. As <command>automake</command>
|
||||
<emphasis>requires</emphasis> <command>autoconf</command>,
|
||||
this section will assume the use of a
|
||||
<filename>configure.ac</filename> script which uses the
|
||||
<function>PKG_CHECK_MODULES</function> macro described above
|
||||
(there is little point in <emphasis>not</emphasis> using it!).
|
||||
</para>
|
||||
<para>
|
||||
It is highly recommended that you use GNU
|
||||
<command>autoconf</command> and
|
||||
<command>automake</command>. They will allow you to make your
|
||||
software build on most platforms with most compilers.
|
||||
<command>automake</command> makes writing complex
|
||||
<filename>Makefile</filename>'s very easy, by expressing how
|
||||
to build your packages in terms of what files are required to
|
||||
build a project and the installation locations of the files.
|
||||
It imposes a few limitations over using plain
|
||||
<filename>Makefile</filename>'s, such as in the use of
|
||||
conditionals, but these problems are vastly outweighed by the
|
||||
benefits it brings. It also creates many extra targets in the
|
||||
generated <filename>Makefile.in</filename> files such as
|
||||
<option>dist</option>, <option>distcheck</option>,
|
||||
<option>clean</option>, <option>distclean</option>,
|
||||
<option>maintainer-clean</option> and <option>tags</option>,
|
||||
and there are many more more available. See the GNU
|
||||
<command>automake</command> manual for more information.
|
||||
</para>
|
||||
<para>
|
||||
Because <function>PKG_CHECK_MODULES</function> calls
|
||||
<function>AC_SUBST</function> to substitute
|
||||
<varname>GUTENPRINT_CFLAGS</varname> and
|
||||
<varname>GUTENPRINT_LIBS</varname>, <command>automake</command>
|
||||
will automatically set these variables in the
|
||||
<filename>Makefile.in</filename> files it generates, requiring
|
||||
no additional effort on your part!
|
||||
</para>
|
||||
<para>
|
||||
As in previous examples, we will make a program
|
||||
<command>stpimage</command> from
|
||||
<filename>stpimage.c</filename>. This is how one might build
|
||||
write a <filename>Makefile.am</filename> to do this:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting>@SET_MAKE@
|
||||
|
||||
AM_CFLAGS = $(GUTENPRINT_CFLAGS)
|
||||
|
||||
bin_PROGRAMS = stpimage
|
||||
stpimage_SOURCES = stpimage.c
|
||||
stpimage_LDADD = $(GUTENPRINT_LIBS)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
That's all there is to it! Please note that this example also
|
||||
requires the macro <function>AC_PROG_MAKE_SET</function> to be
|
||||
used in <filename>configure.ac</filename>.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
@ -1,85 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Data Structures</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="classes.html"><span>Data Structure Index</span></a></li>
|
||||
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Data Structures</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here are the data structures with brief descriptions:</div><table>
|
||||
<tr><td class="indexkey"><a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__color.html">stp_color</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td><td class="indexvalue">Point (x,y) for piecewise curve </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__dotsize.html">stp_dotsize</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a></td><td class="indexvalue">Double_bound (range) parameter </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__family.html">stp_family</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__image.html">stp_image</a></td><td class="indexvalue">The image type is an abstract data type for interfacing with the image creation program </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a></td><td class="indexvalue">Int_bound (range) parameter </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__linebounds__t.html">stp_linebounds_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__module.html">stp_module</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__module__version.html">stp_module_version</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a></td><td class="indexvalue">The papersize data type </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a></td><td class="indexvalue">String parameter </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a></td><td class="indexvalue">Parameter description </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__pass__t.html">stp_pass_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__raw__t.html">stp_raw_t</a></td><td class="indexvalue">Raw parameter </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__shade.html">stp_shade</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structstp__weave__t.html">stp_weave_t</a></td><td class="indexvalue"></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,88 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/array.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/array.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Array functions.
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <<a class="el" href="sequence_8h.html">gutenprint/sequence.h</a>></code><br/>
|
||||
</div><table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">typedef struct stp_array </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a></td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">The array opaque data type. <a href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0"></a><br/></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gaa3d385d3e2f248b1c1ac88d5f103e9a2">stp_array_create</a> (int x_size, int y_size)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new array. <a href="group__array.html#gaa3d385d3e2f248b1c1ac88d5f103e9a2"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gaafb2573df35220ef9be3f6ba4b8c871b">stp_array_destroy</a> (<a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy an array. <a href="group__array.html#gaafb2573df35220ef9be3f6ba4b8c871b"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gaaa9bf798890e01b4bbce8cda45615021">stp_array_copy</a> (<a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *dest, const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *source)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy an array. <a href="group__array.html#gaaa9bf798890e01b4bbce8cda45615021"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gad0b50228ca40df79196197f9c21f4b56">stp_array_create_copy</a> (const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy and allocate an array. <a href="group__array.html#gad0b50228ca40df79196197f9c21f4b56"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gae6fb91b246ef5abd388927cb9674503e">stp_array_set_size</a> (<a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, int x_size, int y_size)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Resize an array. <a href="group__array.html#gae6fb91b246ef5abd388927cb9674503e"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gafe61db801ab3b0326646178e536dd161">stp_array_get_size</a> (const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, int *x_size, int *y_size)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array. <a href="group__array.html#gafe61db801ab3b0326646178e536dd161"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gaea0493f5bec9c5c185679adfde3edc9a">stp_array_set_data</a> (<a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, const double *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data in an array. <a href="group__array.html#gaea0493f5bec9c5c185679adfde3edc9a"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gae0d44ee80048189d244b16f231c54b80">stp_array_get_data</a> (const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, size_t *size, const double **data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the data in an array. <a href="group__array.html#gae0d44ee80048189d244b16f231c54b80"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gad6b95b2efd500007b098594826f4467f">stp_array_set_point</a> (<a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, int x, int y, double data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data at a single point in the array. <a href="group__array.html#gad6b95b2efd500007b098594826f4467f"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#ga9078af984a5e1ec80a6068bdb51c9a6d">stp_array_get_point</a> (const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array, int x, int y, double *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the data at a single point in the array. <a href="group__array.html#ga9078af984a5e1ec80a6068bdb51c9a6d"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__sequence.html#ga327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__array.html#gae05ba5cfe8c03e2435348d6c5488d87e">stp_array_get_sequence</a> (const <a class="el" href="group__array.html#ga26a474575a39c1c36ad520b95aa813b0">stp_array_t</a> *array)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the underlying stp_sequence_t. <a href="group__array.html#gae05ba5cfe8c03e2435348d6c5488d87e"></a><br/></td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Array functions. </p>
|
||||
</div></div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 677 B |
@ -1,806 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/bit-ops.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/bit-ops.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Bit operations.
|
||||
<a href="#details">More...</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a1a36a9f23f967528df8fffbd71b5e96c">stp_fold</a> (const unsigned char *line, int single_length, unsigned char *outbuf)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interleave a buffer consisting of two bit strings of length single_length into one string of packed two-bit ints. <a href="#a1a36a9f23f967528df8fffbd71b5e96c"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a0ee5e547d025f7113f275dbb4614230c">stp_fold_3bit</a> (const unsigned char *line, int single_length, unsigned char *outbuf)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interleave a buffer consisting of three bit strings of length single_length into one string of packed three-bit ints. <a href="#a0ee5e547d025f7113f275dbb4614230c"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#afe47834318158a214ca693f1433996f1">stp_fold_3bit_323</a> (const unsigned char *line, int single_length, unsigned char *outbuf)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interleave a buffer consisting of three bit strings of length single_length into one string of packed three-bit ints. <a href="#afe47834318158a214ca693f1433996f1"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a62ac3ec2651afff5fbe6c63544a13c66">stp_fold_4bit</a> (const unsigned char *line, int single_length, unsigned char *outbuf)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interleave a buffer consisting of four bit strings of length single_length into one string of packed four-bit ints. <a href="#a62ac3ec2651afff5fbe6c63544a13c66"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a8509200fc0bff8d1f5928f04bf1edd2b">stp_split</a> (int height, int bits, int n, const unsigned char *in, int stride, unsigned char **outs)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Split an input sequence of packed 1 or 2 bit integers into two or more outputs of equal length, distributing non-zero integers round robin into each output. <a href="#a8509200fc0bff8d1f5928f04bf1edd2b"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a260a00a6551c9e27e56ea1fab9444d80">stp_split_2</a> (int height, int bits, const unsigned char *in, unsigned char *outhi, unsigned char *outlo)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_split. <a href="#a260a00a6551c9e27e56ea1fab9444d80"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a6d93a70fcc820df08fcf8d380b9743f5">stp_split_4</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_split. <a href="#a6d93a70fcc820df08fcf8d380b9743f5"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a6512fc112307407fa2f30468b80ef69d">stp_unpack</a> (int height, int bits, int n, const unsigned char *in, unsigned char **outs)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unpack an input sequence of packed 1 or 2 bit integers into two or more outputs of equal length. <a href="#a6512fc112307407fa2f30468b80ef69d"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#ae04e96586931b37257f4547eca77b116">stp_unpack_2</a> (int height, int bits, const unsigned char *in, unsigned char *outlo, unsigned char *outhi)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_unpack. <a href="#ae04e96586931b37257f4547eca77b116"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#ac5bb5a178b5c6275e7e7c2f6b5064342">stp_unpack_4</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_unpack. <a href="#ac5bb5a178b5c6275e7e7c2f6b5064342"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a958196e6b7349e883a450e52cae83d93">stp_unpack_8</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_unpack. <a href="#a958196e6b7349e883a450e52cae83d93"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="bit-ops_8h.html#a8ddfbe4f60566d4111b4c4d88a956d1b">stp_unpack_16</a> (int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7, unsigned char *out8, unsigned char *out9, unsigned char *out10, unsigned char *out11, unsigned char *out12, unsigned char *out13, unsigned char *out14, unsigned char *out15)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated -- use stp_unpack. <a href="#a8ddfbe4f60566d4111b4c4d88a956d1b"></a><br/></td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Bit operations. </p>
|
||||
</div><hr/><h2>Function Documentation</h2>
|
||||
<a class="anchor" id="a1a36a9f23f967528df8fffbd71b5e96c"></a><!-- doxytag: member="bit-ops.h::stp_fold" ref="a1a36a9f23f967528df8fffbd71b5e96c" args="(const unsigned char *line, int single_length, unsigned char *outbuf)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_fold </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>single_length</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outbuf</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Interleave a buffer consisting of two bit strings of length single_length into one string of packed two-bit ints. </p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">line</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">single_length</td><td>the length (in bytes) of the input </td></tr>
|
||||
<tr><td class="paramname">outbuf</td><td>the output. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a0ee5e547d025f7113f275dbb4614230c"></a><!-- doxytag: member="bit-ops.h::stp_fold_3bit" ref="a0ee5e547d025f7113f275dbb4614230c" args="(const unsigned char *line, int single_length, unsigned char *outbuf)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_fold_3bit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>single_length</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outbuf</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Interleave a buffer consisting of three bit strings of length single_length into one string of packed three-bit ints. </p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">line</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">single_length</td><td>the length (in bytes) of the input </td></tr>
|
||||
<tr><td class="paramname">outbuf</td><td>the output. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="afe47834318158a214ca693f1433996f1"></a><!-- doxytag: member="bit-ops.h::stp_fold_3bit_323" ref="afe47834318158a214ca693f1433996f1" args="(const unsigned char *line, int single_length, unsigned char *outbuf)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_fold_3bit_323 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>single_length</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outbuf</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Interleave a buffer consisting of three bit strings of length single_length into one string of packed three-bit ints. </p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">line</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">single_length</td><td>the length (in bytes) of the input </td></tr>
|
||||
<tr><td class="paramname">outbuf</td><td>the output. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a62ac3ec2651afff5fbe6c63544a13c66"></a><!-- doxytag: member="bit-ops.h::stp_fold_4bit" ref="a62ac3ec2651afff5fbe6c63544a13c66" args="(const unsigned char *line, int single_length, unsigned char *outbuf)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_fold_4bit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>single_length</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outbuf</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Interleave a buffer consisting of four bit strings of length single_length into one string of packed four-bit ints. </p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">line</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">single_length</td><td>the length (in bytes) of the input </td></tr>
|
||||
<tr><td class="paramname">outbuf</td><td>the output. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a8509200fc0bff8d1f5928f04bf1edd2b"></a><!-- doxytag: member="bit-ops.h::stp_split" ref="a8509200fc0bff8d1f5928f04bf1edd2b" args="(int height, int bits, int n, const unsigned char *in, int stride, unsigned char **outs)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_split </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>n</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>stride</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char ** </td>
|
||||
<td class="paramname"><em>outs</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Split an input sequence of packed 1 or 2 bit integers into two or more outputs of equal length, distributing non-zero integers round robin into each output. </p>
|
||||
<p>Used in "high quality" modes when extra passes are made, to ensure that each pass gets an equal number of ink drops. Each output is as long as the input.</p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">height</td><td>the number of integers in the input divided by 8 </td></tr>
|
||||
<tr><td class="paramname">bits</td><td>the bit depth (1 or 2) </td></tr>
|
||||
<tr><td class="paramname">n</td><td>the number of outputs into which the input should be distributed </td></tr>
|
||||
<tr><td class="paramname">in</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">stride</td><td>the stride across the outputs (if it's necessary to distribute the input over non-contiguous members of the array of outputs) </td></tr>
|
||||
<tr><td class="paramname">outs</td><td>the array of output bit strings </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a260a00a6551c9e27e56ea1fab9444d80"></a><!-- doxytag: member="bit-ops.h::stp_split_2" ref="a260a00a6551c9e27e56ea1fab9444d80" args="(int height, int bits, const unsigned char *in, unsigned char *outhi, unsigned char *outlo)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_split_2 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outhi</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outlo</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_split. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a6d93a70fcc820df08fcf8d380b9743f5"></a><!-- doxytag: member="bit-ops.h::stp_split_4" ref="a6d93a70fcc820df08fcf8d380b9743f5" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_split_4 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out0</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out1</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out2</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out3</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_split. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a6512fc112307407fa2f30468b80ef69d"></a><!-- doxytag: member="bit-ops.h::stp_unpack" ref="a6512fc112307407fa2f30468b80ef69d" args="(int height, int bits, int n, const unsigned char *in, unsigned char **outs)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_unpack </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>n</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char ** </td>
|
||||
<td class="paramname"><em>outs</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Unpack an input sequence of packed 1 or 2 bit integers into two or more outputs of equal length. </p>
|
||||
<p>The input is round robined into the outputs. Each output is 1/n as long as the input.</p>
|
||||
<dl><dt><b>Parameters:</b></dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">height</td><td>the number of integers in the input divided by 8 </td></tr>
|
||||
<tr><td class="paramname">bits</td><td>the bit depth (1 or 2) </td></tr>
|
||||
<tr><td class="paramname">n</td><td>the number of outputs into which the input should be distributed </td></tr>
|
||||
<tr><td class="paramname">in</td><td>the input bit string </td></tr>
|
||||
<tr><td class="paramname">outs</td><td>the array of output bit strings </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a8ddfbe4f60566d4111b4c4d88a956d1b"></a><!-- doxytag: member="bit-ops.h::stp_unpack_16" ref="a8ddfbe4f60566d4111b4c4d88a956d1b" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7, unsigned char *out8, unsigned char *out9, unsigned char *out10, unsigned char *out11, unsigned char *out12, unsigned char *out13, unsigned char *out14, unsigned char *out15)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_unpack_16 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out0</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out1</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out2</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out3</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out4</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out5</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out6</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out7</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out8</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out9</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out10</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out11</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out12</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out13</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out14</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out15</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_unpack. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ae04e96586931b37257f4547eca77b116"></a><!-- doxytag: member="bit-ops.h::stp_unpack_2" ref="ae04e96586931b37257f4547eca77b116" args="(int height, int bits, const unsigned char *in, unsigned char *outlo, unsigned char *outhi)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_unpack_2 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outlo</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>outhi</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_unpack. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ac5bb5a178b5c6275e7e7c2f6b5064342"></a><!-- doxytag: member="bit-ops.h::stp_unpack_4" ref="ac5bb5a178b5c6275e7e7c2f6b5064342" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_unpack_4 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out0</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out1</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out2</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out3</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_unpack. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a958196e6b7349e883a450e52cae83d93"></a><!-- doxytag: member="bit-ops.h::stp_unpack_8" ref="a958196e6b7349e883a450e52cae83d93" args="(int height, int bits, const unsigned char *in, unsigned char *out0, unsigned char *out1, unsigned char *out2, unsigned char *out3, unsigned char *out4, unsigned char *out5, unsigned char *out6, unsigned char *out7)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_unpack_8 </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>height</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>bits</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const unsigned char * </td>
|
||||
<td class="paramname"><em>in</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out0</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out1</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out2</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out3</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out4</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out5</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out6</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned char * </td>
|
||||
<td class="paramname"><em>out7</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>Deprecated -- use stp_unpack. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,719 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/channel.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/channel.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Channel functions.
|
||||
<a href="#details">More...</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a90026b1db4586b08df148db41a676b50">stp_channel_reset</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#ab4b4591b1709146874c0218bc0591255">stp_channel_reset_channel</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int channel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#af03151796a167ec708b5412a31ddced5">stp_channel_add</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, unsigned channel, unsigned subchannel, double value)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a748f1fc90c60e70016998953b1adcde2">stp_channel_get_value</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, unsigned channel, unsigned subchannel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#ae7bd4572fb2ac86694555d0b827a2db9">stp_channel_set_density_adjustment</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int color, int subchannel, double adjustment)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a43188fd2c70d894e1e050277c1e4da35">stp_channel_get_density_adjustment</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int color, int subchannel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a68afca52a3f3c0c72c1ff0329ef245c7">stp_channel_set_ink_limit</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, double limit)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#afe8ad41148d568cb1d662064ec721ac1">stp_channel_get_ink_limit</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a59a4810ca297444fb16a5a1a1db319ed">stp_channel_set_cutoff_adjustment</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int color, int subchannel, double adjustment)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#af903f5318c045567f6aa3b6f1496b5ba">stp_channel_get_cutoff_adjustment</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int color, int subchannel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a1c1101b3f21368b26241a0db2877364e">stp_channel_set_black_channel</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int channel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a8a3cf94dfe1461bd0c8fb7464d5c99a6">stp_channel_get_black_channel</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#ab09858181233a7777b2d49ca50a327c6">stp_channel_set_gloss_channel</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int channel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a7771fa6878d414b4cd3b08743aadc3fc">stp_channel_get_gloss_channel</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a774df9fbabb8fcd9241976cc50c9501d">stp_channel_set_gloss_limit</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, double limit)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a9231b8d3be7ec55dc657da2e6a5c406e">stp_channel_get_gloss_limit</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a9e2107aa3cc118db2b6540f939064fed">stp_channel_set_curve</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int channel, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a36feed643e8768ff93308980203a92be">stp_channel_get_curve</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, int channel)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a4f0863196d55416aa58ea9815eb33312">stp_channel_set_gcr_curve</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#ac5c6578307d574f53c8f9110053fe9c5">stp_channel_get_gcr_curve</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a35b64c052b8dcfd4f1576b10d999e022">stp_channel_initialize</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int input_channel_count)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a4559ad54f7de2403438baab1c97789f7">stp_channel_convert</a> (const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, unsigned *zero_mask)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">unsigned short * </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#ac73acbaeb300c75912529c5064ea507a">stp_channel_get_input</a> (const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">unsigned short * </td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8h.html#a3ad58abee1208b328da69e49d230a54f">stp_channel_get_output</a> (const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Channel functions. </p>
|
||||
</div><hr/><h2>Function Documentation</h2>
|
||||
<a class="anchor" id="af03151796a167ec708b5412a31ddced5"></a><!-- doxytag: member="channel.h::stp_channel_add" ref="af03151796a167ec708b5412a31ddced5" args="(stp_vars_t *v, unsigned channel, unsigned subchannel, double value)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_add </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned </td>
|
||||
<td class="paramname"><em>channel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned </td>
|
||||
<td class="paramname"><em>subchannel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double </td>
|
||||
<td class="paramname"><em>value</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a4559ad54f7de2403438baab1c97789f7"></a><!-- doxytag: member="channel.h::stp_channel_convert" ref="a4559ad54f7de2403438baab1c97789f7" args="(const stp_vars_t *v, unsigned *zero_mask)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_convert </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned * </td>
|
||||
<td class="paramname"><em>zero_mask</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a8a3cf94dfe1461bd0c8fb7464d5c99a6"></a><!-- doxytag: member="channel.h::stp_channel_get_black_channel" ref="a8a3cf94dfe1461bd0c8fb7464d5c99a6" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int stp_channel_get_black_channel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a36feed643e8768ff93308980203a92be"></a><!-- doxytag: member="channel.h::stp_channel_get_curve" ref="a36feed643e8768ff93308980203a92be" args="(stp_vars_t *v, int channel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_channel_get_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>channel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="af903f5318c045567f6aa3b6f1496b5ba"></a><!-- doxytag: member="channel.h::stp_channel_get_cutoff_adjustment" ref="af903f5318c045567f6aa3b6f1496b5ba" args="(stp_vars_t *v, int color, int subchannel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double stp_channel_get_cutoff_adjustment </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>color</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>subchannel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a43188fd2c70d894e1e050277c1e4da35"></a><!-- doxytag: member="channel.h::stp_channel_get_density_adjustment" ref="a43188fd2c70d894e1e050277c1e4da35" args="(stp_vars_t *v, int color, int subchannel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double stp_channel_get_density_adjustment </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>color</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>subchannel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ac5c6578307d574f53c8f9110053fe9c5"></a><!-- doxytag: member="channel.h::stp_channel_get_gcr_curve" ref="ac5c6578307d574f53c8f9110053fe9c5" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_channel_get_gcr_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a7771fa6878d414b4cd3b08743aadc3fc"></a><!-- doxytag: member="channel.h::stp_channel_get_gloss_channel" ref="a7771fa6878d414b4cd3b08743aadc3fc" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int stp_channel_get_gloss_channel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a9231b8d3be7ec55dc657da2e6a5c406e"></a><!-- doxytag: member="channel.h::stp_channel_get_gloss_limit" ref="a9231b8d3be7ec55dc657da2e6a5c406e" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double stp_channel_get_gloss_limit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="afe8ad41148d568cb1d662064ec721ac1"></a><!-- doxytag: member="channel.h::stp_channel_get_ink_limit" ref="afe8ad41148d568cb1d662064ec721ac1" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double stp_channel_get_ink_limit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ac73acbaeb300c75912529c5064ea507a"></a><!-- doxytag: member="channel.h::stp_channel_get_input" ref="ac73acbaeb300c75912529c5064ea507a" args="(const stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">unsigned short* stp_channel_get_input </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a3ad58abee1208b328da69e49d230a54f"></a><!-- doxytag: member="channel.h::stp_channel_get_output" ref="a3ad58abee1208b328da69e49d230a54f" args="(const stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">unsigned short* stp_channel_get_output </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a748f1fc90c60e70016998953b1adcde2"></a><!-- doxytag: member="channel.h::stp_channel_get_value" ref="a748f1fc90c60e70016998953b1adcde2" args="(stp_vars_t *v, unsigned channel, unsigned subchannel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double stp_channel_get_value </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned </td>
|
||||
<td class="paramname"><em>channel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">unsigned </td>
|
||||
<td class="paramname"><em>subchannel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a35b64c052b8dcfd4f1576b10d999e022"></a><!-- doxytag: member="channel.h::stp_channel_initialize" ref="a35b64c052b8dcfd4f1576b10d999e022" args="(stp_vars_t *v, stp_image_t *image, int input_channel_count)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_initialize </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structstp__image.html">stp_image_t</a> * </td>
|
||||
<td class="paramname"><em>image</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>input_channel_count</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a90026b1db4586b08df148db41a676b50"></a><!-- doxytag: member="channel.h::stp_channel_reset" ref="a90026b1db4586b08df148db41a676b50" args="(stp_vars_t *v)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_reset </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ab4b4591b1709146874c0218bc0591255"></a><!-- doxytag: member="channel.h::stp_channel_reset_channel" ref="ab4b4591b1709146874c0218bc0591255" args="(stp_vars_t *v, int channel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_reset_channel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>channel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a1c1101b3f21368b26241a0db2877364e"></a><!-- doxytag: member="channel.h::stp_channel_set_black_channel" ref="a1c1101b3f21368b26241a0db2877364e" args="(stp_vars_t *v, int channel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_black_channel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>channel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a9e2107aa3cc118db2b6540f939064fed"></a><!-- doxytag: member="channel.h::stp_channel_set_curve" ref="a9e2107aa3cc118db2b6540f939064fed" args="(stp_vars_t *v, int channel, const stp_curve_t *curve)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>channel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td>
|
||||
<td class="paramname"><em>curve</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a59a4810ca297444fb16a5a1a1db319ed"></a><!-- doxytag: member="channel.h::stp_channel_set_cutoff_adjustment" ref="a59a4810ca297444fb16a5a1a1db319ed" args="(stp_vars_t *v, int color, int subchannel, double adjustment)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_cutoff_adjustment </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>color</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>subchannel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double </td>
|
||||
<td class="paramname"><em>adjustment</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ae7bd4572fb2ac86694555d0b827a2db9"></a><!-- doxytag: member="channel.h::stp_channel_set_density_adjustment" ref="ae7bd4572fb2ac86694555d0b827a2db9" args="(stp_vars_t *v, int color, int subchannel, double adjustment)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_density_adjustment </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>color</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>subchannel</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double </td>
|
||||
<td class="paramname"><em>adjustment</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a4f0863196d55416aa58ea9815eb33312"></a><!-- doxytag: member="channel.h::stp_channel_set_gcr_curve" ref="a4f0863196d55416aa58ea9815eb33312" args="(stp_vars_t *v, const stp_curve_t *curve)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_gcr_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td>
|
||||
<td class="paramname"><em>curve</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ab09858181233a7777b2d49ca50a327c6"></a><!-- doxytag: member="channel.h::stp_channel_set_gloss_channel" ref="ab09858181233a7777b2d49ca50a327c6" args="(stp_vars_t *v, int channel)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_gloss_channel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>channel</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a774df9fbabb8fcd9241976cc50c9501d"></a><!-- doxytag: member="channel.h::stp_channel_set_gloss_limit" ref="a774df9fbabb8fcd9241976cc50c9501d" args="(stp_vars_t *v, double limit)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_gloss_limit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double </td>
|
||||
<td class="paramname"><em>limit</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a68afca52a3f3c0c72c1ff0329ef245c7"></a><!-- doxytag: member="channel.h::stp_channel_set_ink_limit" ref="a68afca52a3f3c0c72c1ff0329ef245c7" args="(stp_vars_t *v, double limit)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_channel_set_ink_limit </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> * </td>
|
||||
<td class="paramname"><em>v</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double </td>
|
||||
<td class="paramname"><em>limit</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,55 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Data Structure Index</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="classes.html"><span>Data Structure Index</span></a></li>
|
||||
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Data Structure Index</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="qindex"><a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_S">S</a></div>
|
||||
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  D  </div></td></tr></table>
|
||||
</td><td><a class="el" href="structstp__dither__matrix__generic.html">stp_dither_matrix_generic</a>   </td><td><a class="el" href="structstp__int__bound__t.html">stp_int_bound_t</a>   </td><td><a class="el" href="structstp__module__version.html">stp_module_version</a>   </td><td><a class="el" href="structstp__param__string__t.html">stp_param_string_t</a>   </td></tr><tr><td><a class="el" href="structdither__matrix__impl.html">dither_matrix_impl</a>   </td><td><a class="el" href="structstp__dither__matrix__normal.html">stp_dither_matrix_normal</a>   </td><td><a class="el" href="structstp__lineactive__t.html">stp_lineactive_t</a>   </td><td><a class="el" href="structstp__mxml__attr__s.html">stp_mxml_attr_s</a>   </td><td><a class="el" href="structstp__parameter__t.html">stp_parameter_t</a>   </td></tr><tr><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  S  </div></td></tr></table>
|
||||
</td><td><a class="el" href="structstp__dither__matrix__short.html">stp_dither_matrix_short</a>   </td><td><a class="el" href="structstp__linebounds__t.html">stp_linebounds_t</a>   </td><td><a class="el" href="structstp__mxml__node__s.html">stp_mxml_node_s</a>   </td><td><a class="el" href="structstp__pass__t.html">stp_pass_t</a>   </td></tr><tr><td><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a>   </td><td><a class="el" href="structstp__dotsize.html">stp_dotsize</a>   </td><td><a class="el" href="structstp__linebufs__t.html">stp_linebufs_t</a>   </td><td><a class="el" href="structstp__mxml__text__s.html">stp_mxml_text_s</a>   </td><td><a class="el" href="structstp__printfuncs__t.html">stp_printfuncs_t</a>   </td></tr><tr><td><a class="el" href="structstp__color.html">stp_color</a>   </td><td><a class="el" href="structstp__double__bound__t.html">stp_double_bound_t</a>   </td><td><a class="el" href="structstp__linecount__t.html">stp_linecount_t</a>   </td><td><a class="el" href="structstp__mxml__value__s.html">stp_mxml_value_s</a>   </td><td><a class="el" href="structstp__raw__t.html">stp_raw_t</a>   </td></tr><tr><td><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a>   </td><td><a class="el" href="structstp__family.html">stp_family</a>   </td><td><a class="el" href="structstp__lineoff__t.html">stp_lineoff_t</a>   </td><td><a class="el" href="unionstp__mxml__value__u.html">stp_mxml_value_u</a>   </td><td><a class="el" href="structstp__shade.html">stp_shade</a>   </td></tr><tr><td><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a>   </td><td><a class="el" href="structstp__image.html">stp_image</a>   </td><td><a class="el" href="structstp__module.html">stp_module</a>   </td><td><a class="el" href="structstp__papersize__t.html">stp_papersize_t</a>   </td><td><a class="el" href="structstp__weave__t.html">stp_weave_t</a>   </td></tr></table><div class="qindex"><a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_S">S</a></div>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 126 B |
@ -1,86 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/color.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Data Structures</a> |
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/color.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Color functions.
|
||||
<a href="#details">More...</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="nested-classes"></a>
|
||||
Data Structures</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__color.html">stp_color</a></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structstp__color.html">stp_color</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#gad1408f9835b72f266ec7c7e1e1202a74">stp_color_t</a></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga23392fc53078d51fcd14d6d565d56423">stp_color_init</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, size_t steps)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga0cf28c3c9638987df4b1740deadba0cb">stp_color_get_row</a> (<a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, <a class="el" href="structstp__image.html">stp_image_t</a> *image, int row, unsigned *zero_mask)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__vars.html#ga40c1035f88ac38d77eddb65195b28595">stp_parameter_list_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#gaa282220724877a57738b047140835141">stp_color_list_parameters</a> (const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga83bc80c9fd84d741099bc20285a1b655">stp_color_describe_parameter</a> (const <a class="el" href="group__vars.html#ga2d49c94847d18d8b62a214995b14680f">stp_vars_t</a> *v, const char *name, <a class="el" href="structstp__parameter__t.html">stp_parameter_t</a> *description)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga47d6a8163ef21a6e700b1371228b851d">stp_color_register</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga2b62ec8e0afe1b6297bc71466f8a334c">stp_color_unregister</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *color)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga68c13c36d723e5604507bf33fe629f8b">stp_color_count</a> (void)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of available color modules. <a href="group__color.html#ga68c13c36d723e5604507bf33fe629f8b"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga3b8f62108f3604480e7b89b253527f4a">stp_get_color_by_name</a> (const char *name)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a color module by its name. <a href="group__color.html#ga3b8f62108f3604480e7b89b253527f4a"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga68ba525119da39ae854645ae649557d3">stp_get_color_by_index</a> (int idx)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a color module by its index number. <a href="group__color.html#ga68ba525119da39ae854645ae649557d3"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structstp__color.html">stp_color_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga578f80b2bc3937df38ce7e803f5f472c">stp_get_color_by_colorfuncs</a> (<a class="el" href="structstp__colorfuncs__t.html">stp_colorfuncs_t</a> *colorfuncs)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga5a4a4da67cb5c3f1c0a2a9618e46ed50">stp_color_get_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the short (untranslated) name of a color module. <a href="group__color.html#ga5a4a4da67cb5c3f1c0a2a9618e46ed50"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__color.html#ga612389b45f09358f6bad0e376c91b057">stp_color_get_long_name</a> (const <a class="el" href="structstp__color.html">stp_color_t</a> *c)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the long (translated) name of a color module. <a href="group__color.html#ga612389b45f09358f6bad0e376c91b057"></a><br/></td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Color functions. </p>
|
||||
</div></div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,334 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/curve-cache.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Data Structures</a> |
|
||||
<a href="#define-members">Defines</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/curve-cache.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Curve caching functions.
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <<a class="el" href="curve_8h.html">gutenprint/curve.h</a>></code><br/>
|
||||
</div><table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="nested-classes"></a>
|
||||
Data Structures</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="define-members"></a>
|
||||
Defines</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a4b278e86a2f914893307fb20cf218e7c">CURVE_CACHE_FAST_USHORT</a>(cache)   ((cache)->s_cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#af79c26492d6e6fd726498df18cae11fe">CURVE_CACHE_FAST_DOUBLE</a>(cache)   ((cache)->d_cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a70b70d0328c61f17925402a4b1bb9a90">CURVE_CACHE_FAST_COUNT</a>(cache)   ((cache)->count)</td></tr>
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a80cb29d2d12707901ca9261df5f3cd1c">stp_curve_free_curve_cache</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#af3e398d179e00c2e7d8b7c2e5dcbfd5c">stp_curve_cache_curve_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a26161d0b2b6c8b97e0de2dc12619cc6c">stp_curve_cache_get_curve</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a8d9c7b9a9aca371b6d2e72dcfc367f88">stp_curve_cache_curve_invalidate</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a8469e7bd7d80cfb01fc470a42e6ac805">stp_curve_cache_set_curve</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache, <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#acd8bbfbdb0b60d079b6615cc4a19ee56">stp_curve_cache_set_curve_copy</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#aaefb6ef535ba108e0fdba1db4b58bd34">stp_curve_cache_get_count</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const unsigned short * </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a204df5bd2ecc318cccf6e2541d8b4830">stp_curve_cache_get_ushort_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const double * </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#a45415b5aa0600b60b65880803aea84b4">stp_curve_cache_get_double_data</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *cache)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="curve-cache_8h.html#af5642e9d4e265b8d16db6075e1309a20">stp_curve_cache_copy</a> (<a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *dest, const <a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> *src)</td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Curve caching functions. </p>
|
||||
</div><hr/><h2>Define Documentation</h2>
|
||||
<a class="anchor" id="a70b70d0328c61f17925402a4b1bb9a90"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_COUNT" ref="a70b70d0328c61f17925402a4b1bb9a90" args="(cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define CURVE_CACHE_FAST_COUNT</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">cache</td><td>)</td>
|
||||
<td>   ((cache)->count)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="af79c26492d6e6fd726498df18cae11fe"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_DOUBLE" ref="af79c26492d6e6fd726498df18cae11fe" args="(cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define CURVE_CACHE_FAST_DOUBLE</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">cache</td><td>)</td>
|
||||
<td>   ((cache)->d_cache)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a4b278e86a2f914893307fb20cf218e7c"></a><!-- doxytag: member="curve-cache.h::CURVE_CACHE_FAST_USHORT" ref="a4b278e86a2f914893307fb20cf218e7c" args="(cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define CURVE_CACHE_FAST_USHORT</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">cache</td><td>)</td>
|
||||
<td>   ((cache)->s_cache)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/><h2>Function Documentation</h2>
|
||||
<a class="anchor" id="af5642e9d4e265b8d16db6075e1309a20"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_copy" ref="af5642e9d4e265b8d16db6075e1309a20" args="(stp_cached_curve_t *dest, const stp_cached_curve_t *src)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_cache_copy </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>dest</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>src</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="af3e398d179e00c2e7d8b7c2e5dcbfd5c"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_curve_data" ref="af3e398d179e00c2e7d8b7c2e5dcbfd5c" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_cache_curve_data </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a8d9c7b9a9aca371b6d2e72dcfc367f88"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_curve_invalidate" ref="a8d9c7b9a9aca371b6d2e72dcfc367f88" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_cache_curve_invalidate </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="aaefb6ef535ba108e0fdba1db4b58bd34"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_count" ref="aaefb6ef535ba108e0fdba1db4b58bd34" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">size_t stp_curve_cache_get_count </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a26161d0b2b6c8b97e0de2dc12619cc6c"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_curve" ref="a26161d0b2b6c8b97e0de2dc12619cc6c" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_cache_get_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a45415b5aa0600b60b65880803aea84b4"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_double_data" ref="a45415b5aa0600b60b65880803aea84b4" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const double* stp_curve_cache_get_double_data </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a204df5bd2ecc318cccf6e2541d8b4830"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_get_ushort_data" ref="a204df5bd2ecc318cccf6e2541d8b4830" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const unsigned short* stp_curve_cache_get_ushort_data </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a8469e7bd7d80cfb01fc470a42e6ac805"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_set_curve" ref="a8469e7bd7d80cfb01fc470a42e6ac805" args="(stp_cached_curve_t *cache, stp_curve_t *curve)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_cache_set_curve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td>
|
||||
<td class="paramname"><em>curve</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="acd8bbfbdb0b60d079b6615cc4a19ee56"></a><!-- doxytag: member="curve-cache.h::stp_curve_cache_set_curve_copy" ref="acd8bbfbdb0b60d079b6615cc4a19ee56" args="(stp_cached_curve_t *cache, const stp_curve_t *curve)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_cache_set_curve_copy </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td>
|
||||
<td class="paramname"><em>curve</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a80cb29d2d12707901ca9261df5f3cd1c"></a><!-- doxytag: member="curve-cache.h::stp_curve_free_curve_cache" ref="a80cb29d2d12707901ca9261df5f3cd1c" args="(stp_cached_curve_t *cache)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void stp_curve_free_curve_cache </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structstp__cached__curve__t.html">stp_cached_curve_t</a> * </td>
|
||||
<td class="paramname"><em>cache</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,188 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: include/gutenprint/curve.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Data Structures</a> |
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#enum-members">Enumerations</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">include/gutenprint/curve.h File Reference</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
<p>Curve functions.
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <stdio.h></code><br/>
|
||||
<code>#include <stdlib.h></code><br/>
|
||||
<code>#include <<a class="el" href="sequence_8h.html">gutenprint/sequence.h</a>></code><br/>
|
||||
</div><table class="memberdecls">
|
||||
<tr><td colspan="2"><h2><a name="nested-classes"></a>
|
||||
Data Structures</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Point (x,y) for piecewise curve. <a href="structstp__curve__point__t.html#details">More...</a><br/></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">typedef struct stp_curve </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a></td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">The curve opaque data type. <a href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524"></a><br/></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="enum-members"></a>
|
||||
Enumerations</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gga982f8191c84b049cc3ad3cee1558fc23a46228ddaa2d52a85ccd79c4dc0f76ad3">STP_CURVE_TYPE_LINEAR</a>,
|
||||
<a class="el" href="group__curve.html#gga982f8191c84b049cc3ad3cee1558fc23afb1ffdc3754f428d8e3a2124e014ff77">STP_CURVE_TYPE_SPLINE</a>
|
||||
}</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Curve types. <a href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">More...</a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gga3ae3af552b490b0ca8b02e442ac9547aad840485ad7df768a06ee4be02d93b97a">STP_CURVE_WRAP_NONE</a>,
|
||||
<a class="el" href="group__curve.html#gga3ae3af552b490b0ca8b02e442ac9547aac0361aebddfabfb263dc0205a61f6fbd">STP_CURVE_WRAP_AROUND</a>
|
||||
}</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapping mode. <a href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">More...</a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142eac38b0bf09e93edb67c3e5c53035295f3">STP_CURVE_COMPOSE_ADD</a>,
|
||||
<a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142ead3bd2cdb63498d5d22686e79e2c0ed95">STP_CURVE_COMPOSE_MULTIPLY</a>,
|
||||
<a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142ea8de151149fdfd4fcca78826e6352246a">STP_CURVE_COMPOSE_EXPONENTIATE</a>
|
||||
}</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Composition types. <a href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">More...</a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85fa118d303bf7bdf4f00bda71cc6eac49c3">STP_CURVE_BOUNDS_RESCALE</a>,
|
||||
<a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85faec9e6673edac9d34e3aad376fa711aa5">STP_CURVE_BOUNDS_CLIP</a>,
|
||||
<a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85fad699d675d5df223055388cd83d0b362b">STP_CURVE_BOUNDS_ERROR</a>
|
||||
}</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Behaviour when curve exceeds bounds. <a href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">More...</a><br/></td></tr>
|
||||
<tr><td colspan="2"><h2><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6b3640f0e25bd9d38e46bdc1b2ee58a4">stp_curve_create</a> (<a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> wrap)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new curve. <a href="group__curve.html#ga6b3640f0e25bd9d38e46bdc1b2ee58a4"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga972ed591394396e0c66e928a0695b3bf">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy and allocate a curve. <a href="group__curve.html#ga972ed591394396e0c66e928a0695b3bf"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacd7861bf1c9d61ac4ec87844a15ab9d3">stp_curve_copy</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy a curve. <a href="group__curve.html#gacd7861bf1c9d61ac4ec87844a15ab9d3"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga8c2aed234d3e4ddc4c239801be17bb73">stp_curve_create_reverse</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reverse and allocate a curve. <a href="group__curve.html#ga8c2aed234d3e4ddc4c239801be17bb73"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3416157017287eae136fb928802be234">stp_curve_reverse</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reverse a curve. <a href="group__curve.html#ga3416157017287eae136fb928802be234"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga4294b85e848fe421496469e2406ef380">stp_curve_destroy</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy an curve. <a href="group__curve.html#ga4294b85e848fe421496469e2406ef380"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gae32fb850963b8694d3739c0ed8475f75">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double low, double high)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the lower and upper bounds on a curve. <a href="group__curve.html#gae32fb850963b8694d3739c0ed8475f75"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga63c3386fbfd75da9fe985673bf7b1ca3">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the lower and upper bounds on a curve. <a href="group__curve.html#ga63c3386fbfd75da9fe985673bf7b1ca3"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga859020827897bac0f4671322ec027dc4">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the wrapping mode. <a href="group__curve.html#ga859020827897bac0f4671322ec027dc4"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga29b022a3055afe0b48d1f2736ff2f4da">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Determine whether the curve is piecewise. <a href="group__curve.html#ga29b022a3055afe0b48d1f2736ff2f4da"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacb8e51731b9385556747744a0d4f43fb">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga766ff02b29b976372779f719076ad017">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of allocated points in the curve. <a href="group__curve.html#ga766ff02b29b976372779f719076ad017"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga82890cef78f5861a88c5789c33693423">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> itype)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the curve interpolation type. <a href="group__curve.html#ga82890cef78f5861a88c5789c33693423"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga42c98a6a6d2512516738b6df9367510e">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the curve interpolation type. <a href="group__curve.html#ga42c98a6a6d2512516738b6df9367510e"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga81bceb4cb991cef1cda2298cf7bb9f15">stp_curve_set_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const double *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set all data points of the curve. <a href="group__curve.html#ga81bceb4cb991cef1cda2298cf7bb9f15"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gace09cab4e6ae3d55f75aacae3689e8e6">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set all data points of the curve. <a href="group__curve.html#gace09cab4e6ae3d55f75aacae3689e8e6"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gabd7a39289471607311141c7fc3bbb415">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const float *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from float values. <a href="group__curve.html#gabd7a39289471607311141c7fc3bbb415"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gae6a435a21a5c4b5e582d42095a7b06fc">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const long *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from long values. <a href="group__curve.html#gae6a435a21a5c4b5e582d42095a7b06fc"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga723173297f5b67af937205c7d74ac353">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned long *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from unsigned long values. <a href="group__curve.html#ga723173297f5b67af937205c7d74ac353"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga31e76843f4d2f207701755b58766a670">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const int *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from integer values. <a href="group__curve.html#ga31e76843f4d2f207701755b58766a670"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3ee80f8e4f33691a78b3ad8c3fd7c34f">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned int *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from unsigned integer values. <a href="group__curve.html#ga3ee80f8e4f33691a78b3ad8c3fd7c34f"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2fa5222aab07e85f215e389734b6dbea">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const short *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from short values. <a href="group__curve.html#ga2fa5222aab07e85f215e389734b6dbea"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0af395eefa7bfe0d19acc1acbaeefe48">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned short *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the data points in a curve from unsigned short values. <a href="group__curve.html#ga0af395eefa7bfe0d19acc1acbaeefe48"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga5cbf7c4b6ad96ecb35fc06f46c0319f0">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t start, size_t count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a curve containing a subrange of data. <a href="group__curve.html#ga5cbf7c4b6ad96ecb35fc06f46c0319f0"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga73dfcc4c95734449965227e21deb3037">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *range, size_t start)</td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const double * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab2208f56694e47e4300d10e057f59ee8">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pointer to the curve's raw data. <a href="group__curve.html#gab2208f56694e47e4300d10e057f59ee8"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga79e0d6afa3573917c756af64b56a0d82">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pointer to the curve's raw data as points. <a href="group__curve.html#ga79e0d6afa3573917c756af64b56a0d82"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const float * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga251f105cb5f2b126ea02b7908f717c18">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as floats. <a href="group__curve.html#ga251f105cb5f2b126ea02b7908f717c18"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const long * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaf59bd38c9dfc7beb08a283dc9e400bf2">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as longs. <a href="group__curve.html#gaf59bd38c9dfc7beb08a283dc9e400bf2"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const unsigned long * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga24a862eda4cdbb626f51aeb7d8ae9a50">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as unsigned longs. <a href="group__curve.html#ga24a862eda4cdbb626f51aeb7d8ae9a50"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const int * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6de80e81b64262e0051441f697ae4de4">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as integers. <a href="group__curve.html#ga6de80e81b64262e0051441f697ae4de4"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const unsigned int * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga19b3160a57dc6959fe08c631c7206a8a">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as unsigned integers. <a href="group__curve.html#ga19b3160a57dc6959fe08c631c7206a8a"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const short * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga87c5d1904efa58be8a21ab6b2c41d0b9">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as shorts. <a href="group__curve.html#ga87c5d1904efa58be8a21ab6b2c41d0b9"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const unsigned short * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaa02125af6b9c192e34985851370391b8">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get pointer to the curve's raw data as unsigned shorts. <a href="group__curve.html#gaa02125af6b9c192e34985851370391b8"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__sequence.html#ga327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gade323594e84d4380c88ecf122a5a4da8">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the underlying stp_sequence_t data structure which stp_curve_t is derived from. <a href="group__curve.html#gade323594e84d4380c88ecf122a5a4da8"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacb8a2b9b21f97f32faacb99a6125e152">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double f_gamma)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gamma of a curve. <a href="group__curve.html#gacb8a2b9b21f97f32faacb99a6125e152"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0420a6cfa87aa96e5c9a56142aa0178d">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the gamma value of the curve. <a href="group__curve.html#ga0420a6cfa87aa96e5c9a56142aa0178d"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2d3b8372bde3fce699a3b7bb3c9d8582">stp_curve_set_point</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t where, double data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a point along the curve. <a href="group__curve.html#ga2d3b8372bde3fce699a3b7bb3c9d8582"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga569aae57147ed7681f23e0e60bd8af35">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t where, double *data)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a point along the curve. <a href="group__curve.html#ga569aae57147ed7681f23e0e60bd8af35"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab33642ee6c49334f379a4dc185ecd355">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double where, double *result)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interpolate a point along the curve. <a href="group__curve.html#gab33642ee6c49334f379a4dc185ecd355"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga87298cf562468cbcf2c1f76a0ab80b62">stp_curve_resample</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t points)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Resample a curve (change the number of points). <a href="group__curve.html#ga87298cf562468cbcf2c1f76a0ab80b62"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaad611b3ddbd667ec204fa7b42f8d7546">stp_curve_rescale</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a> bounds_mode)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Rescale a curve (multiply all points by a scaling constant). <a href="group__curve.html#gaad611b3ddbd667ec204fa7b42f8d7546"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gac12af55cf0eb2f76db967886f8996313">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a curve to a file. <a href="group__curve.html#gac12af55cf0eb2f76db967886f8996313"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaf2f0da590278ff74af1eccb0aa0c7169">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a curve to a string. <a href="group__curve.html#gaf2f0da590278ff74af1eccb0aa0c7169"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga478a24e44a3ce345f7207cf7ded12e37">stp_curve_create_from_stream</a> (FILE *fp)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a curve from a stream. <a href="group__curve.html#ga478a24e44a3ce345f7207cf7ded12e37"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gad96d7d1cda5f037f7d6a9b651ebbbb46">stp_curve_create_from_file</a> (const char *file)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a curve from a stream. <a href="group__curve.html#gad96d7d1cda5f037f7d6a9b651ebbbb46"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab8c0df217306a6e0597f058efbfaca82">stp_curve_create_from_string</a> (const char *string)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a curve from a string. <a href="group__curve.html#gab8c0df217306a6e0597f058efbfaca82"></a><br/></td></tr>
|
||||
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga55c83a9139fc1b06b90e983d7c1ceff7">stp_curve_compose</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *a, <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *b, <a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> mode, int points)</td></tr>
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compose two curves, creating a third curve. <a href="group__curve.html#ga55c83a9139fc1b06b90e983d7c1ceff7"></a><br/></td></tr>
|
||||
</table>
|
||||
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
||||
<div class="textblock"><p>Curve functions. </p>
|
||||
</div></div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Deprecated List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Deprecated List </div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock"><p><a class="anchor" id="_deprecated000001"></a> </p>
|
||||
<dl>
|
||||
<dt>Global <a class="el" href="group__printer.html#ga41094e69b71eb930e770bd2cf8bbf795">stp_get_printer_index_by_driver</a> (const char *driver) </dt>
|
||||
<dd>There should never be any need to use this function. </dd>
|
||||
</dl>
|
||||
<p><a class="anchor" id="_deprecated000002"></a> </p>
|
||||
<dl>
|
||||
<dt>Global <a class="el" href="group__vars.html#ga086303d36b835d539e75f16187e99e8f">stp_merge_printvars</a> (stp_vars_t *user, const stp_vars_t *print) </dt>
|
||||
<dd>This is likely to go away. </dd>
|
||||
</dl>
|
||||
</div></div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,835 +0,0 @@
|
||||
/* The standard CSS for doxygen */
|
||||
|
||||
body, table, div, p, dl {
|
||||
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* @group Heading Levels */
|
||||
|
||||
h1 {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
margin: 10px 2px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.multicol {
|
||||
-moz-column-gap: 1em;
|
||||
-webkit-column-gap: 1em;
|
||||
-moz-column-count: 3;
|
||||
-webkit-column-count: 3;
|
||||
}
|
||||
|
||||
p.startli, p.startdd, p.starttd {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
p.endli {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
p.enddd {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
p.endtd {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
caption {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.legend {
|
||||
font-size: 70%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3.version {
|
||||
font-size: 90%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.qindex, div.navtab{
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #A3B4D7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
div.qindex, div.navpath {
|
||||
width: 100%;
|
||||
line-height: 140%;
|
||||
}
|
||||
|
||||
div.navtab {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
/* @group Link Styling */
|
||||
|
||||
a {
|
||||
color: #3D578C;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.contents a:visited {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.qindex {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.qindexHL {
|
||||
font-weight: bold;
|
||||
background-color: #9CAFD4;
|
||||
color: #ffffff;
|
||||
border: 1px double #869DCA;
|
||||
}
|
||||
|
||||
.contents a.qindexHL:visited {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
a.el {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.elRef {
|
||||
}
|
||||
|
||||
a.code {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
a.codeRef {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
dl.el {
|
||||
margin-left: -1cm;
|
||||
}
|
||||
|
||||
.fragment {
|
||||
font-family: monospace, fixed;
|
||||
font-size: 105%;
|
||||
}
|
||||
|
||||
pre.fragment {
|
||||
border: 1px solid #C4CFE5;
|
||||
background-color: #FBFCFD;
|
||||
padding: 4px 6px;
|
||||
margin: 4px 8px 4px 2px;
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
font-size: 9pt;
|
||||
line-height: 125%;
|
||||
}
|
||||
|
||||
div.ah {
|
||||
background-color: black;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 3px;
|
||||
padding: 0.2em;
|
||||
border: solid thin #333;
|
||||
border-radius: 0.5em;
|
||||
-webkit-border-radius: .5em;
|
||||
-moz-border-radius: .5em;
|
||||
box-shadow: 2px 2px 3px #999;
|
||||
-webkit-box-shadow: 2px 2px 3px #999;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
|
||||
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
|
||||
}
|
||||
|
||||
div.groupHeader {
|
||||
margin-left: 16px;
|
||||
margin-top: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.groupText {
|
||||
margin-left: 16px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
body {
|
||||
background: white;
|
||||
color: black;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.contents {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
td.indexkey {
|
||||
background-color: #EBEFF6;
|
||||
font-weight: bold;
|
||||
border: 1px solid #C4CFE5;
|
||||
margin: 2px 0px 2px 0;
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
td.indexvalue {
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #C4CFE5;
|
||||
padding: 2px 10px;
|
||||
margin: 2px 0px;
|
||||
}
|
||||
|
||||
tr.memlist {
|
||||
background-color: #EEF1F7;
|
||||
}
|
||||
|
||||
p.formulaDsp {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
img.formulaDsp {
|
||||
|
||||
}
|
||||
|
||||
img.formulaInl {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.center {
|
||||
text-align: center;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
div.center img {
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
address.footer {
|
||||
text-align: right;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
img.footer {
|
||||
border: 0px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* @group Code Colorization */
|
||||
|
||||
span.keyword {
|
||||
color: #008000
|
||||
}
|
||||
|
||||
span.keywordtype {
|
||||
color: #604020
|
||||
}
|
||||
|
||||
span.keywordflow {
|
||||
color: #e08000
|
||||
}
|
||||
|
||||
span.comment {
|
||||
color: #800000
|
||||
}
|
||||
|
||||
span.preprocessor {
|
||||
color: #806020
|
||||
}
|
||||
|
||||
span.stringliteral {
|
||||
color: #002080
|
||||
}
|
||||
|
||||
span.charliteral {
|
||||
color: #008080
|
||||
}
|
||||
|
||||
span.vhdldigit {
|
||||
color: #ff00ff
|
||||
}
|
||||
|
||||
span.vhdlchar {
|
||||
color: #000000
|
||||
}
|
||||
|
||||
span.vhdlkeyword {
|
||||
color: #700070
|
||||
}
|
||||
|
||||
span.vhdllogic {
|
||||
color: #ff0000
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/*
|
||||
.search {
|
||||
color: #003399;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
form.search {
|
||||
margin-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
input.search {
|
||||
font-size: 75%;
|
||||
color: #000080;
|
||||
font-weight: normal;
|
||||
background-color: #e8eef2;
|
||||
}
|
||||
*/
|
||||
|
||||
td.tiny {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
.dirtab {
|
||||
padding: 4px;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #A3B4D7;
|
||||
}
|
||||
|
||||
th.dirtab {
|
||||
background: #EBEFF6;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
hr {
|
||||
height: 0px;
|
||||
border: none;
|
||||
border-top: 1px solid #4A6AAA;
|
||||
}
|
||||
|
||||
hr.footer {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
/* @group Member Descriptions */
|
||||
|
||||
table.memberdecls {
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.mdescLeft, .mdescRight,
|
||||
.memItemLeft, .memItemRight,
|
||||
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
|
||||
background-color: #F9FAFC;
|
||||
border: none;
|
||||
margin: 4px;
|
||||
padding: 1px 0 0 8px;
|
||||
}
|
||||
|
||||
.mdescLeft, .mdescRight {
|
||||
padding: 0px 8px 4px 8px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.memItemLeft, .memItemRight, .memTemplParams {
|
||||
border-top: 1px solid #C4CFE5;
|
||||
}
|
||||
|
||||
.memItemLeft, .memTemplItemLeft {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.memItemRight {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.memTemplParams {
|
||||
color: #4665A2;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Member Details */
|
||||
|
||||
/* Styles for detailed member documentation */
|
||||
|
||||
.memtemplate {
|
||||
font-size: 80%;
|
||||
color: #4665A2;
|
||||
font-weight: normal;
|
||||
margin-left: 9px;
|
||||
}
|
||||
|
||||
.memnav {
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #A3B4D7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
margin-right: 15px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.mempage {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.memitem {
|
||||
padding: 0;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.memname {
|
||||
white-space: nowrap;
|
||||
font-weight: bold;
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
.memproto {
|
||||
border-top: 1px solid #A8B8D9;
|
||||
border-left: 1px solid #A8B8D9;
|
||||
border-right: 1px solid #A8B8D9;
|
||||
padding: 6px 0px 6px 0px;
|
||||
color: #253555;
|
||||
font-weight: bold;
|
||||
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
|
||||
/* opera specific markup */
|
||||
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
border-top-right-radius: 8px;
|
||||
border-top-left-radius: 8px;
|
||||
/* firefox specific markup */
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
|
||||
-moz-border-radius-topright: 8px;
|
||||
-moz-border-radius-topleft: 8px;
|
||||
/* webkit specific markup */
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
-webkit-border-top-right-radius: 8px;
|
||||
-webkit-border-top-left-radius: 8px;
|
||||
background-image:url('nav_f.png');
|
||||
background-repeat:repeat-x;
|
||||
background-color: #E2E8F2;
|
||||
|
||||
}
|
||||
|
||||
.memdoc {
|
||||
border-bottom: 1px solid #A8B8D9;
|
||||
border-left: 1px solid #A8B8D9;
|
||||
border-right: 1px solid #A8B8D9;
|
||||
padding: 2px 5px;
|
||||
background-color: #FBFCFD;
|
||||
border-top-width: 0;
|
||||
/* opera specific markup */
|
||||
border-bottom-left-radius: 8px;
|
||||
border-bottom-right-radius: 8px;
|
||||
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
/* firefox specific markup */
|
||||
-moz-border-radius-bottomleft: 8px;
|
||||
-moz-border-radius-bottomright: 8px;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
|
||||
background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
|
||||
/* webkit specific markup */
|
||||
-webkit-border-bottom-left-radius: 8px;
|
||||
-webkit-border-bottom-right-radius: 8px;
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
|
||||
}
|
||||
|
||||
.paramkey {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.paramtype {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.paramname {
|
||||
color: #602020;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.paramname em {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.params, .retval, .exception, .tparams {
|
||||
border-spacing: 6px 2px;
|
||||
}
|
||||
|
||||
.params .paramname, .retval .paramname {
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.params .paramtype {
|
||||
font-style: italic;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.params .paramdir {
|
||||
font-family: "courier new",courier,monospace;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Directory (tree) */
|
||||
|
||||
/* for the tree view */
|
||||
|
||||
.ftvtree {
|
||||
font-family: sans-serif;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* these are for tree view when used as main index */
|
||||
|
||||
.directory {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.directory h3 {
|
||||
margin: 0px;
|
||||
margin-top: 1em;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
/*
|
||||
The following two styles can be used to replace the root node title
|
||||
with an image of your choice. Simply uncomment the next two styles,
|
||||
specify the name of your image and be sure to set 'height' to the
|
||||
proper pixel height of your image.
|
||||
*/
|
||||
|
||||
/*
|
||||
.directory h3.swap {
|
||||
height: 61px;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("yourimage.gif");
|
||||
}
|
||||
.directory h3.swap span {
|
||||
display: none;
|
||||
}
|
||||
*/
|
||||
|
||||
.directory > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.directory p {
|
||||
margin: 0px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.directory div {
|
||||
display: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.directory img {
|
||||
vertical-align: -30%;
|
||||
}
|
||||
|
||||
/* these are for tree view when not used as main index */
|
||||
|
||||
.directory-alt {
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.directory-alt h3 {
|
||||
margin: 0px;
|
||||
margin-top: 1em;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
.directory-alt > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.directory-alt p {
|
||||
margin: 0px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.directory-alt div {
|
||||
display: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.directory-alt img {
|
||||
vertical-align: -30%;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
div.dynheader {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
address {
|
||||
font-style: normal;
|
||||
color: #2A3D61;
|
||||
}
|
||||
|
||||
table.doxtable {
|
||||
border-collapse:collapse;
|
||||
}
|
||||
|
||||
table.doxtable td, table.doxtable th {
|
||||
border: 1px solid #2D4068;
|
||||
padding: 3px 7px 2px;
|
||||
}
|
||||
|
||||
table.doxtable th {
|
||||
background-color: #374F7F;
|
||||
color: #FFFFFF;
|
||||
font-size: 110%;
|
||||
padding-bottom: 4px;
|
||||
padding-top: 5px;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.tabsearch {
|
||||
top: 0px;
|
||||
left: 10px;
|
||||
height: 36px;
|
||||
background-image: url('tab_b.png');
|
||||
z-index: 101;
|
||||
overflow: hidden;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.navpath ul
|
||||
{
|
||||
font-size: 11px;
|
||||
background-image:url('tab_b.png');
|
||||
background-repeat:repeat-x;
|
||||
height:30px;
|
||||
line-height:30px;
|
||||
color:#8AA0CC;
|
||||
border:solid 1px #C2CDE4;
|
||||
overflow:hidden;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
.navpath li
|
||||
{
|
||||
list-style-type:none;
|
||||
float:left;
|
||||
padding-left:10px;
|
||||
padding-right:15px;
|
||||
background-image:url('bc_s.png');
|
||||
background-repeat:no-repeat;
|
||||
background-position:right;
|
||||
color:#364D7C;
|
||||
}
|
||||
|
||||
.navpath li.navelem a
|
||||
{
|
||||
height:32px;
|
||||
display:block;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.navpath li.navelem a:hover
|
||||
{
|
||||
color:#6884BD;
|
||||
}
|
||||
|
||||
.navpath li.footer
|
||||
{
|
||||
list-style-type:none;
|
||||
float:right;
|
||||
padding-left:10px;
|
||||
padding-right:15px;
|
||||
background-image:none;
|
||||
background-repeat:no-repeat;
|
||||
background-position:right;
|
||||
color:#364D7C;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
|
||||
div.summary
|
||||
{
|
||||
float: right;
|
||||
font-size: 8pt;
|
||||
padding-right: 5px;
|
||||
width: 50%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.summary a
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.ingroups
|
||||
{
|
||||
font-size: 8pt;
|
||||
padding-left: 5px;
|
||||
width: 50%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.ingroups a
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.header
|
||||
{
|
||||
background-image:url('nav_h.png');
|
||||
background-repeat:repeat-x;
|
||||
background-color: #F9FAFC;
|
||||
margin: 0px;
|
||||
border-bottom: 1px solid #C4CFE5;
|
||||
}
|
||||
|
||||
div.headertitle
|
||||
{
|
||||
padding: 5px 5px 5px 10px;
|
||||
}
|
||||
|
||||
dl
|
||||
{
|
||||
padding: 0 0 0 10px;
|
||||
}
|
||||
|
||||
dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
|
||||
{
|
||||
border-left:4px solid;
|
||||
padding: 0 0 0 6px;
|
||||
}
|
||||
|
||||
dl.note
|
||||
{
|
||||
border-color: #D0C000;
|
||||
}
|
||||
|
||||
dl.warning, dl.attention
|
||||
{
|
||||
border-color: #FF0000;
|
||||
}
|
||||
|
||||
dl.pre, dl.post, dl.invariant
|
||||
{
|
||||
border-color: #00D000;
|
||||
}
|
||||
|
||||
dl.deprecated
|
||||
{
|
||||
border-color: #505050;
|
||||
}
|
||||
|
||||
dl.todo
|
||||
{
|
||||
border-color: #00C0E0;
|
||||
}
|
||||
|
||||
dl.test
|
||||
{
|
||||
border-color: #3030E0;
|
||||
}
|
||||
|
||||
dl.bug
|
||||
{
|
||||
border-color: #C08050;
|
||||
}
|
||||
|
||||
#projectlogo
|
||||
{
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
#projectlogo img
|
||||
{
|
||||
border: 0px none;
|
||||
}
|
||||
|
||||
#projectname
|
||||
{
|
||||
font: 300% Tahoma, Arial,sans-serif;
|
||||
margin: 0px;
|
||||
padding: 2px 0px;
|
||||
}
|
||||
|
||||
#projectbrief
|
||||
{
|
||||
font: 120% Tahoma, Arial,sans-serif;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#projectnumber
|
||||
{
|
||||
font: 50% Tahoma, Arial,sans-serif;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#titlearea
|
||||
{
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #5373B4;
|
||||
}
|
||||
|
||||
.image
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dotgraph
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mscgraph
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.caption
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.8 KiB |
@ -1,76 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: File List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">File List</div> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all files with brief descriptions:</div><table>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="array_8h.html">array.h</a></td><td class="indexvalue">Array functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="bit-ops_8h.html">bit-ops.h</a></td><td class="indexvalue">Bit operations </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="channel_8h.html">channel.h</a></td><td class="indexvalue">Channel functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="color_8h.html">color.h</a></td><td class="indexvalue">Color functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="curve-cache_8h.html">curve-cache.h</a></td><td class="indexvalue">Curve caching functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="curve_8h.html">curve.h</a></td><td class="indexvalue">Curve functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="dither_8h.html">dither.h</a></td><td class="indexvalue">Dither functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-intl-internal_8h.html">gutenprint-intl-internal.h</a></td><td class="indexvalue">Internationalisation functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-intl_8h.html">gutenprint-intl.h</a></td><td class="indexvalue">Internationalisation functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-module_8h.html">gutenprint-module.h</a></td><td class="indexvalue">Gutenprint module header </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint-version_8h.html">gutenprint-version.h</a></td><td class="indexvalue">Version functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="gutenprint_8h.html">gutenprint.h</a></td><td class="indexvalue">Gutenprint master header </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="image_8h.html">image.h</a></td><td class="indexvalue">Image functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="list_8h.html">list.h</a></td><td class="indexvalue">Generic list functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="module_8h.html">module.h</a></td><td class="indexvalue">Module functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="mxml_8h.html">mxml.h</a></td><td class="indexvalue">Mini-XML XML parsing functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="paper_8h.html">paper.h</a></td><td class="indexvalue">Paper size functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="path_8h.html">path.h</a></td><td class="indexvalue">Simple directory path functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="printers_8h.html">printers.h</a></td><td class="indexvalue">Printer functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="sequence_8h.html">sequence.h</a></td><td class="indexvalue">Sequence functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="string-list_8h.html">string-list.h</a></td><td class="indexvalue">String list functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="util_8h.html">util.h</a></td><td class="indexvalue">Utility functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="vars_8h.html">vars.h</a></td><td class="indexvalue">Print job functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="weave_8h.html">weave.h</a></td><td class="indexvalue">Softweave functions </td></tr>
|
||||
<tr><td class="indexkey">include/gutenprint/<a class="el" href="xml_8h.html">xml.h</a></td><td class="indexvalue">XML tree functions </td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,567 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="classes.html"><span>Data Structure Index</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="#index_a"><span>a</span></a></li>
|
||||
<li><a href="#index_b"><span>b</span></a></li>
|
||||
<li><a href="#index_c"><span>c</span></a></li>
|
||||
<li><a href="#index_d"><span>d</span></a></li>
|
||||
<li><a href="#index_e"><span>e</span></a></li>
|
||||
<li><a href="#index_f"><span>f</span></a></li>
|
||||
<li><a href="#index_g"><span>g</span></a></li>
|
||||
<li><a href="#index_h"><span>h</span></a></li>
|
||||
<li><a href="#index_i"><span>i</span></a></li>
|
||||
<li><a href="#index_j"><span>j</span></a></li>
|
||||
<li><a href="#index_l"><span>l</span></a></li>
|
||||
<li><a href="#index_m"><span>m</span></a></li>
|
||||
<li><a href="#index_n"><span>n</span></a></li>
|
||||
<li><a href="#index_o"><span>o</span></a></li>
|
||||
<li><a href="#index_p"><span>p</span></a></li>
|
||||
<li><a href="#index_r"><span>r</span></a></li>
|
||||
<li><a href="#index_s"><span>s</span></a></li>
|
||||
<li><a href="#index_t"><span>t</span></a></li>
|
||||
<li><a href="#index_u"><span>u</span></a></li>
|
||||
<li><a href="#index_v"><span>v</span></a></li>
|
||||
<li><a href="#index_w"><span>w</span></a></li>
|
||||
<li><a href="#index_x"><span>x</span></a></li>
|
||||
<li><a href="#index_y"><span>y</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
|
||||
<li>array
|
||||
: <a class="el" href="structstp__parameter__t.html#a28aef58241d3a500968ca65df099ee3a">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>attrs
|
||||
: <a class="el" href="structstp__mxml__value__s.html#a69974b612f59fd3ef1d5db85db2d1a07">stp_mxml_value_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
|
||||
<li>base
|
||||
: <a class="el" href="structdither__matrix__impl.html#a331debb887e076f8b52952ba6cc2b50b">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>bit_pattern
|
||||
: <a class="el" href="structstp__dotsize.html#a8d5273395d0e27004f779de0ea81ff23">stp_dotsize</a>
|
||||
</li>
|
||||
<li>boolean
|
||||
: <a class="el" href="structstp__parameter__t.html#a74aaa2515728660657133ca3191e422c">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>bottom
|
||||
: <a class="el" href="structstp__papersize__t.html#a9c7fcf4d0bac23817b6f56996fed4043">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>bounds
|
||||
: <a class="el" href="structstp__parameter__t.html#abb297424036e868212f5086d5c5235fe">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>bytes
|
||||
: <a class="el" href="structstp__dither__matrix__normal.html#ad72d088edfe3223c2df8fd4fb6178b98">stp_dither_matrix_normal</a>
|
||||
, <a class="el" href="structstp__raw__t.html#a5e4620104d47e7e593d75d1ebc977407">stp_raw_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#ab963ddf7c0826bd3cc316c2375f1205b">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#ad4d85727401505eab74e3e667f4a38f4">stp_dither_matrix_short</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
|
||||
<li>category
|
||||
: <a class="el" href="structstp__parameter__t.html#a2cb67e4324a017746ca9bfda772aa50f">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>channel
|
||||
: <a class="el" href="structstp__parameter__t.html#a79bc0b76d5d5e238ddd205aa4a97ebad">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>child
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a44550ea8d68a483ccc130c58b66ddd33">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>class
|
||||
: <a class="el" href="structstp__module.html#a4ebc727be1ec8edaaa1b25415a3932e3">stp_module</a>
|
||||
</li>
|
||||
<li>colorfuncs
|
||||
: <a class="el" href="structstp__color.html#a4442d36d0bcf746130f82ffe6f90147f">stp_color</a>
|
||||
</li>
|
||||
<li>comment
|
||||
: <a class="el" href="structstp__papersize__t.html#a5cdc973122b8cc2e612d2dee306cbf1d">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__module.html#ab60ac536d9ec7b3a306cddf4c06e18bb">stp_module</a>
|
||||
</li>
|
||||
<li>conclude
|
||||
: <a class="el" href="structstp__image.html#a5d2385711b303e055258c28f42ab7f4c">stp_image</a>
|
||||
</li>
|
||||
<li>count
|
||||
: <a class="el" href="structstp__cached__curve__t.html#a99b772c3f4db71d58a4ee2315e712f04">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>curve
|
||||
: <a class="el" href="structstp__cached__curve__t.html#ae9b4170bfafe7d85b36689cbd8eea41e">stp_cached_curve_t</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#ad64f0c31d200d3d413725621b3ef9133">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
|
||||
<li>d_cache
|
||||
: <a class="el" href="structstp__cached__curve__t.html#a59c26647178724471f383dea6e85f8ae">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>data
|
||||
: <a class="el" href="structstp__dither__matrix__short.html#af4f6b5634ea79cf694782e35a8d7607d">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#a52acbda296a57a6087852eab62bc62db">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__raw__t.html#a36151f67569592aeac5c549a2a0daa2a">stp_raw_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#ae67cb37136c5e9d9c4b1a44cd2dab87b">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>dbl
|
||||
: <a class="el" href="structstp__parameter__t.html#a12fc8869d3056687e576af63c6fbd675">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>deflt
|
||||
: <a class="el" href="structstp__parameter__t.html#a79042d88fa0ab284a8e3e4ad7b969f90">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>describe_output
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a444ec86f3fe02ac479cbf2fc152d3423">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>describe_parameter
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#abf691142b608f4f02f33283dd3e67bae">stp_colorfuncs_t</a>
|
||||
</li>
|
||||
<li>describe_resolution
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a18e0da9638360173e0d75d839ce72b92">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>dimension
|
||||
: <a class="el" href="structstp__parameter__t.html#a29505a2b48cd755e10cedf01f3683d61">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>dot_sizes
|
||||
: <a class="el" href="structstp__shade.html#a5057a856d4a6f7095af66b8cefc3cdc3">stp_shade</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
|
||||
<li>element
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#ad4d8442bb433ac3da208e22ff0eaccf7">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>end_job
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a81fa6b507a316a8d6d7404b29920936e">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>end_pos
|
||||
: <a class="el" href="structstp__linebounds__t.html#a9bc2a60779ccf4ac3d90d47441e883ab">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>exp
|
||||
: <a class="el" href="structdither__matrix__impl.html#adb0e7fb4b5e5149f0815af448676df8b">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
|
||||
<li>fast_mask
|
||||
: <a class="el" href="structdither__matrix__impl.html#a8c7141e2e35f6cc14896d23d15a81914">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>fini
|
||||
: <a class="el" href="structstp__module.html#ae04ff0565f8ebd56b383917b602ffc4a">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
|
||||
<li>get_appname
|
||||
: <a class="el" href="structstp__image.html#a56636ad7c0dbf0a82284241f796d95cd">stp_image</a>
|
||||
</li>
|
||||
<li>get_external_options
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a1aee9299429a813e60c7c131ccf93c74">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>get_row
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#af00aab442da969ffa5c6c1e592bad7cd">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__image.html#a8f7f8fb5826f52b8bd820f422c583350">stp_image</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
|
||||
<li>handle
|
||||
: <a class="el" href="structstp__module.html#a1a96aa2db220972e124717cc6dd03c8e">stp_module</a>
|
||||
</li>
|
||||
<li>height
|
||||
: <a class="el" href="structstp__image.html#a4977ad211581999a3f3290983929cce9">stp_image</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a040d59e39abdef9b12c929734fb7a08c">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>help
|
||||
: <a class="el" href="structstp__parameter__t.html#a9f0637d6b97f0daa3122840eb2bd13db">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
|
||||
<li>i_own
|
||||
: <a class="el" href="structdither__matrix__impl.html#a78152fe120c430f6400b731e5c722bd3">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>imageable_area
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a68c9339cc1b74382ec07eed78c2bd501">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>index
|
||||
: <a class="el" href="structdither__matrix__impl.html#ab744f40c883acc93ad0afbf5f048f27a">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>init
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#aa10cf47dc6db374ef209d0d96592b1fe">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__image.html#ace69bf25344a814cabea38afa4527086">stp_image</a>
|
||||
, <a class="el" href="structstp__module.html#afa7d4259940b8d42a36f14108f504944">stp_module</a>
|
||||
</li>
|
||||
<li>integer
|
||||
: <a class="el" href="structstp__parameter__t.html#a32ee2ba322a0b7d16520f52ded591cc5">stp_parameter_t</a>
|
||||
, <a class="el" href="unionstp__mxml__value__u.html#a9540870864c06f2bf901024b7cc9048d">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>is_active
|
||||
: <a class="el" href="structstp__parameter__t.html#a8b1af01f0874c79b6dbc4d0eca432952">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>is_mandatory
|
||||
: <a class="el" href="structstp__parameter__t.html#ace4d02e3665f9cdfe83ed7dd559e1c1a">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
|
||||
<li>jet
|
||||
: <a class="el" href="structstp__weave__t.html#a31163b246a77f7959161edb6dd9ff61e">stp_weave_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
|
||||
<li>last_child
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a5fb356e73f91b24211882f42cbbe7a08">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>last_x
|
||||
: <a class="el" href="structdither__matrix__impl.html#af0728348e6da1cf904204ef88e0a5853">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_x_mod
|
||||
: <a class="el" href="structdither__matrix__impl.html#a16f516218f0c5a31a1eac49e5c57add5">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_y
|
||||
: <a class="el" href="structdither__matrix__impl.html#ac1a83c82c364098dce631ec7174574be">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_y_mod
|
||||
: <a class="el" href="structdither__matrix__impl.html#ad03881dd78211b5bcb1a62453c060d2e">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>left
|
||||
: <a class="el" href="structstp__papersize__t.html#a9ceb7ef01ea56c990eddbef4140b34a0">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>limit
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a36e471ee24b92cfd67390a025cbc427e">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>list_parameters
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#a14c6ae1a87ba1ba33f88fa71038f9ec9">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__printfuncs__t.html#a19dc0ba4351a154cf9450ac4fce1ca1a">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>logicalpassstart
|
||||
: <a class="el" href="structstp__weave__t.html#a1e50ffa910d33a365572ceb93f0197c6">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#ae93d9d32f282f62426160626ff6c5ca3">stp_pass_t</a>
|
||||
</li>
|
||||
<li>long_name
|
||||
: <a class="el" href="structstp__color.html#ab7c0a627b31ebfb97fd1db2677032479">stp_color</a>
|
||||
</li>
|
||||
<li>lower
|
||||
: <a class="el" href="structstp__double__bound__t.html#aa00903ee6e04e01b6b2bb7033e3c76ce">stp_double_bound_t</a>
|
||||
, <a class="el" href="structstp__int__bound__t.html#ac5ae98fad865ad6d4816016e233f5a53">stp_int_bound_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
|
||||
<li>major
|
||||
: <a class="el" href="structstp__module__version.html#a15add43e03d0e1624f40c083fa958692">stp_module_version</a>
|
||||
</li>
|
||||
<li>matrix
|
||||
: <a class="el" href="structdither__matrix__impl.html#ae28102f9e3d3cfb8eb48d9e69e807f96">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>maximum_imageable_area
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a3661a4612e62e8e5aef31eaab345675c">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>media_size
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a102e995ff1ce583f84e38409852bf95f">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>minor
|
||||
: <a class="el" href="structstp__module__version.html#aeced49a93c5e461fa95f809ad077fced">stp_module_version</a>
|
||||
</li>
|
||||
<li>missingstartrows
|
||||
: <a class="el" href="structstp__weave__t.html#af60b909adb3f9efb541be500c08cf87e">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a462d1714bab638212fcae32b869c11d2">stp_pass_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
|
||||
<li>name
|
||||
: <a class="el" href="structstp__module.html#a32e2db7046f281afd6748afe111aee76">stp_module</a>
|
||||
, <a class="el" href="structstp__mxml__attr__s.html#a4ea32ac1f797cf7722bf3e8638b21dee">stp_mxml_attr_s</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a660431e579bf100782f7164b45597982">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__param__string__t.html#ac4ccea0dded827b9acdb2d22aa25857b">stp_param_string_t</a>
|
||||
, <a class="el" href="structstp__mxml__value__s.html#a959d5315fd98119aa5d23d2b8d307c58">stp_mxml_value_s</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#a092430e582e7560fb532f546f78ca70c">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>ncolors
|
||||
: <a class="el" href="structstp__lineactive__t.html#a266bdeb14e62fb5b17a31746ad511761">stp_lineactive_t</a>
|
||||
, <a class="el" href="structstp__linecount__t.html#a69275ad8687438976d07950fa65a1728">stp_linecount_t</a>
|
||||
, <a class="el" href="structstp__lineoff__t.html#a97c5a2281b3cddb9c546e8299ea4e2b0">stp_lineoff_t</a>
|
||||
, <a class="el" href="structstp__linebufs__t.html#a5ad1c52050c8d71da5609d2526854696">stp_linebufs_t</a>
|
||||
, <a class="el" href="structstp__linebounds__t.html#adc4641abb41a9204c258a380aa00b7f4">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>next
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a8831071db5a4b4df95ea3c5c2e95476b">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>num_attrs
|
||||
: <a class="el" href="structstp__mxml__value__s.html#af29b9bbc769c278dad18ff2cb098ef6a">stp_mxml_value_s</a>
|
||||
</li>
|
||||
<li>numsizes
|
||||
: <a class="el" href="structstp__shade.html#a8e68774d99e3eecb76f06f7704f1eb90">stp_shade</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
|
||||
<li>opaque
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#aca8f6bf03f29248dee0b8d364454d051">stp_mxml_value_u</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
|
||||
<li>p_class
|
||||
: <a class="el" href="structstp__parameter__t.html#a410388e541bdb14fbd0af2984e229217">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>p_level
|
||||
: <a class="el" href="structstp__parameter__t.html#a2a4a1195c06243e08acb03475fb1e7cc">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>p_type
|
||||
: <a class="el" href="structstp__parameter__t.html#aebe5dea02843240fe03461abf007f154">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>paper_size_type
|
||||
: <a class="el" href="structstp__papersize__t.html#a35412f4b1f65ab4697a6b2fb640d4576">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>paper_unit
|
||||
: <a class="el" href="structstp__papersize__t.html#a5692b27332297abca9e4715e3e9e3ce8">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>parameters
|
||||
: <a class="el" href="structstp__printfuncs__t.html#ac4eab991ca917968e0f264b7105faaa4">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>parent
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a353df68e26a33380dcacda213a741487">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>pass
|
||||
: <a class="el" href="structstp__weave__t.html#a2536ce303e27f679c4afd6c33eea8d07">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#afdb7d267dad9bfc69e8deb86da07ee7b">stp_pass_t</a>
|
||||
</li>
|
||||
<li>physpassend
|
||||
: <a class="el" href="structstp__weave__t.html#a3041aa5f7a90d0d7d82d1b2406044bb3">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a4d75f7e07ebbffb75c2a7f36f43b3c9e">stp_pass_t</a>
|
||||
</li>
|
||||
<li>physpassstart
|
||||
: <a class="el" href="structstp__weave__t.html#aaec693e98c7587da452ac604b675be3c">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a0da3d73932d6c07aceaf4bce93cf6163">stp_pass_t</a>
|
||||
</li>
|
||||
<li>prescaled
|
||||
: <a class="el" href="structstp__dither__matrix__generic.html#a478d54ddf9ba50e783ddec1532a0eff6">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#a042561ad856d67506fe81b1bbbffd966">stp_dither_matrix_normal</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a755361acae80fa4cba01a1cc71638274">stp_dither_matrix_short</a>
|
||||
</li>
|
||||
<li>prev
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a2174125dc205e7c760e4e8c9c9048ddf">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>print
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a7704d7a1e997039deedfdf76a353c35d">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>printer_list
|
||||
: <a class="el" href="structstp__family.html#a6e4f0c216f5ced14a819fbacdb26547d">stp_family</a>
|
||||
</li>
|
||||
<li>printfuncs
|
||||
: <a class="el" href="structstp__family.html#ad29f00ba3565e93c138b00e4a48cde77">stp_family</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
|
||||
<li>read_only
|
||||
: <a class="el" href="structstp__parameter__t.html#a4421135f9985be49d156cbc9aa74c710">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>real
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#a3f253397958ad919a1fc97c42a58bc67">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>rep
|
||||
: <a class="el" href="structstp__image.html#ab18e6ee35037589bf485213022e2d871">stp_image</a>
|
||||
</li>
|
||||
<li>reset
|
||||
: <a class="el" href="structstp__image.html#a7bb2244368c6b1e07d27afb3dd249ffd">stp_image</a>
|
||||
</li>
|
||||
<li>right
|
||||
: <a class="el" href="structstp__papersize__t.html#a6899599f2f940e95e03545ff71e2b4c5">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>row
|
||||
: <a class="el" href="structstp__weave__t.html#a708ad2c7d2f76b864fe92b9e0582eece">stp_weave_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
|
||||
<li>s_cache
|
||||
: <a class="el" href="structstp__cached__curve__t.html#ac55d549f6d2f567ba84ecb9e0417f074">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>short_name
|
||||
: <a class="el" href="structstp__color.html#a23ed4d11629625e2ad24b124c36c7fab">stp_color</a>
|
||||
</li>
|
||||
<li>start_job
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a5c99986ad02cbcc4dce313bc7f5293fc">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>start_pos
|
||||
: <a class="el" href="structstp__linebounds__t.html#ab46a1a4ec130dd043009fb96b0115467">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>str
|
||||
: <a class="el" href="structstp__parameter__t.html#abfe1adab94129fefdafe9e64be135fb6">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>string
|
||||
: <a class="el" href="structstp__mxml__text__s.html#aef1865e8cab7d5ab175c6e67f122be15">stp_mxml_text_s</a>
|
||||
</li>
|
||||
<li>subpass
|
||||
: <a class="el" href="structstp__pass__t.html#aa4a3363d8de9121ba3d8bf28076b1c89">stp_pass_t</a>
|
||||
</li>
|
||||
<li>syms
|
||||
: <a class="el" href="structstp__module.html#a0e7297a93920d8f6849718d0a32fa2ba">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
|
||||
<li>text
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#a82c76c9aca350baca3b72723d0a4e99d">stp_mxml_value_u</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a26e8b5d0ce282614f128dd9d4aeaf9f6">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#a396e4980926c200e9ce4454f19e7311a">stp_parameter_t</a>
|
||||
, <a class="el" href="structstp__param__string__t.html#adb032e80e118c233adb9f27544920bd1">stp_param_string_t</a>
|
||||
</li>
|
||||
<li>top
|
||||
: <a class="el" href="structstp__papersize__t.html#a7fc8acdb1d905d6ca4a0b9b247a6c48e">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>total_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a54645c1c4edad222cf3f5aba03cdfae5">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>type
|
||||
: <a class="el" href="structstp__mxml__node__s.html#ae1bff9adee67699067516eee014a7510">stp_mxml_node_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
|
||||
<li>upper
|
||||
: <a class="el" href="structstp__double__bound__t.html#a07d734f8f82f059460cee55927b0216c">stp_double_bound_t</a>
|
||||
, <a class="el" href="structstp__int__bound__t.html#aa71bcebaae24712ee7a66955b345de19">stp_int_bound_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
|
||||
<li>v
|
||||
: <a class="el" href="structstp__lineoff__t.html#a88bbe86454fbda432487952640948328">stp_lineoff_t</a>
|
||||
, <a class="el" href="structstp__lineactive__t.html#a5bb5843aa2a4817ef84fb83714b200f3">stp_lineactive_t</a>
|
||||
, <a class="el" href="structstp__linebufs__t.html#a485ecae7a892476331d31079d33b9891">stp_linebufs_t</a>
|
||||
, <a class="el" href="structstp__linecount__t.html#a2164f4045d892c45105f5780c80489a4">stp_linecount_t</a>
|
||||
</li>
|
||||
<li>value
|
||||
: <a class="el" href="structstp__mxml__node__s.html#aad44d6b2fe0842de0bbf1312035372cd">stp_mxml_node_s</a>
|
||||
, <a class="el" href="structstp__mxml__attr__s.html#a25554324bd8ccf8e9558e4705eda0daa">stp_mxml_attr_s</a>
|
||||
, <a class="el" href="structstp__dotsize.html#ad259e8d169a7d140e4964b80790c7ddd">stp_dotsize</a>
|
||||
, <a class="el" href="structstp__shade.html#a07a72426c7bcbf22f1cc253a97a453d4">stp_shade</a>
|
||||
</li>
|
||||
<li>verify
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a948b6d7219dbb30f47a93eef2f85fde2">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>verify_this_parameter
|
||||
: <a class="el" href="structstp__parameter__t.html#a56100203c262c60d4cb18c7a49cde27d">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>version
|
||||
: <a class="el" href="structstp__module.html#ae2038239913d3ddbece919082501c8d0">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
|
||||
<li>whitespace
|
||||
: <a class="el" href="structstp__mxml__text__s.html#a76bcfbb8c3de4e1c597468d51ef47184">stp_mxml_text_s</a>
|
||||
</li>
|
||||
<li>width
|
||||
: <a class="el" href="structstp__papersize__t.html#aedcca3776ddeb5ed815df3aa112147dd">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__image.html#a890033525988e15f4f4a0b4132e5f19b">stp_image</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
|
||||
<li>x
|
||||
: <a class="el" href="structstp__curve__point__t.html#a92b13b94109b1270563a1116dc19b926">stp_curve_point_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a81e0b20e763080b79faa837a00cac832">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#a6b8bd1cc589c2195f055e5a57a05e03a">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#ab9564690be42859d88ea264a29321af3">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>x_offset
|
||||
: <a class="el" href="structdither__matrix__impl.html#a665c02056a2d046a15aab462492d9dbc">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>x_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a063e3b3617c3a9b4883f3b01cd7dfb48">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
|
||||
<li>y
|
||||
: <a class="el" href="structstp__curve__point__t.html#a132b1e8be20525667ece971d02f60b9d">stp_curve_point_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a2bbc6c72006541250ba23b48bcab60e8">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#aaaddcac2ca33a3e822ded567bbbecfb9">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#a410560f5186761cb7430f5b0a804b09c">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>y_offset
|
||||
: <a class="el" href="structdither__matrix__impl.html#a844cb19ea61f035bc2a21536f6f392c4">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>y_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a33370af30d4c6cb0e441744c8d1c3686">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,567 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="classes.html"><span>Data Structure Index</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="#index_a"><span>a</span></a></li>
|
||||
<li><a href="#index_b"><span>b</span></a></li>
|
||||
<li><a href="#index_c"><span>c</span></a></li>
|
||||
<li><a href="#index_d"><span>d</span></a></li>
|
||||
<li><a href="#index_e"><span>e</span></a></li>
|
||||
<li><a href="#index_f"><span>f</span></a></li>
|
||||
<li><a href="#index_g"><span>g</span></a></li>
|
||||
<li><a href="#index_h"><span>h</span></a></li>
|
||||
<li><a href="#index_i"><span>i</span></a></li>
|
||||
<li><a href="#index_j"><span>j</span></a></li>
|
||||
<li><a href="#index_l"><span>l</span></a></li>
|
||||
<li><a href="#index_m"><span>m</span></a></li>
|
||||
<li><a href="#index_n"><span>n</span></a></li>
|
||||
<li><a href="#index_o"><span>o</span></a></li>
|
||||
<li><a href="#index_p"><span>p</span></a></li>
|
||||
<li><a href="#index_r"><span>r</span></a></li>
|
||||
<li><a href="#index_s"><span>s</span></a></li>
|
||||
<li><a href="#index_t"><span>t</span></a></li>
|
||||
<li><a href="#index_u"><span>u</span></a></li>
|
||||
<li><a href="#index_v"><span>v</span></a></li>
|
||||
<li><a href="#index_w"><span>w</span></a></li>
|
||||
<li><a href="#index_x"><span>x</span></a></li>
|
||||
<li><a href="#index_y"><span>y</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
 
|
||||
|
||||
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
|
||||
<li>array
|
||||
: <a class="el" href="structstp__parameter__t.html#a28aef58241d3a500968ca65df099ee3a">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>attrs
|
||||
: <a class="el" href="structstp__mxml__value__s.html#a69974b612f59fd3ef1d5db85db2d1a07">stp_mxml_value_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
|
||||
<li>base
|
||||
: <a class="el" href="structdither__matrix__impl.html#a331debb887e076f8b52952ba6cc2b50b">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>bit_pattern
|
||||
: <a class="el" href="structstp__dotsize.html#a8d5273395d0e27004f779de0ea81ff23">stp_dotsize</a>
|
||||
</li>
|
||||
<li>boolean
|
||||
: <a class="el" href="structstp__parameter__t.html#a74aaa2515728660657133ca3191e422c">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>bottom
|
||||
: <a class="el" href="structstp__papersize__t.html#a9c7fcf4d0bac23817b6f56996fed4043">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>bounds
|
||||
: <a class="el" href="structstp__parameter__t.html#abb297424036e868212f5086d5c5235fe">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>bytes
|
||||
: <a class="el" href="structstp__dither__matrix__normal.html#ad72d088edfe3223c2df8fd4fb6178b98">stp_dither_matrix_normal</a>
|
||||
, <a class="el" href="structstp__raw__t.html#a5e4620104d47e7e593d75d1ebc977407">stp_raw_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#ab963ddf7c0826bd3cc316c2375f1205b">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#ad4d85727401505eab74e3e667f4a38f4">stp_dither_matrix_short</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
|
||||
<li>category
|
||||
: <a class="el" href="structstp__parameter__t.html#a2cb67e4324a017746ca9bfda772aa50f">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>channel
|
||||
: <a class="el" href="structstp__parameter__t.html#a79bc0b76d5d5e238ddd205aa4a97ebad">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>child
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a44550ea8d68a483ccc130c58b66ddd33">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>class
|
||||
: <a class="el" href="structstp__module.html#a4ebc727be1ec8edaaa1b25415a3932e3">stp_module</a>
|
||||
</li>
|
||||
<li>colorfuncs
|
||||
: <a class="el" href="structstp__color.html#a4442d36d0bcf746130f82ffe6f90147f">stp_color</a>
|
||||
</li>
|
||||
<li>comment
|
||||
: <a class="el" href="structstp__papersize__t.html#a5cdc973122b8cc2e612d2dee306cbf1d">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__module.html#ab60ac536d9ec7b3a306cddf4c06e18bb">stp_module</a>
|
||||
</li>
|
||||
<li>conclude
|
||||
: <a class="el" href="structstp__image.html#a5d2385711b303e055258c28f42ab7f4c">stp_image</a>
|
||||
</li>
|
||||
<li>count
|
||||
: <a class="el" href="structstp__cached__curve__t.html#a99b772c3f4db71d58a4ee2315e712f04">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>curve
|
||||
: <a class="el" href="structstp__cached__curve__t.html#ae9b4170bfafe7d85b36689cbd8eea41e">stp_cached_curve_t</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#ad64f0c31d200d3d413725621b3ef9133">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
|
||||
<li>d_cache
|
||||
: <a class="el" href="structstp__cached__curve__t.html#a59c26647178724471f383dea6e85f8ae">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>data
|
||||
: <a class="el" href="structstp__dither__matrix__short.html#af4f6b5634ea79cf694782e35a8d7607d">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#a52acbda296a57a6087852eab62bc62db">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__raw__t.html#a36151f67569592aeac5c549a2a0daa2a">stp_raw_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#ae67cb37136c5e9d9c4b1a44cd2dab87b">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>dbl
|
||||
: <a class="el" href="structstp__parameter__t.html#a12fc8869d3056687e576af63c6fbd675">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>deflt
|
||||
: <a class="el" href="structstp__parameter__t.html#a79042d88fa0ab284a8e3e4ad7b969f90">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>describe_output
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a444ec86f3fe02ac479cbf2fc152d3423">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>describe_parameter
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#abf691142b608f4f02f33283dd3e67bae">stp_colorfuncs_t</a>
|
||||
</li>
|
||||
<li>describe_resolution
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a18e0da9638360173e0d75d839ce72b92">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>dimension
|
||||
: <a class="el" href="structstp__parameter__t.html#a29505a2b48cd755e10cedf01f3683d61">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>dot_sizes
|
||||
: <a class="el" href="structstp__shade.html#a5057a856d4a6f7095af66b8cefc3cdc3">stp_shade</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
|
||||
<li>element
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#ad4d8442bb433ac3da208e22ff0eaccf7">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>end_job
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a81fa6b507a316a8d6d7404b29920936e">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>end_pos
|
||||
: <a class="el" href="structstp__linebounds__t.html#a9bc2a60779ccf4ac3d90d47441e883ab">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>exp
|
||||
: <a class="el" href="structdither__matrix__impl.html#adb0e7fb4b5e5149f0815af448676df8b">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
|
||||
<li>fast_mask
|
||||
: <a class="el" href="structdither__matrix__impl.html#a8c7141e2e35f6cc14896d23d15a81914">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>fini
|
||||
: <a class="el" href="structstp__module.html#ae04ff0565f8ebd56b383917b602ffc4a">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
|
||||
<li>get_appname
|
||||
: <a class="el" href="structstp__image.html#a56636ad7c0dbf0a82284241f796d95cd">stp_image</a>
|
||||
</li>
|
||||
<li>get_external_options
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a1aee9299429a813e60c7c131ccf93c74">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>get_row
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#af00aab442da969ffa5c6c1e592bad7cd">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__image.html#a8f7f8fb5826f52b8bd820f422c583350">stp_image</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
|
||||
<li>handle
|
||||
: <a class="el" href="structstp__module.html#a1a96aa2db220972e124717cc6dd03c8e">stp_module</a>
|
||||
</li>
|
||||
<li>height
|
||||
: <a class="el" href="structstp__image.html#a4977ad211581999a3f3290983929cce9">stp_image</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a040d59e39abdef9b12c929734fb7a08c">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>help
|
||||
: <a class="el" href="structstp__parameter__t.html#a9f0637d6b97f0daa3122840eb2bd13db">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
|
||||
<li>i_own
|
||||
: <a class="el" href="structdither__matrix__impl.html#a78152fe120c430f6400b731e5c722bd3">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>imageable_area
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a68c9339cc1b74382ec07eed78c2bd501">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>index
|
||||
: <a class="el" href="structdither__matrix__impl.html#ab744f40c883acc93ad0afbf5f048f27a">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>init
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#aa10cf47dc6db374ef209d0d96592b1fe">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__image.html#ace69bf25344a814cabea38afa4527086">stp_image</a>
|
||||
, <a class="el" href="structstp__module.html#afa7d4259940b8d42a36f14108f504944">stp_module</a>
|
||||
</li>
|
||||
<li>integer
|
||||
: <a class="el" href="structstp__parameter__t.html#a32ee2ba322a0b7d16520f52ded591cc5">stp_parameter_t</a>
|
||||
, <a class="el" href="unionstp__mxml__value__u.html#a9540870864c06f2bf901024b7cc9048d">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>is_active
|
||||
: <a class="el" href="structstp__parameter__t.html#a8b1af01f0874c79b6dbc4d0eca432952">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>is_mandatory
|
||||
: <a class="el" href="structstp__parameter__t.html#ace4d02e3665f9cdfe83ed7dd559e1c1a">stp_parameter_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
|
||||
<li>jet
|
||||
: <a class="el" href="structstp__weave__t.html#a31163b246a77f7959161edb6dd9ff61e">stp_weave_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
|
||||
<li>last_child
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a5fb356e73f91b24211882f42cbbe7a08">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>last_x
|
||||
: <a class="el" href="structdither__matrix__impl.html#af0728348e6da1cf904204ef88e0a5853">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_x_mod
|
||||
: <a class="el" href="structdither__matrix__impl.html#a16f516218f0c5a31a1eac49e5c57add5">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_y
|
||||
: <a class="el" href="structdither__matrix__impl.html#ac1a83c82c364098dce631ec7174574be">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>last_y_mod
|
||||
: <a class="el" href="structdither__matrix__impl.html#ad03881dd78211b5bcb1a62453c060d2e">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>left
|
||||
: <a class="el" href="structstp__papersize__t.html#a9ceb7ef01ea56c990eddbef4140b34a0">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>limit
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a36e471ee24b92cfd67390a025cbc427e">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>list_parameters
|
||||
: <a class="el" href="structstp__colorfuncs__t.html#a14c6ae1a87ba1ba33f88fa71038f9ec9">stp_colorfuncs_t</a>
|
||||
, <a class="el" href="structstp__printfuncs__t.html#a19dc0ba4351a154cf9450ac4fce1ca1a">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>logicalpassstart
|
||||
: <a class="el" href="structstp__weave__t.html#a1e50ffa910d33a365572ceb93f0197c6">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#ae93d9d32f282f62426160626ff6c5ca3">stp_pass_t</a>
|
||||
</li>
|
||||
<li>long_name
|
||||
: <a class="el" href="structstp__color.html#ab7c0a627b31ebfb97fd1db2677032479">stp_color</a>
|
||||
</li>
|
||||
<li>lower
|
||||
: <a class="el" href="structstp__double__bound__t.html#aa00903ee6e04e01b6b2bb7033e3c76ce">stp_double_bound_t</a>
|
||||
, <a class="el" href="structstp__int__bound__t.html#ac5ae98fad865ad6d4816016e233f5a53">stp_int_bound_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
|
||||
<li>major
|
||||
: <a class="el" href="structstp__module__version.html#a15add43e03d0e1624f40c083fa958692">stp_module_version</a>
|
||||
</li>
|
||||
<li>matrix
|
||||
: <a class="el" href="structdither__matrix__impl.html#ae28102f9e3d3cfb8eb48d9e69e807f96">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>maximum_imageable_area
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a3661a4612e62e8e5aef31eaab345675c">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>media_size
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a102e995ff1ce583f84e38409852bf95f">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>minor
|
||||
: <a class="el" href="structstp__module__version.html#aeced49a93c5e461fa95f809ad077fced">stp_module_version</a>
|
||||
</li>
|
||||
<li>missingstartrows
|
||||
: <a class="el" href="structstp__weave__t.html#af60b909adb3f9efb541be500c08cf87e">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a462d1714bab638212fcae32b869c11d2">stp_pass_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
|
||||
<li>name
|
||||
: <a class="el" href="structstp__module.html#a32e2db7046f281afd6748afe111aee76">stp_module</a>
|
||||
, <a class="el" href="structstp__mxml__attr__s.html#a4ea32ac1f797cf7722bf3e8638b21dee">stp_mxml_attr_s</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a660431e579bf100782f7164b45597982">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__param__string__t.html#ac4ccea0dded827b9acdb2d22aa25857b">stp_param_string_t</a>
|
||||
, <a class="el" href="structstp__mxml__value__s.html#a959d5315fd98119aa5d23d2b8d307c58">stp_mxml_value_s</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#a092430e582e7560fb532f546f78ca70c">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>ncolors
|
||||
: <a class="el" href="structstp__lineactive__t.html#a266bdeb14e62fb5b17a31746ad511761">stp_lineactive_t</a>
|
||||
, <a class="el" href="structstp__linecount__t.html#a69275ad8687438976d07950fa65a1728">stp_linecount_t</a>
|
||||
, <a class="el" href="structstp__lineoff__t.html#a97c5a2281b3cddb9c546e8299ea4e2b0">stp_lineoff_t</a>
|
||||
, <a class="el" href="structstp__linebufs__t.html#a5ad1c52050c8d71da5609d2526854696">stp_linebufs_t</a>
|
||||
, <a class="el" href="structstp__linebounds__t.html#adc4641abb41a9204c258a380aa00b7f4">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>next
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a8831071db5a4b4df95ea3c5c2e95476b">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>num_attrs
|
||||
: <a class="el" href="structstp__mxml__value__s.html#af29b9bbc769c278dad18ff2cb098ef6a">stp_mxml_value_s</a>
|
||||
</li>
|
||||
<li>numsizes
|
||||
: <a class="el" href="structstp__shade.html#a8e68774d99e3eecb76f06f7704f1eb90">stp_shade</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
|
||||
<li>opaque
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#aca8f6bf03f29248dee0b8d364454d051">stp_mxml_value_u</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
|
||||
<li>p_class
|
||||
: <a class="el" href="structstp__parameter__t.html#a410388e541bdb14fbd0af2984e229217">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>p_level
|
||||
: <a class="el" href="structstp__parameter__t.html#a2a4a1195c06243e08acb03475fb1e7cc">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>p_type
|
||||
: <a class="el" href="structstp__parameter__t.html#aebe5dea02843240fe03461abf007f154">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>paper_size_type
|
||||
: <a class="el" href="structstp__papersize__t.html#a35412f4b1f65ab4697a6b2fb640d4576">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>paper_unit
|
||||
: <a class="el" href="structstp__papersize__t.html#a5692b27332297abca9e4715e3e9e3ce8">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>parameters
|
||||
: <a class="el" href="structstp__printfuncs__t.html#ac4eab991ca917968e0f264b7105faaa4">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>parent
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a353df68e26a33380dcacda213a741487">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>pass
|
||||
: <a class="el" href="structstp__weave__t.html#a2536ce303e27f679c4afd6c33eea8d07">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#afdb7d267dad9bfc69e8deb86da07ee7b">stp_pass_t</a>
|
||||
</li>
|
||||
<li>physpassend
|
||||
: <a class="el" href="structstp__weave__t.html#a3041aa5f7a90d0d7d82d1b2406044bb3">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a4d75f7e07ebbffb75c2a7f36f43b3c9e">stp_pass_t</a>
|
||||
</li>
|
||||
<li>physpassstart
|
||||
: <a class="el" href="structstp__weave__t.html#aaec693e98c7587da452ac604b675be3c">stp_weave_t</a>
|
||||
, <a class="el" href="structstp__pass__t.html#a0da3d73932d6c07aceaf4bce93cf6163">stp_pass_t</a>
|
||||
</li>
|
||||
<li>prescaled
|
||||
: <a class="el" href="structstp__dither__matrix__generic.html#a478d54ddf9ba50e783ddec1532a0eff6">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#a042561ad856d67506fe81b1bbbffd966">stp_dither_matrix_normal</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a755361acae80fa4cba01a1cc71638274">stp_dither_matrix_short</a>
|
||||
</li>
|
||||
<li>prev
|
||||
: <a class="el" href="structstp__mxml__node__s.html#a2174125dc205e7c760e4e8c9c9048ddf">stp_mxml_node_s</a>
|
||||
</li>
|
||||
<li>print
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a7704d7a1e997039deedfdf76a353c35d">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>printer_list
|
||||
: <a class="el" href="structstp__family.html#a6e4f0c216f5ced14a819fbacdb26547d">stp_family</a>
|
||||
</li>
|
||||
<li>printfuncs
|
||||
: <a class="el" href="structstp__family.html#ad29f00ba3565e93c138b00e4a48cde77">stp_family</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
|
||||
<li>read_only
|
||||
: <a class="el" href="structstp__parameter__t.html#a4421135f9985be49d156cbc9aa74c710">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>real
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#a3f253397958ad919a1fc97c42a58bc67">stp_mxml_value_u</a>
|
||||
</li>
|
||||
<li>rep
|
||||
: <a class="el" href="structstp__image.html#ab18e6ee35037589bf485213022e2d871">stp_image</a>
|
||||
</li>
|
||||
<li>reset
|
||||
: <a class="el" href="structstp__image.html#a7bb2244368c6b1e07d27afb3dd249ffd">stp_image</a>
|
||||
</li>
|
||||
<li>right
|
||||
: <a class="el" href="structstp__papersize__t.html#a6899599f2f940e95e03545ff71e2b4c5">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>row
|
||||
: <a class="el" href="structstp__weave__t.html#a708ad2c7d2f76b864fe92b9e0582eece">stp_weave_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
|
||||
<li>s_cache
|
||||
: <a class="el" href="structstp__cached__curve__t.html#ac55d549f6d2f567ba84ecb9e0417f074">stp_cached_curve_t</a>
|
||||
</li>
|
||||
<li>short_name
|
||||
: <a class="el" href="structstp__color.html#a23ed4d11629625e2ad24b124c36c7fab">stp_color</a>
|
||||
</li>
|
||||
<li>start_job
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a5c99986ad02cbcc4dce313bc7f5293fc">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>start_pos
|
||||
: <a class="el" href="structstp__linebounds__t.html#ab46a1a4ec130dd043009fb96b0115467">stp_linebounds_t</a>
|
||||
</li>
|
||||
<li>str
|
||||
: <a class="el" href="structstp__parameter__t.html#abfe1adab94129fefdafe9e64be135fb6">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>string
|
||||
: <a class="el" href="structstp__mxml__text__s.html#aef1865e8cab7d5ab175c6e67f122be15">stp_mxml_text_s</a>
|
||||
</li>
|
||||
<li>subpass
|
||||
: <a class="el" href="structstp__pass__t.html#aa4a3363d8de9121ba3d8bf28076b1c89">stp_pass_t</a>
|
||||
</li>
|
||||
<li>syms
|
||||
: <a class="el" href="structstp__module.html#a0e7297a93920d8f6849718d0a32fa2ba">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
|
||||
<li>text
|
||||
: <a class="el" href="unionstp__mxml__value__u.html#a82c76c9aca350baca3b72723d0a4e99d">stp_mxml_value_u</a>
|
||||
, <a class="el" href="structstp__papersize__t.html#a26e8b5d0ce282614f128dd9d4aeaf9f6">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__parameter__t.html#a396e4980926c200e9ce4454f19e7311a">stp_parameter_t</a>
|
||||
, <a class="el" href="structstp__param__string__t.html#adb032e80e118c233adb9f27544920bd1">stp_param_string_t</a>
|
||||
</li>
|
||||
<li>top
|
||||
: <a class="el" href="structstp__papersize__t.html#a7fc8acdb1d905d6ca4a0b9b247a6c48e">stp_papersize_t</a>
|
||||
</li>
|
||||
<li>total_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a54645c1c4edad222cf3f5aba03cdfae5">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>type
|
||||
: <a class="el" href="structstp__mxml__node__s.html#ae1bff9adee67699067516eee014a7510">stp_mxml_node_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
|
||||
<li>upper
|
||||
: <a class="el" href="structstp__double__bound__t.html#a07d734f8f82f059460cee55927b0216c">stp_double_bound_t</a>
|
||||
, <a class="el" href="structstp__int__bound__t.html#aa71bcebaae24712ee7a66955b345de19">stp_int_bound_t</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
|
||||
<li>v
|
||||
: <a class="el" href="structstp__lineoff__t.html#a88bbe86454fbda432487952640948328">stp_lineoff_t</a>
|
||||
, <a class="el" href="structstp__lineactive__t.html#a5bb5843aa2a4817ef84fb83714b200f3">stp_lineactive_t</a>
|
||||
, <a class="el" href="structstp__linebufs__t.html#a485ecae7a892476331d31079d33b9891">stp_linebufs_t</a>
|
||||
, <a class="el" href="structstp__linecount__t.html#a2164f4045d892c45105f5780c80489a4">stp_linecount_t</a>
|
||||
</li>
|
||||
<li>value
|
||||
: <a class="el" href="structstp__mxml__node__s.html#aad44d6b2fe0842de0bbf1312035372cd">stp_mxml_node_s</a>
|
||||
, <a class="el" href="structstp__mxml__attr__s.html#a25554324bd8ccf8e9558e4705eda0daa">stp_mxml_attr_s</a>
|
||||
, <a class="el" href="structstp__dotsize.html#ad259e8d169a7d140e4964b80790c7ddd">stp_dotsize</a>
|
||||
, <a class="el" href="structstp__shade.html#a07a72426c7bcbf22f1cc253a97a453d4">stp_shade</a>
|
||||
</li>
|
||||
<li>verify
|
||||
: <a class="el" href="structstp__printfuncs__t.html#a948b6d7219dbb30f47a93eef2f85fde2">stp_printfuncs_t</a>
|
||||
</li>
|
||||
<li>verify_this_parameter
|
||||
: <a class="el" href="structstp__parameter__t.html#a56100203c262c60d4cb18c7a49cde27d">stp_parameter_t</a>
|
||||
</li>
|
||||
<li>version
|
||||
: <a class="el" href="structstp__module.html#ae2038239913d3ddbece919082501c8d0">stp_module</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
|
||||
<li>whitespace
|
||||
: <a class="el" href="structstp__mxml__text__s.html#a76bcfbb8c3de4e1c597468d51ef47184">stp_mxml_text_s</a>
|
||||
</li>
|
||||
<li>width
|
||||
: <a class="el" href="structstp__papersize__t.html#aedcca3776ddeb5ed815df3aa112147dd">stp_papersize_t</a>
|
||||
, <a class="el" href="structstp__image.html#a890033525988e15f4f4a0b4132e5f19b">stp_image</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
|
||||
<li>x
|
||||
: <a class="el" href="structstp__curve__point__t.html#a92b13b94109b1270563a1116dc19b926">stp_curve_point_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a81e0b20e763080b79faa837a00cac832">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#a6b8bd1cc589c2195f055e5a57a05e03a">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#ab9564690be42859d88ea264a29321af3">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>x_offset
|
||||
: <a class="el" href="structdither__matrix__impl.html#a665c02056a2d046a15aab462492d9dbc">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>x_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a063e3b3617c3a9b4883f3b01cd7dfb48">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
|
||||
<li>y
|
||||
: <a class="el" href="structstp__curve__point__t.html#a132b1e8be20525667ece971d02f60b9d">stp_curve_point_t</a>
|
||||
, <a class="el" href="structstp__dither__matrix__short.html#a2bbc6c72006541250ba23b48bcab60e8">stp_dither_matrix_short</a>
|
||||
, <a class="el" href="structstp__dither__matrix__generic.html#aaaddcac2ca33a3e822ded567bbbecfb9">stp_dither_matrix_generic</a>
|
||||
, <a class="el" href="structstp__dither__matrix__normal.html#a410560f5186761cb7430f5b0a804b09c">stp_dither_matrix_normal</a>
|
||||
</li>
|
||||
<li>y_offset
|
||||
: <a class="el" href="structdither__matrix__impl.html#a844cb19ea61f035bc2a21536f6f392c4">dither_matrix_impl</a>
|
||||
</li>
|
||||
<li>y_size
|
||||
: <a class="el" href="structdither__matrix__impl.html#a33370af30d4c6cb0e441744c8d1c3686">dither_matrix_impl</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
|
||||
<li>_
|
||||
: <a class="el" href="group__intl__internal.html#ga32a3cf3d9dd914f5aeeca5423c157934">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#ga32a3cf3d9dd914f5aeeca5423c157934">gutenprint-intl.h</a>
|
||||
</li>
|
||||
<li>__attribute__
|
||||
: <a class="el" href="util_8h.html#a9d373a9b65ff25b2db84c07394e1c212">util.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li class="current"><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
|
||||
<li>bindtextdomain
|
||||
: <a class="el" href="group__intl__internal.html#gadd6dfc1077058ff26d79cdb18099d58a">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#gadd6dfc1077058ff26d79cdb18099d58a">gutenprint-intl.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,85 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li class="current"><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
|
||||
<li>compdata_t
|
||||
: <a class="el" href="group__vars.html#ga4d45b95baae036143e14adfc0014f562">vars.h</a>
|
||||
</li>
|
||||
<li>CURVE_CACHE_FAST_COUNT
|
||||
: <a class="el" href="curve-cache_8h.html#a70b70d0328c61f17925402a4b1bb9a90">curve-cache.h</a>
|
||||
</li>
|
||||
<li>CURVE_CACHE_FAST_DOUBLE
|
||||
: <a class="el" href="curve-cache_8h.html#af79c26492d6e6fd726498df18cae11fe">curve-cache.h</a>
|
||||
</li>
|
||||
<li>CURVE_CACHE_FAST_USHORT
|
||||
: <a class="el" href="curve-cache_8h.html#a4b278e86a2f914893307fb20cf218e7c">curve-cache.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,81 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li class="current"><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
|
||||
<li>dcgettext
|
||||
: <a class="el" href="group__intl__internal.html#ga115dd6a6dd9d7a249f6374a7c06deef5">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#ga115dd6a6dd9d7a249f6374a7c06deef5">gutenprint-intl.h</a>
|
||||
</li>
|
||||
<li>dgettext
|
||||
: <a class="el" href="group__intl__internal.html#gad24abc7110e1bdf384dc2ef2b63e5d07">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#gad24abc7110e1bdf384dc2ef2b63e5d07">gutenprint-intl.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li class="current"><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
|
||||
<li>gettext
|
||||
: <a class="el" href="group__intl__internal.html#ga83b8be0887dede025766d25e2bb884c6">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#ga83b8be0887dede025766d25e2bb884c6">gutenprint-intl.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li class="current"><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
|
||||
<li>N_
|
||||
: <a class="el" href="group__intl__internal.html#ga75278405e7f034d2b1af80bfd94675fe">gutenprint-intl-internal.h</a>
|
||||
, <a class="el" href="group__intl.html#ga75278405e7f034d2b1af80bfd94675fe">gutenprint-intl.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,100 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>libgutenprint API Reference: Globals</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.4 -->
|
||||
<div id="top">
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">libgutenprint API Reference <span id="projectnumber">5.2.7</span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow3" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||
<li><a href="globals_vars.html"><span>Variables</span></a></li>
|
||||
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
|
||||
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
|
||||
<li><a href="globals_defs.html"><span>Defines</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow4" class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="globals.html#index__"><span>_</span></a></li>
|
||||
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
|
||||
<li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li class="current"><a href="globals_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
|
||||
|
||||
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
|
||||
<li>PAPERSIZE_ENGLISH_EXTENDED
|
||||
: <a class="el" href="group__papersize.html#gga72e4619e373e38dc02dc452813b7b958a00b7e9a18afc172872861b26dbcc8cb8">paper.h</a>
|
||||
</li>
|
||||
<li>PAPERSIZE_ENGLISH_STANDARD
|
||||
: <a class="el" href="group__papersize.html#gga72e4619e373e38dc02dc452813b7b958adb394159413ade42022509cd3280fef3">paper.h</a>
|
||||
</li>
|
||||
<li>PAPERSIZE_METRIC_EXTENDED
|
||||
: <a class="el" href="group__papersize.html#gga72e4619e373e38dc02dc452813b7b958a62e2906a87fa4bcf32913943fd5b225a">paper.h</a>
|
||||
</li>
|
||||
<li>PAPERSIZE_METRIC_STANDARD
|
||||
: <a class="el" href="group__papersize.html#gga72e4619e373e38dc02dc452813b7b958a6d5868bc6707f8801ce4d584428c2ae8">paper.h</a>
|
||||
</li>
|
||||
<li>PAPERSIZE_TYPE_ENVELOPE
|
||||
: <a class="el" href="group__papersize.html#gga31255c4eebfaaf5cd319e5638a6a3069a660290248a563e7590202afd3ba68fb4">paper.h</a>
|
||||
</li>
|
||||
<li>PAPERSIZE_TYPE_STANDARD
|
||||
: <a class="el" href="group__papersize.html#gga31255c4eebfaaf5cd319e5638a6a3069a99d27f84f91d583c3e465e56c83fff2f">paper.h</a>
|
||||
</li>
|
||||
<li>PARAMETER_BAD
|
||||
: <a class="el" href="group__vars.html#ggac061852de3627383cd415cd80a979e02a326a171221148779ec7df761b3eee967">vars.h</a>
|
||||
</li>
|
||||
<li>PARAMETER_INACTIVE
|
||||
: <a class="el" href="group__vars.html#ggac061852de3627383cd415cd80a979e02a5cb96da6c2e3ae7187e85a1ef6e41fc6">vars.h</a>
|
||||
</li>
|
||||
<li>PARAMETER_OK
|
||||
: <a class="el" href="group__vars.html#ggac061852de3627383cd415cd80a979e02a2df363618282a9164433c0f212b18616">vars.h</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated by 
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
|
||||
</body>
|
||||
</html>
|