[Vm-dev] BitBlt looking for rule blitting an alpha mask +
siguctua at gmail.com
Sun Jun 21 19:30:45 UTC 2009
2009/6/21 Juan Vuletich <juan at jvuletich.org>:
> Igor Stasenko wrote:
>> 2009/6/20 Juan Vuletich <juan at jvuletich.org <mailto:juan at jvuletich.org>>
>> Hi Folks,
>> Andreas Raab wrote:
>> It's utterly trivial to cache it. If you're using this for
>> font display you'll only have a few colors to deal with so the
>> cache won't be big.
>> You can see how to do all this in Cuis. It is what I do for font
>> rendering. Take a look at GrafPort >>
>> installStrikeFont:foregroundColor: . This works ok with source
>> forms of any depth. For 8 bpp (and lower), it is considered to
>> hold opacity (i.e. 1-alpha). It is trivial to adjust the colormaps
>> for alpha instead. Take a look at the execution path for
>> "(Preferences subPixelRenderFonts and: [ foregroundColor = Color
>> black or: [ Preferences subPixelRenderColorFonts ]]) ifTrue: [". I
>> use two passes of bitblt. The first one is rgbMul, the second is
>> rgbAdd. Together they do the proper AA as you specified it. This
>> only works for destForm of 16 or 32 bpp. On 8bpp or less
>> destination, I just use paint rule.
>> If you want to test it with a soureForm that includes only
>> opecity, evaluate
>> StrikeFont allInstances do: [ :f | f
>> setGlyphsDepthAtMost: 4 ].
>> You'll see that it works ok for any font color / background color
>> Thanks for reply, Juan.
>> Yes, i did the color mapping and using rule 24 to blit the 8-bit opacity
> You're right. The 'extra' stuff in Cuis is for subpixel AA. Many people
> feels it makes stuff look nicer, and FreeType does it nicely. It would be
> great if you implemented it as an option.
>> But i'm still unhappy with that: there is no reason for doing that , if
>> rule 41 would work as expected :(
> Rule 41 needs a bmp with alpha (not opacity). That makes it impossible to
> use the same form for any bitdepth, with or without subpixel or whole pixel
> My "two pass" approach is way more flexible. Play a bit with text rendering
> in Cuis. Experiment with fonts of different bit depths, on various Display
> depths, with the #subPixelRenderFonts and #subPixelRenderColorFonts
> preferences, and with various fonts / background colors. I believe I finally
> got it right, and that my approach deserves being used for rendering
> FreeType fonts too. I believe the flexibility outweighs the performance
> penalty of the second pass (that is not needed for black text, btw).
I will turn my eyes to subpixel(s) and other fancy stuff, after i will
have a basic case working.
For me its important to have a most common case to work fast. For
other cases (if nowaday users want to use a monochrome displays, or
8bit displays - well, such users require an urgent medication, instead
of software :)
> Juan Vuletich
Igor Stasenko AKA sig.
More information about the Vm-dev