38 |
|
function LoadFromTXMB(ConnectionID, FileID: Integer): Boolean; |
39 |
|
function GetImageDataSize(fading: Boolean): Integer; |
40 |
|
|
41 |
< |
function GetAsData: TByteData; |
42 |
< |
function GetAs32bit: TByteData; |
43 |
< |
procedure GetAsBMP(var Target: TByteData); overload; |
41 |
> |
procedure GetAsData(var Target: TStream); overload; |
42 |
> |
procedure GetAsData(var Target: TByteData); overload; |
43 |
> |
procedure GetAs32bit(var Target: TStream); overload; |
44 |
> |
procedure GetAs32bit(var Target: TByteData); overload; |
45 |
|
procedure GetAsBMP(var Target: TStream); overload; |
46 |
+ |
procedure GetAsBMP(var Target: TByteData); overload; |
47 |
|
function LoadFromBMP(filename: String): Boolean; |
48 |
|
function WriteToBMP(filename: String): Boolean; |
49 |
< |
function GetMipMappedImage(var faded: TByteData): Boolean; |
49 |
> |
function GetMipMappedImage(var Target: TStream): Boolean; overload; |
50 |
> |
function GetMipMappedImage(var Target: TByteData): Boolean; overload; |
51 |
|
published |
52 |
|
end; |
53 |
|
|
371 |
|
txmpimg.LoadFromTXMP(ConnectionID, PSpc.TXMP); |
372 |
|
txmpimg.DecodeImage; |
373 |
|
// txmpimg.WriteToBMP('C:\file.bmp'); |
374 |
< |
txmpdata := txmpimg.GetAs32bit; |
374 |
> |
txmpimg.GetAs32bit(txmpdata); |
375 |
|
{ ShowMessage(IntToStr(txmpimg.Width)+'x'+IntToStr(txmpimg.Height)); |
376 |
|
for i:=0 to High(txmpdata) do |
377 |
|
txmpimg.Data[i]:=txmpdata[i]; |
617 |
|
|
618 |
|
|
619 |
|
|
620 |
< |
function TOniImage.GetAsData: TByteData; |
620 |
> |
procedure TOniImage.GetAsData(var Target: TStream); |
621 |
|
var |
622 |
|
i: Integer; |
623 |
|
revert: Boolean; |
631 |
|
end |
632 |
|
else |
633 |
|
revert := False; |
634 |
< |
SetLength(Result, Length(Self.FData)); |
635 |
< |
for i := 0 to High(Result) do |
636 |
< |
Result[i] := Self.FData[i]; |
634 |
> |
if not Assigned(Target) then |
635 |
> |
Target := TMemoryStream.Create; |
636 |
> |
Target.Write(FData[0], Length(FData)); |
637 |
> |
Target.Seek(0, soFromBeginning); |
638 |
|
if revert then |
639 |
|
Self.RevertImage; |
640 |
|
end; |
641 |
|
|
642 |
+ |
procedure TOniImage.GetAsData(var Target: TByteData); |
643 |
+ |
var |
644 |
+ |
mem: TStream; |
645 |
+ |
begin |
646 |
+ |
mem := TMemoryStream.Create; |
647 |
+ |
GetAsData(mem); |
648 |
+ |
SetLength(Target, mem.Size); |
649 |
+ |
mem.Read(Target[0], mem.Size); |
650 |
+ |
mem.Free; |
651 |
+ |
end; |
652 |
|
|
653 |
|
|
654 |
< |
|
641 |
< |
function TOniImage.GetAs32bit: TByteData; |
642 |
< |
var |
643 |
< |
i: Integer; |
654 |
> |
procedure TOniImage.GetAs32bit(var Target: TStream); |
655 |
|
begin |
656 |
|
if not (DT_Decoded32 in Self.FDataType) then |
657 |
|
Self.DecodeImage; |
658 |
< |
SetLength(Result, Length(Self.FData)); |
659 |
< |
for i := 0 to High(Result) do |
660 |
< |
Result[i] := Self.FData[i]; |
658 |
> |
if not Assigned(Target) then |
659 |
> |
Target := TMemoryStream.Create; |
660 |
> |
Target.Write(FData[0], Length(FData)); |
661 |
> |
Target.Seek(0, soFromBeginning); |
662 |
|
end; |
663 |
|
|
664 |
< |
|
664 |
> |
procedure TOniImage.GetAs32bit(var Target: TByteData); |
665 |
> |
var |
666 |
> |
mem: TStream; |
667 |
> |
begin |
668 |
> |
mem := TMemoryStream.Create; |
669 |
> |
GetAs32bit(mem); |
670 |
> |
SetLength(Target, mem.Size); |
671 |
> |
mem.Read(Target[0], mem.Size); |
672 |
> |
mem.Free; |
673 |
> |
end; |
674 |
|
|
675 |
|
|
676 |
|
procedure TOniImage.GetAsBMP(var Target: TByteData); |
806 |
|
|
807 |
|
|
808 |
|
|
809 |
< |
|
789 |
< |
function TOniImage.GetMipMappedImage(var faded: TByteData): Boolean; |
809 |
> |
function TOniImage.GetMipMappedImage(var Target: TByteData): Boolean; |
810 |
|
var |
811 |
|
i: Integer; |
812 |
|
x, y: Word; |
829 |
|
|
830 |
|
x := Self.FWidth; |
831 |
|
y := Self.FHeight; |
832 |
< |
SetLength(faded, x * y * Self.FDepth div 8); |
832 |
> |
SetLength(Target, x * y * Self.FDepth div 8); |
833 |
|
SetLength(fadelvldata, x * y * Self.FDepth div 8); |
834 |
< |
for i := 0 to Length(faded) - 1 do |
834 |
> |
for i := 0 to Length(Target) - 1 do |
835 |
|
begin |
836 |
< |
faded[i] := Self.FData[i]; |
836 |
> |
Target[i] := Self.FData[i]; |
837 |
|
fadelvldata[i] := Self.FData[i]; |
838 |
|
end; |
839 |
|
repeat |
840 |
|
fadelvldata := Self.ResizeImage(x, y, fadelvldata); |
841 |
|
x := x div 2; |
842 |
|
y := y div 2; |
843 |
< |
SetLength(faded, Length(faded) + x * y * Self.FDepth div 8); |
843 |
> |
SetLength(Target, Length(Target) + x * y * Self.FDepth div 8); |
844 |
|
for i := 0 to Length(fadelvldata) - 1 do |
845 |
< |
faded[Length(faded) - x * y * Self.FDepth div 8 + i] := fadelvldata[i]; |
845 |
> |
Target[Length(Target) - x * y * Self.FDepth div 8 + i] := fadelvldata[i]; |
846 |
|
until (x = 1) or (y = 1) or ((x mod 2) = 1) or ((y mod 2) = 1); |
847 |
|
if (x > 1) and (y > 1) then |
848 |
|
Exit; |
853 |
|
end; |
854 |
|
|
855 |
|
|
856 |
+ |
function TOniImage.GetMipMappedImage(var Target: TStream): Boolean; |
857 |
+ |
var |
858 |
+ |
data: TByteData; |
859 |
+ |
streampos: Integer; |
860 |
+ |
begin |
861 |
+ |
Result := GetMipMappedImage(data); |
862 |
+ |
if not Assigned(Target) then |
863 |
+ |
Target := TMemoryStream.Create; |
864 |
+ |
streampos := Target.Position; |
865 |
+ |
Target.Write(data[0], Length(data)); |
866 |
+ |
Target.Seek(streampos, soFromBeginning); |
867 |
+ |
end; |
868 |
+ |
|
869 |
+ |
|
870 |
|
end. |