// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_
#define UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_

#include <windows.h>

#include "base/check_op.h"
#include "base/macros.h"

namespace gfx {

// Helper class for setting and restore the map mode on a DC.
class ScopedSetMapMode {
 public:
  ScopedSetMapMode(HDC hdc, int map_mode)
      : hdc_(hdc),
        old_map_mode_(SetMapMode(hdc, map_mode)) {
    DCHECK(hdc_);
    DCHECK_NE(map_mode, 0);
    DCHECK_NE(old_map_mode_, 0);
  }

  ScopedSetMapMode(const ScopedSetMapMode&) = delete;
  ScopedSetMapMode& operator=(const ScopedSetMapMode&) = delete;

  ~ScopedSetMapMode() {
    const int mode = SetMapMode(hdc_, old_map_mode_);
    DCHECK_NE(mode, 0);
  }

 private:
  HDC hdc_;
  int old_map_mode_;
};

}  // namespace gfx

#endif  // UI_GFX_WIN_SCOPED_SET_MAP_MODE_H_
