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