diff --git a/gfx2/public/nsIImage.idl b/gfx2/public/nsIImage.idl index cb154475ff4..e69de29bb2d 100644 --- a/gfx2/public/nsIImage.idl +++ b/gfx2/public/nsIImage.idl @@ -1,106 +0,0 @@ -/** -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 2000-2001 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * Stuart Parmenter - */ - -#include "nsISupports.idl" -#include "gfxtypes.idl" - -interface nsIDrawable; - -/** - * nsIImage interface - * - * @author Tim Rowley - * @author Stuart Parmenter - * @version 1.2 - * @see "gfx2" - */ -[scriptable, uuid(5e8405a4-1dd2-11b2-8385-bc8e3446cad3)] -interface nsIImage : nsISupports -{ - /** - * Create a new \a aWidth x \a aHeight sized image. - * - * @param aWidth The width of the image to create. - * @param aHeight The height of the image to create. - * @param aFormat the width of the image to create. - * - * @note The data of a new image is unspecified (Whats the word i'm looking for here?). - */ - void init(in gfx_dimension aWidth, - in gfx_dimension aHeight, - in gfx_format aFormat); - - /** - * Create an image with the bits copied from aDrawable - * - * @param aDrawable The drawing area to gather the image bits from. - * @param aX The x-coordinate of the rectangle in aDrawable to grab. - * @param aY The y-coordinate of the rectangle in aDrawable to grab. - * @param aWidth The width of the rectangle in aDrawable to grab. - * @param aHeight The height of the rectangle in aDrawable to grab. - */ - void initFromDrawable(in nsIDrawable aDrawable, - in gfx_coord aX, - in gfx_coord aY, - in gfx_dimension aWidth, - in gfx_dimension aHeight); - - /** - * The width of the image. - */ - readonly attribute gfx_dimension width; - - /** - * The height of the image. - */ - readonly attribute gfx_dimension height; - - /** - * The image data format the image was created with. - * @see nsIGFXFormat - */ - readonly attribute gfx_format format; - - readonly attribute unsigned long bytesPerRow; - - /** - * returns the number of bytes allocated for the image - */ - readonly attribute unsigned long bitsLength; - - - readonly attribute PRUint8 bits; - - /** - * Sets \a length bytes of \a data in this object. - * @param offset The offset from the first pixel in bytes. To set - * data beginning with the first (top left) pixel in the image, \a offset - * should be 0; to set data beginning with, for example, the sixth pixel in - * the first row of a RGBA32 image, the offset should be 20. - * @attension should we use PRUint32 instead? - */ - void setBits([array, size_is(length), const] in PRUint8 data, - in unsigned long length, - in long offset); - -}; diff --git a/gfx2/src/windows/nsImage.cpp b/gfx2/src/windows/nsImage.cpp index b5cbf5df535..583c1ddad85 100644 --- a/gfx2/src/windows/nsImage.cpp +++ b/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/gfx2/src/xlib/nsImage.cpp b/gfx2/src/xlib/nsImage.cpp index 34edb293be8..2b9b214fd4a 100644 --- a/gfx2/src/xlib/nsImage.cpp +++ b/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; }