-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/111829/
-----------------------------------------------------------

(Updated Jan. 13, 2014, 12:39 a.m.)


Status
------

This change has been marked as submitted.


Review request for Okular and Albert Astals Cid.


Bugs: 268757
    http://bugs.kde.org/show_bug.cgi?id=268757


Repository: okular


Description
-------

This patch relies on master branch of LibKScreen.
This patch does not solve the problem in bug completely, but makes Okular 
behaviour more correct (see below).

The problem (in the bug) is that Okular uses fixed DPI for PDF rendering (72.0 
dots per inch) and therefore scale of rendered document becomes incorrect. With 
current mainline laptop screens having DPI easily twice larger than this 
constant (72), the problem shows itself quiet strongly.

Additional problems araise with multiscreen configuration, when 1) DPI of each 
individual screen may be different, and 2) there is no tools in Qt to detect 
DPI of individual screens in virtual desktop mode. Therefore XRandr has to be 
used for DPI detection. Raw XRandr is bad dependency for Okular and libkscreen 
is proposed instead.

This patch approach to the solution in the following way:
1. libkscreen detection staff is added to CMakeLists.txt and config.h
2. It changes Utils::realDpi() function to use libkscreen if present. With 
libkscreen the function looks for output that contains maximal part of given 
widget (suppose to be used for document rendering) and returns DPI of that 
screen.
3. Genenerator interface is extended by adding UtilizeDPI feature and setDPI() 
method, that is called by Document class right before calling loadXXX() if the 
generator supports this feature
4. Poppler generator is changed to support UtilizeDPI feature.
5. PageSizeMetric enum is extended with Pixels value to explicitly say that 
page size is defined in screen pixels (see my posts in the bug); Poppler 
generator uses this case.


To completetly fix the bug, Document must invalidate generated pixmaps after 
the widget movements into another screen. I do not know how to track this 
without subclassing the main window class. Therefore I decided to publish this 
part of work to get your responce, especially regarding item 3 (Generator class 
changes).

In the current state, manual reloading of a document after moving Okular to 
another screen fixes the scale, that is, in my eyes, is quiet helpful already.

Even if we subclass the Okular main window, I do not know what to do when 
Okular is used as KPart. 


Diffs
-----

  CMakeLists.txt 217337f 
  config-okular.h.cmake 7217f8d 
  core/document.cpp 3af92c8 
  core/generator.h a5a971b 
  core/generator.cpp 41beb92 
  core/generator_p.h b59293a 
  core/utils.h 8d5d5fc 
  core/utils.cpp 5dd8448 
  generators/poppler/generator_pdf.h 5d5853a 
  generators/poppler/generator_pdf.cpp 1a44523 

Diff: https://git.reviewboard.kde.org/r/111829/diff/


Testing
-------

Manual. In all screens, that report correct physical size to XRandr, size of 
documents is correct


Thanks,

Eugene Shalygin

_______________________________________________
Okular-devel mailing list
Okular-devel@kde.org
https://mail.kde.org/mailman/listinfo/okular-devel

Reply via email to