diff options
author | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 23:50:24 +0000 |
---|---|---|
committer | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 23:50:24 +0000 |
commit | a16cea9f88efd1b0fa43a8b331fa69e6c2b69864 (patch) | |
tree | 9242263c361166eb9fe80efce2c635f51ae0302b /app | |
parent | 715dfab49198de28a3c8577d63573a668b570f88 (diff) | |
download | chromium_src-a16cea9f88efd1b0fa43a8b331fa69e6c2b69864.zip chromium_src-a16cea9f88efd1b0fa43a8b331fa69e6c2b69864.tar.gz chromium_src-a16cea9f88efd1b0fa43a8b331fa69e6c2b69864.tar.bz2 |
Reverting 16124.
Review URL: http://codereview.chromium.org/115387
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16125 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app')
-rw-r--r-- | app/gfx/gtk_util.cc | 82 | ||||
-rw-r--r-- | app/gfx/gtk_util.h | 42 | ||||
-rw-r--r-- | app/resource_bundle_linux.cc | 2 |
3 files changed, 125 insertions, 1 deletions
diff --git a/app/gfx/gtk_util.cc b/app/gfx/gtk_util.cc new file mode 100644 index 0000000..391bd27 --- /dev/null +++ b/app/gfx/gtk_util.cc @@ -0,0 +1,82 @@ +// Copyright (c) 2009 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 "app/gfx/gtk_util.h" + +#include "base/linux_util.h" +#include "third_party/skia/include/core/SkBitmap.h" + +namespace { + +void FreePixels(guchar* pixels, gpointer data) { + free(data); +} + +} // namespace + +namespace gfx { + +GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap* bitmap) { + bitmap->lockPixels(); + int width = bitmap->width(); + int height = bitmap->height(); + int stride = bitmap->rowBytes(); + const guchar* orig_data = static_cast<guchar*>(bitmap->getPixels()); + guchar* data = base::BGRAToRGBA(orig_data, width, height, stride); + + // This pixbuf takes ownership of our malloc()ed data and will + // free it for us when it is destroyed. + GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( + data, + GDK_COLORSPACE_RGB, // The only colorspace gtk supports. + true, // There is an alpha channel. + 8, + width, height, stride, &FreePixels, data); + + bitmap->unlockPixels(); + return pixbuf; +} + +} // namespace gfx +// Copyright (c) 2009 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 "app/gfx/gtk_util.h" + +#include "base/linux_util.h" +#include "third_party/skia/include/core/SkBitmap.h" + +namespace { + +void FreePixels(guchar* pixels, gpointer data) { + free(data); +} + +} // namespace + +namespace gfx { + +GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap* bitmap) { + bitmap->lockPixels(); + int width = bitmap->width(); + int height = bitmap->height(); + int stride = bitmap->rowBytes(); + const guchar* orig_data = static_cast<guchar*>(bitmap->getPixels()); + guchar* data = base::BGRAToRGBA(orig_data, width, height, stride); + + // This pixbuf takes ownership of our malloc()ed data and will + // free it for us when it is destroyed. + GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( + data, + GDK_COLORSPACE_RGB, // The only colorspace gtk supports. + true, // There is an alpha channel. + 8, + width, height, stride, &FreePixels, data); + + bitmap->unlockPixels(); + return pixbuf; +} + +} // namespace gfx diff --git a/app/gfx/gtk_util.h b/app/gfx/gtk_util.h new file mode 100644 index 0000000..4bba2ca --- /dev/null +++ b/app/gfx/gtk_util.h @@ -0,0 +1,42 @@ +// Copyright (c) 2009 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 APP_GFX_GTK_UTIL_H_ +#define APP_GFX_GTK_UTIL_H_ + +#include <gtk/gtk.h> + +typedef struct _GdkPixbuf GdkPixbuf; +class SkBitmap; + +namespace gfx { + +// Convert and copy a SkBitmap to a GdkPixbuf. NOTE: this uses BGRAToRGBA, so +// it is an expensive operation. +GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap* bitmap); + +} // namespace gfx + +#endif // APP_GFX_GTK_UTIL_H_ +// Copyright (c) 2009 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 APP_GFX_GTK_UTIL_H_ +#define APP_GFX_GTK_UTIL_H_ + +#include <gtk/gtk.h> + +typedef struct _GdkPixbuf GdkPixbuf; +class SkBitmap; + +namespace gfx { + +// Convert and copy a SkBitmap to a GdkPixbuf. NOTE: this uses BGRAToRGBA, so +// it is an expensive operation. +GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap* bitmap); + +} // namespace gfx + +#endif // APP_GFX_GTK_UTIL_H_ diff --git a/app/resource_bundle_linux.cc b/app/resource_bundle_linux.cc index 116ebd9..2d47ae5 100644 --- a/app/resource_bundle_linux.cc +++ b/app/resource_bundle_linux.cc @@ -7,6 +7,7 @@ #include <gtk/gtk.h> #include "app/gfx/chrome_font.h" +#include "app/gfx/gtk_util.h" #include "app/l10n_util.h" #include "base/base_paths.h" #include "base/data_pack.h" @@ -18,7 +19,6 @@ #include "base/string_piece.h" #include "base/string_util.h" #include "chrome/common/chrome_paths.h" -#include "chrome/common/gtk_util.h" #include "SkBitmap.h" namespace { |