1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
5
* The contents of this file are subject to the Netscape Public License
6
* Version 1.1 (the "License"); you may not use this file except in
7
* compliance with the License. You may obtain a copy of the License at
8
* http://www.mozilla.org/NPL/
10
* Software distributed under the License is distributed on an "AS IS" basis,
11
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
* for the specific language governing rights and limitations under the
15
* The Original Code is Netscape.com code.
17
* The Initial Developer of the Original Code is
18
* Netscape Communications Corporation.
19
* Portions created by the Initial Developer are Copyright (C) 2001
20
* the Initial Developer. All Rights Reserved.
23
* Brian Stell <bstell@netscape.com>
26
* Alternatively, the contents of this file may be used under the terms of
27
* either the GNU General Public License Version 2 or later (the "GPL"), or
28
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
* in which case the provisions of the GPL or the LGPL are applicable instead
30
* of those above. If you wish to allow use of your version of this file only
31
* under the terms of either the GPL or the LGPL, and not to allow others to
32
* use your version of this file under the terms of the NPL, indicate your
33
* decision by deleting the provisions above and replace them with the notice
34
* and other provisions required by the GPL or the LGPL. If you do not delete
35
* the provisions above, a recipient may use your version of this file under
36
* the terms of any one of the NPL, the GPL or the LGPL.
38
* ***** END LICENSE BLOCK ***** */
40
#ifndef nsX11AlphaBlend_h__
41
#define nsX11AlphaBlend_h__
46
class nsAntiAliasedGlyph;
49
#ifndef DEBUG_SHOW_GLYPH_BOX
50
# define DEBUG_SHOW_GLYPH_BOX 0
52
void AADrawBox(XImage *, PRInt32, PRInt32, PRInt32, PRInt32, nscolor, PRUint8);
53
#if DEBUG_SHOW_GLYPH_BOX
54
# define DEBUG_AADRAWBOX(i,x,y,w,h,r,g,b,a) \
56
nscolor color NS_RGB((r),(g),(b)); \
57
AADrawBox((i), (x), (y), (w), (h), color, (a)); \
60
# define DEBUG_AADRAWBOX(i,x,y,w,h,r,g,b,a)
64
void nsX11AlphaBlendFreeGlobals(void);
65
nsresult nsX11AlphaBlendInitGlobals(Display *dsp);
68
typedef void (*blendGlyph)(XImage *, nsAntiAliasedGlyph *, PRUint8*,
70
typedef void (*blendPixel)(XImage *, int, int, nscolor, int);
71
typedef nscolor (*pixelToNSColor)(unsigned long aPixel);
73
///////////////////////////////////////////////////////////////////////
75
// class nsX11AlphaBlend class definition
77
///////////////////////////////////////////////////////////////////////
78
class nsX11AlphaBlend {
80
inline static PRBool CanAntiAlias() { return sAvailable; };
81
inline static blendPixel GetBlendPixel() { return sBlendPixel; };
82
inline static blendGlyph GetBlendGlyph() { return sBlendMonoImage; };
84
static XImage* GetXImage(PRUint32 width, PRUint32 height);
85
static void FreeGlobals();
86
static nsresult InitGlobals(Display *dsp);
87
static XImage* GetBackground(Display *, int, Drawable,
88
PRInt32, PRInt32, PRUint32, PRUint32);
89
static nscolor PixelToNSColor(unsigned long aPixel);
92
static void ClearGlobals();
93
static void ClearFunctions();
94
static PRBool InitLibrary(Display *dsp);
96
static PRBool sAvailable;
97
static PRUint16 sBitmapPad;
98
static PRUint16 sBitsPerPixel;
99
static blendGlyph sBlendMonoImage;
100
static blendPixel sBlendPixel;
101
static PRUint16 sBytesPerPixel;
103
static PRBool sInited;
104
static pixelToNSColor sPixelToNSColor;
107
#endif /* nsX11AlphaBlend_h__ */