#pragma once template struct TPoint { public: T X; public: T Y; public: TPoint() : X(0), Y(0) { } public: TPoint(T x, T y) : X(x), Y(y) { } public: String ToString() const { return StringBuilder("X: %ld, Y: %ld", X, Y); } }; typedef TPoint Point; typedef TPoint PointF; typedef TPoint PointD; template struct TSize { public: T Width; public: T Height; public: TSize() : Width(0), Height(0) { } public: TSize(T w, T h) : Width(w), Height(h) { } public: const TCHAR* ToString() const { return StringBuilder("W: %ld, H: %ld", Width, Height); } }; typedef TSize Size; typedef TSize SizeF; typedef TSize SizeD;