diff options
Diffstat (limited to 'ui/base/theme_provider.h')
-rw-r--r-- | ui/base/theme_provider.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/ui/base/theme_provider.h b/ui/base/theme_provider.h new file mode 100644 index 0000000..43aa28f --- /dev/null +++ b/ui/base/theme_provider.h @@ -0,0 +1,120 @@ +// Copyright (c) 2011 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_BASE_THEME_PROVIDER_H_ +#define UI_BASE_THEME_PROVIDER_H_ +#pragma once + +#include "base/basictypes.h" +#include "third_party/skia/include/core/SkColor.h" + +#if defined(OS_MACOSX) +#ifdef __OBJC__ +@class NSColor; +@class NSGradient; +@class NSImage; +#else +class NSColor; +class NSGradient; +class NSImage; +#endif // __OBJC__ +#elif !defined(OS_WIN) +typedef struct _GdkColor GdkColor; +typedef struct _GdkPixbuf GdkPixbuf; +#endif // OS_* + +class Profile; +class RefCountedMemory; +class SkBitmap; + +namespace ui { + +//////////////////////////////////////////////////////////////////////////////// +// +// ThemeProvider +// +// ThemeProvider is an abstract class that defines the API that should be +// implemented to provide bitmaps and color information for a given theme. +// +//////////////////////////////////////////////////////////////////////////////// + +class ThemeProvider { + public: + virtual ~ThemeProvider(); + + // TODO(beng): This dependency is horrible! + // Initialize the provider with the passed in profile. + virtual void Init(Profile* profile) = 0; + + // Get the bitmap specified by |id|. An implementation of ThemeProvider should + // have its own source of ids (e.g. an enum, or external resource bundle). + virtual SkBitmap* GetBitmapNamed(int id) const = 0; + + // Get the color specified by |id|. + virtual SkColor GetColor(int id) const = 0; + + // Get the property (e.g. an alignment expressed in an enum, or a width or + // height) specified by |id|. + virtual bool GetDisplayProperty(int id, int* result) const = 0; + + // Whether we should use the native system frame (typically Aero glass) or + // a custom frame. + virtual bool ShouldUseNativeFrame() const = 0; + + // Whether or not we have a certain image. Used for when the default theme + // doesn't provide a certain image, but custom themes might (badges, etc). + virtual bool HasCustomImage(int id) const = 0; + + // Reads the image data from the theme file into the specified vector. Only + // valid for un-themed resources and the themed IDR_THEME_NTP_* in most + // implementations of ThemeProvider. Returns NULL on error. + virtual RefCountedMemory* GetRawData(int id) const = 0; + +#if defined(OS_MACOSX) + // Gets the NSImage with the specified |id|. + // + // The bitmap is not assumed to exist. If a theme does not provide an image, + // if |allow_default| is true, then the default image will be returned, else + // this function will return nil. + virtual NSImage* GetNSImageNamed(int id, bool allow_default) const = 0; + + // Gets the NSImage that GetNSImageNamed (above) would return, but returns it + // as a pattern color. + virtual NSColor* GetNSImageColorNamed(int id, bool allow_default) const = 0; + + // Gets the NSColor with the specified |id|. + // + // The color is not assumed to exist. If a theme does not provide an color, if + // |allow_default| is true, then the default color will be returned, else this + // function will return nil. + virtual NSColor* GetNSColor(int id, bool allow_default) const = 0; + + // Gets the NSColor for tinting with the specified |id|. + // + // The tint is not assumed to exist. If a theme does not provide a tint with + // that id, if |allow_default| is true, then the default tint will be + // returned, else this function will return nil. + virtual NSColor* GetNSColorTint(int id, bool allow_default) const = 0; + + // Gets the NSGradient with the specified |id|. + virtual NSGradient* GetNSGradient(int id) const = 0; +#elif defined(OS_POSIX) && !defined(TOOLKIT_VIEWS) + // Gets the GdkPixbuf with the specified |id|. Returns a pointer to a shared + // instance of the GdkPixbuf. This shared GdkPixbuf is owned by the theme + // provider and should not be freed. + // + // The bitmap is assumed to exist. This function will log in release, and + // assert in debug mode if it does not. On failure, this will return a + // pointer to a shared empty placeholder bitmap so it will be visible what + // is missing. + virtual GdkPixbuf* GetPixbufNamed(int id) const = 0; + + // As above, but flips it in RTL locales. + virtual GdkPixbuf* GetRTLEnabledPixbufNamed(int id) const = 0; +#endif +}; + +} // namespace ui + +#endif // UI_BASE_THEME_PROVIDER_H_ |