user32/tests: Added tests for DrawIcon and DrawIconEx (try 6)
Joel Holdsworth
joel at airwebreathe.org.uk
Thu Jun 18 09:28:12 CDT 2009
> I don't think you need such a complex test, we don't really care about
> the exact reason why it's broken.
Agreed. Fielding all the different deviations is getting quite
convoluted. The modern/legacy stuff will need to remain because in some
of these tests windows has made step changes - e.g. adding alpha support
in 2000 and later.
> Also I think you should be using the
> relaxed color matching everywhere, even for the working cases. We may
> want to round things differently in Wine too, and there's no reason to
> require exact pixel values, testing a few high bits should be enough to
> determine that blending has taken place.
I agree with you on this as well, exact pixel values are fragile, and
5-bit accuracy seems an acceptable margin of error. However, this still
doesn't deal with the case in old windows, at 8-bit or less, the bitmap
is rendered via the logical palette. In this case I found that even
2-bit accuracy sometimes wasn't sufficient - palette matching often
caused channel variances of over 25%!
Taking this into account would yield:
ok ((result & 0x00F8F8F8) == (modern_expected & 0x00F8F8F8) || /* Windows 2000 and up */
broken((result & 0x00F8F8F8) == (legacy_expected & 0x00F8F8F8)) || /* Windows NT 4.0, 9X and below */
broken(GetDeviceCaps(hdc, BITSPIXEL) <= 8), ... /* Windows NT 4.0, 9X and below at 8bpp or less*/
What do you think?
Joel
More information about the wine-devel
mailing list