freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] How to draw FT_Bitmap to the ARGB image?


From: Wojciech Mamrak
Subject: Re: [ft] How to draw FT_Bitmap to the ARGB image?
Date: Wed, 4 Nov 2015 02:59:00 +0100

I am afraid this is the property of dual source blending - your
background must be opaque. If you can't satisfy this condition your
only option is to store the three alpha channels obtained from FT and
blend them with background later, when it is opaque (and eventually it
will be), or use normal alpha blending (one alpha channel).

regards

2015-11-03 23:08 GMT+01:00 John Found <address@hidden>:
> Hi. Thanks for the answer.
>
> On Tue, 3 Nov 2015 20:44:27 +0100
> Wojciech Mamrak <address@hidden> wrote:
>
>> Assuming C is non-pre-multiplied by alpha:
>> Fr = Fr/255 * Ca
>> Dr = Cr * Fr + Dr * (1 - Fr)
>> Da = Ca + Da * (1 - Ca)
>>
>> Assuming C is pre-multiplied by alpha:
>> Fr = Fr/255
>> Dr = Cr * Fr + Dr * (1 - Fr * Ca)
>> Da = Ca + Da * (1 - Ca)
>>
>
> Here is something wrong with these equations. (or with my understanding...)
>
> If we have fully transparent background:
>
> Da = 0, Drgb = 0
>
> and black color:
>
> Ca = 1, Crgb = 0
>
> ...then regardless of the values of Frgb, the result is always:
>
> Drgb=0 and Da = 1;
>
> i.e. we get black rectangles instead of glyphs.
>
> See the attachment for example. On this picture, the result bitmap is later 
> blended on gray background in order to make the result visible.
>
>
>> 2015-11-03 15:26 GMT+01:00 John Found <address@hidden>:
>> > I need to draw text on a transparent image with format ARGB, 
>> > pre-multiplied alpha.
>> >
>> > The rendered FT_Bitmap has format FT_PIXEL_MODE_LCD and I want the glyph 
>> > to be displayed in some color with transparency.
>> >
>> > So, for every pixel I have 3 numbers:
>> >
>> > Da, Dr, Dg, Db - destination pixel ARGB (the background image).
>> >     Fr, Fg, Fb - FreeType rendered pixel (FT_Bitmap rendered with 
>> > FT_RENDER_MODE_LCD)
>> > Ca, Cr, Cg, Cb - The color I want the glyph to be drawn.
>> >
>> > So, the question: How to properly combine these 3 numbers in order to get 
>> > the result bitmap pixel.
>> >
>> > A theory and math are welcome. If I understand the theory, I can write the 
>> > code.
>> >
>> > Best Regards.
>> > --
>> > http://fresh.flatassembler.net
>> > http://asm32.info
>> > John Found <address@hidden>
>> >
>> > _______________________________________________
>> > Freetype mailing list
>> > address@hidden
>> > https://lists.nongnu.org/mailman/listinfo/freetype
>
>
> --
> http://fresh.flatassembler.net
> http://asm32.info
> John Found <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]