Hi Keith,

Keith Curtis píše v Pá 13. 12. 2013 v 15:58 -0500:

> Good to hear from you. I've got a number of things in progress on my
> computer beyond the underlines
> (https://wiki.documentfoundation.org/Development/HiDpi) but I wait to
> get an API first as I'm just writing "if (1) //hidpi".

So now it's in :-) - as:

http://cgit.freedesktop.org/libreoffice/core/commit/?id=6b5cac1ca06a052061d2fe6acff1bc1e3cb45d57

I believe it is what we want here, as that should allow us to do the
changes to the painting methods as low as possible [but not lower, as
you pointed out below].  As an example, I have updated the drawing of
the wave line; but probably needs testing on an actual hi-dpi display if
it works as expected in all situations.

I think you similarly want to update the toolbars code; see
vcl/source/window/toolbox2.cxx - I believe you want to scale images by
mnDPIScaleFactor when setting them up (in InsertItem()'s or elsewhere).

> I personally don't think a floating point value is a good idea. At the
> lowest level, pixel line widths go to 2 or 3 and in the square case go
> to 4 or 9. I believe anything who wants more resolution should
> probably be working based on the system font size. The changes I'm
> making don't seem to need more than 3 and even 2 is plenty for all
> laptops today and into the distant future. Floating point arithmetic
> used to be a lot slower than integer as well but I don't know if that
> is still true ;-)

I don't think it is critical here, things like scaling the images will
take orders of magnitude more time than one single multiplication; then
again, really no need for floats as you say, so implemented the factor
as an integer, we can change it should the need be.

> I hope it is okay if I can write code that handles the 2x case but has
> no guarantees about any other value. I can't test what I can't see and
> there is a fair amount of work to get LibreOffice looking good and
> supporting variable-sized bitmaps at all. So if it were up to me, I'd
> just make it a boolean for a while, and focus / force that part to
> look great everywhere.

I'd say - go ahead, and just multiply by the mnDPIScaleFactor where you
see fit; ideally as close to vcl as possible - but of course for things
like the ruler or other custom controls, you have to do it where that
one is being drawn.

> My biggest concern wrt the API is that it has the right value out of
> the box. For example, what do normal Macs return for the system font
> size versus Retinas? What about on Windows? There is plenty of
> intelligence that can go into a bit.

No idea; at the moment I do just a simple:

std::max(1, (mpWindowImpl->mpFrameData->mnDPIY + 48) / 96);

but if the system provided a setting for that, it would be ideal I
guess.

> Putting the change in ImplDrawWaveLine is possible. My change is safer
> in that it mostly only touches the spelling / grammar which is the
> most noticeable issue. With ImplDrawWaveLine you have to worry about
> more callers, printers, etc. and possibilities for dirt on screen. I
> wouldn't necessarily recommend shifting down 2 pixels for the
> low-level drawing code, so maybe you'd still have to have changes in
> both places. ImplDrawWaveLine is a routine takes a pixel line width as
> input, so perhaps the policy decision should be above it. It seems
> sort of like putting the bitmap doubling logic into the BitBlt routine
> versus in the toolbar which loads the bitmaps.

Yeah, correct - ImplDrawWaveLine() was indeed too low :-)

> Working on this early next week would be great. I've got about 600
> more lines in 14 files to review that make a difference. There is a
> fair amount of low-hanging fruit. I am possibly stuck on two issues,
> but I plug away on it as I have free time.

Sure - much appreciated, thanks for that!  Would be great to see you on
#libreoffice-dev channel on irc.freenode.net in case you are stuck or
anything, that's the fastest way to resolve that [I am 'kendy' there].

> The hardest part is finding the actual line of code that have the bug.
> With my work, they are being marked which makes future work easier. I
> did see code that is possibly problematic in places like DecoView but
> I'm just focusing on the visible ones. Toolbar bitmaps are the most
> important. The Sidebar is the most broken. Do you think they will fix
> it?

Please see my toolbars related suggestion above; hopefully it'll work
for you.

> Anyway, I look forward to working through the issues soon because I
> have some time now and hopefully getting this into 4.2.

I am afraid we won't be able to make it to 4.2; it's too late after the
feature freeze :-(  Unless we'd find people to approve it as an
Experimental feature for 4.2?

Thank you again for your work on this!

All the best,
Kendy


_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to