| OLD | NEW |
| 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 void addBitmap(int index) { | 127 void addBitmap(int index) { |
| 128 SkBitmap* bm; | 128 SkBitmap* bm; |
| 129 if(fBitmaps.count() == index) { | 129 if(fBitmaps.count() == index) { |
| 130 bm = SkNEW(SkBitmap); | 130 bm = SkNEW(SkBitmap); |
| 131 *fBitmaps.append() = bm; | 131 *fBitmaps.append() = bm; |
| 132 } else { | 132 } else { |
| 133 bm = fBitmaps[index]; | 133 bm = fBitmaps[index]; |
| 134 } | 134 } |
| 135 bm->unflatten(*fReader); | 135 fReader->readBitmap(bm); |
| 136 } | 136 } |
| 137 | 137 |
| 138 /** | 138 /** |
| 139 * Override of SkBitmapHeapReader, so that SkOrderedReadBuffer can use | 139 * Override of SkBitmapHeapReader, so that SkOrderedReadBuffer can use |
| 140 * these SkBitmaps for bitmap shaders. | 140 * these SkBitmaps for bitmap shaders. |
| 141 */ | 141 */ |
| 142 virtual SkBitmap* getBitmap(int32_t index) const SK_OVERRIDE { | 142 virtual SkBitmap* getBitmap(int32_t index) const SK_OVERRIDE { |
| 143 return fBitmaps[index]; | 143 return fBitmaps[index]; |
| 144 } | 144 } |
| 145 | 145 |
| (...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 765 SkSafeUnref(fSharedHeap); | 765 SkSafeUnref(fSharedHeap); |
| 766 } | 766 } |
| 767 | 767 |
| 768 /////////////////////////////////////////////////////////////////////////////// | 768 /////////////////////////////////////////////////////////////////////////////// |
| 769 | 769 |
| 770 #include "SkGPipe.h" | 770 #include "SkGPipe.h" |
| 771 | 771 |
| 772 SkGPipeReader::SkGPipeReader() { | 772 SkGPipeReader::SkGPipeReader() { |
| 773 fCanvas = NULL; | 773 fCanvas = NULL; |
| 774 fState = NULL; | 774 fState = NULL; |
| 775 fProc = NULL; |
| 775 } | 776 } |
| 776 | 777 |
| 777 SkGPipeReader::SkGPipeReader(SkCanvas* target) { | 778 SkGPipeReader::SkGPipeReader(SkCanvas* target) { |
| 778 fCanvas = NULL; | 779 fCanvas = NULL; |
| 779 this->setCanvas(target); | 780 this->setCanvas(target); |
| 780 fState = NULL; | 781 fState = NULL; |
| 782 fProc = NULL; |
| 781 } | 783 } |
| 782 | 784 |
| 783 void SkGPipeReader::setCanvas(SkCanvas *target) { | 785 void SkGPipeReader::setCanvas(SkCanvas *target) { |
| 784 SkRefCnt_SafeAssign(fCanvas, target); | 786 SkRefCnt_SafeAssign(fCanvas, target); |
| 785 } | 787 } |
| 786 | 788 |
| 787 SkGPipeReader::~SkGPipeReader() { | 789 SkGPipeReader::~SkGPipeReader() { |
| 788 SkSafeUnref(fCanvas); | 790 SkSafeUnref(fCanvas); |
| 789 delete fState; | 791 delete fState; |
| 790 } | 792 } |
| 791 | 793 |
| 792 SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length, | 794 SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length, |
| 793 uint32_t playbackFlags, size_t* by
tesRead) { | 795 uint32_t playbackFlags, size_t* by
tesRead) { |
| 794 if (NULL == fCanvas) { | 796 if (NULL == fCanvas) { |
| 795 return kError_Status; | 797 return kError_Status; |
| 796 } | 798 } |
| 797 | 799 |
| 798 if (NULL == fState) { | 800 if (NULL == fState) { |
| 799 fState = new SkGPipeState; | 801 fState = new SkGPipeState; |
| 800 } | 802 } |
| 801 | 803 |
| 802 fState->setSilent(playbackFlags & kSilent_PlaybackFlag); | 804 fState->setSilent(playbackFlags & kSilent_PlaybackFlag); |
| 803 | 805 |
| 804 SkASSERT(SK_ARRAY_COUNT(gReadTable) == (kDone_DrawOp + 1)); | 806 SkASSERT(SK_ARRAY_COUNT(gReadTable) == (kDone_DrawOp + 1)); |
| 805 | 807 |
| 806 const ReadProc* table = gReadTable; | 808 const ReadProc* table = gReadTable; |
| 807 SkOrderedReadBuffer reader(data, length); | 809 SkOrderedReadBuffer reader(data, length); |
| 810 reader.setBitmapDecoder(fProc); |
| 808 SkCanvas* canvas = fCanvas; | 811 SkCanvas* canvas = fCanvas; |
| 809 Status status = kEOF_Status; | 812 Status status = kEOF_Status; |
| 810 | 813 |
| 811 fState->setReader(&reader); | 814 fState->setReader(&reader); |
| 812 while (!reader.eof()) { | 815 while (!reader.eof()) { |
| 813 uint32_t op32 = reader.readUInt(); | 816 uint32_t op32 = reader.readUInt(); |
| 814 unsigned op = DrawOp_unpackOp(op32); | 817 unsigned op = DrawOp_unpackOp(op32); |
| 815 // SkDEBUGCODE(DrawOps drawOp = (DrawOps)op;) | 818 // SkDEBUGCODE(DrawOps drawOp = (DrawOps)op;) |
| 816 | 819 |
| 817 if (op >= SK_ARRAY_COUNT(gReadTable)) { | 820 if (op >= SK_ARRAY_COUNT(gReadTable)) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 833 status = kReadAtom_Status; | 836 status = kReadAtom_Status; |
| 834 break; | 837 break; |
| 835 } | 838 } |
| 836 } | 839 } |
| 837 | 840 |
| 838 if (bytesRead) { | 841 if (bytesRead) { |
| 839 *bytesRead = reader.offset(); | 842 *bytesRead = reader.offset(); |
| 840 } | 843 } |
| 841 return status; | 844 return status; |
| 842 } | 845 } |
| OLD | NEW |