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