chromium/ash/public/cpp/ash_typography.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_PUBLIC_CPP_ASH_TYPOGRAPHY_H_
#define ASH_PUBLIC_CPP_ASH_TYPOGRAPHY_H_

#include "ash/public/cpp/ash_public_export.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/font.h"
#include "ui/views/style/typography.h"

namespace ash {

enum AshTextContext {
  ASH_TEXT_CONTEXT_START = views::style::VIEWS_TEXT_CONTEXT_END,

  // A button that appears in the launcher's status area.
  CONTEXT_LAUNCHER_BUTTON = ASH_TEXT_CONTEXT_START,

  // Text label that used in launcher nudge label. Medium weight. 13pt size.
  CONTEXT_LAUNCHER_NUDGE_LABEL,

  // A button that appears within a row of the tray popup.
  CONTEXT_TRAY_POPUP_BUTTON,

  // A headline label that appears in a larger window.
  CONTEXT_HEADLINE_OVERSIZED,

  // Title label in the Sharesheet bubble. Medium weight. Usually 16pt.
  CONTEXT_SHARESHEET_BUBBLE_TITLE,

  // Body text label in the Sharesheet bubble. Medium weight. Usually 14pt.
  CONTEXT_SHARESHEET_BUBBLE_BODY,

  // Body text label in the Sharesheet bubble. Generally appears under body
  // text. Usually 13pt.
  CONTEXT_SHARESHEET_BUBBLE_BODY_SECONDARY,

  // Text label in the Sharesheet bubble for small text. Medium weight.
  // Usually 10pt.
  CONTEXT_SHARESHEET_BUBBLE_SMALL,

  // A month label that appears in the Calendar view.
  CONTEXT_CALENDAR_LABEL,

  // Date text in the Calendar view.
  CONTEXT_CALENDAR_DATE,

  // Title and details text label used in search result view. Usually 14 pt.
  CONTEXT_SEARCH_RESULT_VIEW,

  // Big title text label used in search result view. Usually 36 pt.
  CONTEXT_SEARCH_RESULT_BIG_TITLE,

  // Big title superscript text label used in search result view. Usually 18 pt.
  CONTEXT_SEARCH_RESULT_BIG_TITLE_SUPERSCRIPT,

  // Details text label used for inline answer search result view. Usually 12pt.
  CONTEXT_SEARCH_RESULT_VIEW_INLINE_ANSWER_DETAILS,

  // Label text for search result view categories. Usually 13 pt. Appears above
  // one or more search result views.
  CONTEXT_SEARCH_RESULT_CATEGORY_LABEL,

  ASH_TEXT_CONTEXT_END
};

enum AshTextStyle {
  ASH_TEXT_STYLE_START = views::style::VIEWS_TEXT_STYLE_END,

  // Used to strongly draw attention to a section or body of text such as a
  // matched search string.
  STYLE_HIGHLIGHT = ASH_TEXT_STYLE_START,

  // Text styling specifically for the Chrome OS sharesheet.
  STYLE_SHARESHEET,

  // Text styling for launcher's search result view.
  STYLE_LAUNCHER,

  ASH_TEXT_STYLE_END
};

// Sets the |details| for ash-specific text contexts. Values are only set for
// contexts specific to ash.
void ASH_PUBLIC_EXPORT
ApplyAshFontStyles(int context,
                   int style,
                   ui::ResourceBundle::FontDetails& details);

}  // namespace ash

#endif  // ASH_PUBLIC_CPP_ASH_TYPOGRAPHY_H_