1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_ 6 #define UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_ 7 8 #include <windows.h> 9 10 #include "base/basictypes.h" 11 #include "base/logging.h" 12 13 namespace gfx { 14 15 // Helper class for setting and restore the map mode on a DC. 16 class ScopedSetMapMode { 17 public: 18 ScopedSetMapMode(HDC hdc, int map_mode) 19 : hdc_(hdc), 20 old_map_mode_(SetMapMode(hdc, map_mode)) { 21 DCHECK(hdc_); 22 DCHECK_NE(map_mode, 0); 23 DCHECK_NE(old_map_mode_, 0); 24 } 25 26 ~ScopedSetMapMode() { 27 const int mode = SetMapMode(hdc_, old_map_mode_); 28 DCHECK_NE(mode, 0); 29 } 30 31 private: 32 HDC hdc_; 33 int old_map_mode_; 34 35 DISALLOW_COPY_AND_ASSIGN(ScopedSetMapMode); 36 }; 37 38 } // namespace gfx 39 40 #endif // UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_ 41