mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 13:29:47 +02:00
81 lines
1.8 KiB
ObjectPascal
81 lines
1.8 KiB
ObjectPascal
{
|
|
A very simple raw image format
|
|
|
|
AUTHORS: Felipe Monteiro de Carvalho
|
|
|
|
License: The same modified LGPL as the Free Pascal RTL
|
|
See the file COPYING.modifiedLGPL for more details
|
|
}
|
|
unit rawvectorialreadwrite;
|
|
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, dateutils,
|
|
fpcanvas, fpimage,
|
|
intfgraphics, graphtype,
|
|
//avisozlib,
|
|
fpvectorial;
|
|
|
|
type
|
|
|
|
{ TvRAWVectorialReader }
|
|
|
|
TvRAWVectorialReader = class(TvCustomVectorialReader)
|
|
public
|
|
{ General reading methods }
|
|
procedure ReadFromStream(AStream: TStream; AData: TvVectorialDocument); override;
|
|
end;
|
|
|
|
var
|
|
RAW_IMAGE_WIDTH, RAW_IMAGE_HEIGHT: Integer;
|
|
|
|
implementation
|
|
|
|
{ TvRAWVectorialReader }
|
|
|
|
procedure TvRAWVectorialReader.ReadFromStream(AStream: TStream;
|
|
AData: TvVectorialDocument);
|
|
var
|
|
lPage: TvVectorialPage;
|
|
lRasterImage: TvRasterImage;
|
|
AImage: TLazIntfImage;
|
|
lRawImage: TRawImage;
|
|
x, y: Integer;
|
|
lColor: TFPColor;
|
|
begin
|
|
// create a TLazIntfImage with 32 bits per pixel, alpha 8bit, red 8 bit, green 8bit, blue 8bit,
|
|
// Bits In Order: bit 0 is pixel 0, Top To Bottom: line 0 is top
|
|
lRawImage.Init;
|
|
lRawImage.Description.Init_BPP24_R8G8B8_BIO_TTB(RAW_IMAGE_WIDTH, RAW_IMAGE_HEIGHT);
|
|
lRawImage.CreateData(True);
|
|
AImage := TLazIntfImage.Create(0,0);
|
|
|
|
AImage.SetRawImage(lRawImage);
|
|
|
|
for y := 0 to RAW_IMAGE_HEIGHT - 1 do
|
|
for x := 0 to RAW_IMAGE_WIDTH - 1 do
|
|
begin
|
|
lColor.Red := AStream.ReadByte() * $FF;
|
|
AImage.Colors[x, y] := lColor;
|
|
end;
|
|
|
|
lPage := AData.AddPage();
|
|
lRasterImage := TvRasterImage.Create(nil);
|
|
lRasterImage.RasterImage := AImage;
|
|
lPage.AddEntity(lRasterImage);
|
|
end;
|
|
|
|
initialization
|
|
|
|
RAW_IMAGE_WIDTH := 1024;
|
|
RAW_IMAGE_HEIGHT := 1024;
|
|
RegisterVectorialReader(TvRAWVectorialReader, vfRAW);
|
|
|
|
end.
|
|
|