| 19 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 20 | 
   | 
     function ResizeImage(oldx, oldy: Integer; img: TByteData): TByteData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 21 | 
   | 
     procedure RevertImage; | 
 
 
 
 
 
 
 
 
 
 | 22 | 
 – | 
     procedure DecodeImage; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 22 | 
   | 
     procedure DecompressImage; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 23 | 
   | 
   protected | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 24 | 
   | 
   public | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 37 | 
   | 
     function LoadFromTXMB(ConnectionID, FileID: Integer): Boolean; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 38 | 
   | 
     function GetImageDataSize(fading: Boolean): Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 39 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 40 | 
 + | 
     procedure DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 | 41 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 42 | 
   | 
     procedure GetAsData(var Target: TStream); overload; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 43 | 
   | 
     procedure GetAsData(var Target: TByteData); overload; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 44 | 
   | 
     procedure GetAs32bit(var Target: TStream); overload; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 133 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 134 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 135 | 
 < | 
 procedure TOniImage.DecodeImage; | 
 
 
 
 
 
 
 
 
 
 | 135 | 
 > | 
 procedure TOniImage.DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 
 
 
 | 136 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 137 | 
   | 
   x, y:  Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 138 | 
   | 
   tempd: TByteData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 371 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 372 | 
   | 
   txmpimg := TOniImage.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 373 | 
   | 
   txmpimg.LoadFromTXMP(ConnectionID, PSpc.TXMP); | 
 
 
 
 
 
 
 
 
 
 
 
 | 374 | 
 < | 
   txmpimg.DecodeImage; | 
 
 
 
 
 
 
 
 
 
 | 374 | 
 > | 
   txmpimg.DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
   | 
 //  txmpimg.WriteToBMP('C:\file.bmp'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 376 | 
   | 
   txmpimg.GetAs32bit(txmpdata); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 377 | 
   | 
 {    ShowMessage(IntToStr(txmpimg.Width)+'x'+IntToStr(txmpimg.Height)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 536 | 
   | 
     link := link div 256; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 537 | 
   | 
     images_decoded[i] := TOniImage.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 538 | 
   | 
     images_decoded[i].LoadFromTXMP(ConnectionID, link); | 
 
 
 
 
 
 
 
 
 
 
 
 | 539 | 
 < | 
     images_decoded[i].DecodeImage; | 
 
 
 
 
 
 
 
 
 
 | 539 | 
 > | 
     images_decoded[i].DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 
 
 
 | 540 | 
   | 
     images_decoded[i].RevertImage; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 541 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 542 | 
   | 
   SetLength(Self.FData, Self.FWidth * Self.FHeight * 4); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 604 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 605 | 
   | 
   x    := Self.FWidth; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 606 | 
   | 
   y    := Self.FHeight; | 
 
 
 
 
 
 
 
 
 
 
 
 | 607 | 
 < | 
   size := x * y * bpp div 8; | 
 
 
 
 
 
 
 
 
 
 | 607 | 
 > | 
   size := (x * y * bpp) div 8; | 
 
 
 
 
 
 
 
 
 
 
 
 | 608 | 
   | 
   if fading then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 609 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 610 | 
   | 
     repeat | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 611 | 
   | 
       x    := x div 2; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 612 | 
   | 
       y    := y div 2; | 
 
 
 
 
 
 
 
 
 
 
 
 | 613 | 
 < | 
       size := size + x * y * bpp div 8; | 
 
 
 
 
 
 
 
 
 
 | 613 | 
 > | 
       size := (size + x * y * bpp) div 8; | 
 
 
 
 
 
 
 
 
 
 
 
 | 614 | 
   | 
     until (x = 1) or (y = 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 615 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 616 | 
   | 
   Result := size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 655 | 
   | 
 procedure TOniImage.GetAs32bit(var Target: TStream); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 656 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 657 | 
   | 
   if not (DT_Decoded32 in Self.FDataType) then | 
 
 
 
 
 
 
 
 
 
 
 
 | 658 | 
 < | 
     Self.DecodeImage; | 
 
 
 
 
 
 
 
 
 
 | 658 | 
 > | 
     Self.DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 
 
 
 | 659 | 
   | 
   if not Assigned(Target) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 660 | 
   | 
     Target := TMemoryStream.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 661 | 
   | 
   Target.Write(FData[0], Length(FData)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 684 | 
   | 
   i, x, y: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 685 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 686 | 
   | 
   if not (DT_Decoded32 in Self.FDataType) then | 
 
 
 
 
 
 
 
 
 
 
 
 | 687 | 
 < | 
     Self.DecodeImage; | 
 
 
 
 
 
 
 
 
 
 | 687 | 
 > | 
     Self.DecodeImageTo32bit; | 
 
 
 
 
 
 
 
 
 
 
 
 | 688 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 689 | 
   | 
   SetLength(Target, Self.FWidth * Self.FHeight * 3 + 54); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 690 | 
   | 
   for y := 0 to Self.FHeight - 1 do |