#pragma once #include "common.h" class AFX_EXT_CLASS UT2Coordinate { public: static void UnitToQD(int& ioV, int& ioH, int inZoomLevel = 0); static void UnitToQD(POINT& ioPoint, int inZoomLevel = 0, BOOL inExcludeRoof = false); static void UnitToQD(RECT& ioRect, int inZoomLevel = 0, BOOL inExcludeRoofAndFloor = false); static void UnitToQD(const RECT& inUnitRect, RECT& outQDRect, int inZoomLevel = 0, BOOL inExcludeRoofAndFloor = false); static void UnitToQDRoof(const RECT& inUnitRect, RECT& outQDRect, int inZoomLevel = 0); static void UnitToQDFloor(const RECT& inUnitRect, RECT& outQDRect, int inZoomLevel = 0); static void UnitToOffRect(const RECT& inUnitRect, RECT& outQDRect, int inHeight = 0); static void QDToUnit(int& ioV, int& ioH, int inZoomLevel = 0); static void QDToUnit(POINT& ioPoint, int inZoomLevel = 0); static void QDToUnit(SDimension16& ioSize, int inZoomLevel = 0); static void QDToUnit(RECT& ioRect, int inZoomLevel = 0); static void QDToUnit(const RECT& inQDRect, RECT& outUnitRect, int inZoomLevel = 0); static void NoRoofQDToUnit(const RECT& inQDRect, RECT& outUnitRect, int inZoomLevel = 0); static void BkgndToQD(int& ioV, int& ioH, int inZoomLevel = 0); static void BkgndToQD(POINT& ioPoint, int inZoomLevel = 0); static void BkgndToQD(RECT& ioRect, int inZoomLevel = 0); static void BkgndToQD(const RECT& inBkgndRect, RECT& outQDRect, int inZoomLevel = 0); static void QDToBkgnd(int& ioV, int& ioH, int inZoomLevel = 0); static void QDToBkgnd(POINT& ioPoint, int inZoomLevel = 0); static void QDToBkgnd(SDimension16& ioSize, int inZoomLevel = 0); static void QDToBkgnd(RECT& ioRect, int inZoomLevel = 0); static void QDToBkgnd(const RECT& inQDRect, RECT& outBkgndRect, int inZoomLevel = 0); static void UnitToBkgnd(const RECT& inUnitRect, RECT& outBkgndRect); static void BkgndToUnit(const RECT& inBkgndRect, RECT& outUnitRect); static void MakeRect(RECT& outRect, const POINT& inPoint, const SDimension16& inSize); static void MakeRect(RECT& outRect, const POINT& inPoint, int inWidth, int inHeight); static void MakeRect(RECT& outRect, int inWidth, int inHeight); static void MakeCenterRect(RECT& outRect, const POINT& inPoint, int inWidth, int inHeight); static void AddRect(RECT& ioRectA, const RECT& inRectB); static void SubRect(RECT& ioRectA, const RECT& inRectB); static void ZoomOut(RECT& ioRect, int inZoomLevel); static int UnitVSize(int inZoomLevel) { return 36 >> inZoomLevel; } static int UnitHSize(int inZoomLevel) { return 8 >> inZoomLevel; } static int BkgndVSize(int inZoomLevel) { return 72 >> inZoomLevel; } static int BkgndHSize(int inZoomLevel) { return 64 >> inZoomLevel; } static int CalcRoofThick(int inZoomLevel) { return 8U >> inZoomLevel; } static int CalcFloorThick(int inZoomLevel) { return 4U >> inZoomLevel; } static void QDToOff(POINT& ioPt, int inZoomLevel) { ioPt.y <<= inZoomLevel; ioPt.x <<= inZoomLevel; } static int RectWidth(const RECT& inRect) { return inRect.right - inRect.left; } };