Battery applet and KIcon
Zack Rusin
zack at kde.org
Mon Feb 15 01:20:09 CET 2010
On Sunday 14 February 2010 18:24:51 Marco Martin wrote:
> > QRectF makeUniform(const QRect &orig,
> > const QRect &dst)
>
> oring and dist shouldn't them be QRectF in the signature?
only if we care about it being anywhere close to correct. definitely should :)
> ok, let's see if i got what this does :)
> if an element has the geometry(10.5, 10.5, 30,30), we want to render it at
> (0,0,30,30) we'll render at (0.5, 0.5, 29.5, 29.5) making aligned the edge
> in the oringin that would otherwise have been rendered between two pixels
>
> but don't quite understand why the size gets changed?
it shouldn't. i should've used moveCenter or such. the size should stay the
same, we just want to align it. basically just do the best we can within the
size that we were given.
all in all the size could and possibly should be changed by the offset itself,
but that could be fixed later.
so as you mentioned, it's easiest to see within identity transform:
orig = QRectF(0.5, 0.5, 32, 32)
dst = QRectF(10, 10, 32, 32)
hence transform = identity, offset = 0.5 and so
true dst = QRectF(10.5, 10.5, 32, 32);
with scaling things get hairy, there are two possibilities here they are:
true dst = QRectF(
offset * div_w + dst.x(),
offset * div_h + dst.y(),
dst.width(), dst.height());
and
true dst = QRectF(
offset + offset * div_w + dst.x(),
offset + offset * div_h + dst.y(),
dst.width(), dst.height());
(btw, in res.adjust in the last email instead of "offset / div" it should say
offset * div).
for the case above that would be:
orig = QRectF(0.5, 0.5, 32, 32)
dst = QRectF(0, 0, 16, 16)
hence transform = scale(0.5, 0.5), offset = 0.5 * scale = 0.25 and so
true dst = QRectF(0.25, 0.25, 16, 16);
or
true dst = QRectF(0.75, 0.75, 16, 16);
the code i've sent in the other email does the first, but it's possible that #2
looks better or as mentioned in the last email it's possible that just
skipping the divisor looks ok so
true dst = QRectF(0.5, 0.5, 16, 16)
but i sorta doubt that because mathematically it doesn't seem to make sense to
me, but hey, when it comes to esthetic's lots of things doesn't make sense to
me.
z
More information about the Plasma-devel
mailing list