gecko-dev/layout/style/nsCSSStruct.h

543 lines
14 KiB
C
Raw Normal View History

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
1998-04-13 20:24:54 +00: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/
1998-04-13 20:24:54 +00: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.
1998-04-13 20:24:54 +00:00
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Daniel Glazman <glazman@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* 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"),
* 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
* use your version of this file under the terms of the MPL, indicate your
* 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
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsCSSStruct_h___
#define nsCSSStruct_h___
1998-04-13 20:24:54 +00:00
1998-10-08 01:34:58 +00:00
#include "nsCSSValue.h"
#include <stdio.h>
1998-04-13 20:24:54 +00:00
struct nsCSSStruct {
// EMPTY on purpose. ABSTRACT with no virtuals (typedef void nsCSSStruct?)
1998-04-13 20:24:54 +00:00
};
// We use the nsCSS* structures for storing nsCSSDeclaration's
// *temporary* data during parsing and modification. (They are too big
// for permanent storage.) We also use them for nsRuleData, with some
// additions of things that the style system must cascade, but that
// aren't CSS properties. Thus we use typedefs and inheritance
// (forwards, when the rule data needs extra data) to make the rule data
// structs from the declaration structs.
typedef nsCSSStruct nsRuleDataStruct;
1998-04-13 20:24:54 +00:00
struct nsCSSFont : public nsCSSStruct {
1999-06-03 01:58:11 +00:00
nsCSSFont(void);
nsCSSFont(const nsCSSFont& aCopy);
~nsCSSFont(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
nsCSSValue mFamily;
nsCSSValue mStyle;
nsCSSValue mVariant;
nsCSSValue mWeight;
nsCSSValue mSize;
1998-10-08 01:34:58 +00:00
nsCSSValue mSizeAdjust; // NEW
nsCSSValue mStretch; // NEW
1998-04-13 20:24:54 +00:00
};
struct nsRuleDataFont : public nsCSSFont {
PRBool mFamilyFromHTML; // Is the family from an HTML FONT element
};
1998-10-26 23:22:40 +00:00
struct nsCSSValueList {
nsCSSValueList(void);
1999-06-03 01:58:11 +00:00
nsCSSValueList(const nsCSSValueList& aCopy);
1998-10-26 23:22:40 +00:00
~nsCSSValueList(void);
static PRBool Equal(nsCSSValueList* aList1, nsCSSValueList* aList2);
1998-10-26 23:22:40 +00:00
nsCSSValue mValue;
nsCSSValueList* mNext;
};
1998-04-13 20:24:54 +00:00
struct nsCSSColor : public nsCSSStruct {
1998-10-26 23:22:40 +00:00
nsCSSColor(void);
1999-06-03 01:58:11 +00:00
nsCSSColor(const nsCSSColor& aCopy);
~nsCSSColor(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
1998-10-26 23:22:40 +00:00
nsCSSValue mColor;
nsCSSValue mBackColor;
nsCSSValue mBackImage;
nsCSSValue mBackRepeat;
nsCSSValue mBackAttachment;
nsCSSValue mBackPositionX;
nsCSSValue mBackPositionY;
nsCSSValue mBackClip;
nsCSSValue mBackOrigin;
nsCSSValue mBackInlinePolicy;
1998-04-13 20:24:54 +00:00
};
struct nsRuleDataColor : public nsCSSColor {
};
1998-10-08 01:34:58 +00:00
struct nsCSSShadow {
nsCSSShadow(void);
1999-06-03 01:58:11 +00:00
nsCSSShadow(const nsCSSShadow& aCopy);
1998-10-08 01:34:58 +00:00
~nsCSSShadow(void);
static PRBool Equal(nsCSSShadow* aList1, nsCSSShadow* aList2);
1998-10-08 01:34:58 +00:00
nsCSSValue mColor;
nsCSSValue mXOffset;
nsCSSValue mYOffset;
nsCSSValue mRadius;
nsCSSShadow* mNext;
};
1998-04-13 20:24:54 +00:00
struct nsCSSText : public nsCSSStruct {
1998-10-08 01:34:58 +00:00
nsCSSText(void);
1999-06-03 01:58:11 +00:00
nsCSSText(const nsCSSText& aCopy);
~nsCSSText(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
nsCSSValue mWordSpacing;
nsCSSValue mLetterSpacing;
1998-04-27 21:24:06 +00:00
nsCSSValue mVerticalAlign;
nsCSSValue mTextTransform;
nsCSSValue mTextAlign;
1998-04-27 21:24:06 +00:00
nsCSSValue mTextIndent;
nsCSSValue mDecoration;
1998-10-08 01:34:58 +00:00
nsCSSShadow* mTextShadow; // NEW
nsCSSValue mUnicodeBidi; // NEW
1998-04-13 20:24:54 +00:00
nsCSSValue mLineHeight;
nsCSSValue mWhiteSpace;
};
struct nsRuleDataText : public nsCSSText {
};
1998-05-26 23:16:55 +00:00
struct nsCSSRect {
1999-06-03 01:58:11 +00:00
nsCSSRect(void);
nsCSSRect(const nsCSSRect& aCopy);
~nsCSSRect();
#ifdef DEBUG
void List(FILE* out = 0, nsCSSProperty aPropID = eCSSProperty_UNKNOWN, PRInt32 aIndent = 0) const;
void List(FILE* out, PRInt32 aIndent, const nsCSSProperty aTRBL[]) const;
#endif
1998-05-26 23:16:55 +00:00
PRBool operator==(const nsCSSRect& aOther) const {
return mTop == aOther.mTop &&
mRight == aOther.mRight &&
mBottom == aOther.mBottom &&
mLeft == aOther.mLeft;
}
PRBool operator!=(const nsCSSRect& aOther) const {
return mTop != aOther.mTop ||
mRight != aOther.mRight ||
mBottom != aOther.mBottom ||
mLeft != aOther.mLeft;
}
void SetAllSidesTo(const nsCSSValue& aValue);
void Reset() {
mTop.Reset();
mRight.Reset();
mBottom.Reset();
mLeft.Reset();
}
PRBool HasValue() const {
return
mTop.GetUnit() != eCSSUnit_Null ||
mRight.GetUnit() != eCSSUnit_Null ||
mBottom.GetUnit() != eCSSUnit_Null ||
mLeft.GetUnit() != eCSSUnit_Null;
}
1998-05-26 23:16:55 +00:00
nsCSSValue mTop;
nsCSSValue mRight;
nsCSSValue mBottom;
nsCSSValue mLeft;
typedef nsCSSValue nsCSSRect::*side_type;
static const side_type sides[4];
};
struct nsCSSValueListRect {
nsCSSValueListRect(void);
nsCSSValueListRect(const nsCSSValueListRect& aCopy);
~nsCSSValueListRect();
#ifdef DEBUG
void List(FILE* out = 0, nsCSSProperty aPropID = eCSSProperty_UNKNOWN, PRInt32 aIndent = 0) const;
void List(FILE* out, PRInt32 aIndent, const nsCSSProperty aTRBL[]) const;
#endif
nsCSSValueList* mTop;
nsCSSValueList* mRight;
nsCSSValueList* mBottom;
nsCSSValueList* mLeft;
typedef nsCSSValueList* nsCSSValueListRect::*side_type;
static const side_type sides[4];
1998-05-26 23:16:55 +00:00
};
struct nsCSSDisplay : public nsCSSStruct {
1998-05-26 23:16:55 +00:00
nsCSSDisplay(void);
1999-06-03 01:58:11 +00:00
nsCSSDisplay(const nsCSSDisplay& aCopy);
~nsCSSDisplay(void);
#ifdef DEBUG
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
nsCSSValue mDirection;
nsCSSValue mDisplay;
nsCSSValue mBinding;
nsCSSValue mAppearance;
nsCSSValue mPosition;
nsCSSValue mFloat;
nsCSSValue mClear;
nsCSSRect mClip;
1998-05-26 23:16:55 +00:00
nsCSSValue mOverflow;
nsCSSValue mVisibility;
nsCSSValue mOpacity;
// temp fix for bug 24000
nsCSSValue mBreakBefore;
nsCSSValue mBreakAfter;
// end temp fix
1998-04-13 20:24:54 +00:00
};
struct nsRuleDataDisplay : public nsCSSDisplay {
nsCSSValue mLang;
};
1998-04-13 20:24:54 +00:00
struct nsCSSMargin : public nsCSSStruct {
nsCSSMargin(void);
1999-06-03 01:58:11 +00:00
nsCSSMargin(const nsCSSMargin& aCopy);
~nsCSSMargin(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
nsCSSRect mMargin;
nsCSSValue mMarginStart;
nsCSSValue mMarginEnd;
nsCSSValue mMarginLeftLTRSource;
nsCSSValue mMarginLeftRTLSource;
nsCSSValue mMarginRightLTRSource;
nsCSSValue mMarginRightRTLSource;
nsCSSRect mPadding;
nsCSSValue mPaddingStart;
nsCSSValue mPaddingEnd;
nsCSSValue mPaddingLeftLTRSource;
nsCSSValue mPaddingLeftRTLSource;
nsCSSValue mPaddingRightLTRSource;
nsCSSValue mPaddingRightRTLSource;
nsCSSRect mBorderWidth;
nsCSSRect mBorderColor;
nsCSSValueListRect mBorderColors;
nsCSSRect mBorderStyle;
nsCSSRect mBorderRadius; // (extension)
1999-07-24 19:04:42 +00:00
nsCSSValue mOutlineWidth;
nsCSSValue mOutlineColor;
nsCSSValue mOutlineStyle;
nsCSSRect mOutlineRadius; // (extension)
1999-07-24 19:04:42 +00:00
nsCSSValue mFloatEdge; // NEW
1998-04-13 20:24:54 +00:00
};
struct nsRuleDataMargin : public nsCSSMargin {
};
1998-04-13 20:24:54 +00:00
struct nsCSSPosition : public nsCSSStruct {
1998-10-08 01:34:58 +00:00
nsCSSPosition(void);
1999-06-03 01:58:11 +00:00
nsCSSPosition(const nsCSSPosition& aCopy);
~nsCSSPosition(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
nsCSSValue mWidth;
1999-07-24 19:04:42 +00:00
nsCSSValue mMinWidth;
nsCSSValue mMaxWidth;
1998-04-13 20:24:54 +00:00
nsCSSValue mHeight;
1999-07-24 19:04:42 +00:00
nsCSSValue mMinHeight;
nsCSSValue mMaxHeight;
nsCSSValue mBoxSizing; // NEW
nsCSSRect mOffset;
1998-04-13 20:24:54 +00:00
nsCSSValue mZIndex;
};
struct nsRuleDataPosition : public nsCSSPosition {
};
1998-04-13 20:24:54 +00:00
struct nsCSSList : public nsCSSStruct {
1999-06-03 01:58:11 +00:00
nsCSSList(void);
nsCSSList(const nsCSSList& aCopy);
~nsCSSList(void);
#ifdef DEBUG
1998-04-13 20:24:54 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-04-13 20:24:54 +00:00
nsCSSValue mType;
nsCSSValue mImage;
nsCSSValue mPosition;
nsCSSRect mImageRegion;
1998-04-13 20:24:54 +00:00
};
struct nsRuleDataList : public nsCSSList {
};
1998-10-08 01:34:58 +00:00
struct nsCSSTable : public nsCSSStruct { // NEW
1999-06-03 01:58:11 +00:00
nsCSSTable(void);
nsCSSTable(const nsCSSTable& aCopy);
~nsCSSTable(void);
#ifdef DEBUG
1998-10-08 01:34:58 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-10-08 01:34:58 +00:00
nsCSSValue mBorderCollapse;
1998-10-26 23:22:40 +00:00
nsCSSValue mBorderSpacingX;
nsCSSValue mBorderSpacingY;
1998-10-08 01:34:58 +00:00
nsCSSValue mCaptionSide;
nsCSSValue mEmptyCells;
1998-10-08 01:34:58 +00:00
nsCSSValue mLayout;
nsCSSValue mFrame; // Not mappable via CSS, only using HTML4 table attrs.
nsCSSValue mRules; // Not mappable via CSS, only using HTML4 table attrs.
nsCSSValue mSpan; // Not mappable via CSS, only using HTML4 table attrs.
nsCSSValue mCols; // Not mappable via CSS, only using HTML4 table attrs.
1998-10-08 01:34:58 +00:00
};
struct nsRuleDataTable : public nsCSSTable {
};
1998-10-08 01:34:58 +00:00
struct nsCSSBreaks : public nsCSSStruct { // NEW
1999-06-03 01:58:11 +00:00
nsCSSBreaks(void);
nsCSSBreaks(const nsCSSBreaks& aCopy);
~nsCSSBreaks(void);
#ifdef DEBUG
1998-10-08 01:34:58 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-10-08 01:34:58 +00:00
nsCSSValue mOrphans;
nsCSSValue mWidows;
nsCSSValue mPage;
// temp fix for bug 24000
//nsCSSValue mPageBreakAfter;
//nsCSSValue mPageBreakBefore;
1998-10-08 01:34:58 +00:00
nsCSSValue mPageBreakInside;
};
struct nsRuleDataBreaks : public nsCSSBreaks {
};
1998-10-08 01:34:58 +00:00
struct nsCSSPage : public nsCSSStruct { // NEW
1999-06-03 01:58:11 +00:00
nsCSSPage(void);
nsCSSPage(const nsCSSPage& aCopy);
~nsCSSPage(void);
#ifdef DEBUG
1998-10-08 01:34:58 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-10-08 01:34:58 +00:00
nsCSSValue mMarks;
1998-10-26 23:22:40 +00:00
nsCSSValue mSizeWidth;
nsCSSValue mSizeHeight;
};
struct nsRuleDataPage : public nsCSSPage {
};
1998-10-26 23:22:40 +00:00
struct nsCSSCounterData {
nsCSSCounterData(void);
1999-06-03 01:58:11 +00:00
nsCSSCounterData(const nsCSSCounterData& aCopy);
1998-10-26 23:22:40 +00:00
~nsCSSCounterData(void);
static PRBool Equal(nsCSSCounterData* aList1, nsCSSCounterData* aList2);
1998-10-26 23:22:40 +00:00
nsCSSValue mCounter;
nsCSSValue mValue;
nsCSSCounterData* mNext;
};
struct nsCSSQuotes {
nsCSSQuotes(void);
1999-06-03 01:58:11 +00:00
nsCSSQuotes(const nsCSSQuotes& aCopy);
1998-10-26 23:22:40 +00:00
~nsCSSQuotes(void);
static PRBool Equal(nsCSSQuotes* aList1, nsCSSQuotes* aList2);
1998-10-26 23:22:40 +00:00
nsCSSValue mOpen;
nsCSSValue mClose;
nsCSSQuotes* mNext;
1998-10-08 01:34:58 +00:00
};
1999-07-24 19:04:42 +00:00
struct nsCSSContent : public nsCSSStruct {
1998-10-26 23:22:40 +00:00
nsCSSContent(void);
1999-06-03 01:58:11 +00:00
nsCSSContent(const nsCSSContent& aCopy);
~nsCSSContent(void);
#ifdef DEBUG
1998-10-08 01:34:58 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-10-08 01:34:58 +00:00
1998-10-26 23:22:40 +00:00
nsCSSValueList* mContent;
nsCSSCounterData* mCounterIncrement;
nsCSSCounterData* mCounterReset;
nsCSSValue mMarkerOffset;
nsCSSQuotes* mQuotes;
1998-10-08 01:34:58 +00:00
};
struct nsRuleDataContent : public nsCSSContent {
};
1999-07-24 19:04:42 +00:00
struct nsCSSUserInterface : public nsCSSStruct { // NEW
nsCSSUserInterface(void);
nsCSSUserInterface(const nsCSSUserInterface& aCopy);
~nsCSSUserInterface(void);
1999-07-24 19:04:42 +00:00
#ifdef DEBUG
1999-07-24 19:04:42 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1999-07-24 19:04:42 +00:00
nsCSSValue mUserInput;
1999-09-03 23:40:35 +00:00
nsCSSValue mUserModify;
nsCSSValue mUserSelect;
1999-07-24 19:04:42 +00:00
nsCSSValueList* mKeyEquivalent;
1999-09-03 23:40:35 +00:00
nsCSSValue mUserFocus;
nsCSSValueList* mCursor;
nsCSSValue mForceBrokenImageIcon;
1999-07-24 19:04:42 +00:00
};
struct nsRuleDataUserInterface : public nsCSSUserInterface {
};
1998-10-08 01:34:58 +00:00
struct nsCSSAural : public nsCSSStruct { // NEW
1999-06-03 01:58:11 +00:00
nsCSSAural(void);
nsCSSAural(const nsCSSAural& aCopy);
~nsCSSAural(void);
#ifdef DEBUG
1998-10-08 01:34:58 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
1998-10-08 01:34:58 +00:00
nsCSSValue mAzimuth;
nsCSSValue mElevation;
nsCSSValue mCueAfter;
nsCSSValue mCueBefore;
nsCSSValue mPauseAfter;
nsCSSValue mPauseBefore;
nsCSSValue mPitch;
nsCSSValue mPitchRange;
nsCSSValue mPlayDuring;
1998-10-26 23:22:40 +00:00
nsCSSValue mPlayDuringFlags;
1998-10-08 01:34:58 +00:00
nsCSSValue mRichness;
nsCSSValue mSpeak;
nsCSSValue mSpeakHeader;
nsCSSValue mSpeakNumeral;
nsCSSValue mSpeakPunctuation;
nsCSSValue mSpeechRate;
nsCSSValue mStress;
nsCSSValue mVoiceFamily;
nsCSSValue mVolume;
};
1998-04-13 20:24:54 +00:00
struct nsRuleDataAural : public nsCSSAural {
};
2001-03-06 02:30:30 +00:00
struct nsCSSXUL : public nsCSSStruct {
nsCSSXUL(void);
nsCSSXUL(const nsCSSXUL& aCopy);
~nsCSSXUL(void);
2001-03-06 02:30:30 +00:00
#ifdef DEBUG
2001-03-06 02:30:30 +00:00
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
2001-03-06 02:30:30 +00:00
2001-08-02 00:09:27 +00:00
nsCSSValue mBoxAlign;
nsCSSValue mBoxDirection;
nsCSSValue mBoxFlex;
2001-03-06 02:30:30 +00:00
nsCSSValue mBoxOrient;
2001-08-02 00:09:27 +00:00
nsCSSValue mBoxPack;
nsCSSValue mBoxOrdinal;
2001-03-06 02:30:30 +00:00
};
struct nsRuleDataXUL : public nsCSSXUL {
};
2001-03-06 02:30:30 +00:00
#ifdef MOZ_SVG
struct nsCSSSVG : public nsCSSStruct {
nsCSSSVG(void);
nsCSSSVG(const nsCSSSVG& aCopy);
~nsCSSSVG(void);
#ifdef DEBUG
void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
#endif
nsCSSValue mDominantBaseline;
nsCSSValue mFill;
nsCSSValue mFillOpacity;
nsCSSValue mFillRule;
nsCSSValue mPointerEvents;
nsCSSValue mShapeRendering;
nsCSSValue mStroke;
nsCSSValue mStrokeDasharray;
nsCSSValue mStrokeDashoffset;
nsCSSValue mStrokeLinecap;
nsCSSValue mStrokeLinejoin;
nsCSSValue mStrokeMiterlimit;
nsCSSValue mStrokeOpacity;
nsCSSValue mStrokeWidth;
nsCSSValue mTextAnchor;
nsCSSValue mTextRendering;
};
struct nsRuleDataSVG : public nsCSSSVG {
};
#endif
#endif /* nsCSSStruct_h___ */