add Make factory to SkMemoryStream (simplify call-sites)
Bug: skia:6888
Change-Id: Ia4e432673ed089a91229697c8dde0489f220000d
Reviewed-on: https://skia-review.googlesource.com/26884
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index 3a23e06..3a57352 100644
--- a/src/codec/SkAndroidCodec.cpp
+++ b/src/codec/SkAndroidCodec.cpp
@@ -103,7 +103,7 @@
return nullptr;
}
- return MakeFromStream(skstd::make_unique<SkMemoryStream>(std::move(data)), chunkReader);
+ return MakeFromStream(SkMemoryStream::Make(std::move(data)), chunkReader);
}
SkColorType SkAndroidCodec::computeOutputColorType(SkColorType requestedColorType) {
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index d0958e8..09343e2 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -123,8 +123,7 @@
if (!data) {
return nullptr;
}
- return MakeFromStream(std::unique_ptr<SkStream>(new SkMemoryStream(std::move(data))),
- nullptr, reader);
+ return MakeFromStream(SkMemoryStream::Make(std::move(data)), nullptr, reader);
}
SkCodec::SkCodec(int width, int height, const SkEncodedInfo& info,
diff --git a/src/codec/SkIcoCodec.cpp b/src/codec/SkIcoCodec.cpp
index fce14a2..24549fa 100644
--- a/src/codec/SkIcoCodec.cpp
+++ b/src/codec/SkIcoCodec.cpp
@@ -144,7 +144,7 @@
}
sk_sp<SkData> data(SkData::MakeFromMalloc(buffer.release(), size));
- std::unique_ptr<SkMemoryStream> embeddedStream(new SkMemoryStream(data));
+ auto embeddedStream = SkMemoryStream::Make(data);
bytesRead += size;
// Check if the embedded codec is bmp or png and create the codec
diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp
index dbcbd28..cf41d17 100644
--- a/src/codec/SkRawCodec.cpp
+++ b/src/codec/SkRawCodec.cpp
@@ -288,7 +288,7 @@
}
}
}
- return skstd::make_unique<SkMemoryStream>(data);
+ return SkMemoryStream::Make(data);
}
private:
@@ -381,7 +381,7 @@
sk_sp<SkData> data(SkData::MakeWithCopy(
static_cast<const uint8_t*>(fStream->getMemoryBase()) + offset, bytesToRead));
fStream.reset();
- return skstd::make_unique<SkMemoryStream>(data);
+ return SkMemoryStream::Make(data);
} else {
sk_sp<SkData> data(SkData::MakeUninitialized(bytesToRead));
if (!fStream->seek(offset)) {
@@ -391,7 +391,7 @@
if (bytesRead < bytesToRead) {
data = SkData::MakeSubset(data.get(), 0, bytesRead);
}
- return skstd::make_unique<SkMemoryStream>(data);
+ return SkMemoryStream::Make(data);
}
}
private:
diff --git a/src/core/SkFontDescriptor.cpp b/src/core/SkFontDescriptor.cpp
index 73ea205..519e8f2 100644
--- a/src/core/SkFontDescriptor.cpp
+++ b/src/core/SkFontDescriptor.cpp
@@ -108,7 +108,7 @@
sk_sp<SkData> data(SkData::MakeUninitialized(length));
if (stream->read(data->writable_data(), length) == length) {
result->fFontData = skstd::make_unique<SkFontData>(
- skstd::make_unique<SkMemoryStream>(data), index, axis, axisCount);
+ SkMemoryStream::Make(std::move(data)), index, axis, axisCount);
} else {
SkDEBUGFAIL("Could not read font data");
return false;
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index 7bb2079..139a72f 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -274,6 +274,18 @@
fOffset = 0;
}
+std::unique_ptr<SkMemoryStream> SkMemoryStream::MakeCopy(const void* data, size_t length) {
+ return skstd::make_unique<SkMemoryStream>(data, length, true);
+}
+
+std::unique_ptr<SkMemoryStream> SkMemoryStream::MakeDirect(const void* data, size_t length) {
+ return skstd::make_unique<SkMemoryStream>(data, length, false);
+}
+
+std::unique_ptr<SkMemoryStream> SkMemoryStream::Make(sk_sp<SkData> data) {
+ return skstd::make_unique<SkMemoryStream>(std::move(data));
+}
+
void SkMemoryStream::setMemoryOwned(const void* src, size_t size) {
fData = SkData::MakeFromMalloc(src, size);
fOffset = 0;