diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /gfx/skia/skia/src/utils/win/SkIStream.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'gfx/skia/skia/src/utils/win/SkIStream.h')
-rw-r--r-- | gfx/skia/skia/src/utils/win/SkIStream.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/utils/win/SkIStream.h b/gfx/skia/skia/src/utils/win/SkIStream.h new file mode 100644 index 000000000..a3315c121 --- /dev/null +++ b/gfx/skia/skia/src/utils/win/SkIStream.h @@ -0,0 +1,135 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkIStream_DEFINED +#define SkIStream_DEFINED + +#include "SkTypes.h" + +#ifdef SK_BUILD_FOR_WIN + +#include "SkLeanWindows.h" +#include <ole2.h> + +class SkStream; +class SkWStream; + +/** + * A bare IStream implementation which properly reference counts + * but returns E_NOTIMPL for all ISequentialStream and IStream methods. + */ +class SkBaseIStream : public IStream { +private: + LONG _refcount; + +protected: + explicit SkBaseIStream(); + virtual ~SkBaseIStream(); + +public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid + , void ** ppvObject); + virtual ULONG STDMETHODCALLTYPE AddRef(void); + virtual ULONG STDMETHODCALLTYPE Release(void); + + // ISequentialStream Interface +public: + virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead); + + virtual HRESULT STDMETHODCALLTYPE Write(void const* pv + , ULONG cb + , ULONG* pcbWritten); + + // IStream Interface +public: + virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER); + + virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream* + , ULARGE_INTEGER + , ULARGE_INTEGER* + , ULARGE_INTEGER*); + + virtual HRESULT STDMETHODCALLTYPE Commit(DWORD); + + virtual HRESULT STDMETHODCALLTYPE Revert(void); + + virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER + , ULARGE_INTEGER + , DWORD); + + virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER + , ULARGE_INTEGER + , DWORD); + + virtual HRESULT STDMETHODCALLTYPE Clone(IStream **); + + virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove + , DWORD dwOrigin + , ULARGE_INTEGER* lpNewFilePointer); + + virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg + , DWORD grfStatFlag); +}; + +/** + * A minimal read-only IStream implementation which wraps an SkStream. + */ +class SkIStream : public SkBaseIStream { +private: + SkStream *fSkStream; + const bool fDeleteOnRelease; + ULARGE_INTEGER fLocation; + + SkIStream(SkStream* stream, bool fDeleteOnRelease); + virtual ~SkIStream(); + +public: + HRESULT static CreateFromSkStream(SkStream* stream + , bool fDeleteOnRelease + , IStream ** ppStream); + + virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead); + + virtual HRESULT STDMETHODCALLTYPE Write(void const* pv + , ULONG cb + , ULONG* pcbWritten); + + virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove + , DWORD dwOrigin + , ULARGE_INTEGER* lpNewFilePointer); + + virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg + , DWORD grfStatFlag); +}; + +/** + * A minimal write-only IStream implementation which wraps an SkWIStream. + */ +class SkWIStream : public SkBaseIStream { +private: + SkWStream *fSkWStream; + + SkWIStream(SkWStream* stream); + virtual ~SkWIStream(); + +public: + HRESULT static CreateFromSkWStream(SkWStream* stream, IStream ** ppStream); + + virtual HRESULT STDMETHODCALLTYPE Write(void const* pv + , ULONG cb + , ULONG* pcbWritten); + + virtual HRESULT STDMETHODCALLTYPE Commit(DWORD); + + virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg + , DWORD grfStatFlag); +}; + +#endif // SK_BUILD_FOR_WIN +#endif // SkIStream_DEFINED |