| OLD | NEW |
| (Empty) |
| 1 | |
| 2 /* | |
| 3 * Copyright 2011 Google Inc. | |
| 4 * | |
| 5 * Use of this source code is governed by a BSD-style license that can be | |
| 6 * found in the LICENSE file. | |
| 7 */ | |
| 8 | |
| 9 | |
| 10 #ifndef SkIStream_DEFINED | |
| 11 #define SkIStream_DEFINED | |
| 12 | |
| 13 #include "SkTypes.h" | |
| 14 | |
| 15 #ifdef SK_BUILD_FOR_WIN | |
| 16 | |
| 17 #include "../../private/SkLeanWindows.h" | |
| 18 #include <ole2.h> | |
| 19 | |
| 20 class SkStream; | |
| 21 class SkWStream; | |
| 22 | |
| 23 /** | |
| 24 * A bare IStream implementation which properly reference counts | |
| 25 * but returns E_NOTIMPL for all ISequentialStream and IStream methods. | |
| 26 */ | |
| 27 class SkBaseIStream : public IStream { | |
| 28 private: | |
| 29 LONG _refcount; | |
| 30 | |
| 31 protected: | |
| 32 explicit SkBaseIStream(); | |
| 33 virtual ~SkBaseIStream(); | |
| 34 | |
| 35 public: | |
| 36 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid | |
| 37 , void ** ppvObject); | |
| 38 virtual ULONG STDMETHODCALLTYPE AddRef(void); | |
| 39 virtual ULONG STDMETHODCALLTYPE Release(void); | |
| 40 | |
| 41 // ISequentialStream Interface | |
| 42 public: | |
| 43 virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead); | |
| 44 | |
| 45 virtual HRESULT STDMETHODCALLTYPE Write(void const* pv | |
| 46 , ULONG cb | |
| 47 , ULONG* pcbWritten); | |
| 48 | |
| 49 // IStream Interface | |
| 50 public: | |
| 51 virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER); | |
| 52 | |
| 53 virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream* | |
| 54 , ULARGE_INTEGER | |
| 55 , ULARGE_INTEGER* | |
| 56 , ULARGE_INTEGER*); | |
| 57 | |
| 58 virtual HRESULT STDMETHODCALLTYPE Commit(DWORD); | |
| 59 | |
| 60 virtual HRESULT STDMETHODCALLTYPE Revert(void); | |
| 61 | |
| 62 virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER | |
| 63 , ULARGE_INTEGER | |
| 64 , DWORD); | |
| 65 | |
| 66 virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER | |
| 67 , ULARGE_INTEGER | |
| 68 , DWORD); | |
| 69 | |
| 70 virtual HRESULT STDMETHODCALLTYPE Clone(IStream **); | |
| 71 | |
| 72 virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove | |
| 73 , DWORD dwOrigin | |
| 74 , ULARGE_INTEGER* lpNewFilePointer); | |
| 75 | |
| 76 virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg | |
| 77 , DWORD grfStatFlag); | |
| 78 }; | |
| 79 | |
| 80 /** | |
| 81 * A minimal read-only IStream implementation which wraps an SkStream. | |
| 82 */ | |
| 83 class SkIStream : public SkBaseIStream { | |
| 84 private: | |
| 85 SkStream *fSkStream; | |
| 86 const bool fDeleteOnRelease; | |
| 87 ULARGE_INTEGER fLocation; | |
| 88 | |
| 89 SkIStream(SkStream* stream, bool fDeleteOnRelease); | |
| 90 virtual ~SkIStream(); | |
| 91 | |
| 92 public: | |
| 93 HRESULT static CreateFromSkStream(SkStream* stream | |
| 94 , bool fDeleteOnRelease | |
| 95 , IStream ** ppStream); | |
| 96 | |
| 97 virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead); | |
| 98 | |
| 99 virtual HRESULT STDMETHODCALLTYPE Write(void const* pv | |
| 100 , ULONG cb | |
| 101 , ULONG* pcbWritten); | |
| 102 | |
| 103 virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove | |
| 104 , DWORD dwOrigin | |
| 105 , ULARGE_INTEGER* lpNewFilePointer); | |
| 106 | |
| 107 virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg | |
| 108 , DWORD grfStatFlag); | |
| 109 }; | |
| 110 | |
| 111 /** | |
| 112 * A minimal write-only IStream implementation which wraps an SkWIStream. | |
| 113 */ | |
| 114 class SkWIStream : public SkBaseIStream { | |
| 115 private: | |
| 116 SkWStream *fSkWStream; | |
| 117 | |
| 118 SkWIStream(SkWStream* stream); | |
| 119 virtual ~SkWIStream(); | |
| 120 | |
| 121 public: | |
| 122 HRESULT static CreateFromSkWStream(SkWStream* stream, IStream ** ppStream); | |
| 123 | |
| 124 virtual HRESULT STDMETHODCALLTYPE Write(void const* pv | |
| 125 , ULONG cb | |
| 126 , ULONG* pcbWritten); | |
| 127 | |
| 128 virtual HRESULT STDMETHODCALLTYPE Commit(DWORD); | |
| 129 | |
| 130 virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg | |
| 131 , DWORD grfStatFlag); | |
| 132 }; | |
| 133 | |
| 134 #endif // SK_BUILD_FOR_WIN | |
| 135 #endif // SkIStream_DEFINED | |
| OLD | NEW |