Index: base/gfx/native_theme.h |
=================================================================== |
--- base/gfx/native_theme.h (revision 28001) |
+++ base/gfx/native_theme.h (working copy) |
@@ -1,296 +0,0 @@ |
-// Copyright (c) 2006-2008 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. |
-// |
-// A wrapper class for working with custom XP/Vista themes provided in |
-// uxtheme.dll. This is a singleton class that can be grabbed using |
-// NativeTheme::instance(). |
-// For more information on visual style parts and states, see: |
-// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/topics/partsandstates.asp |
- |
-#ifndef BASE_GFX_NATIVE_THEME_H__ |
-#define BASE_GFX_NATIVE_THEME_H__ |
- |
-#include <windows.h> |
-#include <uxtheme.h> |
-#include "base/basictypes.h" |
-#include "base/gfx/size.h" |
-#include "third_party/skia/include/core/SkColor.h" |
- |
-namespace skia { |
-class PlatformCanvas; |
-} // namespace skia |
- |
-namespace gfx { |
- |
-// TODO: Define class member enums to replace part_id and state_id parameters |
-// that are currently defined in <vssym32.h>. Afterward, classic_state should |
-// be removed and class users wouldn't need to include <vssym32.h> anymore. |
-// This would enable HOT state on non-themed UI (like when RDP'ing) and would |
-// simplify usage. |
-// TODO: This class should probably be changed to be platform independent at |
-// the same time. |
-class NativeTheme { |
- public: |
- enum ThemeName { |
- BUTTON, |
- LIST, |
- MENU, |
- MENULIST, |
- SCROLLBAR, |
- STATUS, |
- TAB, |
- TEXTFIELD, |
- TRACKBAR, |
- WINDOW, |
- LAST |
- }; |
- |
- // This enumeration is used within PaintMenuArrow in order to indicate the |
- // direction the menu arrow should point to. |
- enum MenuArrowDirection { |
- LEFT_POINTING_ARROW, |
- RIGHT_POINTING_ARROW |
- }; |
- |
- typedef HRESULT (WINAPI* DrawThemeBackgroundPtr)(HANDLE theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- const RECT* rect, |
- const RECT* clip_rect); |
- typedef HRESULT (WINAPI* DrawThemeBackgroundExPtr)(HANDLE theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- const RECT* rect, |
- const DTBGOPTS* opts); |
- typedef HRESULT (WINAPI* GetThemeColorPtr)(HANDLE hTheme, |
- int part_id, |
- int state_id, |
- int prop_id, |
- COLORREF* color); |
- typedef HRESULT (WINAPI* GetThemeContentRectPtr)(HANDLE hTheme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- const RECT* rect, |
- RECT* content_rect); |
- typedef HRESULT (WINAPI* GetThemePartSizePtr)(HANDLE hTheme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect, |
- int ts, |
- SIZE* size); |
- typedef HANDLE (WINAPI* OpenThemeDataPtr)(HWND window, |
- LPCWSTR class_list); |
- typedef HRESULT (WINAPI* CloseThemeDataPtr)(HANDLE theme); |
- |
- typedef void (WINAPI* SetThemeAppPropertiesPtr) (DWORD flags); |
- typedef BOOL (WINAPI* IsThemeActivePtr)(); |
- typedef HRESULT (WINAPI* GetThemeIntPtr)(HANDLE hTheme, |
- int part_id, |
- int state_id, |
- int prop_id, |
- int *value); |
- |
- HRESULT PaintButton(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect) const; |
- |
- HRESULT PaintDialogBackground(HDC dc, bool active, RECT* rect) const; |
- |
- HRESULT PaintListBackground(HDC dc, bool enabled, RECT* rect) const; |
- |
- // |arrow_direction| determines whether the arrow is pointing to the left or |
- // to the right. In RTL locales, sub-menus open from right to left and |
- // therefore the menu arrow should point to the left and not to the right. |
- HRESULT PaintMenuArrow(ThemeName theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect, |
- MenuArrowDirection arrow_direction, |
- bool is_highlighted) const; |
- |
- HRESULT PaintMenuBackground(ThemeName theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect) const; |
- |
- HRESULT PaintMenuCheck(ThemeName theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect, |
- bool is_highlighted) const; |
- |
- HRESULT PaintMenuCheckBackground(ThemeName theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect) const; |
- |
- HRESULT PaintMenuGutter(HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect) const; |
- |
- HRESULT PaintMenuItemBackground(ThemeName theme, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- bool selected, |
- RECT* rect) const; |
- |
- HRESULT PaintMenuList(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect) const; |
- |
- HRESULT PaintMenuSeparator(HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect) const; |
- |
- // Paints a scrollbar arrow. |classic_state| should have the appropriate |
- // classic part number ORed in already. |
- HRESULT PaintScrollbarArrow(HDC hdc, |
- int state_id, |
- int classic_state, |
- RECT* rect) const; |
- |
- // Paints a scrollbar track section. |align_rect| is only used in classic |
- // mode, and makes sure the checkerboard pattern in |target_rect| is aligned |
- // with one presumed to be in |align_rect|. |
- HRESULT PaintScrollbarTrack(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* target_rect, |
- RECT* align_rect, |
- skia::PlatformCanvas* canvas) const; |
- |
- // Paints a scrollbar thumb or gripper. |
- HRESULT PaintScrollbarThumb(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect) const; |
- |
- HRESULT PaintStatusGripper(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect) const; |
- |
- HRESULT PaintTabPanelBackground(HDC dc, RECT* rect) const; |
- |
- HRESULT PaintTextField(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect, |
- COLORREF color, |
- bool fill_content_area, |
- bool draw_edges) const; |
- |
- HRESULT PaintTrackbar(HDC hdc, |
- int part_id, |
- int state_id, |
- int classic_state, |
- RECT* rect, |
- skia::PlatformCanvas* canvas) const; |
- |
- bool IsThemingActive() const; |
- |
- HRESULT GetThemePartSize(ThemeName themeName, |
- HDC hdc, |
- int part_id, |
- int state_id, |
- RECT* rect, |
- int ts, |
- SIZE* size) const; |
- |
- HRESULT GetThemeColor(ThemeName theme, |
- int part_id, |
- int state_id, |
- int prop_id, |
- SkColor* color) const; |
- |
- // Get the theme color if theming is enabled. If theming is unsupported |
- // for this part, use Win32's GetSysColor to find the color specified |
- // by default_sys_color. |
- SkColor GetThemeColorWithDefault(ThemeName theme, |
- int part_id, |
- int state_id, |
- int prop_id, |
- int default_sys_color) const; |
- |
- HRESULT GetThemeInt(ThemeName theme, |
- int part_id, |
- int state_id, |
- int prop_id, |
- int *result) const; |
- |
- // Get the thickness of the border associated with the specified theme, |
- // defaulting to GetSystemMetrics edge size if themes are disabled. |
- // In Classic Windows, borders are typically 2px; on XP+, they are 1px. |
- Size GetThemeBorderSize(ThemeName theme) const; |
- |
- // Disables all theming for top-level windows in the entire process, from |
- // when this method is called until the process exits. All the other |
- // methods in this class will continue to work, but their output will ignore |
- // the user's theme. This is meant for use when running tests that require |
- // consistent visual results. |
- void DisableTheming() const; |
- |
- // Closes cached theme handles so we can unload the DLL or update our UI |
- // for a theme change. |
- void CloseHandles() const; |
- |
- // Gets our singleton instance. |
- static const NativeTheme* instance(); |
- |
- private: |
- NativeTheme(); |
- ~NativeTheme(); |
- |
- HRESULT PaintFrameControl(HDC hdc, |
- RECT* rect, |
- UINT type, |
- UINT state, |
- bool is_highlighted) const; |
- |
- // Returns a handle to the theme data. |
- HANDLE GetThemeHandle(ThemeName theme_name) const; |
- |
- // Function pointers into uxtheme.dll. |
- DrawThemeBackgroundPtr draw_theme_; |
- DrawThemeBackgroundExPtr draw_theme_ex_; |
- GetThemeColorPtr get_theme_color_; |
- GetThemeContentRectPtr get_theme_content_rect_; |
- GetThemePartSizePtr get_theme_part_size_; |
- OpenThemeDataPtr open_theme_; |
- CloseThemeDataPtr close_theme_; |
- SetThemeAppPropertiesPtr set_theme_properties_; |
- IsThemeActivePtr is_theme_active_; |
- GetThemeIntPtr get_theme_int_; |
- |
- // Handle to uxtheme.dll. |
- HMODULE theme_dll_; |
- |
- // A cache of open theme handles. |
- mutable HANDLE theme_handles_[LAST]; |
- |
- DISALLOW_EVIL_CONSTRUCTORS(NativeTheme); |
-}; |
- |
-} // namespace gfx |
- |
-#endif // BASE_GFX_NATIVE_THEME_H__ |