Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 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 "SkStream.h" | 10 #include "SkStream.h" |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 360 if (size > dataSize - fOffset) { | 360 if (size > dataSize - fOffset) { |
| 361 size = dataSize - fOffset; | 361 size = dataSize - fOffset; |
| 362 } | 362 } |
| 363 if (buffer) { | 363 if (buffer) { |
| 364 memcpy(buffer, fData->bytes() + fOffset, size); | 364 memcpy(buffer, fData->bytes() + fOffset, size); |
| 365 } | 365 } |
| 366 fOffset += size; | 366 fOffset += size; |
| 367 return size; | 367 return size; |
| 368 } | 368 } |
| 369 | 369 |
| 370 bool SkMemoryStream::peek(void* buffer, size_t size) const { | 370 size_t SkMemoryStream::peek(void* buffer, size_t size) const { |
| 371 SkASSERT(buffer != nullptr); | 371 SkASSERT(buffer != nullptr); |
| 372 | |
| 373 if (this->isAtEnd()) { | |
|
bungeman-skia
2015/12/07 16:17:36
This block seems redundant, though maybe an optimi
scroggo
2015/12/07 16:52:02
Removed.
| |
| 374 return 0; | |
| 375 } | |
| 376 | |
| 377 SkASSERT(fData->size() > fOffset); | |
|
bungeman-skia
2015/12/07 16:17:36
This assert depends on the above block to remove t
scroggo
2015/12/07 16:52:02
Removed.
| |
| 372 const size_t position = fOffset; | 378 const size_t position = fOffset; |
|
bungeman-skia
2015/12/07 16:17:36
It seems this be clearer (or at least more consist
scroggo
2015/12/07 16:52:02
Done.
| |
| 373 if (size > fData->size() - position) { | 379 size = SkTMin(size, fData->size() - position); |
|
bungeman-skia
2015/12/07 16:17:36
Is there a reason to calculate this? This is what
scroggo
2015/12/07 16:52:02
Done.
| |
| 374 // The stream is not large enough to satisfy this request. | 380 |
| 375 return false; | |
| 376 } | |
| 377 SkMemoryStream* nonConstThis = const_cast<SkMemoryStream*>(this); | 381 SkMemoryStream* nonConstThis = const_cast<SkMemoryStream*>(this); |
| 378 SkDEBUGCODE(const size_t bytesRead =) nonConstThis->read(buffer, size); | 382 SkDEBUGCODE(const size_t bytesRead =) nonConstThis->read(buffer, size); |
| 379 SkASSERT(bytesRead == size); | 383 SkASSERT(bytesRead == size); |
| 380 nonConstThis->fOffset = position; | 384 nonConstThis->fOffset = position; |
| 381 return true; | 385 return size; |
| 382 } | 386 } |
| 383 | 387 |
| 384 bool SkMemoryStream::isAtEnd() const { | 388 bool SkMemoryStream::isAtEnd() const { |
| 385 return fOffset == fData->size(); | 389 return fOffset == fData->size(); |
| 386 } | 390 } |
| 387 | 391 |
| 388 bool SkMemoryStream::rewind() { | 392 bool SkMemoryStream::rewind() { |
| 389 fOffset = 0; | 393 fOffset = 0; |
| 390 return true; | 394 return true; |
| 391 } | 395 } |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 718 fCurrentOffset = 0; | 722 fCurrentOffset = 0; |
| 719 } | 723 } |
| 720 SkASSERT(false); | 724 SkASSERT(false); |
| 721 return 0; | 725 return 0; |
| 722 } | 726 } |
| 723 | 727 |
| 724 bool isAtEnd() const override { | 728 bool isAtEnd() const override { |
| 725 return fOffset == fSize; | 729 return fOffset == fSize; |
| 726 } | 730 } |
| 727 | 731 |
| 728 bool peek(void* buff, size_t size) const override { | 732 size_t peek(void* buff, size_t size) const override { |
| 729 SkASSERT(buff != nullptr); | 733 SkASSERT(buff != nullptr); |
| 730 if (fOffset + size > fSize) { | 734 |
| 731 return false; | 735 if (this->isAtEnd()) { |
|
bungeman-skia
2015/12/07 16:17:36
As above, this appears to be unneeded.
scroggo
2015/12/07 16:52:02
Removed
| |
| 736 return 0; | |
| 732 } | 737 } |
| 738 | |
| 739 SkASSERT(fSize > fOffset); | |
|
bungeman-skia
2015/12/07 16:17:36
And 'SkASSERT(fSize >= fOffset);' should be a gene
scroggo
2015/12/07 16:52:02
Removed
| |
| 740 size = SkTMin(size, fSize - fOffset); | |
| 741 | |
| 742 const size_t totalBytesToPeek = size; | |
|
bungeman-skia
2015/12/07 16:17:36
Since we have to maintain size now to return it, I
scroggo
2015/12/07 16:52:02
Changed. I think I did as you requested; let me kn
| |
| 733 char* buffer = static_cast<char*>(buff); | 743 char* buffer = static_cast<char*>(buff); |
| 734 const SkDynamicMemoryWStream::Block* current = fCurrent; | 744 const SkDynamicMemoryWStream::Block* current = fCurrent; |
| 735 size_t currentOffset = fCurrentOffset; | 745 size_t currentOffset = fCurrentOffset; |
| 736 while (size) { | 746 while (size) { |
| 737 SkASSERT(current); | 747 SkASSERT(current); |
| 738 size_t bytesFromCurrent = | 748 size_t bytesFromCurrent = |
| 739 SkTMin(current->written() - currentOffset, size); | 749 SkTMin(current->written() - currentOffset, size); |
| 740 memcpy(buffer, current->start() + currentOffset, bytesFromCurrent); | 750 memcpy(buffer, current->start() + currentOffset, bytesFromCurrent); |
| 741 size -= bytesFromCurrent; | 751 size -= bytesFromCurrent; |
| 742 buffer += bytesFromCurrent; | 752 buffer += bytesFromCurrent; |
| 743 current = current->fNext; | 753 current = current->fNext; |
| 744 currentOffset = 0; | 754 currentOffset = 0; |
| 745 } | 755 } |
| 746 return true; | 756 return totalBytesToPeek; |
| 747 } | 757 } |
| 748 | 758 |
| 749 bool rewind() override { | 759 bool rewind() override { |
| 750 fCurrent = fBlockMemory->fHead; | 760 fCurrent = fBlockMemory->fHead; |
| 751 fOffset = 0; | 761 fOffset = 0; |
| 752 fCurrentOffset = 0; | 762 fCurrentOffset = 0; |
| 753 return true; | 763 return true; |
| 754 } | 764 } |
| 755 | 765 |
| 756 SkBlockMemoryStream* duplicate() const override { | 766 SkBlockMemoryStream* duplicate() const override { |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 972 while (true) { | 982 while (true) { |
| 973 count = input->read(scratch, sizeof(scratch)); | 983 count = input->read(scratch, sizeof(scratch)); |
| 974 if (0 == count) { | 984 if (0 == count) { |
| 975 return true; | 985 return true; |
| 976 } | 986 } |
| 977 if (!out->write(scratch, count)) { | 987 if (!out->write(scratch, count)) { |
| 978 return false; | 988 return false; |
| 979 } | 989 } |
| 980 } | 990 } |
| 981 } | 991 } |
| OLD | NEW |