// Copyright 2017 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_VIEWS_STYLE_TYPOGRAPHY_H_ #define UI_VIEWS_STYLE_TYPOGRAPHY_H_ #include "third_party/skia/include/core/SkColor.h" #include "ui/views/views_export.h" namespace gfx { class FontList; } namespace views { class View; namespace style { // Where a piece of text appears in the UI. This influences size and weight, but // typically not style or color. enum TextContext { // Embedders can extend this enum with additional values that are understood // by the TypographyProvider offered by their ViewsDelegate. Embedders define // enum values from VIEWS_TEXT_CONTEXT_END. Values named beginning with // "CONTEXT_" represent the actual TextContexts: the rest are markers. VIEWS_TEXT_CONTEXT_START = 0, // Text that appears on a button control. Usually 12pt. This includes controls // with button-like behavior, such as Checkbox. CONTEXT_BUTTON = VIEWS_TEXT_CONTEXT_START, // Text that appears on an MD-styled dialog button control. Usually 12pt. CONTEXT_BUTTON_MD, // A title for a dialog window. Usually 15pt. Multi-line OK. CONTEXT_DIALOG_TITLE, // Text to label a control, usually next to it. "Body 2". Usually 12pt. CONTEXT_LABEL, // Text used for body text in message boxes. CONTEXT_MESSAGE_BOX_BODY_TEXT, // Text in a table row. CONTEXT_TABLE_ROW, // An editable text field. Usually matches CONTROL_LABEL. CONTEXT_TEXTFIELD, // Text for the menu items that appear in the touch-selection context menu. CONTEXT_TOUCH_MENU, // Embedders must start TextContext enum values from this value. VIEWS_TEXT_CONTEXT_END, // All TextContext enum values must be below this value. TEXT_CONTEXT_MAX = 0x1000 }; // How a piece of text should be presented. This influences color and style, but // typically not size. enum TextStyle { // TextStyle enum values must always be greater than any TextContext value. // This allows the code to verify at runtime that arguments of the two types // have not been swapped. VIEWS_TEXT_STYLE_START = TEXT_CONTEXT_MAX, // Primary text: solid black, normal weight. Converts to DISABLED in some // contexts (e.g. BUTTON_TEXT, FIELD). STYLE_PRIMARY = VIEWS_TEXT_STYLE_START, // Style for the default button on a dialog. STYLE_DIALOG_BUTTON_DEFAULT, // Disabled "greyed out" text. STYLE_DISABLED, // The style used for links. Usually a solid shade of blue. STYLE_LINK, // Active tab in a tabbed pane. STYLE_TAB_ACTIVE, // Hovered tab in a tabbed pane. STYLE_TAB_HOVERED, // Inactive tab in a tabbed pane. STYLE_TAB_INACTIVE, // Embedders must start TextStyle enum values from here. VIEWS_TEXT_STYLE_END }; // Helpers to obtain text properties from the TypographyProvider given by the // current LayoutProvider. |view| is the View requesting the property. |context| // can be an enum value from TextContext, or a value understood by the // embedder's TypographyProvider. Similarly, |style| corresponds to TextStyle. VIEWS_EXPORT const gfx::FontList& GetFont(int context, int style); VIEWS_EXPORT SkColor GetColor(const views::View& view, int context, int style); VIEWS_EXPORT int GetLineHeight(int context, int style); } // namespace style } // namespace views #endif // UI_VIEWS_STYLE_TYPOGRAPHY_H_