> On Aug. 25, 2013, 4:13 p.m., Albert Astals Cid wrote: > > Ok, the code looks "sane" but there are two things that still make me > > unsure about this whole thing: > > > > * Why you need Pixels? > > In the bug you say "Points, but actually it is pixels, DIVIDED by 72." > > That is not true, the page size of a PDF is defined in points (well it's > > actually defined in UserUnits but that defaults to the Point value) > > Why do you say it's pixels DIVIDED by 72? > > I'd be happier if we could still have the PDF backend return stuff in > > points and have all the dpi conversion magic in the layers above it > > > > * I'm still undecided as of why we need the widget realDpi. Reasons: > > As far as I know (though my knowledge may not be very good :D) all the > > systems force you to have the same DPI in all the monitors, so having to > > pass the widget seems "nice it's going to do magic" when I move it to > > another monitor, but that's really not happening no? Or at least if there > > was a system in which you could have different screens with different > > monitors, we miss something so that when you move it from one monitor to > > another the dpi gets recalculated no? > > > > I know this may sound like I'm stalling the patch, but it is really not, I > > just want to make sure we end up with a patch that we're all happy and > > convinced with. > > Eugene Shalygin wrote: > > * Why you need Pixels? > Regarding the "pixels divided..." I'm not sure now :). The story had been > started with aim to get correct scale on screen, as you certainly remember. > To my understanding, Page::width() and Page::height() are in screen pixels > (at least it seems to me like this from reading of e.g. > PageView::updateItemSize()). If this is correct, PageView class should handle > screen DPI, and all generators should set page size in points (or in > something, that has a dimension). Will we go this way? > > > > * I'm still undecided as of why we need the widget realDpi. > I'm afraid I do not understand your comment completetly. I'll answwer on > question that I understood. > 1. The system can not "force" us to have the same DPI in all monitors, > since the system can not change physical DPI of the screen (at least in the > Universe #3 :D). > 2. We use widget object to get the monitor in which the display the pages > (and its current DPI). > >
I'm going to be on holiday most of september, so unless someone else takes care of this review you'll have to wait until I come back. - Albert ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/111829/#review38556 ----------------------------------------------------------- On Aug. 21, 2013, 12:56 a.m., Eugene Shalygin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/111829/ > ----------------------------------------------------------- > > (Updated Aug. 21, 2013, 12:56 a.m.) > > > Review request for Okular and Albert Astals Cid. > > > 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. > > > This addresses bug 268757. > http://bugs.kde.org/show_bug.cgi?id=268757 > > > 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: http://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