| 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. |