summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-26 16:35:58 +0000
committerthomasvl@chromium.org <thomasvl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-26 16:35:58 +0000
commit5f5314397438f59cb923beffe74c74c086636133 (patch)
tree4e66559d543b679b8b5d112764ce6e2a16e017df
parent67111a4747a162679d2e711c078e54e513411f29 (diff)
downloadchromium_src-5f5314397438f59cb923beffe74c74c086636133.zip
chromium_src-5f5314397438f59cb923beffe74c74c086636133.tar.gz
chromium_src-5f5314397438f59cb923beffe74c74c086636133.tar.bz2
Add a helper to resource bundle to get an NSImage back.
skia/ext/skia_utils_mac.h includes CoreGraphics/CGColor.h so we have to relay the framework include path so someone can include the header without errors. BUG=none TEST=none Review URL: http://codereview.chromium.org/173363 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24453 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--app/resource_bundle.h11
-rw-r--r--app/resource_bundle_mac.mm12
-rw-r--r--skia/skia.gyp3
3 files changed, 26 insertions, 0 deletions
diff --git a/app/resource_bundle.h b/app/resource_bundle.h
index bba8560..85b4b65 100644
--- a/app/resource_bundle.h
+++ b/app/resource_bundle.h
@@ -35,6 +35,14 @@ class SkBitmap;
typedef uint32 SkColor;
class StringPiece;
+#if defined(OS_MACOSX)
+#ifdef __OBJC__
+@class NSImage;
+#else
+class NSImage;
+#endif // __OBJC__
+#endif // defined(OS_MACOSX)
+
// ResourceBundle is a central facility to load images and other resources,
// such as theme graphics.
// Every resource is loaded only once.
@@ -112,6 +120,9 @@ class ResourceBundle {
// Loads and returns a cursor from the app module.
HCURSOR LoadCursor(int cursor_id);
+#elif defined(OS_MACOSX)
+ // Wrapper for GetBitmapNamed. Converts the bitmap to an autoreleased NSImage.
+ NSImage* GetNSImageNamed(int resource_id);
#elif defined(OS_LINUX)
// Gets the GdkPixbuf with the specified resource_id, first by looking into
// the theme data, than in the current module data if applicable. Returns a
diff --git a/app/resource_bundle_mac.mm b/app/resource_bundle_mac.mm
index 22ab274..e96ed54 100644
--- a/app/resource_bundle_mac.mm
+++ b/app/resource_bundle_mac.mm
@@ -17,6 +17,7 @@
#include "base/path_service.h"
#include "base/string_piece.h"
#include "base/string_util.h"
+#include "skia/ext/skia_utils_mac.h"
ResourceBundle::~ResourceBundle() {
FreeImages();
@@ -116,3 +117,14 @@ string16 ResourceBundle::GetLocalizedString(int message_id) {
data.length() / 2);
return msg;
}
+
+NSImage* ResourceBundle::GetNSImageNamed(int resource_id) {
+ // Currently this doesn't make a cache holding these as NSImages because
+ // GetBitmapNamed has a cache, and we don't want to double cache.
+ SkBitmap* bitmap = GetBitmapNamed(resource_id);
+ if (!bitmap)
+ return nil;
+
+ NSImage* nsimage = gfx::SkBitmapToNSImage(*bitmap);
+ return nsimage;
+}
diff --git a/skia/skia.gyp b/skia/skia.gyp
index 6fd6d639..63cac887 100644
--- a/skia/skia.gyp
+++ b/skia/skia.gyp
@@ -644,6 +644,9 @@
'../third_party/skia/include/effects',
'ext',
],
+ 'mac_framework_dirs': [
+ '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework/Frameworks',
+ ],
},
},
],