After discussion on IRC and with Pascal de Bruijn here are updated notes.
The important changes are in the exported/intermediate format where we need
to be able to control the intent/profile.

-- 
  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: 4

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, not Gutenprint or whatever. We realy 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 (the following points are going to change after IRC
     discussion):

       - create a cairo surface

       - put the image into this surface

       - ?? apply the printer profile + intent (should be possible, but how?)

       - 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

The following options are hard-coded:

   - 16bit for handling the intermediate rendering
     it we feel this to be an option


==============
== 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
------------------------------------------------------------------------------
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

Reply via email to