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

Side by Side Diff: skia/ext/skia_utils_mac.mm

Issue 812543002: Update from https://crrev.com/308331 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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
« no previous file with comments | « skia/ext/pixel_ref_utils.cc ('k') | sky/engine/core/rendering/RenderBlock.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/skia_utils_mac.h" 5 #include "skia/ext/skia_utils_mac.h"
6 6
7 #import <AppKit/AppKit.h> 7 #import <AppKit/AppKit.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/scoped_cftyperef.h" 10 #include "base/mac/scoped_cftyperef.h"
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 return; 369 return;
370 if (useDeviceBits_) { 370 if (useDeviceBits_) {
371 bitmap_.unlockPixels(); 371 bitmap_.unlockPixels();
372 } else if (!bitmapIsDummy_) { 372 } else if (!bitmapIsDummy_) {
373 // Find the bits that were drawn to. 373 // Find the bits that were drawn to.
374 SkIRect bounds = computeDirtyRect(); 374 SkIRect bounds = computeDirtyRect();
375 SkBitmap subset; 375 SkBitmap subset;
376 if (!bitmap_.extractSubset(&subset, bounds)) { 376 if (!bitmap_.extractSubset(&subset, bounds)) {
377 return; 377 return;
378 } 378 }
379 // Neutralize the global matrix by concatenating the inverse. In the 379 subset.setImmutable(); // Prevents a defensive copy inside Skia.
380 // future, Skia may provide some mechanism to set the device portion of
381 // the matrix to identity without clobbering any hosting matrix (e.g., the
382 // picture's matrix).
383 const SkMatrix& skMatrix = canvas_->getTotalMatrix();
384 SkMatrix inverse;
385 if (!skMatrix.invert(&inverse))
386 return;
387 canvas_->save(); 380 canvas_->save();
388 canvas_->concat(inverse); 381 canvas_->setMatrix(SkMatrix::I()); // Reset back to device space.
389 canvas_->translate(bounds.x() + bitmapOffset_.x(), 382 canvas_->translate(bounds.x() + bitmapOffset_.x(),
390 bounds.y() + bitmapOffset_.y()); 383 bounds.y() + bitmapOffset_.y());
391 canvas_->scale(1.f / bitmapScaleFactor_, 1.f / bitmapScaleFactor_); 384 canvas_->scale(1.f / bitmapScaleFactor_, 1.f / bitmapScaleFactor_);
392 canvas_->drawBitmap(subset, 0, 0); 385 canvas_->drawBitmap(subset, 0, 0);
393 canvas_->restore(); 386 canvas_->restore();
394 } 387 }
395 CGContextRelease(cgContext_); 388 CGContextRelease(cgContext_);
396 cgContext_ = 0; 389 cgContext_ = 0;
397 useDeviceBits_ = false; 390 useDeviceBits_ = false;
398 bitmapIsDummy_ = false; 391 bitmapIsDummy_ = false;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 CGContextConcatCTM(cgContext_, SkMatrixToCGAffineTransform(matrix)); 453 CGContextConcatCTM(cgContext_, SkMatrixToCGAffineTransform(matrix));
461 454
462 return cgContext_; 455 return cgContext_;
463 } 456 }
464 457
465 bool SkiaBitLocker::hasEmptyClipRegion() const { 458 bool SkiaBitLocker::hasEmptyClipRegion() const {
466 return canvas_->isClipEmpty(); 459 return canvas_->isClipEmpty();
467 } 460 }
468 461
469 } // namespace gfx 462 } // namespace gfx
OLDNEW
« no previous file with comments | « skia/ext/pixel_ref_utils.cc ('k') | sky/engine/core/rendering/RenderBlock.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698