Hi there!
Another iteration on this print module design.
After IRC discussions we are really leaning toward using the Gtk+ print
API.
I have added a section about Color Management and the current questions
which remains to answer.
--
Pascal Obry / Magny Les Hameaux (78)
The best way to travel is by means of imagination
http://v2p.fr.eu.org
http://www.obry.net
gpg --keyserver keys.gnupg.net --recv-key F949BD3B
Design Notes for the Print Module
=================================
Version: 5
This is the initial goal for the print module. It supports a single print,
one image per page. Adding templates, multi-images per page, rotation... will
be discussed later if there is needs for it. But as dt is a professional photo
application I'm not sure this is a goal for dt. At least some other software
around are dedicated to "fun" printing.
On important goal after the first iteration is that dt should not add
dependencies if possible. This second design notes are using plain
Gtk+ services. No CUPS API, no Gutenprint or whatever. We rely on
what/how printers are configured on the systems. Be it on CUPS or
whatever and using whatever backend (hplip, gutenprint...).
=========
== GUI ==
=========
A first snapshot of the print module is available and propose:
/// LEFT
On the left the collect and image information modules.
/// CENTER
On the center the main display with the page and the image on it. This
center area is the print-preview and will display:
- the page itself
- the image on it
- the non-printable area materialized
- the user margins
We probably want the soft-proofing to work on this area.
/// RIGHT
On the right the printing control itself.
/// BOTTOM
The film-strip as for the develop and map module.
This controls on the right has 3 sections:
--
-- page --
--
A button to set the page settings using the Gtk+ dialog. Or better
we will integrate the controls into the UI. Easier to change the
printer and the page.
Four controls will be added to add some margins (top, bottom, left,
right). A possibility to set all margins together is provided.
Changing the borders will change the center display.
--
-- print --
--
This is the final print controls. We have:
- the intent
- the printer profile
- the style
The [print] button using Gtk+ dialog.
The print button will open the print dialog and will basiacally do
the following:
- open the standard Gtk+ print dialog
here the user can select/change every option of the printer
(including the resolution)
the user either Cancel or Print, if the later the following
is done:
- export to 8bit or 16bit format (using export profile + intent
and possibly the selected style)
- apply the printer profile if any
- create the GtkPrintJob and send to printer
Let's try an ASCII art for this menu:
------------------------------------------
| |
| printers [ Stylus Pro 3880 ]^ |
| |
| /page |
| papers [ A4 ]^ |
| (o) portrait (o) landscape |
| |
| borders (x) symetrical |
| top <--------- 10% ----------> |
| bottom <--------- 10% ----------> |
| left <--------- 10% ----------> |
| right <--------- 10% ----------> |
| |
| /print|
| |
| format (o) 8bit (o) 16bit |
| export profile [ sRGB ]^ |
| intent [ perceptual ]^ |
| style [ none ]^ |
| |
| printer profile [ epson-3880.icc ]^ |
| intent [ perceptual ]^ |
| |
| (print) |
| |
------------------------------------------
Where: [ ]^ - dropdown box
<---> - slider
( ) - button
(x) - a select box
(o) - radio buttons
==============
== Internal ==
==============
* The internal code will be mostly on those files:
src/views/print.c - the print module itself
src/libs/print_settings.c - the print dialog as seen on the right
src/imageio/storage/print.c - do the print, a print io not seen on
export dialog (add a new flag to the
imageio api to hide it)
An important point is to remember all the printer settings (first section
above, the driver settings) from one session to the other. Gtk has
support for this.
* Best image resolution
We want to derive the best image resolution from the selected printer
resolution. The following equation must be verified:
printer_resolution (dpi)
------------------------ = 2 x n
image_resolution (ppi)
dpi : dot per inch
ppi : pixel per inch
So we have:
printer resolution | image resolution
----------------------------------------
1440 | 360
4800 | 300
5760 | 360
======================
== Color Management ==
======================
The goal is to be sure that the color profile for the printer in the
dialog above will be the only color management involved. That is no
other color management should happen from dt up to the printer.
- CUPS : the print queue
It seems that CUPS does not do color management by itself but there
is provision for it to record a printer profile to colord. This
profile can be used by the CUPS filters (gstoraster, imagetoraster,
pdftoraster, rastertopdf...).
How to disable CM?
Is that even needed?
How to know that CM is on or off?
- Gutenprint backend
does not do any color management.
------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
darktable-devel mailing list
darktable-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/darktable-devel