Hello,
2008/3/19, Shachar Shemesh [EMAIL PROTECTED]:
Maarten Lankhorst wrote:
Hi Shachar,
I've removed the bi-directional entry from summer of code. I don't
think it is a good project because it involves a lot of changes in
pretty much all wine user controls.
Actually, I don't think any touching of the actual user controls is
involved at all. I think the first bullet (which can be all we want for
this year) only really involves the ExtTextOut function, as well as the
Uniscribe functions. No user controls are touched at all.
I already did this work, exttextout relies on the reference bidi
implementation now. Took about 3 days to adapt the reference
implementation to wine. (dlls/gdi32/bidi.c)
The only way to do this would be
by using the pango library to do the laying out of text,
I was about to say that the code is practically already there, but I
really think you should know that, being how it was you who put it there
:-). I really think that if we came this far, we had better split the
Unicode algorithm into the components it requires and put it into
Uniscribe. I don't think we need any reliance on external libraries
(pango, fribidi, or any other) for that.
There are all kinds of rules that tell how it work, a real rendering
engine is complicated to write, and since there are already a few
working, tried and tested engines out there we don't want to write our
own.
but I'm not
even sure whether that is a good summer of code idea, since it would
need someone already very experienced with the plumbing of wine.
It would require someone to learn the BiDi algorithm and the Uniscribe
interface, but the reason I offered to mentor it was precisely so that
the student not have to follow the entire Wine structure. I really don't
believe this task is heavier than some of the Direct3D stuff on that page.
As I said, bidi is already implemented. A real uniscribe algorythm is
something we want to depend on as external library, because a proper
engine would be huge and impossible to maintain/debug.
-Maarten.