зеркало из https://github.com/mozilla/gecko-dev.git
merging from IMGLIB2_20010126_BRANCH
This commit is contained in:
Родитель
2f41c5d5c4
Коммит
eea8eb56d8
|
@ -0,0 +1,82 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
/*! @verbatim */
|
||||||
|
%{C++
|
||||||
|
#include "gfxcompat.h"
|
||||||
|
%}
|
||||||
|
/*! @endverbatim */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_dimension should be used for widths and heights
|
||||||
|
* @var typedef float gfx_dimension
|
||||||
|
*/
|
||||||
|
typedef float gfx_dimension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_coord should be used for x and y coordinates
|
||||||
|
* @var typedef float gfx_coord
|
||||||
|
*/
|
||||||
|
typedef float gfx_coord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for angles
|
||||||
|
* @var typedef float gfx_angle
|
||||||
|
*/
|
||||||
|
typedef float gfx_angle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A color is a 32 bit unsigned integer with
|
||||||
|
* four components: R, G, B and A.
|
||||||
|
*
|
||||||
|
* @var typedef PRUint32 gfx_color
|
||||||
|
*/
|
||||||
|
typedef PRUint32 gfx_color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for bit depths
|
||||||
|
* @var typedef unsigned short gfx_depth
|
||||||
|
*/
|
||||||
|
typedef unsigned short gfx_depth; // is short ok?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for image formats
|
||||||
|
* @var typedef long gfx_format
|
||||||
|
* @see gfxIGFXFormat
|
||||||
|
*/
|
||||||
|
typedef long gfx_format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for gamma levels
|
||||||
|
* @var typedef float gfx_gamma
|
||||||
|
*/
|
||||||
|
typedef float gfx_gamma;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/* -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx image formats.
|
||||||
|
* @file gfxIFormats.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIFormats interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.0
|
||||||
|
* @see gfx_format
|
||||||
|
*/
|
||||||
|
[scriptable]
|
||||||
|
interface gfxIFormats
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* RGB - duh...
|
||||||
|
*/
|
||||||
|
const gfx_format RGB = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR - same as RGB except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR = 1;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A1 - RGB image and 1-bit alpha mask
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A1 = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A1 - same as RGB_A1 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A1 = 3;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A8 - RGB image and 8-bit alpha image
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A8 = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A8 - same as RGB_A8 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A8 = 5;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGBA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format RGBA = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGRA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format BGRA = 7;
|
||||||
|
};
|
|
@ -0,0 +1,147 @@
|
||||||
|
/** -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
#include "gfxIFormats.idl"
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
#include "nsRect.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIImageFrame interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.1
|
||||||
|
* @see "gfx2"
|
||||||
|
*/
|
||||||
|
[scriptable, uuid(51cc27a8-1dd2-11b2-a1aa-dad33ab193b4)]
|
||||||
|
interface gfxIImageFrame : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new \a aWidth x \a aHeight sized image.
|
||||||
|
*
|
||||||
|
* @param aX The x-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @param aY The y-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @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 nscoord aX,
|
||||||
|
in nscoord aY,
|
||||||
|
in nscoord aWidth,
|
||||||
|
in nscoord aHeight,
|
||||||
|
in gfx_format aFormat);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The x-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord x;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The y-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord y;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rectangle this frame ocupies.
|
||||||
|
*/
|
||||||
|
[noscript] readonly attribute nsRect rect;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The image data format the image was created with.
|
||||||
|
* @see gfxIFormats
|
||||||
|
*/
|
||||||
|
readonly attribute gfx_format format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the number of milliseconds until the next frame should be displayed.
|
||||||
|
* @note -1 means that this frame should be displayed forever.
|
||||||
|
*/
|
||||||
|
attribute long timeout;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* data accessors */
|
||||||
|
|
||||||
|
|
||||||
|
readonly attribute unsigned long imageBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the image
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long imageDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getImageData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 setImageData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* alpha stuff.. used for _A1 and _A8 formated images */
|
||||||
|
|
||||||
|
readonly attribute unsigned long alphaBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the alpha mask
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long alphaDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getAlphaData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets \a length bytes of \a data in this object.
|
||||||
|
*/
|
||||||
|
void setAlphaData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,37 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
#include "gfx2types.idl"
|
||||||
|
|
||||||
|
typedef PRInt32 nscoord;
|
||||||
|
|
||||||
|
[ptr] native nsRect(nsRect);
|
||||||
|
[ref] native nsRectRef(nsRect);
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
/*! @verbatim */
|
||||||
|
%{C++
|
||||||
|
#include "gfxcompat.h"
|
||||||
|
%}
|
||||||
|
/*! @endverbatim */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_dimension should be used for widths and heights
|
||||||
|
* @var typedef float gfx_dimension
|
||||||
|
*/
|
||||||
|
typedef float gfx_dimension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_coord should be used for x and y coordinates
|
||||||
|
* @var typedef float gfx_coord
|
||||||
|
*/
|
||||||
|
typedef float gfx_coord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for angles
|
||||||
|
* @var typedef float gfx_angle
|
||||||
|
*/
|
||||||
|
typedef float gfx_angle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A color is a 32 bit unsigned integer with
|
||||||
|
* four components: R, G, B and A.
|
||||||
|
*
|
||||||
|
* @var typedef PRUint32 gfx_color
|
||||||
|
*/
|
||||||
|
typedef PRUint32 gfx_color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for bit depths
|
||||||
|
* @var typedef unsigned short gfx_depth
|
||||||
|
*/
|
||||||
|
typedef unsigned short gfx_depth; // is short ok?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for image formats
|
||||||
|
* @var typedef long gfx_format
|
||||||
|
* @see gfxIGFXFormat
|
||||||
|
*/
|
||||||
|
typedef long gfx_format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for gamma levels
|
||||||
|
* @var typedef float gfx_gamma
|
||||||
|
*/
|
||||||
|
typedef float gfx_gamma;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/* -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx image formats.
|
||||||
|
* @file gfxIFormats.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIFormats interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.0
|
||||||
|
* @see gfx_format
|
||||||
|
*/
|
||||||
|
[scriptable]
|
||||||
|
interface gfxIFormats
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* RGB - duh...
|
||||||
|
*/
|
||||||
|
const gfx_format RGB = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR - same as RGB except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR = 1;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A1 - RGB image and 1-bit alpha mask
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A1 = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A1 - same as RGB_A1 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A1 = 3;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A8 - RGB image and 8-bit alpha image
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A8 = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A8 - same as RGB_A8 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A8 = 5;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGBA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format RGBA = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGRA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format BGRA = 7;
|
||||||
|
};
|
|
@ -0,0 +1,147 @@
|
||||||
|
/** -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
#include "gfxIFormats.idl"
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
#include "nsRect.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIImageFrame interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.1
|
||||||
|
* @see "gfx2"
|
||||||
|
*/
|
||||||
|
[scriptable, uuid(51cc27a8-1dd2-11b2-a1aa-dad33ab193b4)]
|
||||||
|
interface gfxIImageFrame : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new \a aWidth x \a aHeight sized image.
|
||||||
|
*
|
||||||
|
* @param aX The x-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @param aY The y-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @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 nscoord aX,
|
||||||
|
in nscoord aY,
|
||||||
|
in nscoord aWidth,
|
||||||
|
in nscoord aHeight,
|
||||||
|
in gfx_format aFormat);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The x-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord x;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The y-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord y;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rectangle this frame ocupies.
|
||||||
|
*/
|
||||||
|
[noscript] readonly attribute nsRect rect;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The image data format the image was created with.
|
||||||
|
* @see gfxIFormats
|
||||||
|
*/
|
||||||
|
readonly attribute gfx_format format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the number of milliseconds until the next frame should be displayed.
|
||||||
|
* @note -1 means that this frame should be displayed forever.
|
||||||
|
*/
|
||||||
|
attribute long timeout;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* data accessors */
|
||||||
|
|
||||||
|
|
||||||
|
readonly attribute unsigned long imageBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the image
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long imageDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getImageData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 setImageData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* alpha stuff.. used for _A1 and _A8 formated images */
|
||||||
|
|
||||||
|
readonly attribute unsigned long alphaBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the alpha mask
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long alphaDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getAlphaData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets \a length bytes of \a data in this object.
|
||||||
|
*/
|
||||||
|
void setAlphaData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,38 @@
|
||||||
|
/* -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx ifdef file to make gfx2 and gfx live together
|
||||||
|
* @file gfxcompat.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef GFX2_ONLY
|
||||||
|
typedef gfx_coord nscoord;
|
||||||
|
typedef gfx_color nscolor;
|
||||||
|
// add these later, work out the include deps, etc.
|
||||||
|
//typedef nsRect2 nsRect;
|
||||||
|
//typedef nsSize2 nsSize2;
|
||||||
|
#else
|
||||||
|
#include "nsCoord.h"
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
#include "gfx2types.idl"
|
||||||
|
|
||||||
|
typedef PRInt32 nscoord;
|
||||||
|
|
||||||
|
[ptr] native nsRect(nsRect);
|
||||||
|
[ref] native nsRectRef(nsRect);
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
gfxcompat.h
|
|
@ -0,0 +1,6 @@
|
||||||
|
gfxtypes.idl
|
||||||
|
gfx2types.idl
|
||||||
|
gfxIFormats.idl
|
||||||
|
gfxIImageContainer.idl
|
||||||
|
gfxIImageContainerObserver.idl
|
||||||
|
gfxIImageFrame.idl
|
|
@ -0,0 +1,48 @@
|
||||||
|
#
|
||||||
|
# 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 Netscape Communications Corporation. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
# Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
DEPTH = ../..
|
||||||
|
topsrcdir = @top_srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
|
MODULE = gfx2
|
||||||
|
XPIDL_MODULE = gfx2
|
||||||
|
|
||||||
|
XPIDLSRCS = \
|
||||||
|
gfxtypes.idl \
|
||||||
|
gfx2types.idl \
|
||||||
|
gfxIFormats.idl \
|
||||||
|
gfxIImageContainer.idl \
|
||||||
|
gfxIImageContainerObserver.idl \
|
||||||
|
gfxIImageFrame.idl \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
EXPORTS = \
|
||||||
|
gfxcompat.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
/*! @verbatim */
|
||||||
|
%{C++
|
||||||
|
#include "gfxcompat.h"
|
||||||
|
%}
|
||||||
|
/*! @endverbatim */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_dimension should be used for widths and heights
|
||||||
|
* @var typedef float gfx_dimension
|
||||||
|
*/
|
||||||
|
typedef float gfx_dimension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx_coord should be used for x and y coordinates
|
||||||
|
* @var typedef float gfx_coord
|
||||||
|
*/
|
||||||
|
typedef float gfx_coord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for angles
|
||||||
|
* @var typedef float gfx_angle
|
||||||
|
*/
|
||||||
|
typedef float gfx_angle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A color is a 32 bit unsigned integer with
|
||||||
|
* four components: R, G, B and A.
|
||||||
|
*
|
||||||
|
* @var typedef PRUint32 gfx_color
|
||||||
|
*/
|
||||||
|
typedef PRUint32 gfx_color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for bit depths
|
||||||
|
* @var typedef unsigned short gfx_depth
|
||||||
|
*/
|
||||||
|
typedef unsigned short gfx_depth; // is short ok?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for image formats
|
||||||
|
* @var typedef long gfx_format
|
||||||
|
* @see gfxIGFXFormat
|
||||||
|
*/
|
||||||
|
typedef long gfx_format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef that should be used for gamma levels
|
||||||
|
* @var typedef float gfx_gamma
|
||||||
|
*/
|
||||||
|
typedef float gfx_gamma;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/* -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx image formats.
|
||||||
|
* @file gfxIFormats.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIFormats interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.0
|
||||||
|
* @see gfx_format
|
||||||
|
*/
|
||||||
|
[scriptable]
|
||||||
|
interface gfxIFormats
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* RGB - duh...
|
||||||
|
*/
|
||||||
|
const gfx_format RGB = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR - same as RGB except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR = 1;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A1 - RGB image and 1-bit alpha mask
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A1 = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A1 - same as RGB_A1 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A1 = 3;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGB_A8 - RGB image and 8-bit alpha image
|
||||||
|
*/
|
||||||
|
const gfx_format RGB_A8 = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGR_A8 - same as RGB_A8 except byteswaped
|
||||||
|
*/
|
||||||
|
const gfx_format BGR_A8 = 5;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RGBA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format RGBA = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BGRA - packed RGBA image
|
||||||
|
*/
|
||||||
|
const gfx_format BGRA = 7;
|
||||||
|
};
|
|
@ -0,0 +1,106 @@
|
||||||
|
/** -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
#include "gfxIFormats.idl"
|
||||||
|
|
||||||
|
interface gfxIImageFrame;
|
||||||
|
interface nsIEnumerator;
|
||||||
|
interface gfxIImageContainerObserver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIImageContainer interface
|
||||||
|
*
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.1
|
||||||
|
* @see "gfx2"
|
||||||
|
*/
|
||||||
|
[scriptable, uuid(5e8405a4-1dd2-11b2-8385-bc8e3446cad3)]
|
||||||
|
interface gfxIImageContainer : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new \a aWidth x \a aHeight sized image container.
|
||||||
|
*
|
||||||
|
* @param aWidth The width of the container in which all the
|
||||||
|
* gfxIImageFrame children will fit.
|
||||||
|
* @param aHeight The height of the container in which all the
|
||||||
|
* gfxIImageFrame children will fit.
|
||||||
|
* @param aObserver Observer to send animation notifications to.
|
||||||
|
*/
|
||||||
|
void init(in nscoord aWidth,
|
||||||
|
in nscoord aHeight,
|
||||||
|
in gfxIImageContainerObserver aObserver);
|
||||||
|
|
||||||
|
|
||||||
|
/* this should probably be on the device context (or equiv) */
|
||||||
|
readonly attribute gfx_format preferredAlphaChannelFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of the container rectangle.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of the container rectangle.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord height;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current frame that would be drawn if the image was to be drawn now
|
||||||
|
*/
|
||||||
|
readonly attribute gfxIImageFrame currentFrame;
|
||||||
|
|
||||||
|
|
||||||
|
readonly attribute unsigned long numFrames;
|
||||||
|
|
||||||
|
gfxIImageFrame getFrameAt(in unsigned long index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds \a item to the end of the list of frames.
|
||||||
|
* @param item frame to add.
|
||||||
|
*/
|
||||||
|
void appendFrame(in gfxIImageFrame item);
|
||||||
|
|
||||||
|
void removeFrame(in gfxIImageFrame item);
|
||||||
|
|
||||||
|
/* notification when the current frame is done decoding */
|
||||||
|
void endFrameDecode(in unsigned long framenumber, in unsigned long timeout);
|
||||||
|
|
||||||
|
/* notification that the entire image has been decoded */
|
||||||
|
void decodingComplete();
|
||||||
|
|
||||||
|
nsIEnumerator enumerate();
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
|
||||||
|
/* animation stuff */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* number of times to loop the image.
|
||||||
|
* @note -1 means forever.
|
||||||
|
*/
|
||||||
|
attribute long loopCount;
|
||||||
|
};
|
|
@ -0,0 +1,45 @@
|
||||||
|
/** -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
#include "nsRect.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
interface gfxIImageContainer;
|
||||||
|
interface gfxIImageFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIImageContainerObserver interface
|
||||||
|
*
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.1
|
||||||
|
* @see "gfx2"
|
||||||
|
*/
|
||||||
|
[uuid(153f1518-1dd2-11b2-b9cd-b16eb63e0471)]
|
||||||
|
interface gfxIImageContainerObserver : nsISupports
|
||||||
|
{
|
||||||
|
[noscript] void frameChanged(in gfxIImageContainer container, in nsISupports cx, in gfxIImageFrame newframe, in nsRect dirtyRect);
|
||||||
|
};
|
|
@ -0,0 +1,147 @@
|
||||||
|
/** -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
#include "gfxtypes.idl"
|
||||||
|
#include "gfxIFormats.idl"
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
#include "nsRect.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfxIImageFrame interface
|
||||||
|
*
|
||||||
|
* @author Tim Rowley <tor@cs.brown.edu>
|
||||||
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
* @version 0.1
|
||||||
|
* @see "gfx2"
|
||||||
|
*/
|
||||||
|
[scriptable, uuid(51cc27a8-1dd2-11b2-a1aa-dad33ab193b4)]
|
||||||
|
interface gfxIImageFrame : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new \a aWidth x \a aHeight sized image.
|
||||||
|
*
|
||||||
|
* @param aX The x-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @param aY The y-offset from the origin of the gfxIImageContainer parent.
|
||||||
|
* @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 nscoord aX,
|
||||||
|
in nscoord aY,
|
||||||
|
in nscoord aWidth,
|
||||||
|
in nscoord aHeight,
|
||||||
|
in gfx_format aFormat);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The x-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord x;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The y-offset of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord y;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of the image.
|
||||||
|
*/
|
||||||
|
readonly attribute nscoord height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rectangle this frame ocupies.
|
||||||
|
*/
|
||||||
|
[noscript] readonly attribute nsRect rect;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The image data format the image was created with.
|
||||||
|
* @see gfxIFormats
|
||||||
|
*/
|
||||||
|
readonly attribute gfx_format format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the number of milliseconds until the next frame should be displayed.
|
||||||
|
* @note -1 means that this frame should be displayed forever.
|
||||||
|
*/
|
||||||
|
attribute long timeout;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* data accessors */
|
||||||
|
|
||||||
|
|
||||||
|
readonly attribute unsigned long imageBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the image
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long imageDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getImageData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 setImageData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* alpha stuff.. used for _A1 and _A8 formated images */
|
||||||
|
|
||||||
|
readonly attribute unsigned long alphaBytesPerRow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the number of bytes allocated for the alpha mask
|
||||||
|
*/
|
||||||
|
readonly attribute unsigned long alphaDataLength;
|
||||||
|
|
||||||
|
// XXX do we copy here? lets not...
|
||||||
|
void getAlphaData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets \a length bytes of \a data in this object.
|
||||||
|
*/
|
||||||
|
void setAlphaData([array, size_is(length), const] in PRUint8 data,
|
||||||
|
in unsigned long length,
|
||||||
|
in long offset);
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,38 @@
|
||||||
|
/* -*- 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) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx ifdef file to make gfx2 and gfx live together
|
||||||
|
* @file gfxcompat.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef GFX2_ONLY
|
||||||
|
typedef gfx_coord nscoord;
|
||||||
|
typedef gfx_color nscolor;
|
||||||
|
// add these later, work out the include deps, etc.
|
||||||
|
//typedef nsRect2 nsRect;
|
||||||
|
//typedef nsSize2 nsSize2;
|
||||||
|
#else
|
||||||
|
#include "nsCoord.h"
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
/* -*- 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 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gfx idl declarations to be used by all gfx interfaces.
|
||||||
|
* @file gfxtypes.idl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsrootidl.idl"
|
||||||
|
|
||||||
|
#include "gfx2types.idl"
|
||||||
|
|
||||||
|
typedef PRInt32 nscoord;
|
||||||
|
|
||||||
|
[ptr] native nsRect(nsRect);
|
||||||
|
[ref] native nsRectRef(nsRect);
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
#
|
||||||
|
# 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 Netscape Communications Corporation. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
# Stuart Parmenter <pavlov@netscape.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
DEPTH = ..\..
|
||||||
|
|
||||||
|
include <$(DEPTH)/config/config.mak>
|
||||||
|
|
||||||
|
MODULE = gfx2
|
||||||
|
XPIDL_MODULE = gfx2
|
||||||
|
|
||||||
|
XPIDLSRCS = \
|
||||||
|
.\gfxtypes.idl \
|
||||||
|
.\gfx2types.idl \
|
||||||
|
.\gfxIFormats.idl \
|
||||||
|
.\gfxIImageContainer.idl \
|
||||||
|
.\gfxIImageContainerObserver.idl \
|
||||||
|
.\gfxIImageFrame.idl \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
EXPORTS = \
|
||||||
|
.\gfxcompat.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
include <$(DEPTH)\config\rules.mak>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче