Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: ui/native_theme/native_theme.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/native_theme/fallback_theme.cc ('k') | ui/native_theme/native_theme.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/native_theme/native_theme.h
diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h
deleted file mode 100644
index af6febf6af420c154f7919888f951ef3d3a5945d..0000000000000000000000000000000000000000
--- a/ui/native_theme/native_theme.h
+++ /dev/null
@@ -1,361 +0,0 @@
-// 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_NATIVE_THEME_NATIVE_THEME_H_
-#define UI_NATIVE_THEME_NATIVE_THEME_H_
-
-#include "base/observer_list.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/native_theme/native_theme_export.h"
-
-class SkCanvas;
-
-namespace gfx {
-class Rect;
-class Size;
-}
-
-namespace ui {
-
-class NativeThemeObserver;
-
-// This class supports drawing UI controls (like buttons, text fields, lists,
-// comboboxes, etc) that look like the native UI controls of the underlying
-// platform, such as Windows or Linux. It also supplies default colors for
-// dialog box backgrounds, etc., which are obtained from the system theme where
-// possible.
-//
-// The supported control types are listed in the Part enum. These parts can be
-// in any state given by the State enum, where the actual definition of the
-// state is part-specific. The supported colors are listed in the ColorId enum.
-//
-// Some parts require more information than simply the state in order to be
-// drawn correctly, and this information is given to the Paint() method via the
-// ExtraParams union. Each part that requires more information has its own
-// field in the union.
-//
-// NativeTheme also supports getting the default size of a given part with
-// the GetPartSize() method.
-class NATIVE_THEME_EXPORT NativeTheme {
- public:
- // The part to be painted / sized.
- enum Part {
- kComboboxArrow,
- kCheckbox,
- kInnerSpinButton,
- kMenuList,
- kMenuCheck,
- kMenuCheckBackground,
- kMenuPopupArrow,
- kMenuPopupBackground,
- kMenuPopupGutter,
- kMenuPopupSeparator,
- kMenuItemBackground,
- kProgressBar,
- kPushButton,
- kRadio,
-
- // The order of the arrow enums is important, do not change without also
- // changing the code in platform implementations.
- kScrollbarDownArrow,
- kScrollbarLeftArrow,
- kScrollbarRightArrow,
- kScrollbarUpArrow,
-
- kScrollbarHorizontalThumb,
- kScrollbarVerticalThumb,
- kScrollbarHorizontalTrack,
- kScrollbarVerticalTrack,
- kScrollbarHorizontalGripper,
- kScrollbarVerticalGripper,
- // The corner is drawn when there is both a horizontal and vertical
- // scrollbar.
- kScrollbarCorner,
- kSliderTrack,
- kSliderThumb,
- kTabPanelBackground,
- kTextField,
- kTrackbarThumb,
- kTrackbarTrack,
- kWindowResizeGripper,
- kMaxPart,
- };
-
- // The state of the part.
- enum State {
- // IDs defined as specific values for use in arrays.
- kDisabled = 0,
- kHovered = 1,
- kNormal = 2,
- kPressed = 3,
- kNumStates = kPressed + 1,
- };
-
- // Each structure below holds extra information needed when painting a given
- // part.
-
- struct ButtonExtraParams {
- bool checked;
- bool indeterminate; // Whether the button state is indeterminate.
- bool is_default; // Whether the button is default button.
- bool is_focused;
- bool has_border;
- int classic_state; // Used on Windows when uxtheme is not available.
- SkColor background_color;
- };
-
- struct InnerSpinButtonExtraParams {
- bool spin_up;
- bool read_only;
- int classic_state; // Used on Windows when uxtheme is not available.
- };
-
- struct MenuArrowExtraParams {
- bool pointing_right;
- // Used for the disabled state to indicate if the item is both disabled and
- // selected.
- bool is_selected;
- };
-
- struct MenuCheckExtraParams {
- bool is_radio;
- // Used for the disabled state to indicate if the item is both disabled and
- // selected.
- bool is_selected;
- };
-
- struct MenuItemExtraParams {
- bool is_selected;
- };
-
- struct MenuListExtraParams {
- bool has_border;
- bool has_border_radius;
- int arrow_x;
- int arrow_y;
- SkColor background_color;
- int classic_state; // Used on Windows when uxtheme is not available.
- };
-
- struct MenuSeparatorExtraParams {
- bool has_gutter;
- };
-
- struct MenuBackgroundExtraParams {
- int corner_radius;
- };
-
- struct ProgressBarExtraParams {
- double animated_seconds;
- bool determinate;
- int value_rect_x;
- int value_rect_y;
- int value_rect_width;
- int value_rect_height;
- };
-
- struct ScrollbarArrowExtraParams {
- bool is_hovering;
- };
-
- struct ScrollbarTrackExtraParams {
- bool is_upper;
- int track_x;
- int track_y;
- int track_width;
- int track_height;
- int classic_state; // Used on Windows when uxtheme is not available.
- };
-
- struct ScrollbarThumbExtraParams {
- bool is_hovering;
- };
-
- struct SliderExtraParams {
- bool vertical;
- bool in_drag;
- };
-
- struct TextFieldExtraParams {
- bool is_text_area;
- bool is_listbox;
- SkColor background_color;
- bool is_read_only;
- bool is_focused;
- bool fill_content_area;
- bool draw_edges;
- int classic_state; // Used on Windows when uxtheme is not available.
- };
-
- struct TrackbarExtraParams {
- bool vertical;
- int classic_state; // Used on Windows when uxtheme is not available.
- };
-
- union ExtraParams {
- ButtonExtraParams button;
- InnerSpinButtonExtraParams inner_spin;
- MenuArrowExtraParams menu_arrow;
- MenuCheckExtraParams menu_check;
- MenuItemExtraParams menu_item;
- MenuListExtraParams menu_list;
- MenuSeparatorExtraParams menu_separator;
- MenuBackgroundExtraParams menu_background;
- ProgressBarExtraParams progress_bar;
- ScrollbarArrowExtraParams scrollbar_arrow;
- ScrollbarTrackExtraParams scrollbar_track;
- ScrollbarThumbExtraParams scrollbar_thumb;
- SliderExtraParams slider;
- TextFieldExtraParams text_field;
- TrackbarExtraParams trackbar;
- };
-
- // Return the size of the part.
- virtual gfx::Size GetPartSize(Part part,
- State state,
- const ExtraParams& extra) const = 0;
-
- // Paint the part to the canvas.
- virtual void Paint(SkCanvas* canvas,
- Part part,
- State state,
- const gfx::Rect& rect,
- const ExtraParams& extra) const = 0;
-
- // Paint part during state transition, used for overlay scrollbar state
- // transition animation.
- virtual void PaintStateTransition(SkCanvas* canvas,
- Part part,
- State startState,
- State endState,
- double progress,
- const gfx::Rect& rect) const { }
-
- // Supports theme specific colors.
- void SetScrollbarColors(unsigned inactive_color,
- unsigned active_color,
- unsigned track_color);
-
- // Colors for GetSystemColor().
- enum ColorId {
- // Windows
- kColorId_WindowBackground,
- // Dialogs
- kColorId_DialogBackground,
- // FocusableBorder
- kColorId_FocusedBorderColor,
- kColorId_UnfocusedBorderColor,
- // Button
- kColorId_ButtonBackgroundColor,
- kColorId_ButtonEnabledColor,
- kColorId_ButtonDisabledColor,
- kColorId_ButtonHighlightColor,
- kColorId_ButtonHoverColor,
- kColorId_ButtonHoverBackgroundColor,
- kColorId_BlueButtonEnabledColor,
- kColorId_BlueButtonDisabledColor,
- kColorId_BlueButtonPressedColor,
- kColorId_BlueButtonHoverColor,
- kColorId_BlueButtonShadowColor,
- // MenuItem
- kColorId_EnabledMenuItemForegroundColor,
- kColorId_DisabledMenuItemForegroundColor,
- kColorId_DisabledEmphasizedMenuItemForegroundColor,
- kColorId_SelectedMenuItemForegroundColor,
- kColorId_FocusedMenuItemBackgroundColor,
- kColorId_HoverMenuItemBackgroundColor,
- kColorId_MenuSeparatorColor,
- kColorId_MenuBackgroundColor,
- kColorId_MenuBorderColor,
- // MenuButton - buttons in wrench menu
- kColorId_EnabledMenuButtonBorderColor,
- kColorId_FocusedMenuButtonBorderColor,
- kColorId_HoverMenuButtonBorderColor,
- // Label
- kColorId_LabelEnabledColor,
- kColorId_LabelDisabledColor,
- kColorId_LabelBackgroundColor,
- // Textfield
- kColorId_TextfieldDefaultColor,
- kColorId_TextfieldDefaultBackground,
- kColorId_TextfieldReadOnlyColor,
- kColorId_TextfieldReadOnlyBackground,
- kColorId_TextfieldSelectionColor,
- kColorId_TextfieldSelectionBackgroundFocused,
- // Tooltip
- kColorId_TooltipBackground,
- kColorId_TooltipText,
- // Tree
- kColorId_TreeBackground,
- kColorId_TreeText,
- kColorId_TreeSelectedText,
- kColorId_TreeSelectedTextUnfocused,
- kColorId_TreeSelectionBackgroundFocused,
- kColorId_TreeSelectionBackgroundUnfocused,
- kColorId_TreeArrow,
- // Table
- kColorId_TableBackground,
- kColorId_TableText,
- kColorId_TableSelectedText,
- kColorId_TableSelectedTextUnfocused,
- kColorId_TableSelectionBackgroundFocused,
- kColorId_TableSelectionBackgroundUnfocused,
- kColorId_TableGroupingIndicatorColor,
- // Results Tables, such as the chrome omnibox.
- kColorId_ResultsTableNormalBackground,
- kColorId_ResultsTableHoveredBackground,
- kColorId_ResultsTableSelectedBackground,
- kColorId_ResultsTableNormalText,
- kColorId_ResultsTableHoveredText,
- kColorId_ResultsTableSelectedText,
- kColorId_ResultsTableNormalDimmedText,
- kColorId_ResultsTableHoveredDimmedText,
- kColorId_ResultsTableSelectedDimmedText,
- kColorId_ResultsTableNormalUrl,
- kColorId_ResultsTableHoveredUrl,
- kColorId_ResultsTableSelectedUrl,
- kColorId_ResultsTableNormalDivider,
- kColorId_ResultsTableHoveredDivider,
- kColorId_ResultsTableSelectedDivider,
- // TODO(benrg): move other hardcoded colors here.
-
- kColorId_NumColors,
- };
-
- // Return a color from the system theme.
- virtual SkColor GetSystemColor(ColorId color_id) const = 0;
-
- // Returns a shared instance of the native theme.
- // The returned object should not be deleted by the caller. This function
- // is not thread safe and should only be called from the UI thread.
- // Each port of NativeTheme should provide its own implementation of this
- // function, returning the port's subclass.
- static NativeTheme* instance();
-
- // Add or remove observers to be notified when the native theme changes.
- void AddObserver(NativeThemeObserver* observer);
- void RemoveObserver(NativeThemeObserver* observer);
-
- // Notify observers of native theme changes.
- void NotifyObservers();
-
- protected:
- NativeTheme();
- virtual ~NativeTheme();
-
- unsigned int thumb_inactive_color_;
- unsigned int thumb_active_color_;
- unsigned int track_color_;
-
- private:
- // Observers to notify when the native theme changes.
- ObserverList<NativeThemeObserver> native_theme_observers_;
-
- DISALLOW_COPY_AND_ASSIGN(NativeTheme);
-};
-
-} // namespace ui
-
-#endif // UI_NATIVE_THEME_NATIVE_THEME_H_
« no previous file with comments | « ui/native_theme/fallback_theme.cc ('k') | ui/native_theme/native_theme.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698