On Tue, 17 Apr 2007 10:24:36 +0200 Marc Weustink <[EMAIL PROTECTED]> wrote:
> Mattias Gaertner wrote: > > On Mon, 16 Apr 2007 22:46:49 +0200 > > Marc Weustink <[EMAIL PROTECTED]> wrote: > > > >> Mattias Gaertner wrote: > >>> On Mon, 16 Apr 2007 11:20:55 +0200 > >>> Marc Weustink <[EMAIL PROTECTED]> wrote: > >>> > >>>> Continuing my TRawImageQuestion. > >>>> > >>>> While implementing cursors and imagelists, Paul and I start to > >>>> get confused. It appears that Mask and Alpha are treated as > >>>> equal while in fact they are each others inverse. (An 1 in a > >>>> mask means that this part of the image is masked, not drawn, > >>>> where for alpha a 1 means opaque, fully drawn) > >>>> > >>>> A RawImageDesription describes the RGB and Alpha parts of an > >>>> image. It has also a flag that the Alpha is separate. This got > >>>> introduced since traditional windows has only an image and a > >>>> (1bpp) mask. When reading such image, the mask gets converted > >>>> into a 1bit separate alpha. > >>>> > >>>> With CreateBitmapFromRawImage the fun starts. It creates a bitmap > >>>> and mask handle form the rawimage. The maskhandle is created from > >>>> the (separate) alpha and is in fact returning an alpha handle and > >>>> not a maskhandle. On win32 this is nonsense since alpha is never > >>>> separated. So I think a Maskhandle should return what it means: a > >>>> handle to a Mask (and only in the case when the description had > >>>> the AlphaSeparate flag). > >>>> > >>>> Comments ? > >>> Maybe we need an enum, how to interpret the alpha value? > >> I was think on that also, but somehow didn't sound right. I don't > >> know exactly for all widgets, but as far as I can tell the > >> separate alpha is only used for win32 1bit masks. > >> If this is the case, then ignore my other mail since > >> TRawImage.MaskData is indeed MaskData. But then the AlphaSeparate, > >> AlphaBitsPerPixel, AlphaLineEnd, AlphaBitOrder and AlphaByteOrder > >> are not really Alpha, but Mask -> MaskSeparate (or HasMask), > >> MaskBitsPerPixel, MaskLineEnd, MaskBitOrder and MaskByteOrder > > > > True. > > What do we take instead of the enum? > > define: if Mask is separate, then it is opacity, otherwise > > transparency? > > Something like that. But IMO there is no such thing as MaskIsSeparate > since there won't be an included mask. HasMask is a better name I > think. ok. Will you change it? > And if we add MaskPrec and MaskShift: cardinal; then the Alpha > definition is complete independent of a Mask definition Ehm, but they are not independent, are they? You can not have both!? > BTW, why are the xxxPrec and xxxShift defined as Cardinal and not > byte ? Why should they? Mattias _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives