From 41b3d1309b2e599a41cdde260298a93fc16850ec Mon Sep 17 00:00:00 2001 From: dkrutsko Date: Fri, 24 Mar 2017 00:21:35 -0400 Subject: [PATCH 1/3] Integrated Overlay into project --- Source/Overlay.cc | 42 +++++++++++++++++++++++++++++++ Source/Overlay.h | 32 +++++++++++++++++++++++ Source/Robot.h | 2 ++ Source/Robot.vs12.vcxproj | 4 ++- Source/Robot.vs12.vcxproj.filters | 8 +++++- Source/Robot.vs13.vcxproj | 4 ++- Source/Robot.vs13.vcxproj.filters | 8 +++++- Source/Robot.vs15.vcxproj | 4 ++- Source/Robot.vs15.vcxproj.filters | 8 +++++- 9 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 Source/Overlay.cc create mode 100644 Source/Overlay.h diff --git a/Source/Overlay.cc b/Source/Overlay.cc new file mode 100644 index 0000000..3542996 --- /dev/null +++ b/Source/Overlay.cc @@ -0,0 +1,42 @@ +//////////////////////////////////////////////////////////////////////////////// +// -------------------------------------------------------------------------- // +// // +// (C) 2010-2017 Robot Developers // +// See LICENSE for licensing info // +// // +// -------------------------------------------------------------------------- // +//////////////////////////////////////////////////////////////////////////////// + +//----------------------------------------------------------------------------// +// Prefaces // +//----------------------------------------------------------------------------// + +#include "Overlay.h" +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +ROBOT_NS_BEGIN + + + +//----------------------------------------------------------------------------// +// Functions Overlay // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +// TODO: + +ROBOT_NS_END diff --git a/Source/Overlay.h b/Source/Overlay.h new file mode 100644 index 0000000..d7e2b1e --- /dev/null +++ b/Source/Overlay.h @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////////// +// -------------------------------------------------------------------------- // +// // +// (C) 2010-2017 Robot Developers // +// See LICENSE for licensing info // +// // +// -------------------------------------------------------------------------- // +//////////////////////////////////////////////////////////////////////////////// + +//----------------------------------------------------------------------------// +// Prefaces // +//----------------------------------------------------------------------------// + +#pragma once + +#include "Types.h" +ROBOT_NS_BEGIN + + + +//----------------------------------------------------------------------------// +// Classes // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +class ROBOT_EXPORT Overlay +{ + // TODO: +}; + +ROBOT_NS_END diff --git a/Source/Robot.h b/Source/Robot.h index 4b19547..7f40e13 100644 --- a/Source/Robot.h +++ b/Source/Robot.h @@ -22,5 +22,7 @@ #include "Window.h" #include "Screen.h" +#include "Overlay.h" + #include "Timer.h" #include "Clipboard.h" diff --git a/Source/Robot.vs12.vcxproj b/Source/Robot.vs12.vcxproj index 0c76d3a..33a7160 100644 --- a/Source/Robot.vs12.vcxproj +++ b/Source/Robot.vs12.vcxproj @@ -46,6 +46,7 @@ + @@ -66,6 +67,7 @@ + @@ -328,4 +330,4 @@ - \ No newline at end of file + diff --git a/Source/Robot.vs12.vcxproj.filters b/Source/Robot.vs12.vcxproj.filters index 27ac30b..807a8b0 100644 --- a/Source/Robot.vs12.vcxproj.filters +++ b/Source/Robot.vs12.vcxproj.filters @@ -44,6 +44,9 @@ Native + + Native + Types @@ -100,6 +103,9 @@ Native + + Native + Types @@ -122,4 +128,4 @@ Native - \ No newline at end of file + diff --git a/Source/Robot.vs13.vcxproj b/Source/Robot.vs13.vcxproj index bbefb4c..f18ad9f 100644 --- a/Source/Robot.vs13.vcxproj +++ b/Source/Robot.vs13.vcxproj @@ -46,6 +46,7 @@ + @@ -66,6 +67,7 @@ + @@ -328,4 +330,4 @@ - \ No newline at end of file + diff --git a/Source/Robot.vs13.vcxproj.filters b/Source/Robot.vs13.vcxproj.filters index 27ac30b..807a8b0 100644 --- a/Source/Robot.vs13.vcxproj.filters +++ b/Source/Robot.vs13.vcxproj.filters @@ -44,6 +44,9 @@ Native + + Native + Types @@ -100,6 +103,9 @@ Native + + Native + Types @@ -122,4 +128,4 @@ Native - \ No newline at end of file + diff --git a/Source/Robot.vs15.vcxproj b/Source/Robot.vs15.vcxproj index dba8264..7b5729d 100644 --- a/Source/Robot.vs15.vcxproj +++ b/Source/Robot.vs15.vcxproj @@ -46,6 +46,7 @@ + @@ -66,6 +67,7 @@ + @@ -328,4 +330,4 @@ - \ No newline at end of file + diff --git a/Source/Robot.vs15.vcxproj.filters b/Source/Robot.vs15.vcxproj.filters index 27ac30b..807a8b0 100644 --- a/Source/Robot.vs15.vcxproj.filters +++ b/Source/Robot.vs15.vcxproj.filters @@ -44,6 +44,9 @@ Native + + Native + Types @@ -100,6 +103,9 @@ Native + + Native + Types @@ -122,4 +128,4 @@ Native - \ No newline at end of file + From 431a69272d42eee751c4ed5ddcb2c15fc0e150b1 Mon Sep 17 00:00:00 2001 From: dkrutsko Date: Fri, 24 Mar 2017 00:35:21 -0400 Subject: [PATCH 2/3] Integrated Overlay tests into project --- Test/Main.cc | 40 ++++++++++++++++--------------- Test/Overlay.cc | 43 ++++++++++++++++++++++++++++++++++ Test/Peon.vs12.vcxproj | 2 +- Test/Peon.vs13.vcxproj | 2 +- Test/Peon.vs15.vcxproj | 2 +- Test/Test.h | 3 ++- Test/Test.vs12.vcxproj | 3 ++- Test/Test.vs12.vcxproj.filters | 5 +++- Test/Test.vs13.vcxproj | 3 ++- Test/Test.vs13.vcxproj.filters | 5 +++- Test/Test.vs15.vcxproj | 3 ++- Test/Test.vs15.vcxproj.filters | 5 +++- 12 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 Test/Overlay.cc diff --git a/Test/Main.cc b/Test/Main.cc index 5c2967d..6f4e4f1 100644 --- a/Test/Main.cc +++ b/Test/Main.cc @@ -67,15 +67,16 @@ int main (int argc, const char* argv[]) { cout << "MAIN MENU\n" << "------------------------------\n" - << " 1: Types \n" - << " 2: Timer \n" - << " 3: Keyboard \n" - << " 4: Mouse \n" - << " 5: Process \n" - << " 6: Window \n" - << " 7: Memory \n" - << " 8: Screen \n" - << " 9: Clipboard\n\n"; + << " 1: Types \n" + << " 2: Timer \n" + << " 3: Keyboard \n" + << " 4: Mouse \n" + << " 5: Process \n" + << " 6: Memory \n" + << " 7: Window \n" + << " 8: Screen \n" + << " 9: Overlay \n" + << " 10: Clipboard\n\n"; // Ask the user to make a selection cout << "Enter component(s) to test: "; @@ -89,16 +90,17 @@ int main (int argc, const char* argv[]) bool result; switch (selection) { - case 1: result = TestTypes (); break; - case 2: result = TestTimer (); break; - case 3: result = TestKeyboard (); break; - case 4: result = TestMouse (); break; - case 5: result = TestProcess (); break; - case 6: result = TestWindow (); break; - case 8: result = TestScreen (); break; - case 9: result = TestClipboard(); break; - - case 7: + case 1: result = TestTypes (); break; + case 2: result = TestTimer (); break; + case 3: result = TestKeyboard (); break; + case 4: result = TestMouse (); break; + case 5: result = TestProcess (); break; + case 7: result = TestWindow (); break; + case 8: result = TestScreen (); break; + case 9: result = TestOverlay (); break; + case 10: result = TestClipboard(); break; + + case 6: cout << uppercase; result = TestMemory(); cout << nouppercase; diff --git a/Test/Overlay.cc b/Test/Overlay.cc new file mode 100644 index 0000000..bceba96 --- /dev/null +++ b/Test/Overlay.cc @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////////// +// -------------------------------------------------------------------------- // +// // +// (C) 2010-2017 Robot Developers // +// See LICENSE for licensing info // +// // +// -------------------------------------------------------------------------- // +//////////////////////////////////////////////////////////////////////////////// + +//----------------------------------------------------------------------------// +// Prefaces // +//----------------------------------------------------------------------------// + +#include "Test.h" + + + +//----------------------------------------------------------------------------// +// Locals // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +static bool TestGeneric (void) +{ + return true; +} + + + +//----------------------------------------------------------------------------// +// Functions // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +bool TestOverlay (void) +{ + cout << "TEST OVERLAY\n" + << "------------------------------\n"; + + return TestGeneric(); +} diff --git a/Test/Peon.vs12.vcxproj b/Test/Peon.vs12.vcxproj index 440ef7f..532e3a7 100644 --- a/Test/Peon.vs12.vcxproj +++ b/Test/Peon.vs12.vcxproj @@ -83,4 +83,4 @@ - \ No newline at end of file + diff --git a/Test/Peon.vs13.vcxproj b/Test/Peon.vs13.vcxproj index 0b7083f..c6c729e 100644 --- a/Test/Peon.vs13.vcxproj +++ b/Test/Peon.vs13.vcxproj @@ -83,4 +83,4 @@ - \ No newline at end of file + diff --git a/Test/Peon.vs15.vcxproj b/Test/Peon.vs15.vcxproj index b3a04b3..6202f68 100644 --- a/Test/Peon.vs15.vcxproj +++ b/Test/Peon.vs15.vcxproj @@ -83,4 +83,4 @@ - \ No newline at end of file + diff --git a/Test/Test.h b/Test/Test.h index c17cf18..0702639 100644 --- a/Test/Test.h +++ b/Test/Test.h @@ -178,7 +178,8 @@ bool TestTimer (void); bool TestKeyboard (void); bool TestMouse (void); bool TestProcess (void); -bool TestWindow (void); bool TestMemory (void); +bool TestWindow (void); bool TestScreen (void); +bool TestOverlay (void); bool TestClipboard (void); diff --git a/Test/Test.vs12.vcxproj b/Test/Test.vs12.vcxproj index 65fd1e3..26bf80d 100644 --- a/Test/Test.vs12.vcxproj +++ b/Test/Test.vs12.vcxproj @@ -44,6 +44,7 @@ + @@ -325,4 +326,4 @@ - \ No newline at end of file + diff --git a/Test/Test.vs12.vcxproj.filters b/Test/Test.vs12.vcxproj.filters index 65fd334..5b177b2 100644 --- a/Test/Test.vs12.vcxproj.filters +++ b/Test/Test.vs12.vcxproj.filters @@ -23,6 +23,9 @@ Tests + + Tests + Tests @@ -41,4 +44,4 @@ - \ No newline at end of file + diff --git a/Test/Test.vs13.vcxproj b/Test/Test.vs13.vcxproj index ed5c560..4af2873 100644 --- a/Test/Test.vs13.vcxproj +++ b/Test/Test.vs13.vcxproj @@ -44,6 +44,7 @@ + @@ -325,4 +326,4 @@ - \ No newline at end of file + diff --git a/Test/Test.vs13.vcxproj.filters b/Test/Test.vs13.vcxproj.filters index 65fd334..5b177b2 100644 --- a/Test/Test.vs13.vcxproj.filters +++ b/Test/Test.vs13.vcxproj.filters @@ -23,6 +23,9 @@ Tests + + Tests + Tests @@ -41,4 +44,4 @@ - \ No newline at end of file + diff --git a/Test/Test.vs15.vcxproj b/Test/Test.vs15.vcxproj index 1eb13dc..a60f5ea 100644 --- a/Test/Test.vs15.vcxproj +++ b/Test/Test.vs15.vcxproj @@ -44,6 +44,7 @@ + @@ -325,4 +326,4 @@ - \ No newline at end of file + diff --git a/Test/Test.vs15.vcxproj.filters b/Test/Test.vs15.vcxproj.filters index 65fd334..5b177b2 100644 --- a/Test/Test.vs15.vcxproj.filters +++ b/Test/Test.vs15.vcxproj.filters @@ -23,6 +23,9 @@ Tests + + Tests + Tests @@ -41,4 +44,4 @@ - \ No newline at end of file + From f24d81e68811d3dd577e6b3895322a67db33551c Mon Sep 17 00:00:00 2001 From: dkrutsko Date: Fri, 24 Mar 2017 02:03:41 -0400 Subject: [PATCH 3/3] Added initial Overlay class API --- Source/Overlay.cc | 493 +++++++++++++++++++++++++++++++++++++++++++++- Source/Overlay.h | 73 ++++++- 2 files changed, 564 insertions(+), 2 deletions(-) diff --git a/Source/Overlay.cc b/Source/Overlay.cc index 3542996..6973f08 100644 --- a/Source/Overlay.cc +++ b/Source/Overlay.cc @@ -31,12 +31,503 @@ ROBOT_NS_BEGIN +//----------------------------------------------------------------------------// +// Classes Overlay // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +struct Overlay::Data +{ + // TODO: +}; + + + +//----------------------------------------------------------------------------// +// Constructors Overlay // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +Overlay::Overlay (const Bounds& bounds) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +Overlay::Overlay (int32 x, int32 y, + int32 w, int32 h) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + + + //----------------------------------------------------------------------------// // Functions Overlay // //----------------------------------------------------------------------------// //////////////////////////////////////////////////////////////////////////////// -// TODO: +bool Overlay::IsValid (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return false; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::Create (const Bounds& bounds) +{ + return Create (bounds.X, bounds.Y, + bounds.W, bounds.H); +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::Create (int32 x, + int32 y, int32 w, int32 h) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return false; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Destroy (void) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::IsTopMost (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return false; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::SetTopMost (bool state) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +real32 Overlay::GetOpacity (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return 0; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return 0; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return 0; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::SetOpacity (real32 opacity) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::IsVisible (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return false; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return false; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::SetVisible (bool visible) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +uintptr Overlay::GetHandle (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return 0; + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return 0; + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return 0; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +Bounds Overlay::GetClient (void) const +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + return Bounds(); + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + return Bounds(); + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + return Bounds(); + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::SetClient (const Bounds& bounds) +{ + SetClient (bounds.X, bounds.Y, + bounds.W, bounds.H); +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::SetClient (int32 x, + int32 y, int32 w, int32 h) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +Point Overlay::MapToClient (const Point& point) const +{ + // Check if the overlay is valid + if (!IsValid()) return Point(); + return point - GetClient().GetPoint(); +} + +//////////////////////////////////////////////////////////////////////////////// + +Point Overlay::MapToScreen (const Point& point) const +{ + // Check if the overlay is valid + if (!IsValid()) return Point(); + return point + GetClient().GetPoint(); +} + +//////////////////////////////////////////////////////////////////////////////// + +Bounds Overlay::MapToClient (const Bounds& bounds) const +{ + // Check if the overlay is valid + if (!IsValid()) return Bounds(); + return Bounds (bounds.GetPoint() - GetClient().GetPoint(), bounds.GetSize()); +} + +//////////////////////////////////////////////////////////////////////////////// + +Bounds Overlay::MapToScreen (const Bounds& bounds) const +{ + // Check if the overlay is valid + if (!IsValid()) return Bounds(); + return Bounds (bounds.GetPoint() + GetClient().GetPoint(), bounds.GetSize()); +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Clear (const Color& color) +{ + auto bounds = GetClient(); + Clear (bounds.X, bounds.Y, + bounds.W, bounds.H, color); +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Clear (const Bounds& bounds, + const Color & color) +{ + Clear (bounds.X, bounds.Y, + bounds.W, bounds.H, color); +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Clear (int32 x, int32 y, + int32 w, int32 h, + const Color& color) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Render (const Image& image, + const Point& target) +{ +#ifdef ROBOT_OS_LINUX + + // TODO: + +#endif +#ifdef ROBOT_OS_MAC + + // TODO: + +#endif +#ifdef ROBOT_OS_WIN + + // TODO: + +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Overlay::Render (const Image & image, + const Bounds& source, + const Point & target) +{ + // TODO: Requires merging #82 +} + + + +//----------------------------------------------------------------------------// +// Operators Overlay // +//----------------------------------------------------------------------------// + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::operator == (const Overlay& overlay) const +{ + return GetHandle() == overlay.GetHandle(); +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::operator != (const Overlay& overlay) const +{ + return GetHandle() != overlay.GetHandle(); +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::operator == (uintptr handle) const +{ + return GetHandle() == handle; +} + +//////////////////////////////////////////////////////////////////////////////// + +bool Overlay::operator != (uintptr handle) const +{ + return GetHandle() != handle; +} ROBOT_NS_END diff --git a/Source/Overlay.h b/Source/Overlay.h index d7e2b1e..6004d44 100644 --- a/Source/Overlay.h +++ b/Source/Overlay.h @@ -14,8 +14,16 @@ #pragma once #include "Types.h" +#include + ROBOT_NS_BEGIN +#ifdef ROBOT_OS_WIN + #pragma warning (push) + // Ignore the VS C4251 warning + #pragma warning (disable:4251) +#endif + //----------------------------------------------------------------------------// @@ -26,7 +34,70 @@ ROBOT_NS_BEGIN class ROBOT_EXPORT Overlay { - // TODO: +public: + explicit Overlay (const Bounds& b); + explicit Overlay (int32 x, int32 y, + int32 w, int32 h); + +public: + bool IsValid (void) const; + + bool Create (const Bounds& b); + bool Create (int32 x, int32 y, + int32 w, int32 h); + void Destroy (void); + + bool IsTopMost (void) const; + void SetTopMost (bool state); + + real32 GetOpacity (void) const; + void SetOpacity (real32 opacity); + + bool IsVisible (void) const; + void SetVisible (bool visible); + + uintptr GetHandle (void) const; + + Bounds GetClient (void) const; + void SetClient (const Bounds& b); + void SetClient (int32 x, int32 y, + int32 w, int32 h); + + Point MapToClient (const Point& point) const; + Point MapToScreen (const Point& point) const; + Bounds MapToClient (const Bounds& bounds) const; + Bounds MapToScreen (const Bounds& bounds) const; + + void Clear (const Color& color = 0); + + void Clear (const Bounds& b, + const Color & color = 0); + + void Clear (int32 x, int32 y, + int32 w, int32 h, + const Color& color = 0); + + void Render (const Image& image, + const Point& target = 0); + + void Render (const Image & image, + const Bounds& source, + const Point & target = 0); + +public: + bool operator == (const Overlay& overlay) const; + bool operator != (const Overlay& overlay) const; + + bool operator == (uintptr handle) const; + bool operator != (uintptr handle) const; + +private: + struct Data; + std::shared_ptr mData; // Shared information }; +#ifdef ROBOT_OS_WIN + #pragma warning (pop) +#endif + ROBOT_NS_END