summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/GTMTheme.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/cocoa/GTMTheme.h')
-rw-r--r--chrome/browser/cocoa/GTMTheme.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/GTMTheme.h b/chrome/browser/cocoa/GTMTheme.h
new file mode 100644
index 0000000..3399fbf
--- /dev/null
+++ b/chrome/browser/cocoa/GTMTheme.h
@@ -0,0 +1,124 @@
+// Copyright (c) 2010 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.
+
+// Derived from the GTMTheme in Google Toolbox for Mac. This file should
+// go away: http://crbug.com/35554
+
+#import "GTMDefines.h"
+#import <AppKit/AppKit.h>
+
+// Sent whenever the theme changes. Object => GTMTheme that changed
+GTM_EXTERN NSString *const kGTMThemeDidChangeNotification;
+
+// Key for user defaults defining background color
+GTM_EXTERN NSString *const kGTMThemeBackgroundColorKey;
+
+enum {
+ GTMThemeStyleTabBarSelected,
+ GTMThemeStyleTabBarDeselected,
+ GTMThemeStyleWindow,
+ GTMThemeStyleToolBar,
+ GTMThemeStyleToolBarButton,
+ GTMThemeStyleToolBarButtonPressed,
+ GTMThemeStyleBookmarksBarButton,
+};
+typedef NSUInteger GTMThemeStyle;
+
+enum {
+ GTMThemeStateInactiveWindow = 0,
+ GTMThemeStateActiveWindow = 1 << 0
+};
+typedef NSUInteger GTMThemeState;
+
+// GTMTheme provides a range of values for procedural drawing of UI elements
+// based on interpolation of a single background color
+
+@interface GTMTheme : NSObject {
+ @private
+ NSColor *backgroundColor_; // bound to user defaults
+ NSImage *backgroundImage_; // bound to user defaults
+ NSMutableDictionary *values_; // cached values
+}
+
+// Access the global theme. By default this is bound to user defaults
++ (GTMTheme *)defaultTheme;
++ (void)setDefaultTheme:(GTMTheme *)theme;
+
+// Bind this theme to user defaults
+- (void)bindToUserDefaults;
+
+// returns base theme color
+- (NSColor *)backgroundColor;
+
+// sets the base theme color
+- (void)setBackgroundColor:(NSColor *)value;
+
+// base background image
+- (NSImage *)backgroundImage;
+
+// set base background image
+- (void)setBackgroundImage:(NSImage *)value;
+
+// NSImage pattern background
+- (NSImage *)backgroundImageForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// NSColor of the above image, if present, else gradientForStyle
+- (NSColor *)backgroundPatternColorForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// NSGradient for specific usage
+- (NSGradient *)gradientForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Outline color for stroke
+- (NSColor *)strokeColorForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Text color
+- (NSColor *)textColorForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Base background color (a plain (non pattern/gradient) NSColor)
+- (NSColor *)backgroundColorForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Indicates whether luminance is dark or light
+- (BOOL)styleIsDark:(GTMThemeStyle)style state:(GTMThemeState)state;
+
+// Background style for this style and state
+- (NSBackgroundStyle)interiorBackgroundStyleForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+- (NSColor *)iconColorForStyle:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Manually set a theme value
+- (void)setValue:(id)value
+ forAttribute:(NSString *)attribute
+ style:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+
+// Manually extract a theme value
+- (id)valueForAttribute:(NSString *)attribute
+ style:(GTMThemeStyle)style
+ state:(GTMThemeState)state;
+@end
+
+// Convenience categories for NSWindow and NSView to access the current theme
+// Default implementation polls the window delegate
+@interface NSWindow (GTMTheme)
+- (GTMTheme *)gtm_theme;
+- (NSPoint)gtm_themePatternPhase;
+@end
+
+@interface NSView (GTMTheme)
+- (GTMTheme *)gtm_theme;
+- (NSPoint)gtm_themePatternPhase;
+@end
+
+@protocol GTMThemeDelegate
+- (GTMTheme *)gtm_themeForWindow:(NSWindow *)window;
+- (NSPoint)gtm_themePatternPhaseForWindow:(NSWindow *)window;
+@end