| Index: ui/native_theme/native_theme_aura.cc
|
| diff --git a/ui/native_theme/native_theme_aura.cc b/ui/native_theme/native_theme_aura.cc
|
| deleted file mode 100644
|
| index 362ff99d0770ab25ed2c4bf519c3ea56c514acfb..0000000000000000000000000000000000000000
|
| --- a/ui/native_theme/native_theme_aura.cc
|
| +++ /dev/null
|
| @@ -1,329 +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.
|
| -
|
| -#include "ui/native_theme/native_theme_aura.h"
|
| -
|
| -#include <limits>
|
| -
|
| -#include "base/logging.h"
|
| -#include "ui/base/layout.h"
|
| -#include "ui/base/nine_image_painter_factory.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/nine_image_painter.h"
|
| -#include "ui/gfx/path.h"
|
| -#include "ui/gfx/rect.h"
|
| -#include "ui/gfx/size.h"
|
| -#include "ui/gfx/skbitmap_operations.h"
|
| -#include "ui/gfx/skia_util.h"
|
| -#include "ui/native_theme/common_theme.h"
|
| -#include "ui/native_theme/native_theme_switches.h"
|
| -#include "ui/resources/grit/ui_resources.h"
|
| -
|
| -using gfx::NineImagePainter;
|
| -
|
| -#define EMPTY_IMAGE_GRID { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
| -
|
| -namespace ui {
|
| -
|
| -namespace {
|
| -
|
| -const int kScrollbarThumbImages[NativeTheme::kNumStates][9] = {
|
| - EMPTY_IMAGE_GRID,
|
| - IMAGE_GRID(IDR_SCROLLBAR_THUMB_BASE_HOVER),
|
| - IMAGE_GRID(IDR_SCROLLBAR_THUMB_BASE_NORMAL),
|
| - IMAGE_GRID(IDR_SCROLLBAR_THUMB_BASE_PRESSED)
|
| -};
|
| -
|
| -const int kScrollbarArrowButtonImages[NativeTheme::kNumStates][9] = {
|
| - EMPTY_IMAGE_GRID,
|
| - IMAGE_GRID(IDR_SCROLLBAR_ARROW_BUTTON_BASE_HOVER),
|
| - IMAGE_GRID(IDR_SCROLLBAR_ARROW_BUTTON_BASE_NORMAL),
|
| - IMAGE_GRID(IDR_SCROLLBAR_ARROW_BUTTON_BASE_PRESSED)
|
| -};
|
| -
|
| -const uint8 kScrollbarOverlayThumbFillAlphas[NativeTheme::kNumStates] = {
|
| - 0, // Does not matter, will not paint for disabled state.
|
| - 178, // Hover state, opacity 70%, alpha would be 0.7 * 255.
|
| - 140, // Normal state, opacity 55%, alpha would be 0.55 * 255.
|
| - 178 // Pressed state, opacity 70%, alpha would be 0.7 * 255.
|
| -};
|
| -
|
| -const uint8 kScrollbarOverlayThumbStrokeAlphas[NativeTheme::kNumStates] = {
|
| - 0, // Does not matter, will not paint for disabled state.
|
| - 51, // Hover state, opacity 20%, alpha would be 0.2 * 255.
|
| - 38, // Normal state, opacity 15%, alpha would be 0.15 * 255.
|
| - 51 // Pressed state, opacity 20%, alpha would be 0.2 * 255.
|
| -};
|
| -
|
| -const int kScrollbarOverlayThumbStrokeImages[9] =
|
| - IMAGE_GRID_NO_CENTER(IDR_SCROLLBAR_OVERLAY_THUMB_STROKE);
|
| -
|
| -const int kScrollbarOverlayThumbFillImages[9] =
|
| - IMAGE_GRID(IDR_SCROLLBAR_OVERLAY_THUMB_FILL);
|
| -
|
| -const int kScrollbarTrackImages[9] = IMAGE_GRID(IDR_SCROLLBAR_BASE);
|
| -
|
| -} // namespace
|
| -
|
| -#if !defined(OS_WIN)
|
| -// static
|
| -NativeTheme* NativeTheme::instance() {
|
| - return NativeThemeAura::instance();
|
| -}
|
| -
|
| -// static
|
| -NativeThemeAura* NativeThemeAura::instance() {
|
| - CR_DEFINE_STATIC_LOCAL(NativeThemeAura, s_native_theme, ());
|
| - return &s_native_theme;
|
| -}
|
| -#endif
|
| -
|
| -NativeThemeAura::NativeThemeAura() {
|
| - // We don't draw scrollbar buttons.
|
| -#if defined(OS_CHROMEOS)
|
| - set_scrollbar_button_length(0);
|
| -#endif
|
| -
|
| - // Images and alphas declarations assume the following order.
|
| - COMPILE_ASSERT(kDisabled == 0, states_unexpectedly_changed);
|
| - COMPILE_ASSERT(kHovered == 1, states_unexpectedly_changed);
|
| - COMPILE_ASSERT(kNormal == 2, states_unexpectedly_changed);
|
| - COMPILE_ASSERT(kPressed == 3, states_unexpectedly_changed);
|
| -}
|
| -
|
| -NativeThemeAura::~NativeThemeAura() {
|
| -}
|
| -
|
| -void NativeThemeAura::PaintMenuPopupBackground(
|
| - SkCanvas* canvas,
|
| - const gfx::Size& size,
|
| - const MenuBackgroundExtraParams& menu_background) const {
|
| - SkColor color = GetSystemColor(NativeTheme::kColorId_MenuBackgroundColor);
|
| - if (menu_background.corner_radius > 0) {
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - paint.setFlags(SkPaint::kAntiAlias_Flag);
|
| - paint.setColor(color);
|
| -
|
| - gfx::Path path;
|
| - SkRect rect = SkRect::MakeWH(SkIntToScalar(size.width()),
|
| - SkIntToScalar(size.height()));
|
| - SkScalar radius = SkIntToScalar(menu_background.corner_radius);
|
| - SkScalar radii[8] = {radius, radius, radius, radius,
|
| - radius, radius, radius, radius};
|
| - path.addRoundRect(rect, radii);
|
| -
|
| - canvas->drawPath(path, paint);
|
| - } else {
|
| - canvas->drawColor(color, SkXfermode::kSrc_Mode);
|
| - }
|
| -}
|
| -
|
| -void NativeThemeAura::PaintMenuItemBackground(
|
| - SkCanvas* canvas,
|
| - State state,
|
| - const gfx::Rect& rect,
|
| - const MenuListExtraParams& menu_list) const {
|
| - CommonThemePaintMenuItemBackground(canvas, state, rect);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintArrowButton(
|
| - SkCanvas* gc,
|
| - const gfx::Rect& rect,
|
| - Part direction,
|
| - State state) const {
|
| - if (direction == kInnerSpinButton) {
|
| - FallbackTheme::PaintArrowButton(gc, rect, direction, state);
|
| - return;
|
| - }
|
| - PaintPainter(GetOrCreatePainter(
|
| - kScrollbarArrowButtonImages, state,
|
| - scrollbar_arrow_button_painters_),
|
| - gc, rect);
|
| -
|
| - // Aura-win uses slightly different arrow colors.
|
| - SkColor arrow_color = GetArrowColor(state);
|
| - switch (state) {
|
| - case kHovered:
|
| - case kNormal:
|
| - arrow_color = SkColorSetRGB(0x50, 0x50, 0x50);
|
| - break;
|
| - case kPressed:
|
| - arrow_color = SK_ColorWHITE;
|
| - default:
|
| - break;
|
| - }
|
| - PaintArrow(gc, rect, direction, arrow_color);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintScrollbarTrack(
|
| - SkCanvas* sk_canvas,
|
| - Part part,
|
| - State state,
|
| - const ScrollbarTrackExtraParams& extra_params,
|
| - const gfx::Rect& rect) const {
|
| - // Overlay Scrollbar should never paint a scrollbar track.
|
| - DCHECK(!IsOverlayScrollbarEnabled());
|
| - if (!scrollbar_track_painter_)
|
| - scrollbar_track_painter_ = CreateNineImagePainter(kScrollbarTrackImages);
|
| - PaintPainter(scrollbar_track_painter_.get(), sk_canvas, rect);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintScrollbarThumb(SkCanvas* sk_canvas,
|
| - Part part,
|
| - State state,
|
| - const gfx::Rect& rect) const {
|
| - gfx::Rect thumb_rect(rect);
|
| - if (IsOverlayScrollbarEnabled()) {
|
| - // Overlay scrollbar has no track, just paint thumb directly.
|
| - // Do not paint if state is disabled.
|
| - if (state == kDisabled)
|
| - return;
|
| -
|
| - if (!scrollbar_overlay_thumb_painter_) {
|
| - scrollbar_overlay_thumb_painter_ =
|
| - CreateDualPainter(kScrollbarOverlayThumbFillImages,
|
| - kScrollbarOverlayThumbFillAlphas,
|
| - kScrollbarOverlayThumbStrokeImages,
|
| - kScrollbarOverlayThumbStrokeAlphas);
|
| - }
|
| -
|
| - PaintDualPainter(
|
| - scrollbar_overlay_thumb_painter_.get(), sk_canvas, thumb_rect, state);
|
| - return;
|
| - }
|
| - // If there are no scrollbuttons then provide some padding so that thumb
|
| - // doesn't touch the top of the track.
|
| - const int extra_padding = (scrollbar_button_length() == 0) ? 2 : 0;
|
| - if (part == NativeTheme::kScrollbarVerticalThumb)
|
| - thumb_rect.Inset(2, extra_padding, 2, extra_padding);
|
| - else
|
| - thumb_rect.Inset(extra_padding, 2, extra_padding, 2);
|
| - PaintPainter(GetOrCreatePainter(
|
| - kScrollbarThumbImages, state, scrollbar_thumb_painters_),
|
| - sk_canvas,
|
| - thumb_rect);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintScrollbarThumbStateTransition(
|
| - SkCanvas* canvas,
|
| - State startState,
|
| - State endState,
|
| - double progress,
|
| - const gfx::Rect& rect) const {
|
| - // Only Overlay scrollbars should have state transition animation.
|
| - DCHECK(IsOverlayScrollbarEnabled());
|
| - if (!scrollbar_overlay_thumb_painter_) {
|
| - scrollbar_overlay_thumb_painter_ =
|
| - CreateDualPainter(kScrollbarOverlayThumbFillImages,
|
| - kScrollbarOverlayThumbFillAlphas,
|
| - kScrollbarOverlayThumbStrokeImages,
|
| - kScrollbarOverlayThumbStrokeAlphas);
|
| - }
|
| -
|
| - PaintDualPainterTransition(scrollbar_overlay_thumb_painter_.get(),
|
| - canvas,
|
| - rect,
|
| - startState,
|
| - endState,
|
| - progress);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintScrollbarCorner(SkCanvas* canvas,
|
| - State state,
|
| - const gfx::Rect& rect) const {
|
| - // Overlay Scrollbar should never paint a scrollbar corner.
|
| - DCHECK(!IsOverlayScrollbarEnabled());
|
| - SkPaint paint;
|
| - paint.setColor(SkColorSetRGB(0xF1, 0xF1, 0xF1));
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - paint.setXfermodeMode(SkXfermode::kSrc_Mode);
|
| - canvas->drawIRect(RectToSkIRect(rect), paint);
|
| -}
|
| -
|
| -NineImagePainter* NativeThemeAura::GetOrCreatePainter(
|
| - const int images[kNumStates][9],
|
| - State state,
|
| - scoped_ptr<NineImagePainter> painters[kNumStates]) const {
|
| - if (painters[state])
|
| - return painters[state].get();
|
| - if (images[state][0] == 0) {
|
| - // Must always provide normal state images.
|
| - DCHECK_NE(kNormal, state);
|
| - return GetOrCreatePainter(images, kNormal, painters);
|
| - }
|
| - painters[state] = CreateNineImagePainter(images[state]);
|
| - return painters[state].get();
|
| -}
|
| -
|
| -void NativeThemeAura::PaintPainter(NineImagePainter* painter,
|
| - SkCanvas* sk_canvas,
|
| - const gfx::Rect& rect) const {
|
| - DCHECK(painter);
|
| - scoped_ptr<gfx::Canvas> canvas(CommonThemeCreateCanvas(sk_canvas));
|
| - painter->Paint(canvas.get(), rect);
|
| -}
|
| -
|
| -scoped_ptr<NativeThemeAura::DualPainter> NativeThemeAura::CreateDualPainter(
|
| - const int fill_image_ids[9],
|
| - const uint8 fill_alphas[kNumStates],
|
| - const int stroke_image_ids[9],
|
| - const uint8 stroke_alphas[kNumStates]) const {
|
| - scoped_ptr<NativeThemeAura::DualPainter> dual_painter(
|
| - new NativeThemeAura::DualPainter(CreateNineImagePainter(fill_image_ids),
|
| - fill_alphas,
|
| - CreateNineImagePainter(stroke_image_ids),
|
| - stroke_alphas));
|
| - return dual_painter.Pass();
|
| -}
|
| -
|
| -void NativeThemeAura::PaintDualPainter(
|
| - NativeThemeAura::DualPainter* dual_painter,
|
| - SkCanvas* sk_canvas,
|
| - const gfx::Rect& rect,
|
| - State state) const {
|
| - DCHECK(dual_painter);
|
| - scoped_ptr<gfx::Canvas> canvas(CommonThemeCreateCanvas(sk_canvas));
|
| - dual_painter->fill_painter->Paint(
|
| - canvas.get(), rect, dual_painter->fill_alphas[state]);
|
| - dual_painter->stroke_painter->Paint(
|
| - canvas.get(), rect, dual_painter->stroke_alphas[state]);
|
| -}
|
| -
|
| -void NativeThemeAura::PaintDualPainterTransition(
|
| - NativeThemeAura::DualPainter* dual_painter,
|
| - SkCanvas* sk_canvas,
|
| - const gfx::Rect& rect,
|
| - State startState,
|
| - State endState,
|
| - double progress) const {
|
| - DCHECK(dual_painter);
|
| - scoped_ptr<gfx::Canvas> canvas(CommonThemeCreateCanvas(sk_canvas));
|
| - uint8 fill_alpha = dual_painter->fill_alphas[startState] +
|
| - (dual_painter->fill_alphas[endState] -
|
| - dual_painter->fill_alphas[startState]) *
|
| - progress;
|
| - uint8 stroke_alpha = dual_painter->stroke_alphas[startState] +
|
| - (dual_painter->stroke_alphas[endState] -
|
| - dual_painter->stroke_alphas[startState]) *
|
| - progress;
|
| -
|
| - dual_painter->fill_painter->Paint(canvas.get(), rect, fill_alpha);
|
| - dual_painter->stroke_painter->Paint(canvas.get(), rect, stroke_alpha);
|
| -}
|
| -
|
| -NativeThemeAura::DualPainter::DualPainter(
|
| - scoped_ptr<NineImagePainter> fill_painter,
|
| - const uint8 fill_alphas[kNumStates],
|
| - scoped_ptr<NineImagePainter> stroke_painter,
|
| - const uint8 stroke_alphas[kNumStates])
|
| - : fill_painter(fill_painter.Pass()),
|
| - fill_alphas(fill_alphas),
|
| - stroke_painter(stroke_painter.Pass()),
|
| - stroke_alphas(stroke_alphas) {}
|
| -
|
| -NativeThemeAura::DualPainter::~DualPainter() {}
|
| -
|
| -} // namespace ui
|
|
|