Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/Cinder.h"
00026 #include "cinder/Area.h"
00027
00028 #if defined( CINDER_MAC )
00029 # include <CoreVideo/CoreVideo.h>
00030 # if defined( __OBJC__ )
00031 @class NSScreen;
00032 # else
00033 class NSScreen;
00034 # endif
00035 #elif defined( CINDER_MSW )
00036 #include <windows.h>
00037 #undef min
00038 #undef max
00039 #endif
00040
00041 #include <map>
00042 #include <vector>
00043
00044 namespace cinder {
00045
00046 typedef std::shared_ptr<class Display> DisplayRef;
00047
00048 class Display {
00049 public:
00050 ~Display();
00051 int getWidth() const { return mArea.getWidth(); }
00052 int getHeight() const { return mArea.getHeight(); }
00053 Area getArea() const { return mArea; }
00054 int getBitsPerPixel() const { return mBitsPerPixel; }
00055
00057 bool contains( const Vec2i &pt ) const { return mArea.contains( pt ); }
00058
00059 #if defined( CINDER_MAC )
00060 NSScreen* getNsScreen() const { return mScreen; }
00061 CGDirectDisplayID getCgDirectDisplayId() const { return mDirectDisplayID; }
00062 #endif
00063
00064 static DisplayRef getMainDisplay();
00065 static const std::vector<DisplayRef>& getDisplays();
00067 static DisplayRef getDisplayForPoint( const Vec2i &pt );
00068
00069 #if defined( CINDER_MAC )
00070 static DisplayRef findFromCgDirectDisplayId( CGDirectDisplayID displayID );
00071 #elif defined( CINDER_MSW )
00072
00073 static DisplayRef findFromHmonitor( HMONITOR hMonitor );
00074 static BOOL CALLBACK enumMonitorProc( HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM lParam );
00075 #endif
00076
00077 private:
00078 Area mArea;
00079 int mBitsPerPixel;
00080 #if defined( CINDER_MAC )
00081 NSScreen *mScreen;
00082 CGDirectDisplayID mDirectDisplayID;
00083 #elif defined( CINDER_MSW )
00084 HMONITOR mMonitor;
00085 #endif
00086
00087 static void enumerateDisplays();
00088
00089 static std::vector<DisplayRef> sDisplays;
00090 static bool sDisplaysInitialized;
00091 };
00092
00093 }