1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef nsScreenManagerWin_h___ 7 #define nsScreenManagerWin_h___ 8 9 #include "nsIScreenManager.h" 10 11 #include <windows.h> 12 #include "nsCOMPtr.h" 13 #include "nsTArray.h" 14 #include "mozilla/Attributes.h" 15 16 class nsIScreen; 17 18 //------------------------------------------------------------------------ 19 20 class ScreenListItem 21 { 22 public: ScreenListItem(HMONITOR inMon,nsIScreen * inScreen)23 ScreenListItem ( HMONITOR inMon, nsIScreen* inScreen ) 24 : mMon(inMon), mScreen(inScreen) { } ; 25 26 HMONITOR mMon; 27 nsCOMPtr<nsIScreen> mScreen; 28 }; 29 30 class nsScreenManagerWin final : public nsIScreenManager 31 { 32 public: 33 nsScreenManagerWin ( ); 34 35 NS_DECL_ISUPPORTS 36 NS_DECL_NSISCREENMANAGER 37 38 private: 39 ~nsScreenManagerWin(); 40 41 nsIScreen* CreateNewScreenObject ( HMONITOR inScreen ) ; 42 43 uint32_t mNumberOfScreens; 44 45 // cache the screens to avoid the memory allocations 46 AutoTArray<ScreenListItem, 8> mScreenList; 47 48 }; 49 50 #endif // nsScreenManagerWin_h___ 51