diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/SkFrontBufferedStream.cpp | 26 | ||||
-rw-r--r-- | src/utils/win/SkDWriteFontFileStream.cpp | 14 | ||||
-rw-r--r-- | src/utils/win/SkDWriteFontFileStream.h | 20 |
3 files changed, 47 insertions, 13 deletions
diff --git a/src/utils/SkFrontBufferedStream.cpp b/src/utils/SkFrontBufferedStream.cpp index 42b86f09e3..77c484af64 100644 --- a/src/utils/SkFrontBufferedStream.cpp +++ b/src/utils/SkFrontBufferedStream.cpp @@ -11,8 +11,8 @@ class FrontBufferedStream : public SkStreamRewindable { public: - // Called by Create. - FrontBufferedStream(SkStream*, size_t bufferSize); + // Called by Make. + FrontBufferedStream(std::unique_ptr<SkStream>, size_t bufferSize); size_t read(void* buffer, size_t size) override; @@ -26,9 +26,15 @@ public: size_t getLength() const override { return fLength; } +#ifdef SK_SUPPORT_LEGACY_STREAM_API SkStreamRewindable* duplicate() const override { return nullptr; } +#endif private: +#ifndef SK_SUPPORT_LEGACY_STREAM_API + SkStreamRewindable* onDuplicate() const override { return nullptr; } +#endif + std::unique_ptr<SkStream> fStream; const bool fHasLength; const size_t fLength; @@ -61,17 +67,19 @@ private: typedef SkStream INHERITED; }; -SkStreamRewindable* SkFrontBufferedStream::Create(SkStream* stream, size_t bufferSize) { - if (nullptr == stream) { +std::unique_ptr<SkStreamRewindable> SkFrontBufferedStream::Make(std::unique_ptr<SkStream> stream, + size_t bufferSize) { + if (!stream) { return nullptr; } - return new FrontBufferedStream(stream, bufferSize); + return std::unique_ptr<SkStreamRewindable>(new FrontBufferedStream(std::move(stream), + bufferSize)); } -FrontBufferedStream::FrontBufferedStream(SkStream* stream, size_t bufferSize) - : fStream(stream) - , fHasLength(stream->hasPosition() && stream->hasLength()) - , fLength(stream->getLength() - stream->getPosition()) +FrontBufferedStream::FrontBufferedStream(std::unique_ptr<SkStream> stream, size_t bufferSize) + : fStream(std::move(stream)) + , fHasLength(fStream->hasPosition() && fStream->hasLength()) + , fLength(fStream->getLength() - fStream->getPosition()) , fOffset(0) , fBufferedSoFar(0) , fBufferSize(bufferSize) diff --git a/src/utils/win/SkDWriteFontFileStream.cpp b/src/utils/win/SkDWriteFontFileStream.cpp index 2bb7d0fb4e..a43e163481 100644 --- a/src/utils/win/SkDWriteFontFileStream.cpp +++ b/src/utils/win/SkDWriteFontFileStream.cpp @@ -86,7 +86,12 @@ bool SkDWriteFontFileStream::rewind() { return true; } -SkDWriteFontFileStream* SkDWriteFontFileStream::duplicate() const { +#ifdef SK_SUPPORT_LEGACY_STREAM_API +SkDWriteFontFileStream* SkDWriteFontFileStream::duplicate() const +#else +SkDWriteFontFileStream* SkDWriteFontFileStream::onDuplicate() const +#endif +{ return new SkDWriteFontFileStream(fFontFileStream.get()); } @@ -104,7 +109,12 @@ bool SkDWriteFontFileStream::move(long offset) { return seek(fPos + offset); } -SkDWriteFontFileStream* SkDWriteFontFileStream::fork() const { +#ifdef SK_SUPPORT_LEGACY_STREAM_API +SkDWriteFontFileStream* SkDWriteFontFileStream::fork() const +#else +SkDWriteFontFileStream* SkDWriteFontFileStream::onFork() const +#endif +{ std::unique_ptr<SkDWriteFontFileStream> that(this->duplicate()); that->seek(fPos); return that.release(); diff --git a/src/utils/win/SkDWriteFontFileStream.h b/src/utils/win/SkDWriteFontFileStream.h index 25322c5657..9b65752382 100644 --- a/src/utils/win/SkDWriteFontFileStream.h +++ b/src/utils/win/SkDWriteFontFileStream.h @@ -28,15 +28,31 @@ public: size_t read(void* buffer, size_t size) override; bool isAtEnd() const override; bool rewind() override; - SkDWriteFontFileStream* duplicate() const override; size_t getPosition() const override; bool seek(size_t position) override; bool move(long offset) override; - SkDWriteFontFileStream* fork() const override; size_t getLength() const override; const void* getMemoryBase() override; +#ifdef SK_SUPPORT_LEGACY_STREAM_API + SkDWriteFontFileStream* duplicate() const override; + SkDWriteFontFileStream* fork() const override; +#else + std::unique_ptr<SkDWriteFontFileStream> duplicate() const { + return std::unique_ptr<SkDWriteFontFileStream>(this->onDuplicate()); + } + std::unique_ptr<SkDWriteFontFileStream> fork() const { + return std::unique_ptr<SkDWriteFontFileStream>(this->onFork()); + } +#endif + + private: +#ifndef SK_SUPPORT_LEGACY_STREAM_API + SkDWriteFontFileStream* onDuplicate() const override; + SkDWriteFontFileStream* onFork() const override; +#endif + SkTScopedComPtr<IDWriteFontFileStream> fFontFileStream; size_t fPos; const void* fLockedMemory; |