Section 7.1 of the OpenVG spec says:
“Each scissoring rectangle is specified as an integer 4-tuple of the form (minX, minY,
width, height), where minX and minY are inclusive. A rectangle with width ? 0 or height ? 0 is ignored”
Yet the A40102 conformance test will set all sorts of crazy values (including width ? 0 and height ? 0) for the scissor rect and it will fail the test if it doesn’t get similar crazy results back with vgGetiv and vgGetfv. That behavior doesn’t agree with “ignored” as stated above. Thus a driver must store a full set of insane scissor rect values that it can not use internally just to pass this conformance test. Where is the value in that for the API?
Would it be more useful to have the test allow for sane values to be returned? Also, from an application’s standpoint, if it was sending garbage and reading back the sane number that the driver was using, it would have a way of knowing that it was sending garbage and how the driver had interpreted the numbers.
I believe the sections your quoting is describing rasterization. So if you set crazy values, they “are” the values of the scissor rect, however if the set width/height is <0, then nothing is rendered. The vgSet* shouldn’t return an error for crazy values, so the setting of crazy values is valid, and so the vgGet* should be able get the crazy values back.
Thanks for taking the time to respond Joel.
I can see your point but what is strange here is it is incorrect to return the exact crazy values back. Instead what is returned must be modified to mimic how the values are stored/returned by the RI. Admittedly the process is complicated by type conversions etc., so having a defined behavior is welcomed, but in this case the driver must dedicate extra resources to something that has no relavence to its function. On the other hand there is much value in knowing that the driver is making the right decisions in converting the crazy numbers into sane ones - something that isn’t being tested here.
It’s really a minor issue so I appologize for even dragging it out this far.
It’s possible the RI may not completely agree with the conformance. But I’d be inclined to implement thing such that they past conformance, rather then trying to replicate the RI behavior.