From bd36141ac74d26d741f171de29ef1adcc7e65f6d Mon Sep 17 00:00:00 2001 From: "pavlov%netscape.com" Date: Fri, 12 Jan 2001 13:09:16 +0000 Subject: [PATCH] make GetBits have an out param of an array of PRUint8s. git-svn-id: svn://10.0.0.236/trunk@84854 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/gfx2/public/nsIImage.idl | 4 ++-- mozilla/gfx2/src/windows/nsImage.cpp | 9 ++++++--- mozilla/gfx2/src/xlib/nsImage.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mozilla/gfx2/public/nsIImage.idl b/mozilla/gfx2/public/nsIImage.idl index cb154475ff4..97cf5df5384 100644 --- a/mozilla/gfx2/public/nsIImage.idl +++ b/mozilla/gfx2/public/nsIImage.idl @@ -88,8 +88,8 @@ interface nsIImage : nsISupports */ readonly attribute unsigned long bitsLength; - - readonly attribute PRUint8 bits; + // XXX do we copy here? lets not... + void getBits([array, size_is(length)] out PRUint8 bits, out unsigned long length); /** * Sets \a length bytes of \a data in this object. diff --git a/mozilla/gfx2/src/windows/nsImage.cpp b/mozilla/gfx2/src/windows/nsImage.cpp index b5cbf5df535..583c1ddad85 100644 --- a/mozilla/gfx2/src/windows/nsImage.cpp +++ b/mozilla/gfx2/src/windows/nsImage.cpp @@ -223,12 +223,15 @@ void CreateBMPFile(HWND hwnd, LPTSTR pszFile, PBITMAPINFO pbi, } -/* readonly attribute PRUint8 bits; */ -NS_IMETHODIMP nsImage::GetBits(PRUint8 *aBits) +/* void getBits([array, size_is(length)] out PRUint8 bits, out unsigned long length); */ +NS_IMETHODIMP nsImage::GetBits(PRUint8 **aBits, PRUint32 *length) { if (!mBits) return NS_ERROR_NOT_INITIALIZED; + *aBits = mBits; + *length = mBitsLength; + HWND bg = GetDesktopWindow(); HDC memDC = GetDC(NULL); @@ -261,7 +264,7 @@ NS_IMETHODIMP nsImage::GetBits(PRUint8 *aBits) CreateBMPFile(bg, "c:\\whatever.bmp", (LPBITMAPINFO)mBHead, memBM, memDC) ; -// ReleaseDC(memDC); + ReleaseDC(NULL, memDC); DeleteObject(memBM); diff --git a/mozilla/gfx2/src/xlib/nsImage.cpp b/mozilla/gfx2/src/xlib/nsImage.cpp index 34edb293be8..2b9b214fd4a 100644 --- a/mozilla/gfx2/src/xlib/nsImage.cpp +++ b/mozilla/gfx2/src/xlib/nsImage.cpp @@ -137,13 +137,15 @@ NS_IMETHODIMP nsImage::GetBitsLength(PRUint32 *aBitsLength) return NS_OK; } -/* readonly attribute PRUint8 bits; */ -NS_IMETHODIMP nsImage::GetBits(PRUint8 *aBits) +/* void getBits([array, size_is(length)] out PRUint8 bits, out unsigned long length); */ +NS_IMETHODIMP nsImage::GetBits(PRUint8 **aBits, PRUint32 *length) { if (!mBits) return NS_ERROR_NOT_INITIALIZED; *aBits = mBits; + *length = mBitsLength; + return NS_OK; }