C# Class CrystalMpq.DataFormats.Surface

Represents a surface of image data.
Inheritance: IDisposable, ICloneable
Datei anzeigen Open project: sgraf812/crystalmpq Class Usage Examples

Public Methods

Method Description
Clone ( ) : object
CopyToArgb ( SurfaceData surfaceData ) : void

Copies the contents of the surface to a buffer of same dimensions.

The destination buffer should use the ARGB format represented by ArgbColor. Some basic checks will be done to disallow invalid buffer informations. However, it is the responsibility of the caller to provide a valid destination buffer.

CreateStream ( ) : Stream

Creates a stream for accessing the surface data.

The returned stream can be used for reading the surface data, and, for some surface formats, to modify the surface data.

Dispose ( ) : void
Lock ( ) : SurfaceData

Locks the surface for direct read/write access.

Unlock must be called once direct buffer access is not needed anymore. Forgetting to unlock a locked surface is likely to prevent the buffer from being disposed, thus causing a memory leak. Neither Dispose nor Finalize will unlock the surface, for safety reasons.

Surface ( int width, int height, byte alphaBitCount, bool alphaPremultiplied = false ) : System

Initializes a new instance of the Surface class.

The following restriction is imposed on width and height: The size in bytes of the uncompressed ARGB data for a given surface must fit into an Int32.

ToArray ( ) : byte[]

Gets a copy of the buffer's contents.

Unlock ( ) : void

Protected Methods

Method Description
CopyToArgbInternal ( SurfaceData surfaceData ) : void
Dispose ( bool disposing ) : void

Releases unmanaged and - optionally - managed resources.

Implementation in the base class do nothing.

LockInternal ( int &stride ) : IntPtr

Locks the surface for direct read/write access.

Surface ( Surface surface ) : System

Initializes a new instance of the Surface class by copying data from another Surface.

The base implementation in Surface only copies the common surface characteristics. Copying the actual surface data needs to be done by subclasses overriding this constructor.

UnlockInternal ( ) : void
ValidateDimensions ( int width, int height ) : void

Validates the specified surface dimensions.

This method should throw an ArgumentOutOfRangeException if any of the two dimensions are not allowed. If the combination of width and height is not allowed, ArgumentException should be thrown. Note that the method will be called before object initialization. Thus, the instance should not be used at all from this method.

Method Details

Clone() public method

public Clone ( ) : object
return object

CopyToArgb() public method

Copies the contents of the surface to a buffer of same dimensions.
The destination buffer should use the ARGB format represented by ArgbColor. Some basic checks will be done to disallow invalid buffer informations. However, it is the responsibility of the caller to provide a valid destination buffer.
The dimensions of the buffer specified by do not match those of the surface. The stride in does not match the width.
public CopyToArgb ( SurfaceData surfaceData ) : void
surfaceData SurfaceData Information on the destination buffer.
return void

CopyToArgbInternal() protected abstract method

protected abstract CopyToArgbInternal ( SurfaceData surfaceData ) : void
surfaceData SurfaceData
return void

CreateStream() public abstract method

Creates a stream for accessing the surface data.
The returned stream can be used for reading the surface data, and, for some surface formats, to modify the surface data.
public abstract CreateStream ( ) : Stream
return Stream

Dispose() public method

public Dispose ( ) : void
return void

Dispose() protected method

Releases unmanaged and - optionally - managed resources.
Implementation in the base class do nothing.
protected Dispose ( bool disposing ) : void
disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources.
return void

Lock() public method

Locks the surface for direct read/write access.
Unlock must be called once direct buffer access is not needed anymore. Forgetting to unlock a locked surface is likely to prevent the buffer from being disposed, thus causing a memory leak. Neither Dispose nor Finalize will unlock the surface, for safety reasons.
public Lock ( ) : SurfaceData
return SurfaceData

LockInternal() protected abstract method

Locks the surface for direct read/write access.
protected abstract LockInternal ( int &stride ) : IntPtr
stride int The stride.
return System.IntPtr

Surface() protected method

Initializes a new instance of the Surface class by copying data from another Surface.
The base implementation in Surface only copies the common surface characteristics. Copying the actual surface data needs to be done by subclasses overriding this constructor.
is null.
protected Surface ( Surface surface ) : System
surface Surface A reference surface which should be copied.
return System

Surface() public method

Initializes a new instance of the Surface class.
The following restriction is imposed on width and height: The size in bytes of the uncompressed ARGB data for a given surface must fit into an Int32.
Either or has a value that is not allowed. /// The dimensions specified by and are not allowed. /// - or - /// is true while is zero. /// - or - /// Another parameter verification has failed. ///
public Surface ( int width, int height, byte alphaBitCount, bool alphaPremultiplied = false ) : System
width int The surface width.
height int The surface height.
alphaBitCount byte The alpha bit count.
alphaPremultiplied bool If set to true, the surface uses premultiplied alpha.
return System

ToArray() public abstract method

Gets a copy of the buffer's contents.
public abstract ToArray ( ) : byte[]
return byte[]

Unlock() public method

public Unlock ( ) : void
return void

UnlockInternal() protected abstract method

protected abstract UnlockInternal ( ) : void
return void

ValidateDimensions() protected method

Validates the specified surface dimensions.
This method should throw an ArgumentOutOfRangeException if any of the two dimensions are not allowed. If the combination of width and height is not allowed, ArgumentException should be thrown. Note that the method will be called before object initialization. Thus, the instance should not be used at all from this method.
Either or has a value that is not allowed. The dimensions specified by and are not allowed.
protected ValidateDimensions ( int width, int height ) : void
width int The proposed surface width.
height int The proposed surface height.
return void