Struct Bgra4444
A 16-bit packed pixel: blue in bits 0 to 3, green in 4 to 7, red in 8 to 11 and straight alpha in 12 to 15. The same memory as the DXGI and Vulkan B4G4R4A4 formats. Each level widens to 8 bits by multiplying by 17, and narrowing rounds to nearest.
public struct Bgra4444 : IPixelType<Bgra4444>, IEquatable<Bgra4444>
- Implements
- Inherited Members
Examples
// Eight-bit, sixteen-bit and float pixels; every type converts to every other through PixelConvert.
Rgba8 orange = new(255, 128, 0, 255);
Bgr8 bgr = Bgr8.FromRgba8(orange);
Gray8 gray = Gray8.FromRgba8(orange);
GrayAlpha8 grayAlpha = new(gray.L, 128);
Gray16 deep = Gray16.FromRgba8(orange);
Rgba16 wide = new(65535, 32896, 0, 65535);
Rgb16 wideOpaque = Rgb16.FromRgba16(wide); // exact: 16-bit to 16-bit never rounds
GrayAlpha16 deepMask = new(deep.L, 32768);
Argb8 alphaFirst = Argb8.FromRgba8(orange); // bytes A, R, G, B
Alpha8 mask = Alpha8.FromRgba8(orange); // alpha only; reads back as black
RgbaF16 hdr = RgbaF16.FromScaled(new Vector4(4f, 2f, 0.5f, 1f)); // half floats keep values above 1
GrayF32 depth = new(12.5f); // floats hold any value until written to an integer type
Bgr565 packed = Bgr565.FromRgba8(orange); // 5-6-5 levels in one ushort; rounds to the nearest level
Bgra5551 gdi16 = Bgra5551.FromRgba8(orange); // 5-5-5 levels and a 1-bit alpha, the GDI+ 16-bit ARGB layout
Cmyk8 ink = Cmyk8.FromRgba8(orange); // inks by the plain formula: (0, 127, 255, 0)
PremulRgba8 glass = PremulRgba8.FromRgba8(new Rgba8(255, 128, 0, 128)); // stored (128, 64, 0, 128); converts back straight
RgbaF32 linear = RgbaF32.FromScaled(orange.ToScaled());
Rgba8[] row = [orange, Rgba8.Transparent];
Bgra8[] converted = new Bgra8[row.Length];
PixelConvert.Convert<Rgba8, Bgra8>(row, converted);
Constructors
Bgra4444(int, int, int, int)
Initializes a new instance of the Bgra4444 struct from channel levels, each 0 to 15.
public Bgra4444(int r, int g, int b, int a)
Parameters
Exceptions
- ArgumentOutOfRangeException
A level is greater than 15 or negative.
Bgra4444(ushort)
Initializes a new instance of the Bgra4444 struct from its packed value.
public Bgra4444(ushort value)
Parameters
valueushortThe packed value.
Fields
Value
The packed value.
public ushort Value
Field Value
Properties
A
Gets the alpha level, 0 to 15.
public readonly int A { get; }
Property Value
B
Gets the blue level, 0 to 15.
public readonly int B { get; }
Property Value
G
Gets the green level, 0 to 15.
public readonly int G { get; }
Property Value
Layout
Gets the memory layout of this pixel type.
public static PixelLayoutInfo Layout { get; }
Property Value
R
Gets the red level, 0 to 15.
public readonly int R { get; }
Property Value
Methods
Equals(Bgra4444)
Indicates whether the current object is equal to another object of the same type.
public readonly bool Equals(Bgra4444 other)
Parameters
otherBgra4444An object to compare with this object.
Returns
Equals(object?)
Indicates whether this instance and a specified object are equal.
public override readonly bool Equals(object? obj)
Parameters
objobjectThe object to compare with the current instance.
Returns
- bool
true if
objand this instance are the same type and represent the same value; otherwise, false.
FromRgba8(Rgba8)
Creates a pixel from an 8-bit color. The conversion is exact wherever the type can hold the color. Gray types take the Rec. 709 luma, weighted in linear light. Types without alpha drop it.
public static Bgra4444 FromRgba8(Rgba8 value)
Parameters
valueRgba8The color.
Returns
- Bgra4444
The pixel.
FromScaled(Vector4)
Creates a pixel from red, green, blue and alpha scaled to 0..1, with straight alpha. Values outside 0..1 are clamped and NaN becomes 0. Gray types take the Rec. 709 luma of the color, weighted in linear light. Types without alpha drop it.
public static Bgra4444 FromScaled(Vector4 rgba)
Parameters
rgbaVector4The color, with each channel scaled to 0..1.
Returns
- Bgra4444
The nearest pixel of this type.
GetHashCode()
Returns the hash code for this instance.
public override readonly int GetHashCode()
Returns
- int
A 32-bit signed integer that is the hash code for this instance.
ToRgba8()
Returns the pixel as an 8-bit color. 16-bit channels are rounded to the nearest 8-bit value, and gray is copied to red, green and blue.
public readonly Rgba8 ToRgba8()
Returns
- Rgba8
The 8-bit color.
ToScaled()
Returns red, green, blue and alpha scaled to 0..1. Types without alpha return an alpha of 1.
public readonly Vector4 ToScaled()
Returns
- Vector4
The scaled color.
ToString()
Returns the fully qualified type name of this instance.
public override readonly string ToString()
Returns
- string
The fully qualified type name.
Operators
operator ==(Bgra4444, Bgra4444)
Returns a value indicating whether two pixels are equal.
public static bool operator ==(Bgra4444 left, Bgra4444 right)
Parameters
Returns
operator !=(Bgra4444, Bgra4444)
Returns a value indicating whether two pixels differ.
public static bool operator !=(Bgra4444 left, Bgra4444 right)