From a16cea9f88efd1b0fa43a8b331fa69e6c2b69864 Mon Sep 17 00:00:00 2001 From: "beng@google.com" Date: Thu, 14 May 2009 23:50:24 +0000 Subject: 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 --- app/gfx/gtk_util.cc | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 app/gfx/gtk_util.cc (limited to 'app/gfx/gtk_util.cc') 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(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(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 -- cgit v1.1