Class TGrayscaleAlphaImage
Unit
Declaration
type TGrayscaleAlphaImage = class(TCastleImage)
Description
Grayscale image with an alpha channel. Each pixel is two bytes: grayscale + alpha.
Hierarchy
- TObject
- TEncodedImage
- TCastleImage
- TGrayscaleAlphaImage
Overview
Methods
procedure DrawFromCore(const Source: TCastleImage; const X, Y, SourceX, SourceY, SourceWidth, SourceHeight: Integer; const Mode: TDrawMode); override; |
|
function GetColors(const X, Y, Z: Integer): TCastleColor; override; |
|
procedure SetColors(const X, Y, Z: Integer; const C: TCastleColor); override; |
|
class function PixelSize: Cardinal; override; |
|
class function ColorComponentsCount: Cardinal; override; |
|
function ToGrayscaleImage: TGrayscaleImage; deprecated 'create TGrayscaleImage and use TGrayscaleImage.Assign'; |
|
function PixelPtr(const X, Y: Cardinal; const Z: Cardinal = 0): PVector2Byte; |
|
function RowPtr(const Y: Cardinal; const Z: Cardinal = 0): PVector2ByteArray; |
|
procedure InvertColors; override; |
|
procedure Clear(const Pixel: TVector4Byte); override; |
|
function IsClear(const Pixel: TVector4Byte): boolean; override; |
|
procedure Clear(const Pixel: TVector2Byte); reintroduce; overload; |
|
function IsClear(const Pixel: TVector2Byte): boolean; reintroduce; overload; |
|
function HasAlpha: boolean; override; |
|
function AlphaChannel( const AlphaTolerance: Byte): TAlphaChannel; override; |
|
function ToFpImage: TInternalCastleFpImage; override; |
|
procedure LerpWith(const Value: Single; SecondImage: TCastleImage); override; |
|
class procedure MixColors(const OutputColor: Pointer; const Weights: TVector4; const AColors: TVector4Pointer); override; |
|
procedure Assign(const Source: TCastleImage); override; |
|
procedure FillEllipse(const x, y: single; const aRadiusX, aRadiusY: single; const aColor: TCastleColor); override; |
|
procedure Ellipse(const x, y: single; const aRadiusX, aRadiusY: single; const aWidth: single; const aColor: TCastleColor); override; |
|
procedure FillRectangle(const x1, y1, x2, y2: single; const aColor: TCastleColor); override; |
|
procedure Rectangle(const x1, y1, x2, y2: single; const aWidth: single; const aColor: TCastleColor); override; |
|
procedure Line(const x1, y1, x2, y2: single; const aWidth: single; const aColor: TCastleColor); override; |
Properties
property Pixels: PVector2Byte read GetPixels; |
|
property GrayscaleAlphaPixels: PVector2Byte read GetPixels; deprecated 'use Pixels'; |
|
property PixelsArray: PVector2ByteArray read GetPixelsArray; |
Description
Methods
procedure DrawFromCore(const Source: TCastleImage; const X, Y, SourceX, SourceY, SourceWidth, SourceHeight: Integer; const Mode: TDrawMode); override; |
|
This item has no description. Showing description inherited from TCastleImage.DrawFromCore. Like DrawFrom, but can assume that all coordinates and sizes are valid. Override this to add copying using some more sophisticated method than just memory copying (so also for handling mode other than dmBlend). |
function GetColors(const X, Y, Z: Integer): TCastleColor; override; |
|
This item has no description. |
procedure SetColors(const X, Y, Z: Integer; const C: TCastleColor); override; |
|
This item has no description. |
class function PixelSize: Cardinal; override; |
|
This item has no description. Showing description inherited from TCastleImage.PixelSize. Size of TPixel in bytes for this TCastleImage descendant. |
class function ColorComponentsCount: Cardinal; override; |
|
This item has no description. Showing description inherited from TCastleImage.ColorComponentsCount. Number of color components in TPixel. E.g. RGB is 3 components and RGB+Alpha is 4 components, RGB+Exponent is 3 components (because it describes only Red, Green and Blue values (Exponent value is just used to correctly interpret these, it's not a 4th component)). |
function ToGrayscaleImage: TGrayscaleImage; deprecated 'create TGrayscaleImage and use TGrayscaleImage.Assign'; |
|
Warning: this symbol is deprecated: create TGrayscaleImage and use TGrayscaleImage.Assign Remove alpha channel. |
function PixelPtr(const X, Y: Cardinal; const Z: Cardinal = 0): PVector2Byte; |
|
This item has no description. |
function RowPtr(const Y: Cardinal; const Z: Cardinal = 0): PVector2ByteArray; |
|
This item has no description. |
procedure InvertColors; override; |
|
This item has no description. Showing description inherited from TCastleImage.InvertColors. Inverts all colors (RGB or grayscale, but doesn't touch alpha channel). "Inverting" means changing color C in range [0..1] to 1-C, so black becomes white, white becomes black etc. For descendants implementors: Override it if necessary, otherwise the default implementation in this class will raise EInternalError. |
procedure Clear(const Pixel: TVector4Byte); override; |
|
This item has no description. Showing description inherited from TCastleImage.Clear. Set all image pixels to the same color. |
function IsClear(const Pixel: TVector4Byte): boolean; override; |
|
This item has no description. Showing description inherited from TCastleImage.IsClear. Check do all image pixels have the same color. |
procedure Clear(const Pixel: TVector2Byte); reintroduce; overload; |
|
This item has no description. |
function IsClear(const Pixel: TVector2Byte): boolean; reintroduce; overload; |
|
This item has no description. |
function HasAlpha: boolean; override; |
|
This item has no description. Showing description inherited from TEncodedImage.HasAlpha. Does an image have an alpha channel. You may also be interested in the AlphaChannel that can make a distinction between alpha channel for blending and for alpha test. AlphaChannel answers always atNone if Descendants implementors notes: in this class, TCastleImage, this returns |
function AlphaChannel( const AlphaTolerance: Byte): TAlphaChannel; override; |
|
This item has no description. Showing description inherited from TEncodedImage.AlphaChannel. Analyze image contents to determine if, and what kind, of alpha channel it has. This may be a time-consuming operation. When the image has alpha channel and we need to decide whether it's suitable for "alpha test" (only fully opaque or fully transparent pixels) or "alpha blending" (any alpha value makes sense) then this method needs to iterate over image pixels. For this reason, the result of this operation is cached at various levels, e.g. TImageTextureNode and TDrawableImage cache it internally. We determine "alpha test - simple yes/no alpha channel" if all the alpha values (for every pixel) are 0, or 255, or (when AlphaTolerance <> 0) are close to them by AlphaTolerance. So, to be precise, alpha value must be <= AlphaTolerance, or >= 255 - AlphaTolerance. If any alpha value is between [AlphaTolerance + 1, 255 - AlphaTolerance - 1] then we return "alpha blending - full range alpha channel". Note that big values of AlphaTolerance make it easier to quality image as "alpha test - simple yes/no alpha channel". When AlphaTolerance >= 128, all images are treated as "simple yes/no alpha". Usually, you want to keep AlphaTolerance small. Descendants implementors notes: in this class, this simply always returns atNone. For descendants that have alpha channel, implement it, honouring AlphaTolerance as described. |
function ToFpImage: TInternalCastleFpImage; override; |
|
This item has no description. Showing description inherited from TEncodedImage.ToFpImage. Convert image contents to FpImage instance. The resulting instance is owned by the caller. |
procedure LerpWith(const Value: Single; SecondImage: TCastleImage); override; |
|
This item has no description. Showing description inherited from TCastleImage.LerpWith. Makes linear interpolation of colors from this image and the SecondImage. Intuitively, every pixel in new image is set to (1 - Value) * Self[pixel] + Value * SecondImage[pixel]
Both images need to have the exact same size. If they are not, EImageLerpDifferentSizes is raised. Not all TCastleImage combinations are allowed. Every subclass is required to override this to at least handle Lerp between itself. That is, TRGBImage.Lerp has to handle Lerp with other TRGBImage, TRGBAlphaImage.Lerp has to handle Lerp with other TRGBAlphaImage etc. Other combinations may be permitted, if useful and implemented. EImageLerpInvalidClasses is raised if given class combinations are not allowed. In this class, this simply always raises EImageLerpInvalidClasses.
|
class procedure MixColors(const OutputColor: Pointer; const Weights: TVector4; const AColors: TVector4Pointer); override; |
|
This item has no description. Showing description inherited from TCastleImage.MixColors. Mix 4 colors, with 4 weights, into a resulting color. All 4 Colors and OutputColor must be pointers to a pixel of current image class, that is they must point to PixelSize bytes of memory. |
procedure Assign(const Source: TCastleImage); override; |
|
This item has no description. Showing description inherited from TCastleImage.Assign. Copy size and contents from Source. This sets our size (Width, Height and Depth) to match Source image, and copies pixels from the Source image, converting them as closely as possible. For example, converting RGBA to RGB will strip alpha channel, but copy RGB values. When implementing descendants: the base implementation of this method in TCastleImage handles only the case when Image class equals our own class. And raises EImageAssignmentError in other cases. Override this method if you want to actually handle some conversions when assignning. |
procedure FillEllipse(const x, y: single; const aRadiusX, aRadiusY: single; const aColor: TCastleColor); override; |
|
TODO: this should be implemented, just like for TRGBAlphaImage procedure AlphaBleed(const ProgressTitle: string = ''); override; function MakeAlphaBleed(const ProgressTitle: string = ''): TCastleImage; override; |
procedure Ellipse(const x, y: single; const aRadiusX, aRadiusY: single; const aWidth: single; const aColor: TCastleColor); override; |
|
This item has no description. |
procedure FillRectangle(const x1, y1, x2, y2: single; const aColor: TCastleColor); override; |
|
This item has no description. |
procedure Rectangle(const x1, y1, x2, y2: single; const aWidth: single; const aColor: TCastleColor); override; |
|
This item has no description. |
procedure Line(const x1, y1, x2, y2: single; const aWidth: single; const aColor: TCastleColor); override; |
|
This item has no description. |
Properties
property Pixels: PVector2Byte read GetPixels; |
|
Pointer to pixels. Same as RawPixels, only typecasted to PVector2Byte. |
property GrayscaleAlphaPixels: PVector2Byte read GetPixels; deprecated 'use Pixels'; |
|
Warning: this symbol is deprecated: use Pixels This item has no description. |
property PixelsArray: PVector2ByteArray read GetPixelsArray; |
|
Pointer to pixels. Same as RawPixels, only typecasted to PVector2ByteArray. |
Generated by PasDoc 0.16.0-snapshot.