[Bug 421] Implement a DIB engine

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Jun 3 13:38:41 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=421





--- Comment #375 from el <elton at schiert.net>  2010-06-03 13:38:37 ---
OK, I know now what makes the outlined circles not show up correctly. It is the
way your current implementation alternates between HLine and SetPixel calls in
each step. This makes it possible for the HLine to overwrite perviously set
pixels, making the outline seem incomplete.
A proper implementation might probably have to do this: For each scanline
determine the (maximum) width and draw the corresponding HLine. After that do
all SetPixel calls on this line. Proceed to the next scanline, repeat.
It might be a bit simpler (but also a tad more ineffective) to draw the
complete inside of the ellipse first and then draw all of the outline after
that.

Also in you current implementation you cannot write:
"else {//test ever done before if (physDev->penStyle != PS_NULL)"
Instead you have to check:
"if (physDev->penStyle != PS_NULL) {"
This is because both penStyle and brushStyle can be non-null simultaneously.

About the division by two and float/integer stuff:
I doubt that everything is done in float because of the speed penalty. It seems
quite possible that Windows uses (28.4) fixed point arithmetic for all
calculations.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list