//
unit ads_BitmapFlip; {Copyright(c)2016 Advanced Delphi Systems Richard Maley Advanced Delphi Systems 12613 Maidens Bower Drive Potomac, MD 20854 USA phone 301-840-1554 dickmaley@advdelphisys.com The code herein can be used or modified by anyone. Please retain references to Richard Maley at Advanced Delphi Systems. If you make improvements to the code please send your improvements to dickmaley@advdelphisys.com so that the entire Delphi community can benefit. All comments are welcome. } (*UnitIndex Master Index Implementation Section Download Units
Description: ads_BitmapFlip.pas This unit contains the following routines.
*) interface Uses Windows,Graphics; Function BitmapFlip( Const Vertical : Boolean; Const Horizontal : Boolean; var BitmapIn : TBitmap; out BitmapOut : TBitmap): Boolean; implementation Type TColorData = Array[0..128000] Of TRGBTriple; pColorData = ^TColorData; //Unit Description UnitIndex Master Index
Function BitmapFlip( Const Vertical : Boolean; Const Horizontal : Boolean; var BitmapIn : TBitmap; out BitmapOut : TBitmap): Boolean; Var DataIn : pColorData; DataOut : pColorData; inRow : Integer; inCol : Integer; Begin Result := False; Try If BitmapIn.PixelFormat <> pf24bit Then Exit; With BitmapOut Do Begin Width := BitmapIn.Width; Height := BitmapIn.Height; PixelFormat := BitmapIn.PixelFormat; End; For inRow := 0 To BitmapIn.Height - 1 Do Begin DataIn := BitmapIn.Scanline[inRow]; If Vertical Then Begin DataOut := BitmapOut.ScanLine[BitmapIn.Height - 1 - inRow]; End Else Begin DataOut := BitmapOut.ScanLine[inRow]; End; If Horizontal Then Begin For inCol := 0 To BitmapIn.Width-1 Do DataOut[inCol] := DataIn[BitmapIn.Width-1-inCol]; End Else Begin For inCol := 0 To BitmapIn.Width-1 Do DataOut[inCol] := DataIn[inCol]; End; End; Result := True; Except End; End; End. //