/** * Ashita - Copyright (c) 2014 - 2021 atom0s [atom0s@live.com] * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. * * By using Ashita, you agree to the above license and its terms. * * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were * made. You must do so in any reasonable manner, but not in any way that suggests the licensor * endorses you or your use. * * Non-Commercial - You may not use the material (Ashita) for commercial purposes. * * No-Derivatives - If you remix, transform, or build upon the material (Ashita), you may not distribute the * modified material. You are, however, allowed to submit the modified works back to the original * Ashita project in attempt to have it added to the original project. * * You may not apply legal terms or technological measures that legally restrict others * from doing anything the license permits. * * No warranties are given. */ #ifndef __ASHITA_AS_OBJECTS_H_INCLUDED__ #define __ASHITA_AS_OBJECTS_H_INCLUDED__ #if defined (_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #include namespace Ashita { typedef struct tagAS_Rect { uint32_t x, y, w, h; tagAS_Rect(void) : x(0), y(0), w(0), h(0) { } tagAS_Rect(uint32_t nW, uint32_t nH) : x(0), y(0), w(nW), h(nH) { } tagAS_Rect(uint32_t nX, uint32_t nY, uint32_t nW, uint32_t nH) : x(nX), y(nY), w(nW), h(nH) { } explicit tagAS_Rect(const RECT& r) : x(r.left), y(r.top), w(r.right - r.left), h(r.bottom - r.top) { } // Assignment operator overload. tagAS_Rect operator= (const tagAS_Rect& r) { this->x = r.x; this->y = r.y; this->w = r.w; this->h = r.h; return *this; } // Addition operator overload. tagAS_Rect operator+ (const tagAS_Rect& r) { this->x += r.x; this->y += r.y; this->w += r.w; this->h += r.h; return *this; } // Subtraction operator overload. tagAS_Rect operator- (const tagAS_Rect& r) { this->x -= r.x; this->y -= r.y; this->w -= r.w; this->h -= r.h; return *this; } // Equality operator overload. bool operator== (const tagAS_Rect& r) const { return this->x == r.x && this->y == r.y && this->w == r.w && this->h == r.h; } // Non-Equality opreator overload. bool operator!= (const tagAS_Rect& r) const { return !(*this == r); } } asrect_t; typedef struct tagAS_WindowInfo { HWND Hwnd; uint32_t Style; uint32_t StyleEx; asrect_t WindowRect; tagAS_WindowInfo(void) : Hwnd(nullptr), Style(0), StyleEx(0), WindowRect(0, 0, 0, 0) { } tagAS_WindowInfo(HWND hWnd, uint32_t dwStyle, uint32_t dwStyleEx, int32_t x, int32_t y, int32_t w, int32_t h) : Hwnd(hWnd), Style(dwStyle), StyleEx(dwStyleEx), WindowRect(x, y, w, h) { } /** * Resets the window information class. */ void Reset(void) { this->Hwnd = nullptr; this->Style = 0; this->StyleEx = 0; this->WindowRect.x = 0; this->WindowRect.y = 0; this->WindowRect.w = 0; this->WindowRect.h = 0; } } aswindowinfo_t; }; // namespace Ashita #endif // __ASHITA_AS_OBJECTS_H_INCLUDED__