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

Side by Side Diff: src/pipe/SkGPipeRead.cpp

Issue 613673005: Override SkCanvas::drawImage() in SkDeferredCanvas and SkGPipe (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase master, depends on other cl for tests Created 6 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
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkBitmapHeap.h" 10 #include "SkBitmapHeap.h"
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 SkRRect outer, inner; 401 SkRRect outer, inner;
402 reader->readRRect(&outer); 402 reader->readRRect(&outer);
403 reader->readRRect(&inner); 403 reader->readRRect(&inner);
404 if (state->shouldDraw()) { 404 if (state->shouldDraw()) {
405 canvas->drawDRRect(outer, inner, state->paint()); 405 canvas->drawDRRect(outer, inner, state->paint());
406 } 406 }
407 } 407 }
408 408
409 static void drawPatch_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, 409 static void drawPatch_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32,
410 SkGPipeState* state) { 410 SkGPipeState* state) {
411 411
412 unsigned flags = DrawOp_unpackFlags(op32); 412 unsigned flags = DrawOp_unpackFlags(op32);
413 413
414 const SkPoint* cubics = skip<SkPoint>(reader, SkPatchUtils::kNumCtrlPts); 414 const SkPoint* cubics = skip<SkPoint>(reader, SkPatchUtils::kNumCtrlPts);
415 415
416 const SkColor* colors = NULL; 416 const SkColor* colors = NULL;
417 if (flags & kDrawVertices_HasColors_DrawOpFlag) { 417 if (flags & kDrawVertices_HasColors_DrawOpFlag) {
418 colors = skip<SkColor>(reader, SkPatchUtils::kNumCorners); 418 colors = skip<SkColor>(reader, SkPatchUtils::kNumCorners);
419 } 419 }
420 const SkPoint* texCoords = NULL; 420 const SkPoint* texCoords = NULL;
421 if (flags & kDrawVertices_HasTexs_DrawOpFlag) { 421 if (flags & kDrawVertices_HasTexs_DrawOpFlag) {
422 texCoords = skip<SkPoint>(reader, SkPatchUtils::kNumCorners); 422 texCoords = skip<SkPoint>(reader, SkPatchUtils::kNumCorners);
423 } 423 }
424 SkAutoTUnref<SkXfermode> xfer; 424 SkAutoTUnref<SkXfermode> xfer;
425 if (flags & kDrawVertices_HasXfermode_DrawOpFlag) { 425 if (flags & kDrawVertices_HasXfermode_DrawOpFlag) {
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 SkGPipeState* state) { 644 SkGPipeState* state) {
645 BitmapHolder holder(reader, op32, state); 645 BitmapHolder holder(reader, op32, state);
646 bool hasPaint = SkToBool(DrawOp_unpackFlags(op32) & kDrawBitmap_HasPaint_Dra wOpFlag); 646 bool hasPaint = SkToBool(DrawOp_unpackFlags(op32) & kDrawBitmap_HasPaint_Dra wOpFlag);
647 const SkIPoint* point = skip<SkIPoint>(reader); 647 const SkIPoint* point = skip<SkIPoint>(reader);
648 const SkBitmap* bitmap = holder.getBitmap(); 648 const SkBitmap* bitmap = holder.getBitmap();
649 if (state->shouldDraw()) { 649 if (state->shouldDraw()) {
650 canvas->drawSprite(*bitmap, point->fX, point->fY, hasPaint ? &state->pai nt() : NULL); 650 canvas->drawSprite(*bitmap, point->fX, point->fY, hasPaint ? &state->pai nt() : NULL);
651 } 651 }
652 } 652 }
653 653
654 static void drawImage_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32,
655 SkGPipeState* state) {
656 bool hasPaint = SkToBool(DrawOp_unpackFlags(op32) & kDrawBitmap_HasPaint_Dra wOpFlag);
657 SkAutoTUnref<const SkImage> image (static_cast<const SkImage*>(reader->readP tr()));
reed1 2014/10/01 14:12:39 // Balances call to ref() in SkGPipeWrite
Rémi Piotaix 2014/10/01 19:29:58 Done.
658 SkScalar left = reader->readScalar();
659 SkScalar top = reader->readScalar();
660
661 if (state->shouldDraw()) {
662 canvas->drawImage(image, left, top, hasPaint ? &state->paint() : NULL);
663 }
664 }
665
666 static void drawImageRect_rp(SkCanvas* canvas, SkReader32* reader,
667 uint32_t op32, SkGPipeState* state) {
668 unsigned flags = DrawOp_unpackFlags(op32);
669 bool hasPaint = SkToBool(flags & kDrawBitmap_HasPaint_DrawOpFlag);
670 bool hasSrc = SkToBool(flags & kDrawBitmap_HasSrcRect_DrawOpFlag);
671 SkAutoTUnref<const SkImage> image (static_cast<const SkImage*>(reader->readP tr()));
reed1 2014/10/01 14:12:39 // Balances call to ref() in SkGPipeWrite
Rémi Piotaix 2014/10/01 19:29:58 Done.
672
673 const SkRect* src;
674 if (hasSrc) {
675 src = skip<SkRect>(reader);
676 } else {
677 src = NULL;
678 }
679 const SkRect* dst = skip<SkRect>(reader);
680 if (state->shouldDraw()) {
681 canvas->drawImageRect(image, src, *dst, hasPaint ? &state->paint() : NUL L);
682 }
683 }
684
654 /////////////////////////////////////////////////////////////////////////////// 685 ///////////////////////////////////////////////////////////////////////////////
655 686
656 static void drawData_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, 687 static void drawData_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32,
657 SkGPipeState* state) { 688 SkGPipeState* state) {
658 // since we don't have a paint, we can use data for our (small) sizes 689 // since we don't have a paint, we can use data for our (small) sizes
659 size_t size = DrawOp_unpackData(op32); 690 size_t size = DrawOp_unpackData(op32);
660 if (0 == size) { 691 if (0 == size) {
661 size = reader->readU32(); 692 size = reader->readU32();
662 } 693 }
663 const void* data = reader->skip(SkAlign4(size)); 694 const void* data = reader->skip(SkAlign4(size));
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 clipRect_rp, 855 clipRect_rp,
825 clipRRect_rp, 856 clipRRect_rp,
826 concat_rp, 857 concat_rp,
827 drawBitmap_rp, 858 drawBitmap_rp,
828 drawBitmapMatrix_rp, 859 drawBitmapMatrix_rp,
829 drawBitmapNine_rp, 860 drawBitmapNine_rp,
830 drawBitmapRect_rp, 861 drawBitmapRect_rp,
831 drawClear_rp, 862 drawClear_rp,
832 drawData_rp, 863 drawData_rp,
833 drawDRRect_rp, 864 drawDRRect_rp,
865 drawImage_rp,
866 drawImageRect_rp,
834 drawOval_rp, 867 drawOval_rp,
835 drawPaint_rp, 868 drawPaint_rp,
836 drawPatch_rp, 869 drawPatch_rp,
837 drawPath_rp, 870 drawPath_rp,
838 drawPicture_rp, 871 drawPicture_rp,
839 drawPoints_rp, 872 drawPoints_rp,
840 drawPosText_rp, 873 drawPosText_rp,
841 drawPosTextH_rp, 874 drawPosTextH_rp,
842 drawRect_rp, 875 drawRect_rp,
843 drawRRect_rp, 876 drawRRect_rp,
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 status = kReadAtom_Status; 990 status = kReadAtom_Status;
958 break; 991 break;
959 } 992 }
960 } 993 }
961 994
962 if (bytesRead) { 995 if (bytesRead) {
963 *bytesRead = reader.offset(); 996 *bytesRead = reader.offset();
964 } 997 }
965 return status; 998 return status;
966 } 999 }
OLDNEW
« no previous file with comments | « src/pipe/SkGPipePriv.h ('k') | src/pipe/SkGPipeWrite.cpp » ('j') | src/pipe/SkGPipeWrite.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698