Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(497)

Side by Side Diff: skia/ext/bitmap_platform_device_linux.cc

Issue 11031055: Introduce PlatformBitmap, which is a minimal helper class that wraps an SkBitmap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "skia/ext/bitmap_platform_device_linux.h" 5 #include "skia/ext/bitmap_platform_device_linux.h"
6
7 #include "skia/ext/bitmap_platform_device_data.h" 6 #include "skia/ext/bitmap_platform_device_data.h"
7 #include "skia/ext/platform_canvas.h"
8 8
9 #if defined(OS_OPENBSD) 9 #if defined(OS_OPENBSD)
10 #include <cairo.h> 10 #include <cairo.h>
11 #else 11 #else
12 #include <cairo/cairo.h> 12 #include <cairo/cairo.h>
13 #endif 13 #endif
14 14
15 namespace skia { 15 namespace skia {
16 16
17 namespace { 17 namespace {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 // Should never be called on Linux. 169 // Should never be called on Linux.
170 SkASSERT(false); 170 SkASSERT(false);
171 } 171 }
172 172
173 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, 173 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform,
174 const SkRegion& region, 174 const SkRegion& region,
175 const SkClipStack&) { 175 const SkClipStack&) {
176 data_->SetMatrixClip(transform, region); 176 data_->SetMatrixClip(transform, region);
177 } 177 }
178 178
179 // Port of PlatformBitmap to linux
180
181 PlatformBitmap::~PlatformBitmap() {
182 cairo_destroy(surface_);
183 }
184
185 bool PlatformBitmap::Allocate(int width, int height, bool isOpaque) {
186 cairo_surface_t* cairo_surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
187 width, height);
brettw 2012/10/09 20:40:12 Check indenting.
reed1 2012/10/09 21:06:43 Done.
188 if (cairo_surface_status(cairo_surf) != CAIRO_STATUS_SUCCESS) {
189 cairo_surface_destroy(cairo_surf);
190 return false;
191 }
192
193 bitmap_.setConfig(SkBitmap::kARGB_8888_Config, width, height,
194 cairo_image_surface_get_stride(cairo_surf));
195 bitmap_.setPixels(cairo_image_surface_get_data(cairo_surf));
196 bitmap_.setIsOpaque(isOpaque);
197
198 surface_ = cairo_create(cairo_surf);
199 cairo_surface_destroy(cairo_surf);
200 return true;
201 }
202
203 PlatformSurface PlatformBitmap::LockSurface() {
204 return surface_;
205 }
206
207 void PlatformBitmap::UnlockSurface() {
208 // nothing to do for our surface. It will be released in our destructor
brettw 2012/10/09 20:40:12 Check indenting.
reed1 2012/10/09 21:06:43 Done.
209 }
210
179 } // namespace skia 211 } // namespace skia
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698