static void WinUtilTest() { ScopedCom comScope; { char *string = "abcde"; size_t stringSize = 5, len; ScopedComPtr<IStream> stream(CreateStreamFromData(string, stringSize)); assert(stream); char *data = (char *)GetDataFromStream(stream, &len); assert(data && stringSize == len && str::Eq(data, string)); free(data); } { WCHAR *string = L"abcde"; size_t stringSize = 10, len; ScopedComPtr<IStream> stream(CreateStreamFromData(string, stringSize)); assert(stream); WCHAR *data = (WCHAR *)GetDataFromStream(stream, &len); assert(data && stringSize == len && str::Eq(data, string)); free(data); } { RectI oneScreen = GetFullscreenRect(NULL); RectI allScreens = GetVirtualScreenRect(); assert(allScreens.Intersect(oneScreen) == oneScreen); } }
HRESULT CPdfFilter::OnInit() { CleanUp(); // TODO: PdfEngine::CreateFromStream never returns with // m_pStream instead of a clone - why? // load content of PDF document into a seekable stream HRESULT res; size_t len; void* data = GetDataFromStream(m_pStream, &len, &res); if (!data) return res; ScopedComPtr<IStream> stream(CreateStreamFromData(data, len)); free(data); if (!stream) return E_FAIL; m_pdfEngine = PdfEngine::CreateFromStream(stream); if (!m_pdfEngine) return E_FAIL; m_state = STATE_PDF_START; m_iPageNo = 0; return S_OK; }
HRESULT CTeXFilter::OnInit() { if (!m_pData) { // load content of LaTeX file into m_pData HRESULT res; size_t len; void *data = GetDataFromStream(m_pStream, &len, &res); if (!data) return res; m_pData = str::ToWideChar((char *)data, CP_ACP); m_pBuffer = AllocArray<WCHAR>(len + 1); free(data); if (!m_pData || !m_pBuffer) { CleanUp(); return E_OUTOFMEMORY; } } m_state = STATE_TEX_START; m_pPtr = m_pData; m_iDepth = 0; return S_OK; }
HRESULT CEpubFilter::OnInit() { CleanUp(); // TODO: EpubDoc::CreateFromStream never returns with // m_pStream instead of a clone - why? // load content of EPUB document into a seekable stream HRESULT res; size_t len; void* data = GetDataFromStream(m_pStream, &len, &res); if (!data) return res; ScopedComPtr<IStream> stream(CreateStreamFromData(data, len)); free(data); if (!stream) return E_FAIL; m_epubDoc = EpubDoc::CreateFromStream(stream); if (!m_epubDoc) return E_FAIL; m_state = STATE_EPUB_START; return S_OK; }
static void WinUtilTest() { ScopedCom comScope; { char *string = "abcde"; size_t stringSize = 5, len; ScopedComPtr<IStream> stream(CreateStreamFromData(string, stringSize)); assert(stream); char *data = (char *)GetDataFromStream(stream, &len); assert(data && stringSize == len && str::Eq(data, string)); free(data); } { WCHAR *string = L"abcde"; size_t stringSize = 10, len; ScopedComPtr<IStream> stream(CreateStreamFromData(string, stringSize)); assert(stream); WCHAR *data = (WCHAR *)GetDataFromStream(stream, &len); assert(data && stringSize == len && str::Eq(data, string)); free(data); } { RectI oneScreen = GetFullscreenRect(NULL); RectI allScreens = GetVirtualScreenRect(); assert(allScreens.Intersect(oneScreen) == oneScreen); } { COLORREF c = AdjustLightness(RGB(255, 0, 0), 1.0f); assert(c == RGB(255, 0, 0)); c = AdjustLightness(RGB(255, 0, 0), 2.0f); assert(c == RGB(255, 255, 255)); c = AdjustLightness(RGB(255, 0, 0), 0.25f); assert(c == RGB(64, 0, 0)); c = AdjustLightness(RGB(226, 196, 226), 95 / 255.0f); assert(c == RGB(105, 52, 105)); c = AdjustLightness(RGB(255, 255, 255), 0.5f); assert(c == RGB(128, 128, 128)); } }
void *GetDataFromStream(IStream *stream, size_t *len, HRESULT *res_opt) { void *data; ULONG size; HRESULT res = GetDataFromStream(stream, &data, &size); if (len) *len = size; if (res_opt) *res_opt = res; if (FAILED(res)) return NULL; return data; }
PdbReader::PdbReader(IStream *stream) : data((char *)GetDataFromStream(stream, &dataSize)) { if (!ParseHeader()) recOffsets.Reset(); }