TRect = record private function GetWidth: Integer; procedure SetWidth(const Value: Integer); function GetHeight: Integer; procedure SetHeight(const Value: Integer); function GetSize: TSize; procedure SetSize(const Value: TSize); function GetLocation: TPoint; public constructor Create(const Origin: TPoint); overload; // empty rect at given origin constructor Create(const Origin: TPoint; Width, Height: Integer); overload; // at TPoint of origin with width and height constructor Create(const Left, Top, Right, Bottom: Integer); overload; // at x, y with width and height constructor Create(const P1, P2: TPoint; Normalize: Boolean = False); overload; // with corners specified by p1 and p2 constructor Create(const R: TRect; Normalize: Boolean = False); overload; class operator Equal(const Lhs, Rhs: TRect): Boolean; class operator NotEqual(const Lhs, Rhs: TRect): Boolean; class operator Add(const Lhs, Rhs: TRect): TRect; class operator Multiply(const Lhs, Rhs: TRect): TRect; class function Empty: TRect; inline; static; procedure NormalizeRect; function IsEmpty: Boolean; function Contains(const Pt: TPoint): Boolean; overload; function Contains(const R: TRect): Boolean; overload; function IntersectsWith(const R: TRect): Boolean; class function Intersect(const R1: TRect; const R2: TRect): TRect; overload; static; procedure Intersect(const R: TRect); overload; class function Union(const R1: TRect; const R2: TRect): TRect; overload; static; procedure Union(const R: TRect); overload; class function Union(const Points: Array of TPoint): TRect; overload; static; procedure Offset(const DX, DY: Integer); overload; procedure Offset(const Point: TPoint); overload; procedure SetLocation(const X, Y: Integer); overload; procedure SetLocation(const Point: TPoint); overload; procedure Inflate(const DX, DY: Integer); overload; procedure Inflate(const DL, DT, DR, DB: Integer); overload; function CenterPoint: TPoint; function SplitRect(SplitType: TSplitRectType; Size: Integer): TRect; overload; function SplitRect(SplitType: TSplitRectType; Percent: Double): TRect; overload; property Width: Integer read GetWidth write SetWidth; property Height: Integer read GetHeight write SetHeight; property Size: TSize read GetSize write SetSize; property Location: TPoint read GetLocation write SetLocation; case Integer of 0: (Left, Top, Right, Bottom: Longint); 1: (TopLeft, BottomRight: TPoint); end;
05-30