| 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 932 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 943 SkDynamicMemoryWStream tempStream; | 943 SkDynamicMemoryWStream tempStream; |
| 944 const size_t bufferSize = 4096; | 944 const size_t bufferSize = 4096; |
| 945 char buffer[bufferSize]; | 945 char buffer[bufferSize]; |
| 946 do { | 946 do { |
| 947 size_t bytesRead = stream->read(buffer, bufferSize); | 947 size_t bytesRead = stream->read(buffer, bufferSize); |
| 948 tempStream.write(buffer, bytesRead); | 948 tempStream.write(buffer, bytesRead); |
| 949 } while (!stream->isAtEnd()); | 949 } while (!stream->isAtEnd()); |
| 950 return tempStream.detachAsStream(); // returns a SkBlockMemoryStream, | 950 return tempStream.detachAsStream(); // returns a SkBlockMemoryStream, |
| 951 // cheaper than copying to SkData | 951 // cheaper than copying to SkData |
| 952 } | 952 } |
| 953 |
| 954 bool SkStreamCopy(SkWStream* out, SkStream* input) { |
| 955 const char* base = static_cast<const char*>(input->getMemoryBase()); |
| 956 if (base && input->hasPosition() && input->hasLength()) { |
| 957 // Shortcut that avoids the while loop. |
| 958 size_t position = input->getPosition(); |
| 959 size_t length = input->getLength(); |
| 960 SkASSERT(length >= position); |
| 961 return out->write(&base[position], length - position); |
| 962 } |
| 963 char scratch[4096]; |
| 964 size_t count; |
| 965 while (true) { |
| 966 count = input->read(scratch, sizeof(scratch)); |
| 967 if (0 == count) { |
| 968 return true; |
| 969 } |
| 970 if (!out->write(scratch, count)) { |
| 971 return false; |
| 972 } |
| 973 } |
| 974 } |
| OLD | NEW |