You've already forked lazarus-ccr
- added CreateFromData constructor
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@482 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -73,10 +73,12 @@ type
|
|||||||
FWidth: Integer;
|
FWidth: Integer;
|
||||||
FHeight: Integer;
|
FHeight: Integer;
|
||||||
FRowPixelStride: Integer;
|
FRowPixelStride: Integer;
|
||||||
|
FDataOwner: Boolean;
|
||||||
function GetSize: Integer;
|
function GetSize: Integer;
|
||||||
public
|
public
|
||||||
constructor Create(AWidth, AHeight: Integer; ASizeOfPixel: Integer); virtual;
|
constructor Create(AWidth, AHeight: Integer; ASizeOfPixel: Integer); virtual;
|
||||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: Integer); virtual;
|
constructor CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: Integer); virtual;
|
||||||
|
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ASizeOfPixel: Integer; ADataOwner: Boolean = False); virtual;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
@ -95,6 +97,7 @@ type
|
|||||||
procedure Rotate180; virtual;
|
procedure Rotate180; virtual;
|
||||||
procedure Rotate270; virtual;
|
procedure Rotate270; virtual;
|
||||||
public
|
public
|
||||||
|
property DataOwner: Boolean read FDataOwner;
|
||||||
property Width: Integer read FWidth;
|
property Width: Integer read FWidth;
|
||||||
property Height: Integer read FHeight;
|
property Height: Integer read FHeight;
|
||||||
property Pixels: PRGBPixel read FPixels;
|
property Pixels: PRGBPixel read FPixels;
|
||||||
@ -109,6 +112,7 @@ type
|
|||||||
public
|
public
|
||||||
constructor Create(AWidth, AHeight: Integer); virtual;
|
constructor Create(AWidth, AHeight: Integer); virtual;
|
||||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
||||||
|
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ADataOwner: Boolean = False); virtual;
|
||||||
|
|
||||||
procedure LoadFromLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
procedure LoadFromLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
||||||
procedure SaveToLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
procedure SaveToLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
||||||
@ -132,6 +136,7 @@ type
|
|||||||
constructor Create(AWidth, AHeight: Integer); virtual;
|
constructor Create(AWidth, AHeight: Integer); virtual;
|
||||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
||||||
constructor CreateFromLazIntfImage(AImage: TLazIntfImage); virtual;
|
constructor CreateFromLazIntfImage(AImage: TLazIntfImage); virtual;
|
||||||
|
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ADataOwner: Boolean = False); virtual;
|
||||||
|
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
procedure SwapWith(ABitmap: TRGBBitmapCore); override;
|
procedure SwapWith(ABitmap: TRGBBitmapCore); override;
|
||||||
@ -509,6 +514,7 @@ begin
|
|||||||
FRowPixelStride := (((AWidth * ASizeOfPixel + 3) shr 2) shl 2) div ASizeOfPixel;
|
FRowPixelStride := (((AWidth * ASizeOfPixel + 3) shr 2) shl 2) div ASizeOfPixel;
|
||||||
FSizeOfPixel := ASizeOfPixel;
|
FSizeOfPixel := ASizeOfPixel;
|
||||||
|
|
||||||
|
FDataOwner := True;
|
||||||
|
|
||||||
GetMem(FPixels, FHeight * FRowPixelStride * FSizeOfPixel);
|
GetMem(FPixels, FHeight * FRowPixelStride * FSizeOfPixel);
|
||||||
end;
|
end;
|
||||||
@ -522,13 +528,31 @@ begin
|
|||||||
FRowPixelStride := ABitmap.RowPixelStride;
|
FRowPixelStride := ABitmap.RowPixelStride;
|
||||||
FSizeOfPixel := ASizeOfPixel;
|
FSizeOfPixel := ASizeOfPixel;
|
||||||
|
|
||||||
|
FDataOwner := True;
|
||||||
|
|
||||||
GetMem(FPixels, FHeight * FRowPixelStride * SizeOfPixel);
|
GetMem(FPixels, FHeight * FRowPixelStride * SizeOfPixel);
|
||||||
Move(ABitmap.Pixels^, FPixels^, FHeight * FRowPixelStride * SizeOfPixel);
|
Move(ABitmap.Pixels^, FPixels^, FHeight * FRowPixelStride * SizeOfPixel);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
constructor TRGBBitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||||
|
ASizeOfPixel: Integer; ADataOwner: Boolean);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
|
||||||
|
FWidth := AWidth;
|
||||||
|
FHeight := AHeight;
|
||||||
|
// TODO: check on 64-bit arch.
|
||||||
|
// 32-bit alignment
|
||||||
|
FRowPixelStride := (((AWidth * ASizeOfPixel + 3) shr 2) shl 2) div ASizeOfPixel;
|
||||||
|
FSizeOfPixel := ASizeOfPixel;
|
||||||
|
FPixels := AData;
|
||||||
|
|
||||||
|
FDataOwner := ADataOwner;
|
||||||
|
end;
|
||||||
|
|
||||||
destructor TRGBBitmapCore.Destroy;
|
destructor TRGBBitmapCore.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeMem(FPixels);
|
if FDataOwner then FreeMem(FPixels);
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -651,6 +675,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
constructor TRGB32BitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||||
|
ADataOwner: Boolean);
|
||||||
|
begin
|
||||||
|
inherited CreateFromData(AData, AWidth, AHeight, SizeOf(TRGB32Pixel), ADataOwner);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRGB32BitmapCore.Assign(Source: TPersistent);
|
procedure TRGB32BitmapCore.Assign(Source: TPersistent);
|
||||||
begin
|
begin
|
||||||
if (Source is TRGBBitmapCore) and ((Source as TRGBBitmapCore).SizeOfPixel = SizeOf(TRGB32Pixel)) then
|
if (Source is TRGBBitmapCore) and ((Source as TRGBBitmapCore).SizeOfPixel = SizeOf(TRGB32Pixel)) then
|
||||||
@ -736,6 +766,12 @@ begin
|
|||||||
inherited CreateAsCopy(ABitmap, SizeOf(TRGB8Pixel));
|
inherited CreateAsCopy(ABitmap, SizeOf(TRGB8Pixel));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
constructor TRGB8BitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||||
|
ADataOwner: Boolean);
|
||||||
|
begin
|
||||||
|
inherited CreateFromData(AData, AWidth, AHeight, SizeOf(TRGB8Pixel), ADataOwner);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRGB8BitmapCore.LoadFromLazIntfImageAlpha(AImage: TLazIntfImage);
|
procedure TRGB8BitmapCore.LoadFromLazIntfImageAlpha(AImage: TLazIntfImage);
|
||||||
var
|
var
|
||||||
I, J: Integer;
|
I, J: Integer;
|
||||||
|
Reference in New Issue
Block a user