2001-09-25 05:32:19 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
2004-04-18 01:52:36 +04:00
|
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
2001-06-01 02:19:43 +04:00
|
|
|
*
|
2004-04-18 01:52:36 +04:00
|
|
|
* 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/
|
2001-06-01 02:19:43 +04:00
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* 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.
|
2001-06-01 02:19:43 +04:00
|
|
|
*
|
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
2004-04-18 01:52:36 +04:00
|
|
|
* The Initial Developer of the Original Code is
|
2001-09-25 05:32:19 +04:00
|
|
|
* Netscape Communications Corporation.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
2001-06-01 02:19:43 +04:00
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* Contributor(s):
|
2005-03-27 15:36:08 +04:00
|
|
|
* Mats Palmgren <mats.palmgren@bredband.net>
|
2006-12-27 17:21:43 +03:00
|
|
|
* Masayuki Nakano <masayuki@d-toybox.com>
|
2001-09-25 05:32:19 +04:00
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
2004-04-18 01:52:36 +04:00
|
|
|
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
|
|
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
2001-09-25 05:32:19 +04:00
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
2004-04-18 01:52:36 +04:00
|
|
|
* use your version of this file under the terms of the MPL, indicate your
|
2001-09-25 05:32:19 +04:00
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
2004-04-18 01:52:36 +04:00
|
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
2001-09-25 05:32:19 +04:00
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
2006-03-25 08:47:31 +03:00
|
|
|
|
|
|
|
/*
|
|
|
|
* structs that contain the data provided by nsStyleContext, the
|
|
|
|
* internal API for computed style data for an element
|
|
|
|
*/
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
#ifndef nsStyleStruct_h___
|
|
|
|
#define nsStyleStruct_h___
|
|
|
|
|
|
|
|
#include "nsColor.h"
|
|
|
|
#include "nsCoord.h"
|
|
|
|
#include "nsMargin.h"
|
|
|
|
#include "nsRect.h"
|
|
|
|
#include "nsFont.h"
|
2007-07-18 20:54:57 +04:00
|
|
|
#include "nsVoidArray.h"
|
2001-06-01 02:19:43 +04:00
|
|
|
#include "nsStyleCoord.h"
|
|
|
|
#include "nsStyleConsts.h"
|
2002-08-24 18:41:28 +04:00
|
|
|
#include "nsChangeHint.h"
|
2004-08-01 03:15:21 +04:00
|
|
|
#include "nsPresContext.h"
|
2001-06-01 02:19:43 +04:00
|
|
|
#include "nsIPresShell.h"
|
|
|
|
#include "nsCOMPtr.h"
|
2007-07-18 20:54:57 +04:00
|
|
|
#include "nsCOMArray.h"
|
2004-06-09 03:53:59 +04:00
|
|
|
#include "nsIAtom.h"
|
2003-10-02 02:53:56 +04:00
|
|
|
#include "nsIURI.h"
|
2005-04-02 03:07:00 +04:00
|
|
|
#include "nsCSSValue.h"
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
class nsIFrame;
|
2004-03-09 06:57:51 +03:00
|
|
|
class imgIRequest;
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2007-04-28 20:01:24 +04:00
|
|
|
// Includes nsStyleStructID.
|
|
|
|
#include "nsStyleStructFwd.h"
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2001-06-30 02:42:46 +04:00
|
|
|
// Bits for each struct.
|
2007-10-09 01:58:22 +04:00
|
|
|
// NS_STYLE_INHERIT_BIT defined in nsStyleStructFwd.h
|
2001-12-12 10:59:31 +03:00
|
|
|
#define NS_STYLE_INHERIT_MASK 0x00ffffff
|
2001-06-30 02:42:46 +04:00
|
|
|
|
2003-03-06 22:14:17 +03:00
|
|
|
// Additional bits for nsStyleContext's mBits:
|
2001-06-30 02:42:46 +04:00
|
|
|
// A bit to test whether or not we have any text decorations.
|
2002-03-31 20:59:00 +04:00
|
|
|
#define NS_STYLE_HAS_TEXT_DECORATIONS 0x01000000
|
2001-06-30 02:42:46 +04:00
|
|
|
|
2003-03-06 22:14:17 +03:00
|
|
|
// Additional bits for nsRuleNode's mDependentBits:
|
|
|
|
#define NS_RULE_NODE_GC_MARK 0x02000000
|
2007-05-17 01:08:51 +04:00
|
|
|
#define NS_RULE_NODE_IS_IMPORTANT 0x08000000
|
|
|
|
#define NS_RULE_NODE_LEVEL_MASK 0xf0000000
|
|
|
|
#define NS_RULE_NODE_LEVEL_SHIFT 28
|
2003-03-06 22:14:17 +03:00
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
// The lifetime of these objects is managed by the presshell's arena.
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleFont {
|
2008-01-09 12:38:28 +03:00
|
|
|
nsStyleFont(const nsFont& aFont, nsPresContext *aPresContext);
|
2003-03-13 18:29:36 +03:00
|
|
|
nsStyleFont(const nsStyleFont& aStyleFont);
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleFont(nsPresContext *aPresContext);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleFont(void) {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleFont& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2002-08-24 18:41:28 +04:00
|
|
|
static nsChangeHint CalcFontDifference(const nsFont& aFont1, const nsFont& aFont2);
|
2003-03-13 18:29:36 +03:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
static nscoord ZoomText(nsPresContext* aPresContext, nscoord aSize);
|
|
|
|
static nscoord UnZoomText(nsPresContext* aPresContext, nscoord aSize);
|
2008-01-09 12:38:28 +03:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW;
|
|
|
|
void Destroy(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2001-09-27 22:33:58 +04:00
|
|
|
nsFont mFont; // [inherited]
|
|
|
|
nscoord mSize; // [inherited] Our "computed size". Can be different from mFont.size
|
|
|
|
// which is our "actual size" and is enforced to be >= the user's
|
|
|
|
// preferred min-size. mFont.size should be used for display purposes
|
|
|
|
// while mSize is the value to return in getComputedStyle() for example.
|
2008-01-09 12:38:28 +03:00
|
|
|
PRUint8 mFlags; // [inherited] See nsStyleConsts.h
|
|
|
|
|
|
|
|
#ifdef MOZ_MATHML
|
|
|
|
// MathML scriptlevel support
|
|
|
|
PRInt8 mScriptLevel; // [inherited]
|
|
|
|
// The value mSize would have had if scriptminsize had never been applied
|
|
|
|
nscoord mScriptUnconstrainedSize;
|
|
|
|
nscoord mScriptMinSize; // [inherited] length
|
|
|
|
float mScriptSizeMultiplier; // [inherited]
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleColor {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleColor(nsPresContext* aPresContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleColor(const nsStyleColor& aOther);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleColor(void) {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleColor& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleColor();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleColor), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
// Don't add ANY members to this struct! We can achieve caching in the rule
|
|
|
|
// tree (rather than the style tree) by letting color stay by itself! -dwh
|
|
|
|
nscolor mColor; // [inherited]
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleBackground {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleBackground(nsPresContext* aPresContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleBackground(const nsStyleBackground& aOther);
|
2004-03-09 06:57:51 +03:00
|
|
|
~nsStyleBackground();
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleBackground();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleBackground), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleBackground& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2002-10-08 14:24:53 +04:00
|
|
|
|
|
|
|
// On Linux (others?), there is an extra byte being used up by
|
2003-01-17 12:33:52 +03:00
|
|
|
// inheritance so we only have 3 bytes to fit these 6 things into.
|
2002-10-08 14:24:53 +04:00
|
|
|
// Fortunately, the properties are enums which have few possible
|
|
|
|
// values.
|
2003-01-17 12:33:52 +03:00
|
|
|
PRUint8 mBackgroundFlags; // [reset] See nsStyleConsts.h
|
|
|
|
PRUint8 mBackgroundAttachment : 4; // [reset] See nsStyleConsts.h
|
|
|
|
PRUint8 mBackgroundClip : 3; // [reset] See nsStyleConsts.h
|
|
|
|
PRUint8 mBackgroundInlinePolicy : 2; // [reset] See nsStyleConsts.h
|
|
|
|
PRUint8 mBackgroundOrigin : 3; // [reset] See nsStyleConsts.h
|
|
|
|
PRUint8 mBackgroundRepeat : 4; // [reset] See nsStyleConsts.h
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2003-01-19 05:36:04 +03:00
|
|
|
// Note: a member of this union is valid IFF the appropriate bit flag
|
|
|
|
// is set in mBackgroundFlags.
|
|
|
|
union {
|
|
|
|
nscoord mCoord;
|
|
|
|
float mFloat;
|
|
|
|
} mBackgroundXPosition, // [reset]
|
|
|
|
mBackgroundYPosition; // [reset]
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
nscolor mBackgroundColor; // [reset]
|
2004-03-09 06:57:51 +03:00
|
|
|
nsCOMPtr<imgIRequest> mBackgroundImage; // [reset]
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2003-01-17 12:33:52 +03:00
|
|
|
PRBool IsTransparent() const
|
|
|
|
{
|
|
|
|
return (mBackgroundFlags &
|
|
|
|
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE)) ==
|
|
|
|
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE);
|
|
|
|
}
|
2004-09-13 09:39:27 +04:00
|
|
|
|
2004-09-14 00:40:46 +04:00
|
|
|
// We have to take slower codepaths for fixed background attachment,
|
|
|
|
// but we don't want to do that when there's no image.
|
|
|
|
// Not inline because it uses an nsCOMPtr<imgIRequest>
|
|
|
|
PRBool HasFixedBackground() const;
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#define BORDER_COLOR_TRANSPARENT 0x40
|
|
|
|
#define BORDER_COLOR_FOREGROUND 0x20
|
2007-03-15 19:16:20 +03:00
|
|
|
#define OUTLINE_COLOR_INITIAL 0x80
|
|
|
|
// TRANSPARENT | FOREGROUND | INITIAL(OUTLINE)
|
|
|
|
#define BORDER_COLOR_SPECIAL 0xE0
|
2001-06-01 02:19:43 +04:00
|
|
|
#define BORDER_STYLE_MASK 0x1F
|
|
|
|
|
|
|
|
#define NS_SPACING_MARGIN 0
|
|
|
|
#define NS_SPACING_PADDING 1
|
|
|
|
#define NS_SPACING_BORDER 2
|
|
|
|
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleMargin {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleMargin(void);
|
|
|
|
nsStyleMargin(const nsStyleMargin& aMargin);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleMargin(void) {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW;
|
|
|
|
void Destroy(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
void RecalcData();
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleMargin& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2005-09-26 05:58:48 +04:00
|
|
|
nsStyleSides mMargin; // [reset] length, percent, auto
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRBool GetMargin(nsMargin& aMargin) const
|
|
|
|
{
|
|
|
|
if (mHasCachedMargin) {
|
|
|
|
aMargin = mCachedMargin;
|
|
|
|
return PR_TRUE;
|
|
|
|
}
|
|
|
|
return PR_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PRPackedBool mHasCachedMargin;
|
|
|
|
nsMargin mCachedMargin;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStylePadding {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStylePadding(void);
|
|
|
|
nsStylePadding(const nsStylePadding& aPadding);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStylePadding(void) {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW;
|
|
|
|
void Destroy(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
void RecalcData();
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStylePadding& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2005-09-26 05:58:48 +04:00
|
|
|
nsStyleSides mPadding; // [reset] length, percent
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRBool GetPadding(nsMargin& aPadding) const
|
|
|
|
{
|
|
|
|
if (mHasCachedPadding) {
|
|
|
|
aPadding = mCachedPadding;
|
|
|
|
return PR_TRUE;
|
|
|
|
}
|
|
|
|
return PR_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PRPackedBool mHasCachedPadding;
|
|
|
|
nsMargin mCachedPadding;
|
|
|
|
};
|
|
|
|
|
2001-12-05 11:35:05 +03:00
|
|
|
struct nsBorderColors {
|
|
|
|
nsBorderColors* mNext;
|
|
|
|
nscolor mColor;
|
2001-12-11 14:13:16 +03:00
|
|
|
PRBool mTransparent;
|
|
|
|
|
2001-12-05 11:35:05 +03:00
|
|
|
nsBorderColors* CopyColors() {
|
|
|
|
nsBorderColors* next = nsnull;
|
|
|
|
if (mNext)
|
|
|
|
next = mNext->CopyColors();
|
2001-12-11 14:13:16 +03:00
|
|
|
return new nsBorderColors(mColor, mTransparent, next);
|
2001-12-05 11:35:05 +03:00
|
|
|
}
|
|
|
|
|
2007-04-23 18:21:53 +04:00
|
|
|
nsBorderColors() :mNext(nsnull) { mColor = NS_RGB(0,0,0); }
|
2001-12-05 11:35:05 +03:00
|
|
|
|
2001-12-11 14:13:16 +03:00
|
|
|
nsBorderColors(const nscolor& aColor, PRBool aTransparent, nsBorderColors* aNext=nsnull) {
|
2001-12-05 11:35:05 +03:00
|
|
|
mColor = aColor;
|
2001-12-11 14:13:16 +03:00
|
|
|
mTransparent = aTransparent;
|
2001-12-05 11:35:05 +03:00
|
|
|
mNext = aNext;
|
|
|
|
}
|
|
|
|
|
|
|
|
~nsBorderColors() {
|
|
|
|
delete mNext;
|
|
|
|
}
|
2001-12-19 14:59:31 +03:00
|
|
|
|
|
|
|
PRBool Equals(nsBorderColors* aOther) {
|
|
|
|
nsBorderColors* c1 = this;
|
|
|
|
nsBorderColors* c2 = aOther;
|
|
|
|
while (c1 && c2) {
|
|
|
|
if (c1->mColor != c2->mColor ||
|
|
|
|
c1->mTransparent != c2->mTransparent)
|
|
|
|
return PR_FALSE;
|
|
|
|
c1 = c1->mNext;
|
|
|
|
c2 = c2->mNext;
|
|
|
|
}
|
|
|
|
return !c1 && !c2;
|
|
|
|
}
|
2001-12-05 11:35:05 +03:00
|
|
|
};
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2008-03-25 07:55:47 +03:00
|
|
|
// Border widths are rounded to the nearest-below integer number of pixels,
|
|
|
|
// but values between zero and one device pixels are always rounded up to
|
|
|
|
// one device pixel.
|
2006-12-27 17:21:43 +03:00
|
|
|
#define NS_ROUND_BORDER_TO_PIXELS(l,tpp) \
|
2008-03-25 07:55:47 +03:00
|
|
|
((l) == 0) ? 0 : PR_MAX((tpp), (l) / (tpp) * (tpp))
|
2007-02-09 00:04:54 +03:00
|
|
|
// Outline offset is rounded to the nearest integer number of pixels, but values
|
|
|
|
// between zero and one device pixels are always rounded up to one device pixel.
|
|
|
|
// Note that the offset can be negative.
|
|
|
|
#define NS_ROUND_OFFSET_TO_PIXELS(l,tpp) \
|
|
|
|
(((l) == 0) ? 0 : \
|
|
|
|
((l) > 0) ? PR_MAX( (tpp), ((l) + ((tpp) / 2)) / (tpp) * (tpp)) : \
|
|
|
|
PR_MIN(-(tpp), ((l) - ((tpp) / 2)) / (tpp) * (tpp)))
|
2006-12-27 17:21:43 +03:00
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleBorder {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleBorder(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleBorder(const nsStyleBorder& aBorder);
|
2001-12-05 11:35:05 +03:00
|
|
|
~nsStyleBorder(void) {
|
|
|
|
if (mBorderColors) {
|
|
|
|
for (PRInt32 i = 0; i < 4; i++)
|
|
|
|
delete mBorderColors[i];
|
|
|
|
delete []mBorderColors;
|
|
|
|
}
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW;
|
|
|
|
void Destroy(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleBorder& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2005-09-26 05:58:48 +04:00
|
|
|
nsStyleSides mBorderRadius; // [reset] length, percent
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mFloatEdge; // [reset] see nsStyleConsts.h
|
2001-12-05 11:35:05 +03:00
|
|
|
nsBorderColors** mBorderColors; // [reset] multiple levels of color for a border.
|
|
|
|
|
|
|
|
void EnsureBorderColors() {
|
|
|
|
if (!mBorderColors) {
|
|
|
|
mBorderColors = new nsBorderColors*[4];
|
|
|
|
if (mBorderColors)
|
|
|
|
for (PRInt32 i = 0; i < 4; i++)
|
|
|
|
mBorderColors[i] = nsnull;
|
|
|
|
}
|
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2001-12-11 14:13:16 +03:00
|
|
|
void ClearBorderColors(PRUint8 aSide) {
|
|
|
|
if (mBorderColors[aSide]) {
|
|
|
|
delete mBorderColors[aSide];
|
|
|
|
mBorderColors[aSide] = nsnull;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-04-29 19:44:38 +04:00
|
|
|
// Return whether aStyle is a visible style. Invisible styles cause
|
|
|
|
// the relevant computed border width to be 0.
|
|
|
|
static PRBool IsVisibleStyle(PRUint8 aStyle) {
|
|
|
|
return aStyle != NS_STYLE_BORDER_STYLE_NONE &&
|
|
|
|
aStyle != NS_STYLE_BORDER_STYLE_HIDDEN;
|
|
|
|
}
|
|
|
|
|
|
|
|
// aBorderWidth is in twips
|
|
|
|
void SetBorderWidth(PRUint8 aSide, nscoord aBorderWidth)
|
2001-06-01 02:19:43 +04:00
|
|
|
{
|
2005-04-29 19:44:38 +04:00
|
|
|
mBorder.side(aSide) = aBorderWidth;
|
|
|
|
if (IsVisibleStyle(GetBorderStyle(aSide))) {
|
2006-12-27 17:21:43 +03:00
|
|
|
mActualBorder.side(aSide) =
|
|
|
|
NS_ROUND_BORDER_TO_PIXELS(aBorderWidth, mTwipsPerPixel);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2005-04-29 19:44:38 +04:00
|
|
|
}
|
|
|
|
|
2006-12-27 17:21:43 +03:00
|
|
|
// Get the actual border, in twips.
|
2005-04-29 19:44:38 +04:00
|
|
|
const nsMargin& GetBorder() const
|
|
|
|
{
|
2006-12-27 17:21:43 +03:00
|
|
|
return mActualBorder;
|
2005-04-29 19:44:38 +04:00
|
|
|
}
|
|
|
|
|
2006-12-27 17:21:43 +03:00
|
|
|
// Get the actual border width for a particular side, in twips. Note that
|
2005-04-29 19:44:38 +04:00
|
|
|
// this is zero if and only if there is no border to be painted for this
|
2006-12-27 17:21:43 +03:00
|
|
|
// side. That is, this value takes into account the border style and the
|
|
|
|
// value is rounded to the nearest device pixel by NS_ROUND_BORDER_TO_PIXELS.
|
2005-04-29 19:44:38 +04:00
|
|
|
nscoord GetBorderWidth(PRUint8 aSide) const
|
|
|
|
{
|
2006-12-27 17:21:43 +03:00
|
|
|
return mActualBorder.side(aSide);
|
|
|
|
}
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 GetBorderStyle(PRUint8 aSide) const
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
return (mBorderStyle[aSide] & BORDER_STYLE_MASK);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetBorderStyle(PRUint8 aSide, PRUint8 aStyle)
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
mBorderStyle[aSide] &= ~BORDER_STYLE_MASK;
|
|
|
|
mBorderStyle[aSide] |= (aStyle & BORDER_STYLE_MASK);
|
2005-04-29 19:44:38 +04:00
|
|
|
if (IsVisibleStyle(aStyle)) {
|
2006-12-27 17:21:43 +03:00
|
|
|
mActualBorder.side(aSide) =
|
|
|
|
NS_ROUND_BORDER_TO_PIXELS(mBorder.side(aSide), mTwipsPerPixel);
|
2005-04-29 19:44:38 +04:00
|
|
|
} else {
|
2006-12-27 17:21:43 +03:00
|
|
|
mActualBorder.side(aSide) = 0;
|
2005-04-29 19:44:38 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
void GetBorderColor(PRUint8 aSide, nscolor& aColor,
|
|
|
|
PRBool& aTransparent, PRBool& aForeground) const
|
|
|
|
{
|
|
|
|
aTransparent = aForeground = PR_FALSE;
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
if ((mBorderStyle[aSide] & BORDER_COLOR_SPECIAL) == 0)
|
|
|
|
aColor = mBorderColor[aSide];
|
|
|
|
else if (mBorderStyle[aSide] & BORDER_COLOR_FOREGROUND)
|
|
|
|
aForeground = PR_TRUE;
|
|
|
|
else
|
|
|
|
aTransparent = PR_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetBorderColor(PRUint8 aSide, nscolor aColor)
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
mBorderColor[aSide] = aColor;
|
|
|
|
mBorderStyle[aSide] &= ~BORDER_COLOR_SPECIAL;
|
|
|
|
}
|
|
|
|
|
2001-12-05 11:35:05 +03:00
|
|
|
void GetCompositeColors(PRInt32 aIndex, nsBorderColors** aColors) const
|
|
|
|
{
|
|
|
|
if (!mBorderColors)
|
|
|
|
*aColors = nsnull;
|
|
|
|
else
|
|
|
|
*aColors = mBorderColors[aIndex];
|
|
|
|
}
|
|
|
|
|
2001-12-11 14:13:16 +03:00
|
|
|
void AppendBorderColor(PRInt32 aIndex, nscolor aColor, PRBool aTransparent)
|
2001-12-05 11:35:05 +03:00
|
|
|
{
|
|
|
|
NS_ASSERTION(aIndex >= 0 && aIndex <= 3, "bad side for composite border color");
|
2001-12-11 14:13:16 +03:00
|
|
|
nsBorderColors* colorEntry = new nsBorderColors(aColor, aTransparent);
|
2001-12-05 11:35:05 +03:00
|
|
|
if (!mBorderColors[aIndex])
|
|
|
|
mBorderColors[aIndex] = colorEntry;
|
|
|
|
else {
|
|
|
|
nsBorderColors* last = mBorderColors[aIndex];
|
|
|
|
while (last->mNext)
|
|
|
|
last = last->mNext;
|
|
|
|
last->mNext = colorEntry;
|
|
|
|
}
|
|
|
|
mBorderStyle[aIndex] &= ~BORDER_COLOR_SPECIAL;
|
|
|
|
}
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
void SetBorderTransparent(PRUint8 aSide)
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
mBorderStyle[aSide] &= ~BORDER_COLOR_SPECIAL;
|
2005-02-18 09:09:36 +03:00
|
|
|
mBorderStyle[aSide] |= BORDER_COLOR_TRANSPARENT;
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetBorderToForeground(PRUint8 aSide)
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aSide <= NS_SIDE_LEFT, "bad side");
|
|
|
|
mBorderStyle[aSide] &= ~BORDER_COLOR_SPECIAL;
|
2005-02-18 09:09:36 +03:00
|
|
|
mBorderStyle[aSide] |= BORDER_COLOR_FOREGROUND;
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
2006-12-27 17:21:43 +03:00
|
|
|
// mActualBorder holds the CSS2.1 actual border-width values. In
|
2005-04-29 19:44:38 +04:00
|
|
|
// particular, these widths take into account the border-style for the
|
2006-12-27 17:21:43 +03:00
|
|
|
// relevant side and the values are rounded to the nearest device pixel.
|
|
|
|
nsMargin mActualBorder;
|
2005-04-29 19:44:38 +04:00
|
|
|
|
|
|
|
// mBorder holds the nscoord values for the border widths as they would be if
|
|
|
|
// all the border-style values were visible (not hidden or none). This
|
|
|
|
// member exists solely so that when we create structs using the copy
|
|
|
|
// constructor during style resolution the new structs will know what the
|
|
|
|
// specified values of the border were in case they have more specific rules
|
|
|
|
// setting the border style. Note that this isn't quite the CSS specified
|
|
|
|
// value, since this has had the enumerated border widths converted to
|
|
|
|
// lengths, and all lengths converted to twips. But it's not quite the
|
2006-12-27 17:21:43 +03:00
|
|
|
// computed value either.
|
2005-04-29 19:44:38 +04:00
|
|
|
nsMargin mBorder;
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mBorderStyle[4]; // [reset] See nsStyleConsts.h
|
2001-12-05 11:35:05 +03:00
|
|
|
nscolor mBorderColor[4]; // [reset] the colors to use for a simple border. not used
|
|
|
|
// if -moz-border-colors is specified
|
2006-12-27 17:21:43 +03:00
|
|
|
|
|
|
|
nscoord mTwipsPerPixel;
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleOutline {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleOutline(nsPresContext* aPresContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleOutline(const nsStyleOutline& aOutline);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleOutline(void) {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleOutline();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleOutline), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-11-26 21:40:58 +03:00
|
|
|
void RecalcData(nsPresContext* aContext);
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleOutline& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2005-09-26 05:58:48 +04:00
|
|
|
nsStyleSides mOutlineRadius; // [reset] length, percent
|
2001-06-01 02:19:43 +04:00
|
|
|
// (top=topLeft, right=topRight, bottom=bottomRight, left=bottomLeft)
|
|
|
|
|
2006-12-27 17:21:43 +03:00
|
|
|
// Note that these are specified values. You can get the actual values with
|
|
|
|
// GetOutlineWidth and GetOutlineOffset. You cannot get the computed values
|
|
|
|
// directly.
|
2004-10-26 16:57:15 +04:00
|
|
|
nsStyleCoord mOutlineOffset; // [reset] length
|
2005-03-27 15:36:08 +04:00
|
|
|
nsStyleCoord mOutlineWidth; // [reset] length, enum (see nsStyleConsts.h)
|
|
|
|
|
2004-10-26 16:57:15 +04:00
|
|
|
PRBool GetOutlineOffset(nscoord& aOffset) const
|
|
|
|
{
|
2005-03-27 15:36:08 +04:00
|
|
|
if (mOutlineOffset.GetUnit() == eStyleUnit_Coord) {
|
2006-12-27 17:21:43 +03:00
|
|
|
nscoord offset = mOutlineOffset.GetCoordValue();
|
2007-02-09 00:04:54 +03:00
|
|
|
aOffset = NS_ROUND_OFFSET_TO_PIXELS(offset, mTwipsPerPixel);
|
2004-10-26 16:57:15 +04:00
|
|
|
return PR_TRUE;
|
2005-03-27 15:36:08 +04:00
|
|
|
} else {
|
|
|
|
NS_NOTYETIMPLEMENTED("GetOutlineOffset: eStyleUnit_Chars");
|
|
|
|
aOffset = 0;
|
|
|
|
return PR_FALSE;
|
2004-10-26 16:57:15 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
PRBool GetOutlineWidth(nscoord& aWidth) const
|
|
|
|
{
|
|
|
|
if (mHasCachedOutline) {
|
|
|
|
aWidth = mCachedOutlineWidth;
|
|
|
|
return PR_TRUE;
|
|
|
|
}
|
|
|
|
return PR_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
PRUint8 GetOutlineStyle(void) const
|
|
|
|
{
|
|
|
|
return (mOutlineStyle & BORDER_STYLE_MASK);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetOutlineStyle(PRUint8 aStyle)
|
|
|
|
{
|
|
|
|
mOutlineStyle &= ~BORDER_STYLE_MASK;
|
|
|
|
mOutlineStyle |= (aStyle & BORDER_STYLE_MASK);
|
|
|
|
}
|
|
|
|
|
2007-03-15 19:16:20 +03:00
|
|
|
// PR_FALSE means initial value
|
2001-06-01 02:19:43 +04:00
|
|
|
PRBool GetOutlineColor(nscolor& aColor) const
|
|
|
|
{
|
|
|
|
if ((mOutlineStyle & BORDER_COLOR_SPECIAL) == 0) {
|
|
|
|
aColor = mOutlineColor;
|
|
|
|
return PR_TRUE;
|
|
|
|
}
|
|
|
|
return PR_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetOutlineColor(nscolor aColor)
|
|
|
|
{
|
|
|
|
mOutlineColor = aColor;
|
|
|
|
mOutlineStyle &= ~BORDER_COLOR_SPECIAL;
|
|
|
|
}
|
|
|
|
|
2007-03-15 19:16:20 +03:00
|
|
|
void SetOutlineInitialColor()
|
2001-06-01 02:19:43 +04:00
|
|
|
{
|
2007-03-15 19:16:20 +03:00
|
|
|
mOutlineStyle |= OUTLINE_COLOR_INITIAL;
|
2001-08-22 02:37:17 +04:00
|
|
|
}
|
|
|
|
|
2007-03-15 19:16:20 +03:00
|
|
|
PRBool GetOutlineInitialColor() const
|
2001-08-22 02:37:17 +04:00
|
|
|
{
|
2007-10-10 04:00:05 +04:00
|
|
|
return !!(mOutlineStyle & OUTLINE_COLOR_INITIAL);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
2006-12-27 17:21:43 +03:00
|
|
|
// This value is the actual value, so it's rounded to the nearest device
|
|
|
|
// pixel.
|
2001-06-01 02:19:43 +04:00
|
|
|
nscoord mCachedOutlineWidth;
|
|
|
|
|
|
|
|
nscolor mOutlineColor; // [reset]
|
|
|
|
|
2002-12-21 10:27:44 +03:00
|
|
|
PRPackedBool mHasCachedOutline;
|
|
|
|
PRUint8 mOutlineStyle; // [reset] See nsStyleConsts.h
|
2006-12-27 17:21:43 +03:00
|
|
|
|
|
|
|
nscoord mTwipsPerPixel;
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleList {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleList(void);
|
|
|
|
nsStyleList(const nsStyleList& aStyleList);
|
|
|
|
~nsStyleList(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleList();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleList), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleList& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mListStyleType; // [inherited] See nsStyleConsts.h
|
|
|
|
PRUint8 mListStylePosition; // [inherited]
|
2004-08-04 07:23:37 +04:00
|
|
|
nsCOMPtr<imgIRequest> mListStyleImage; // [inherited]
|
2001-12-05 11:35:05 +03:00
|
|
|
nsRect mImageRegion; // [inherited] the rect to use within an image
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStylePosition {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStylePosition(void);
|
|
|
|
nsStylePosition(const nsStylePosition& aOther);
|
|
|
|
~nsStylePosition(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStylePosition();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStylePosition), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStylePosition& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
nsStyleSides mOffset; // [reset]
|
2007-05-04 03:11:00 +04:00
|
|
|
nsStyleCoord mWidth; // [reset] coord, percent, auto, enum
|
|
|
|
nsStyleCoord mMinWidth; // [reset] coord, percent, enum
|
|
|
|
nsStyleCoord mMaxWidth; // [reset] coord, percent, null, enum
|
2005-09-26 05:58:48 +04:00
|
|
|
nsStyleCoord mHeight; // [reset] coord, percent, auto
|
|
|
|
nsStyleCoord mMinHeight; // [reset] coord, percent
|
|
|
|
nsStyleCoord mMaxHeight; // [reset] coord, percent, null
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mBoxSizing; // [reset] see nsStyleConsts.h
|
|
|
|
nsStyleCoord mZIndex; // [reset]
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleTextReset {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleTextReset(void);
|
|
|
|
nsStyleTextReset(const nsStyleTextReset& aOther);
|
|
|
|
~nsStyleTextReset(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleTextReset();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleTextReset), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleTextReset& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mTextDecoration; // [reset] see nsStyleConsts.h
|
2001-06-29 07:15:58 +04:00
|
|
|
PRUint8 mUnicodeBidi; // [reset] see nsStyleConsts.h
|
|
|
|
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleCoord mVerticalAlign; // [reset] see nsStyleConsts.h for enums
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleText {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleText(void);
|
|
|
|
nsStyleText(const nsStyleText& aOther);
|
|
|
|
~nsStyleText(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleText();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleText), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleText& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mTextAlign; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mTextTransform; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mWhiteSpace; // [inherited] see nsStyleConsts.h
|
|
|
|
|
|
|
|
nsStyleCoord mLetterSpacing; // [inherited]
|
|
|
|
nsStyleCoord mLineHeight; // [inherited]
|
|
|
|
nsStyleCoord mTextIndent; // [inherited]
|
|
|
|
nsStyleCoord mWordSpacing; // [inherited]
|
|
|
|
|
|
|
|
PRBool WhiteSpaceIsSignificant() const {
|
2002-11-15 06:14:56 +03:00
|
|
|
return mWhiteSpace == NS_STYLE_WHITESPACE_PRE ||
|
2008-02-20 05:07:48 +03:00
|
|
|
mWhiteSpace == NS_STYLE_WHITESPACE_PRE_WRAP;
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2006-10-19 05:47:47 +04:00
|
|
|
|
|
|
|
PRBool WhiteSpaceCanWrap() const {
|
|
|
|
return mWhiteSpace == NS_STYLE_WHITESPACE_NORMAL ||
|
2008-02-20 05:07:48 +03:00
|
|
|
mWhiteSpace == NS_STYLE_WHITESPACE_PRE_WRAP;
|
2006-10-19 05:47:47 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleVisibility {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleVisibility(nsPresContext* aPresContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleVisibility(const nsStyleVisibility& aVisibility);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleVisibility() {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleVisibility();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleVisibility), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleVisibility& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mDirection; // [inherited] see nsStyleConsts.h NS_STYLE_DIRECTION_*
|
|
|
|
PRUint8 mVisible; // [inherited]
|
2004-06-09 03:53:59 +04:00
|
|
|
nsCOMPtr<nsIAtom> mLangGroup; // [inherited]
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRBool IsVisible() const {
|
|
|
|
return (mVisible == NS_STYLE_VISIBILITY_VISIBLE);
|
|
|
|
}
|
|
|
|
|
|
|
|
PRBool IsVisibleOrCollapsed() const {
|
|
|
|
return ((mVisible == NS_STYLE_VISIBILITY_VISIBLE) ||
|
|
|
|
(mVisible == NS_STYLE_VISIBILITY_COLLAPSE));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleDisplay {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleDisplay();
|
|
|
|
nsStyleDisplay(const nsStyleDisplay& aOther);
|
2007-04-23 18:21:53 +04:00
|
|
|
~nsStyleDisplay() {}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleDisplay();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleDisplay), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleDisplay& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2007-07-19 01:56:57 +04:00
|
|
|
|
|
|
|
// We guarantee that if mBinding is non-null, so are mBinding->mURI and
|
|
|
|
// mBinding->mOriginPrincipal.
|
|
|
|
nsRefPtr<nsCSSValue::URL> mBinding; // [reset]
|
2002-12-21 10:27:44 +03:00
|
|
|
#if 0
|
|
|
|
// XXX This is how it is defined in the CSS2 spec, but the errata
|
|
|
|
// changed it to be consistent with the positioning draft and how
|
|
|
|
// Nav and IE implement it
|
|
|
|
nsMargin mClip; // [reset] offsets from respective edge
|
|
|
|
#else
|
|
|
|
nsRect mClip; // [reset] offsets from upper-left border edge
|
|
|
|
#endif
|
2003-11-02 01:34:59 +03:00
|
|
|
float mOpacity; // [reset]
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mDisplay; // [reset] see nsStyleConsts.h NS_STYLE_DISPLAY_*
|
2002-08-16 03:00:23 +04:00
|
|
|
PRUint8 mOriginalDisplay; // [reset] saved mDisplay for position:absolute/fixed
|
2001-12-18 01:51:39 +03:00
|
|
|
PRUint8 mAppearance; // [reset]
|
2002-12-21 10:27:44 +03:00
|
|
|
PRUint8 mPosition; // [reset] see nsStyleConsts.h
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mFloats; // [reset] see nsStyleConsts.h NS_STYLE_FLOAT_*
|
|
|
|
PRUint8 mBreakType; // [reset] see nsStyleConsts.h NS_STYLE_CLEAR_*
|
|
|
|
PRPackedBool mBreakBefore; // [reset]
|
|
|
|
PRPackedBool mBreakAfter; // [reset]
|
2004-09-05 04:04:04 +04:00
|
|
|
PRUint8 mOverflowX; // [reset] see nsStyleConsts.h
|
|
|
|
PRUint8 mOverflowY; // [reset] see nsStyleConsts.h
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mClipFlags; // [reset] see nsStyleConsts.h
|
|
|
|
|
2007-01-27 21:44:24 +03:00
|
|
|
PRBool IsBlockInside() const {
|
|
|
|
return NS_STYLE_DISPLAY_BLOCK == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_LIST_ITEM == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_INLINE_BLOCK == mDisplay;
|
|
|
|
// Should TABLE_CELL and TABLE_CAPTION go here? They have
|
|
|
|
// block frames nested inside of them.
|
|
|
|
// (But please audit all callers before changing.)
|
|
|
|
}
|
|
|
|
|
|
|
|
PRBool IsBlockOutside() const {
|
|
|
|
return NS_STYLE_DISPLAY_BLOCK == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_LIST_ITEM == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_TABLE == mDisplay;
|
|
|
|
}
|
|
|
|
|
|
|
|
PRBool IsInlineOutside() const {
|
|
|
|
return NS_STYLE_DISPLAY_INLINE == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_INLINE_BLOCK == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_INLINE_TABLE == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_INLINE_BOX == mDisplay ||
|
|
|
|
NS_STYLE_DISPLAY_INLINE_GRID == mDisplay ||
|
2007-06-27 06:31:35 +04:00
|
|
|
NS_STYLE_DISPLAY_INLINE_STACK == mDisplay;
|
2007-01-27 21:44:24 +03:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRBool IsFloating() const {
|
|
|
|
return NS_STYLE_FLOAT_NONE != mFloats;
|
|
|
|
}
|
|
|
|
|
|
|
|
PRBool IsAbsolutelyPositioned() const {return (NS_STYLE_POSITION_ABSOLUTE == mPosition) ||
|
|
|
|
(NS_STYLE_POSITION_FIXED == mPosition);}
|
|
|
|
|
|
|
|
PRBool IsPositioned() const {return IsAbsolutelyPositioned() ||
|
|
|
|
(NS_STYLE_POSITION_RELATIVE == mPosition);}
|
2004-09-03 03:18:37 +04:00
|
|
|
|
|
|
|
PRBool IsScrollableOverflow() const {
|
2004-09-05 04:04:04 +04:00
|
|
|
// mOverflowX and mOverflowY always match when one of them is
|
|
|
|
// NS_STYLE_OVERFLOW_VISIBLE or NS_STYLE_OVERFLOW_CLIP.
|
|
|
|
return mOverflowX != NS_STYLE_OVERFLOW_VISIBLE &&
|
|
|
|
mOverflowX != NS_STYLE_OVERFLOW_CLIP;
|
2004-09-03 03:18:37 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
// For table elements that don't support scroll frame creation, we
|
|
|
|
// support 'overflow: hidden' to mean 'overflow: -moz-hidden-unscrollable'.
|
|
|
|
PRBool IsTableClip() const {
|
2004-09-05 04:04:04 +04:00
|
|
|
return mOverflowX == NS_STYLE_OVERFLOW_CLIP ||
|
|
|
|
(mOverflowX == NS_STYLE_OVERFLOW_HIDDEN &&
|
|
|
|
mOverflowY == NS_STYLE_OVERFLOW_HIDDEN);
|
2004-09-03 03:18:37 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleTable {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleTable(void);
|
|
|
|
nsStyleTable(const nsStyleTable& aOther);
|
|
|
|
~nsStyleTable(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleTable();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleTable), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleTable& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mLayoutStrategy;// [reset] see nsStyleConsts.h NS_STYLE_TABLE_LAYOUT_*
|
|
|
|
PRUint8 mFrame; // [reset] see nsStyleConsts.h NS_STYLE_TABLE_FRAME_*
|
|
|
|
PRUint8 mRules; // [reset] see nsStyleConsts.h NS_STYLE_TABLE_RULES_*
|
|
|
|
PRInt32 mCols; // [reset] an integer if set, or see nsStyleConsts.h NS_STYLE_TABLE_COLS_*
|
|
|
|
PRInt32 mSpan; // [reset] the number of columns spanned by a colgroup or col
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleTableBorder {
|
2004-08-01 03:15:21 +04:00
|
|
|
nsStyleTableBorder(nsPresContext* aContext);
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleTableBorder(const nsStyleTableBorder& aOther);
|
|
|
|
~nsStyleTableBorder(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleTableBorder();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleTableBorder), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleTableBorder& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
nsStyleCoord mBorderSpacingX;// [inherited]
|
|
|
|
nsStyleCoord mBorderSpacingY;// [inherited]
|
2002-12-21 10:27:44 +03:00
|
|
|
PRUint8 mBorderCollapse;// [inherited]
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mCaptionSide; // [inherited]
|
|
|
|
PRUint8 mEmptyCells; // [inherited]
|
|
|
|
};
|
|
|
|
|
|
|
|
enum nsStyleContentType {
|
|
|
|
eStyleContentType_String = 1,
|
2004-07-15 02:19:22 +04:00
|
|
|
eStyleContentType_Image = 10,
|
2001-06-01 02:19:43 +04:00
|
|
|
eStyleContentType_Attr = 20,
|
|
|
|
eStyleContentType_Counter = 30,
|
|
|
|
eStyleContentType_Counters = 31,
|
|
|
|
eStyleContentType_OpenQuote = 40,
|
|
|
|
eStyleContentType_CloseQuote = 41,
|
|
|
|
eStyleContentType_NoOpenQuote = 42,
|
2005-09-18 22:05:40 +04:00
|
|
|
eStyleContentType_NoCloseQuote = 43,
|
|
|
|
eStyleContentType_AltContent = 50
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
struct nsStyleContentData {
|
|
|
|
nsStyleContentType mType;
|
2003-10-02 02:53:56 +04:00
|
|
|
union {
|
|
|
|
PRUnichar *mString;
|
2004-07-15 02:19:22 +04:00
|
|
|
imgIRequest *mImage;
|
2005-04-02 03:07:00 +04:00
|
|
|
nsCSSValue::Array* mCounters;
|
2003-10-02 02:53:56 +04:00
|
|
|
} mContent;
|
|
|
|
|
2005-04-02 03:07:00 +04:00
|
|
|
nsStyleContentData() : mType(nsStyleContentType(0)) { mContent.mString = nsnull; }
|
2004-07-15 02:19:22 +04:00
|
|
|
~nsStyleContentData();
|
|
|
|
nsStyleContentData& operator=(const nsStyleContentData& aOther);
|
2007-01-31 16:59:26 +03:00
|
|
|
PRBool operator==(const nsStyleContentData& aOther) const;
|
2003-10-02 02:53:56 +04:00
|
|
|
|
2007-01-31 16:59:26 +03:00
|
|
|
PRBool operator!=(const nsStyleContentData& aOther) const {
|
2003-10-02 02:53:56 +04:00
|
|
|
return !(*this == aOther);
|
|
|
|
}
|
2005-04-02 03:07:00 +04:00
|
|
|
private:
|
|
|
|
nsStyleContentData(const nsStyleContentData&); // not to be implemented
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
struct nsStyleCounterData {
|
|
|
|
nsString mCounter;
|
|
|
|
PRInt32 mValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#define DELETE_ARRAY_IF(array) if (array) { delete[] array; array = nsnull; }
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleQuotes {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleQuotes();
|
|
|
|
nsStyleQuotes(const nsStyleQuotes& aQuotes);
|
|
|
|
~nsStyleQuotes();
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleQuotes();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleQuotes), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleQuotes& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint32 QuotesCount(void) const { return mQuotesCount; } // [inherited]
|
2004-04-13 01:53:22 +04:00
|
|
|
|
|
|
|
const nsString* OpenQuoteAt(PRUint32 aIndex) const
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aIndex < mQuotesCount, "out of range");
|
|
|
|
return mQuotes + (aIndex * 2);
|
|
|
|
}
|
|
|
|
const nsString* CloseQuoteAt(PRUint32 aIndex) const
|
|
|
|
{
|
|
|
|
NS_ASSERTION(aIndex < mQuotesCount, "out of range");
|
|
|
|
return mQuotes + (aIndex * 2 + 1);
|
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
nsresult GetQuotesAt(PRUint32 aIndex, nsString& aOpen, nsString& aClose) const {
|
|
|
|
if (aIndex < mQuotesCount) {
|
|
|
|
aIndex *= 2;
|
|
|
|
aOpen = mQuotes[aIndex];
|
|
|
|
aClose = mQuotes[++aIndex];
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
return NS_ERROR_ILLEGAL_VALUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsresult AllocateQuotes(PRUint32 aCount) {
|
|
|
|
if (aCount != mQuotesCount) {
|
|
|
|
DELETE_ARRAY_IF(mQuotes);
|
|
|
|
if (aCount) {
|
|
|
|
mQuotes = new nsString[aCount * 2];
|
|
|
|
if (! mQuotes) {
|
|
|
|
mQuotesCount = 0;
|
|
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mQuotesCount = aCount;
|
|
|
|
}
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsresult SetQuotesAt(PRUint32 aIndex, const nsString& aOpen, const nsString& aClose) {
|
|
|
|
if (aIndex < mQuotesCount) {
|
|
|
|
aIndex *= 2;
|
|
|
|
mQuotes[aIndex] = aOpen;
|
|
|
|
mQuotes[++aIndex] = aClose;
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
return NS_ERROR_ILLEGAL_VALUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PRUint32 mQuotesCount;
|
|
|
|
nsString* mQuotes;
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleContent {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleContent(void);
|
|
|
|
nsStyleContent(const nsStyleContent& aContent);
|
|
|
|
~nsStyleContent(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleContent();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleContent), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleContent& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint32 ContentCount(void) const { return mContentCount; } // [reset]
|
2003-10-02 02:53:56 +04:00
|
|
|
|
|
|
|
const nsStyleContentData& ContentAt(PRUint32 aIndex) const {
|
|
|
|
NS_ASSERTION(aIndex < mContentCount, "out of range");
|
|
|
|
return mContents[aIndex];
|
|
|
|
}
|
|
|
|
|
|
|
|
nsStyleContentData& ContentAt(PRUint32 aIndex) {
|
|
|
|
NS_ASSERTION(aIndex < mContentCount, "out of range");
|
|
|
|
return mContents[aIndex];
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
2004-07-15 03:51:25 +04:00
|
|
|
nsresult AllocateContents(PRUint32 aCount);
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint32 CounterIncrementCount(void) const { return mIncrementCount; } // [reset]
|
2005-04-02 03:07:00 +04:00
|
|
|
const nsStyleCounterData* GetCounterIncrementAt(PRUint32 aIndex) const {
|
|
|
|
NS_ASSERTION(aIndex < mIncrementCount, "out of range");
|
|
|
|
return &mIncrements[aIndex];
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
nsresult AllocateCounterIncrements(PRUint32 aCount) {
|
|
|
|
if (aCount != mIncrementCount) {
|
|
|
|
DELETE_ARRAY_IF(mIncrements);
|
|
|
|
if (aCount) {
|
|
|
|
mIncrements = new nsStyleCounterData[aCount];
|
|
|
|
if (! mIncrements) {
|
|
|
|
mIncrementCount = 0;
|
|
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mIncrementCount = aCount;
|
|
|
|
}
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsresult SetCounterIncrementAt(PRUint32 aIndex, const nsString& aCounter, PRInt32 aIncrement) {
|
|
|
|
if (aIndex < mIncrementCount) {
|
|
|
|
mIncrements[aIndex].mCounter = aCounter;
|
|
|
|
mIncrements[aIndex].mValue = aIncrement;
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
return NS_ERROR_ILLEGAL_VALUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
PRUint32 CounterResetCount(void) const { return mResetCount; } // [reset]
|
2005-04-02 03:07:00 +04:00
|
|
|
const nsStyleCounterData* GetCounterResetAt(PRUint32 aIndex) const {
|
|
|
|
NS_ASSERTION(aIndex < mResetCount, "out of range");
|
|
|
|
return &mResets[aIndex];
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
nsresult AllocateCounterResets(PRUint32 aCount) {
|
|
|
|
if (aCount != mResetCount) {
|
|
|
|
DELETE_ARRAY_IF(mResets);
|
|
|
|
if (aCount) {
|
|
|
|
mResets = new nsStyleCounterData[aCount];
|
|
|
|
if (! mResets) {
|
|
|
|
mResetCount = 0;
|
|
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mResetCount = aCount;
|
|
|
|
}
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsresult SetCounterResetAt(PRUint32 aIndex, const nsString& aCounter, PRInt32 aValue) {
|
|
|
|
if (aIndex < mResetCount) {
|
|
|
|
mResets[aIndex].mCounter = aCounter;
|
|
|
|
mResets[aIndex].mValue = aValue;
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
return NS_ERROR_ILLEGAL_VALUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsStyleCoord mMarkerOffset; // [reset]
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PRUint32 mContentCount;
|
|
|
|
nsStyleContentData* mContents;
|
|
|
|
|
|
|
|
PRUint32 mIncrementCount;
|
|
|
|
nsStyleCounterData* mIncrements;
|
|
|
|
|
|
|
|
PRUint32 mResetCount;
|
|
|
|
nsStyleCounterData* mResets;
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleUIReset {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleUIReset(void);
|
|
|
|
nsStyleUIReset(const nsStyleUIReset& aOther);
|
|
|
|
~nsStyleUIReset(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleUIReset();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleUIReset), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleUIReset& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-12-21 10:27:44 +03:00
|
|
|
PRUint8 mUserSelect; // [reset] (selection-style)
|
2002-03-26 23:14:05 +03:00
|
|
|
PRUint8 mForceBrokenImageIcon; // [reset] (0 if not forcing, otherwise forcing)
|
2007-05-16 19:51:37 +04:00
|
|
|
PRUint8 mIMEMode; // [reset]
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2005-07-01 08:29:42 +04:00
|
|
|
struct nsCursorImage {
|
|
|
|
nsCOMPtr<imgIRequest> mImage;
|
|
|
|
PRBool mHaveHotspot;
|
|
|
|
float mHotspotX, mHotspotY;
|
|
|
|
|
|
|
|
nsCursorImage();
|
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleUserInterface {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleUserInterface(void);
|
|
|
|
nsStyleUserInterface(const nsStyleUserInterface& aOther);
|
|
|
|
~nsStyleUserInterface(void);
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleUserInterface();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleUserInterface), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleUserInterface& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
|
|
|
PRUint8 mUserInput; // [inherited]
|
|
|
|
PRUint8 mUserModify; // [inherited] (modify-content)
|
|
|
|
PRUint8 mUserFocus; // [inherited] (auto-select)
|
|
|
|
|
2004-01-18 04:12:58 +03:00
|
|
|
PRUint8 mCursor; // [inherited] See nsStyleConsts.h
|
2005-07-01 08:29:42 +04:00
|
|
|
|
|
|
|
PRUint32 mCursorArrayLength;
|
|
|
|
nsCursorImage *mCursorArray;// [inherited] The specified URL values
|
|
|
|
// and coordinates. Takes precedence over
|
|
|
|
// mCursor. Zero-length array is represented
|
|
|
|
// by null pointer.
|
|
|
|
|
|
|
|
// Does not free mCursorArray; the caller is responsible for calling
|
|
|
|
// |delete [] mCursorArray| first if it is needed.
|
|
|
|
void CopyCursorArrayFrom(const nsStyleUserInterface& aSource);
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleXUL {
|
2001-06-01 02:19:43 +04:00
|
|
|
nsStyleXUL();
|
|
|
|
nsStyleXUL(const nsStyleXUL& aSource);
|
|
|
|
~nsStyleXUL();
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-06-01 02:19:43 +04:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-06-02 01:04:23 +04:00
|
|
|
this->~nsStyleXUL();
|
2001-06-01 02:19:43 +04:00
|
|
|
aContext->FreeToShell(sizeof(nsStyleXUL), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleXUL& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-06-01 02:19:43 +04:00
|
|
|
|
2002-12-21 10:27:44 +03:00
|
|
|
float mBoxFlex; // [reset] see nsStyleConsts.h
|
|
|
|
PRUint32 mBoxOrdinal; // [reset] see nsStyleConsts.h
|
2001-08-02 04:09:27 +04:00
|
|
|
PRUint8 mBoxAlign; // [reset] see nsStyleConsts.h
|
|
|
|
PRUint8 mBoxDirection; // [reset] see nsStyleConsts.h
|
2001-06-01 02:19:43 +04:00
|
|
|
PRUint8 mBoxOrient; // [reset] see nsStyleConsts.h
|
2001-08-02 04:09:27 +04:00
|
|
|
PRUint8 mBoxPack; // [reset] see nsStyleConsts.h
|
2001-06-01 02:19:43 +04:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleColumn {
|
2004-06-17 15:57:37 +04:00
|
|
|
nsStyleColumn();
|
|
|
|
nsStyleColumn(const nsStyleColumn& aSource);
|
|
|
|
~nsStyleColumn();
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-06-17 15:57:37 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2004-06-17 15:57:37 +04:00
|
|
|
this->~nsStyleColumn();
|
|
|
|
aContext->FreeToShell(sizeof(nsStyleColumn), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2004-06-17 15:57:37 +04:00
|
|
|
|
|
|
|
nsChangeHint CalcDifference(const nsStyleColumn& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2004-06-17 15:57:37 +04:00
|
|
|
|
|
|
|
PRUint32 mColumnCount; // [reset] see nsStyleConsts.h
|
2004-07-18 16:12:46 +04:00
|
|
|
nsStyleCoord mColumnWidth; // [reset]
|
2007-07-20 06:21:43 +04:00
|
|
|
nsStyleCoord mColumnGap; // [reset] coord
|
2004-06-17 15:57:37 +04:00
|
|
|
};
|
|
|
|
|
2001-12-12 10:59:31 +03:00
|
|
|
#ifdef MOZ_SVG
|
|
|
|
enum nsStyleSVGPaintType {
|
2007-10-19 19:36:15 +04:00
|
|
|
eStyleSVGPaintType_None = 1,
|
2001-12-12 10:59:31 +03:00
|
|
|
eStyleSVGPaintType_Color,
|
|
|
|
eStyleSVGPaintType_Server
|
|
|
|
};
|
|
|
|
|
|
|
|
struct nsStyleSVGPaint
|
|
|
|
{
|
|
|
|
nsStyleSVGPaintType mType;
|
2004-10-15 03:02:53 +04:00
|
|
|
union {
|
|
|
|
nscolor mColor;
|
|
|
|
nsIURI *mPaintServer;
|
|
|
|
} mPaint;
|
2007-01-09 14:02:17 +03:00
|
|
|
nscolor mFallbackColor;
|
2004-10-15 03:02:53 +04:00
|
|
|
|
2007-10-19 19:36:15 +04:00
|
|
|
nsStyleSVGPaint() : mType(nsStyleSVGPaintType(0)) { mPaint.mPaintServer = nsnull; }
|
|
|
|
~nsStyleSVGPaint();
|
|
|
|
void SetType(nsStyleSVGPaintType aType);
|
2004-10-15 03:02:53 +04:00
|
|
|
nsStyleSVGPaint& operator=(const nsStyleSVGPaint& aOther);
|
|
|
|
PRBool operator==(const nsStyleSVGPaint& aOther) const;
|
|
|
|
|
|
|
|
PRBool operator!=(const nsStyleSVGPaint& aOther) const {
|
|
|
|
return !(*this == aOther);
|
|
|
|
}
|
2001-12-12 10:59:31 +03:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleSVG {
|
2001-12-12 10:59:31 +03:00
|
|
|
nsStyleSVG();
|
|
|
|
nsStyleSVG(const nsStyleSVG& aSource);
|
|
|
|
~nsStyleSVG();
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
2001-12-12 10:59:31 +03:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
2001-12-12 10:59:31 +03:00
|
|
|
this->~nsStyleSVG();
|
|
|
|
aContext->FreeToShell(sizeof(nsStyleSVG), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
2001-12-12 10:59:31 +03:00
|
|
|
|
2002-08-24 18:41:28 +04:00
|
|
|
nsChangeHint CalcDifference(const nsStyleSVG& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
2001-12-12 10:59:31 +03:00
|
|
|
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
nsStyleSVGPaint mFill; // [inherited]
|
2005-01-25 06:55:03 +03:00
|
|
|
nsStyleSVGPaint mStroke; // [inherited]
|
2004-12-09 06:16:15 +03:00
|
|
|
nsCOMPtr<nsIURI> mMarkerEnd; // [inherited]
|
|
|
|
nsCOMPtr<nsIURI> mMarkerMid; // [inherited]
|
|
|
|
nsCOMPtr<nsIURI> mMarkerStart; // [inherited]
|
2005-04-05 01:42:26 +04:00
|
|
|
nsStyleCoord *mStrokeDasharray; // [inherited]
|
|
|
|
|
|
|
|
nsStyleCoord mStrokeDashoffset; // [inherited]
|
|
|
|
nsStyleCoord mStrokeWidth; // [inherited]
|
2005-01-25 06:55:03 +03:00
|
|
|
|
|
|
|
float mFillOpacity; // [inherited]
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
float mStrokeMiterlimit; // [inherited]
|
|
|
|
float mStrokeOpacity; // [inherited]
|
2005-01-25 06:55:03 +03:00
|
|
|
|
|
|
|
PRUint32 mStrokeDasharrayLength;
|
2006-05-30 20:15:35 +04:00
|
|
|
PRUint8 mClipRule; // [inherited]
|
2007-01-30 16:19:55 +03:00
|
|
|
PRUint8 mColorInterpolation; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mColorInterpolationFilters; // [inherited] see nsStyleConsts.h
|
2006-05-30 20:15:35 +04:00
|
|
|
PRUint8 mFillRule; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mPointerEvents; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mShapeRendering; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mStrokeLinecap; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mStrokeLinejoin; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mTextAnchor; // [inherited] see nsStyleConsts.h
|
|
|
|
PRUint8 mTextRendering; // [inherited] see nsStyleConsts.h
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
};
|
|
|
|
|
2008-01-10 23:56:49 +03:00
|
|
|
struct nsStyleSVGReset {
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
nsStyleSVGReset();
|
|
|
|
nsStyleSVGReset(const nsStyleSVGReset& aSource);
|
|
|
|
~nsStyleSVGReset();
|
|
|
|
|
2004-08-01 03:15:21 +04:00
|
|
|
void* operator new(size_t sz, nsPresContext* aContext) CPP_THROW_NEW {
|
2004-04-13 04:28:44 +04:00
|
|
|
return aContext->AllocateFromShell(sz);
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
}
|
2004-08-01 03:15:21 +04:00
|
|
|
void Destroy(nsPresContext* aContext) {
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
this->~nsStyleSVGReset();
|
|
|
|
aContext->FreeToShell(sizeof(nsStyleSVGReset), this);
|
2007-04-23 18:21:53 +04:00
|
|
|
}
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
|
|
|
|
nsChangeHint CalcDifference(const nsStyleSVGReset& aOther) const;
|
2004-10-01 07:33:05 +04:00
|
|
|
#ifdef DEBUG
|
|
|
|
static nsChangeHint MaxDifference();
|
|
|
|
#endif
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
|
2007-01-09 14:02:17 +03:00
|
|
|
nscolor mStopColor; // [reset]
|
2007-01-09 23:40:09 +03:00
|
|
|
nscolor mFloodColor; // [reset]
|
2007-07-26 10:57:42 +04:00
|
|
|
nscolor mLightingColor; // [reset]
|
2005-01-25 06:55:03 +03:00
|
|
|
nsCOMPtr<nsIURI> mClipPath; // [reset]
|
2005-09-07 02:30:40 +04:00
|
|
|
nsCOMPtr<nsIURI> mFilter; // [reset]
|
2006-01-20 20:00:43 +03:00
|
|
|
nsCOMPtr<nsIURI> mMask; // [reset]
|
2005-09-07 02:30:40 +04:00
|
|
|
|
2005-04-05 01:42:26 +04:00
|
|
|
float mStopOpacity; // [reset]
|
2007-01-09 23:40:09 +03:00
|
|
|
float mFloodOpacity; // [reset]
|
2005-09-07 02:30:40 +04:00
|
|
|
|
Landing of SVG_20020806_BRANCH, Bug 182533. Refactoring of SVG backend, new GDI+ and Libart rendering
backends, text support on Windows (GDI+), rudimentary text support on Linux (libart/freetype2), presentation
attributes, lots of bug fixes (see bug 182533 for dependency list).
Not part of default build; code is #ifdef'ed out.
r=sicking, sr=jst for dom and htmlparser changes
r=bsmedberg, sr=tor for config changes
r=dbaron, sr=bzbarsky for content and layout changes
r=tor, sr=bzbarsky for gfx changes
2004-02-07 15:39:26 +03:00
|
|
|
PRUint8 mDominantBaseline; // [reset] see nsStyleConsts.h
|
2001-12-12 10:59:31 +03:00
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
2001-11-28 08:04:23 +03:00
|
|
|
#endif /* nsStyleStruct_h___ */
|