Bug 69830, cleanup after layout split by moving duplicated files to a library that is statically linked to content and layout, and backing out changes to inline some functions that now also live in the shared lib. r=jst, sr=waterson.
git-svn-id: svn://10.0.0.236/trunk@88896 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -241,8 +241,6 @@ content/events/Makefile
|
||||
content/events/public/Makefile
|
||||
content/events/src/Makefile
|
||||
content/html/Makefile
|
||||
content/html/base/Makefile
|
||||
content/html/base/src/Makefile
|
||||
content/html/content/Makefile
|
||||
content/html/content/public/Makefile
|
||||
content/html/content/src/Makefile
|
||||
@@ -276,6 +274,9 @@ content/xbl/builtin/os2/Makefile
|
||||
content/xsl/Makefile
|
||||
content/xsl/document/Makefile
|
||||
content/xsl/document/src/Makefile
|
||||
content/shared/Makefile
|
||||
content/shared/public/Makefile
|
||||
content/shared/src/Makefile
|
||||
"
|
||||
|
||||
MAKEFILES_layout="
|
||||
@@ -294,7 +295,6 @@ layout/html/forms/Makefile
|
||||
layout/html/forms/public/Makefile
|
||||
layout/html/forms/src/Makefile
|
||||
layout/html/style/Makefile
|
||||
layout/html/style/public/Makefile
|
||||
layout/html/style/src/Makefile
|
||||
layout/html/table/Makefile
|
||||
layout/html/table/public/Makefile
|
||||
@@ -308,8 +308,6 @@ layout/xul/base/src/Makefile
|
||||
layout/xul/base/src/outliner/Makefile
|
||||
layout/xul/base/src/outliner/src/Makefile
|
||||
layout/xul/base/src/outliner/public/Makefile
|
||||
layout/xul/content/Makefile
|
||||
layout/xul/content/src/Makefile
|
||||
"
|
||||
|
||||
MAKEFILES_mpfilelocprovider="
|
||||
|
||||
@@ -28,7 +28,7 @@ include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = base html xml xul xbl xsl
|
||||
|
||||
DIRS += events build
|
||||
DIRS += events shared build
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
||||
@@ -24,4 +24,4 @@ nsIStyleRuleSupplier.h
|
||||
nsIStyleSheet.h
|
||||
nsIStyleSheetLinkingElement.h
|
||||
nsITextContent.h
|
||||
nsTextFragment.h
|
||||
|
||||
|
||||
@@ -51,7 +51,6 @@ nsIStyleSheet.h \
|
||||
nsIStyleSheetLinkingElement.h \
|
||||
nsIStyleRuleProcessor.h \
|
||||
nsITextContent.h \
|
||||
nsTextFragment.h \
|
||||
nsIPrivateDOMImplementation.h \
|
||||
nsIContentSerializer.h \
|
||||
nsIHTMLToTextSink.h \
|
||||
|
||||
@@ -43,7 +43,6 @@ EXPORTS = \
|
||||
nsIStyleRuleProcessor.h \
|
||||
nsITextContent.h \
|
||||
nsContentUtils.h \
|
||||
nsTextFragment.h \
|
||||
nsIPrivateDOMImplementation.h \
|
||||
nsIContentSerializer.h \
|
||||
nsIHTMLToTextSink.h \
|
||||
|
||||
@@ -1,317 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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 Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsTextFragment_h___
|
||||
#define nsTextFragment_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsAWritableString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "nsMemory.h"
|
||||
|
||||
// XXX should this normalize the code to keep a \u0000 at the end?
|
||||
|
||||
// XXX nsTextFragmentPool?
|
||||
|
||||
// XXX these need I18N spankage
|
||||
#define XP_IS_SPACE(_ch) \
|
||||
(((_ch) == ' ') || ((_ch) == '\t') || ((_ch) == '\n'))
|
||||
|
||||
#define XP_IS_UPPERCASE(_ch) \
|
||||
(((_ch) >= 'A') && ((_ch) <= 'Z'))
|
||||
|
||||
#define XP_IS_LOWERCASE(_ch) \
|
||||
(((_ch) >= 'a') && ((_ch) <= 'z'))
|
||||
|
||||
#define XP_TO_LOWER(_ch) ((_ch) | 32)
|
||||
|
||||
#define XP_TO_UPPER(_ch) ((_ch) & ~32)
|
||||
|
||||
#define XP_IS_SPACE_W XP_IS_SPACE
|
||||
|
||||
/**
|
||||
* A fragment of text. If mIs2b is 1 then the m2b pointer is valid
|
||||
* otherwise the m1b pointer is valid. If m1b is used then each byte
|
||||
* of data represents a single ucs2 character with the high byte being
|
||||
* zero.
|
||||
*
|
||||
* This class does not have a virtual destructor therefore it is not
|
||||
* meant to be subclassed.
|
||||
*/
|
||||
class NS_LAYOUT nsTextFragment {
|
||||
public:
|
||||
/**
|
||||
* Default constructor. Initialize the fragment to be empty.
|
||||
*/
|
||||
nsTextFragment() {
|
||||
m1b = nsnull;
|
||||
mAllBits = 0;
|
||||
}
|
||||
|
||||
~nsTextFragment() {
|
||||
ReleaseText();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument fragment.
|
||||
*/
|
||||
nsTextFragment(const nsTextFragment& aOther);
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument 7bit ascii string.
|
||||
*/
|
||||
nsTextFragment(const char* aString);
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument ucs2 string.
|
||||
*/
|
||||
nsTextFragment(const PRUnichar* aString) : m1b(nsnull), mAllBits(0) {
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument string.
|
||||
*/
|
||||
nsTextFragment(const nsString& aString);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the
|
||||
* the argument fragment.
|
||||
*/
|
||||
nsTextFragment& operator=(const nsTextFragment& aOther);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the
|
||||
* the argument 7bit ascii string.
|
||||
*/
|
||||
nsTextFragment& operator=(const char* aString);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the
|
||||
* the argument ucs2 string.
|
||||
*/
|
||||
nsTextFragment& operator=(const PRUnichar* aString);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the
|
||||
* the argument string.
|
||||
*/
|
||||
nsTextFragment& operator=(const nsAReadableString& aString);
|
||||
|
||||
/**
|
||||
* Return PR_TRUE if this fragment is represented by PRUnichar data
|
||||
*/
|
||||
PRBool Is2b() const {
|
||||
return mState.mIs2b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a pointer to constant PRUnichar data.
|
||||
*/
|
||||
const PRUnichar* Get2b() const {
|
||||
NS_ASSERTION(Is2b(), "not 2b text");
|
||||
return m2b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a pointer to constant char data.
|
||||
*/
|
||||
const char* Get1b() const {
|
||||
NS_ASSERTION(!Is2b(), "not 1b text");
|
||||
return (const char*) m1b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the length of the fragment. The length is the number of logical
|
||||
* characters, not the number of bytes to store the characters.
|
||||
*/
|
||||
PRInt32 GetLength() const {
|
||||
return PRInt32(mState.mLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutable version of Get2b. Only works for a non-const object.
|
||||
* Returns a pointer to the PRUnichar data.
|
||||
*/
|
||||
PRUnichar* Get2b() {
|
||||
NS_ASSERTION(Is2b(), "not 2b text");
|
||||
return m2b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutable version of Get1b. Only works for a non-const object.
|
||||
* Returns a pointer to the char data.
|
||||
*/
|
||||
char* Get1b() {
|
||||
NS_ASSERTION(!Is2b(), "not 1b text");
|
||||
return (char*) m1b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be the given buffer and
|
||||
* length. The memory becomes owned by the fragment. In addition,
|
||||
* the memory for aBuffer must have been allocated using the
|
||||
* nsIMemory interface.
|
||||
*/
|
||||
void SetTo(PRUnichar* aBuffer, PRInt32 aLength, PRBool aRelease);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the given
|
||||
* buffer. Like operator= except a length is specified instead of
|
||||
* assuming 0 termination.
|
||||
*/
|
||||
void SetTo(const PRUnichar* aBuffer, PRInt32 aLength) {
|
||||
ReleaseText();
|
||||
if (0 != aLength) {
|
||||
// See if we need to store the data in ucs2 or not
|
||||
PRBool need2 = PR_FALSE;
|
||||
const PRUnichar* ucp = aBuffer;
|
||||
const PRUnichar* uend = aBuffer + aLength;
|
||||
while (ucp < uend) {
|
||||
PRUnichar ch = *ucp++;
|
||||
if (ch >> 8) {
|
||||
need2 = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (need2) {
|
||||
// Use ucs2 storage because we have to
|
||||
PRUnichar* nt = (PRUnichar*)nsMemory::Alloc(aLength*sizeof(PRUnichar));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
nsCRT::memcpy(nt, aBuffer, sizeof(PRUnichar) * aLength);
|
||||
|
||||
// Setup our fields
|
||||
m2b = nt;
|
||||
mState.mIs2b = 1;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Use 1 byte storage because we can
|
||||
unsigned char* nt = (unsigned char*)nsMemory::Alloc(aLength*sizeof(unsigned char));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
unsigned char* cp = nt;
|
||||
unsigned char* end = nt + aLength;
|
||||
while (cp < end) {
|
||||
*cp++ = (unsigned char) *aBuffer++;
|
||||
}
|
||||
|
||||
// Setup our fields
|
||||
m1b = nt;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the given
|
||||
* buffer. Like operator= except a length is specified instead of
|
||||
* assuming 0 termination.
|
||||
*/
|
||||
void SetTo(const char* aBuffer, PRInt32 aLength);
|
||||
|
||||
/**
|
||||
* Append the contents of this string fragment to aString
|
||||
*/
|
||||
void AppendTo(nsString& aString) const {
|
||||
if (mState.mIs2b) {
|
||||
aString.Append(m2b, mState.mLength);
|
||||
}
|
||||
else {
|
||||
aString.AppendWithConversion((char*)m1b, mState.mLength);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a copy of the fragments contents starting at offset for
|
||||
* count characters. The offset and count will be adjusted to
|
||||
* lie within the fragments data. The fragments data is converted if
|
||||
* necessary.
|
||||
*/
|
||||
void CopyTo(PRUnichar* aDest, PRInt32 aOffset, PRInt32 aCount);
|
||||
|
||||
/**
|
||||
* Make a copy of the fragments contents starting at offset for
|
||||
* count characters. The offset and count will be adjusted to
|
||||
* lie within the fragments data. The fragments data is converted if
|
||||
* necessary.
|
||||
*/
|
||||
void CopyTo(char* aDest, PRInt32 aOffset, PRInt32 aCount);
|
||||
|
||||
/**
|
||||
* Return the character in the text-fragment at the given
|
||||
* index. This always returns a PRUnichar.
|
||||
*/
|
||||
PRUnichar CharAt(PRInt32 aIndex) const {
|
||||
NS_ASSERTION(PRUint32(aIndex) < mState.mLength, "bad index");
|
||||
return mState.mIs2b ? m2b[aIndex] : PRUnichar(m1b[aIndex]);
|
||||
}
|
||||
|
||||
protected:
|
||||
union {
|
||||
PRUnichar* m2b;
|
||||
unsigned char* m1b;
|
||||
};
|
||||
|
||||
public:
|
||||
struct FragmentBits {
|
||||
PRUint32 mInHeap : 1;
|
||||
PRUint32 mIs2b : 1;
|
||||
PRUint32 mLength : 30;
|
||||
};
|
||||
|
||||
protected:
|
||||
union {
|
||||
PRUint32 mAllBits;
|
||||
FragmentBits mState;
|
||||
};
|
||||
|
||||
void ReleaseText() {
|
||||
if (mState.mLength && m1b && mState.mInHeap) {
|
||||
if (mState.mIs2b) {
|
||||
nsMemory::Free(m2b);
|
||||
}
|
||||
else {
|
||||
nsMemory::Free(m1b);
|
||||
}
|
||||
}
|
||||
m1b = nsnull;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 0;
|
||||
mState.mLength = 0;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* nsTextFragment_h___ */
|
||||
|
||||
@@ -46,7 +46,6 @@ CPPSRCS = \
|
||||
nsGenericDOMDataNode.cpp \
|
||||
nsGenericDOMNodeList.cpp \
|
||||
nsGenericElement.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsContentUtils.cpp \
|
||||
nsNameSpaceManager.cpp \
|
||||
nsNodeInfo.cpp \
|
||||
@@ -56,7 +55,6 @@ CPPSRCS = \
|
||||
nsStyleContext.cpp \
|
||||
nsStyleSet.cpp \
|
||||
nsTextContentChangeData.cpp \
|
||||
nsTextFragment.cpp \
|
||||
nsTextNode.cpp \
|
||||
nsXMLContentSerializer.cpp \
|
||||
nsHTMLContentSerializer.cpp \
|
||||
|
||||
@@ -57,7 +57,6 @@ CPPSRCS = \
|
||||
nsHTMLContentSerializer.cpp \
|
||||
nsParserUtils.cpp \
|
||||
nsPlainTextSerializer.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsContentUtils.cpp \
|
||||
$(NULL)
|
||||
|
||||
@@ -84,7 +83,6 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsNameSpaceManager.obj \
|
||||
.\$(OBJDIR)\nsNodeInfo.obj \
|
||||
.\$(OBJDIR)\nsNodeInfoManager.obj \
|
||||
.\$(OBJDIR)\nsTextFragment.obj \
|
||||
.\$(OBJDIR)\nsSelection.obj \
|
||||
.\$(OBJDIR)\nsRange.obj \
|
||||
.\$(OBJDIR)\nsTextContentChangeData.obj \
|
||||
@@ -93,7 +91,6 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsHTMLContentSerializer.obj \
|
||||
.\$(OBJDIR)\nsParserUtils.obj \
|
||||
.\$(OBJDIR)\nsPlainTextSerializer.obj \
|
||||
.\$(OBJDIR)\nsLayoutAtoms.obj \
|
||||
.\$(OBJDIR)\nsContentUtils.obj \
|
||||
$(NULL)
|
||||
|
||||
|
||||
@@ -22,9 +22,20 @@
|
||||
|
||||
#include "nsHTMLValue.h"
|
||||
#include "nsString.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsISizeOfHandler.h"
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit <= eHTMLUnit_Empty), "not a valueless unit");
|
||||
if (aUnit > eHTMLUnit_Empty) {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
}
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
@@ -50,6 +61,21 @@ nsHTMLValue::nsHTMLValue(float aValue)
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(const nsAReadableString& aValue, nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit), "not a string value");
|
||||
if ((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit)) {
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nsISupports* aValue)
|
||||
: mUnit(eHTMLUnit_ISupports)
|
||||
{
|
||||
@@ -89,6 +115,11 @@ nsHTMLValue::nsHTMLValue(const nsHTMLValue& aCopy)
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue::~nsHTMLValue(void)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
nsHTMLValue& nsHTMLValue::operator=(const nsHTMLValue& aCopy)
|
||||
{
|
||||
Reset();
|
||||
@@ -153,6 +184,21 @@ PRUint32 nsHTMLValue::HashValue(void) const
|
||||
}
|
||||
|
||||
|
||||
void nsHTMLValue::Reset(void)
|
||||
{
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
nsCRT::free(mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
NS_IF_RELEASE(mValue.mISupports);
|
||||
}
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
|
||||
void nsHTMLValue::SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
{
|
||||
Reset();
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "nsColor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
enum nsHTMLUnit {
|
||||
eHTMLUnit_Null = 0, // (n/a) null unit, value is not specified
|
||||
@@ -46,39 +45,14 @@ enum nsHTMLUnit {
|
||||
|
||||
class nsHTMLValue {
|
||||
public:
|
||||
nsHTMLValue(nsHTMLUnit aUnit = eHTMLUnit_Null) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit <= eHTMLUnit_Empty), "not a valueless unit");
|
||||
if (aUnit > eHTMLUnit_Empty) {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
}
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
nsHTMLValue(nsHTMLUnit aUnit = eHTMLUnit_Null);
|
||||
nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
nsHTMLValue(float aValue);
|
||||
nsHTMLValue(const nsAReadableString& aValue,
|
||||
nsHTMLUnit aUnit = eHTMLUnit_String) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit), "not a string value");
|
||||
if ((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit)) {
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue(const nsAReadableString& aValue, nsHTMLUnit aUnit = eHTMLUnit_String);
|
||||
nsHTMLValue(nsISupports* aValue);
|
||||
nsHTMLValue(nscolor aValue);
|
||||
nsHTMLValue(const nsHTMLValue& aCopy);
|
||||
~nsHTMLValue(void)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
~nsHTMLValue(void);
|
||||
|
||||
nsHTMLValue& operator=(const nsHTMLValue& aCopy);
|
||||
PRBool operator==(const nsHTMLValue& aOther) const;
|
||||
@@ -93,19 +67,7 @@ public:
|
||||
nsISupports* GetISupportsValue(void) const;
|
||||
nscolor GetColorValue(void) const;
|
||||
|
||||
void Reset(void) {
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
nsCRT::free(mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
NS_IF_RELEASE(mValue.mISupports);
|
||||
}
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
void Reset(void);
|
||||
void SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
void SetPixelValue(PRInt32 aValue);
|
||||
void SetPercentValue(float aValue);
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsLayoutAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define LAYOUT_ATOM(_name, _value) nsIAtom* nsLayoutAtoms::_name;
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsLayoutAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define LAYOUT_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsLayoutAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define LAYOUT_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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 Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsTextFragment.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
nsTextFragment::nsTextFragment(const nsTextFragment& aOther)
|
||||
: m1b(nsnull),
|
||||
mAllBits(0)
|
||||
{
|
||||
if (aOther.Is2b()) {
|
||||
SetTo(aOther.Get2b(), aOther.GetLength());
|
||||
}
|
||||
else {
|
||||
SetTo(aOther.Get1b(), aOther.GetLength());
|
||||
}
|
||||
}
|
||||
|
||||
nsTextFragment::nsTextFragment(const char* aString)
|
||||
: m1b(nsnull),
|
||||
mAllBits(0)
|
||||
{
|
||||
SetTo(aString, strlen(aString));
|
||||
}
|
||||
|
||||
nsTextFragment::nsTextFragment(const nsString& aString)
|
||||
: m1b(nsnull),
|
||||
mAllBits(0)
|
||||
{
|
||||
SetTo(aString.GetUnicode(), aString.Length());
|
||||
}
|
||||
|
||||
nsTextFragment&
|
||||
nsTextFragment::operator=(const nsTextFragment& aOther)
|
||||
{
|
||||
if (aOther.Is2b()) {
|
||||
SetTo(aOther.Get2b(), aOther.GetLength());
|
||||
}
|
||||
else {
|
||||
SetTo(aOther.Get1b(), aOther.GetLength());
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
nsTextFragment&
|
||||
nsTextFragment::operator=(const char* aString)
|
||||
{
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
return *this;
|
||||
}
|
||||
|
||||
nsTextFragment&
|
||||
nsTextFragment::operator=(const PRUnichar* aString)
|
||||
{
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
return *this;
|
||||
}
|
||||
|
||||
nsTextFragment&
|
||||
nsTextFragment::operator=(const nsAReadableString& aString)
|
||||
{
|
||||
ReleaseText();
|
||||
|
||||
PRUint32 length = aString.Length();
|
||||
if (length > 0) {
|
||||
if (IsASCII(aString)) {
|
||||
m1b = NS_REINTERPRET_CAST(unsigned char *, ToNewCString(aString));
|
||||
mState.mIs2b = 0;
|
||||
}
|
||||
else {
|
||||
m2b = ToNewUnicode(aString);
|
||||
mState.mIs2b = 1;
|
||||
}
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = (PRInt32)length;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::SetTo(PRUnichar* aBuffer, PRInt32 aLength, PRBool aRelease)
|
||||
{
|
||||
ReleaseText();
|
||||
|
||||
m2b = aBuffer;
|
||||
mState.mIs2b = 1;
|
||||
mState.mInHeap = aRelease ? 1 : 0;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::SetTo(const char* aBuffer, PRInt32 aLength)
|
||||
{
|
||||
ReleaseText();
|
||||
if (0 != aLength) {
|
||||
unsigned char* nt = (unsigned char*)nsMemory::Alloc(aLength*sizeof(unsigned char));
|
||||
if (nsnull != nt) {
|
||||
nsCRT::memcpy(nt, aBuffer, sizeof(unsigned char) * aLength);
|
||||
|
||||
m1b = nt;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::CopyTo(PRUnichar* aDest, PRInt32 aOffset, PRInt32 aCount)
|
||||
{
|
||||
if (aOffset < 0) aOffset = 0;
|
||||
if (aOffset + aCount > GetLength()) {
|
||||
aCount = mState.mLength - aOffset;
|
||||
}
|
||||
if (0 != aCount) {
|
||||
if (mState.mIs2b) {
|
||||
nsCRT::memcpy(aDest, m2b + aOffset, sizeof(PRUnichar) * aCount);
|
||||
}
|
||||
else {
|
||||
unsigned char* cp = m1b + aOffset;
|
||||
unsigned char* end = cp + aCount;
|
||||
while (cp < end) {
|
||||
*aDest++ = PRUnichar(*cp++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::CopyTo(char* aDest, PRInt32 aOffset, PRInt32 aCount)
|
||||
{
|
||||
if (aOffset < 0) aOffset = 0;
|
||||
if (aOffset + aCount > GetLength()) {
|
||||
aCount = mState.mLength - aOffset;
|
||||
}
|
||||
if (0 != aCount) {
|
||||
if (mState.mIs2b) {
|
||||
PRUnichar* cp = m2b + aOffset;
|
||||
PRUnichar* end = cp + aCount;
|
||||
while (cp < end) {
|
||||
*aDest++ = (unsigned char) (*cp++);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nsCRT::memcpy(aDest, m1b + aOffset, sizeof(char) * aCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,9 +24,7 @@
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsAWritableString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "nsMemory.h"
|
||||
class nsString;
|
||||
|
||||
// XXX should this normalize the code to keep a \u0000 at the end?
|
||||
|
||||
@@ -67,9 +65,7 @@ public:
|
||||
mAllBits = 0;
|
||||
}
|
||||
|
||||
~nsTextFragment() {
|
||||
ReleaseText();
|
||||
}
|
||||
~nsTextFragment();
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
@@ -87,10 +83,7 @@ public:
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument ucs2 string.
|
||||
*/
|
||||
nsTextFragment(const PRUnichar* aString) : m1b(nsnull), mAllBits(0) {
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
}
|
||||
|
||||
nsTextFragment(const PRUnichar* aString);
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
@@ -184,55 +177,7 @@ public:
|
||||
* buffer. Like operator= except a length is specified instead of
|
||||
* assuming 0 termination.
|
||||
*/
|
||||
void SetTo(const PRUnichar* aBuffer, PRInt32 aLength) {
|
||||
ReleaseText();
|
||||
if (0 != aLength) {
|
||||
// See if we need to store the data in ucs2 or not
|
||||
PRBool need2 = PR_FALSE;
|
||||
const PRUnichar* ucp = aBuffer;
|
||||
const PRUnichar* uend = aBuffer + aLength;
|
||||
while (ucp < uend) {
|
||||
PRUnichar ch = *ucp++;
|
||||
if (ch >> 8) {
|
||||
need2 = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (need2) {
|
||||
// Use ucs2 storage because we have to
|
||||
PRUnichar* nt = (PRUnichar*)nsMemory::Alloc(aLength*sizeof(PRUnichar));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
nsCRT::memcpy(nt, aBuffer, sizeof(PRUnichar) * aLength);
|
||||
|
||||
// Setup our fields
|
||||
m2b = nt;
|
||||
mState.mIs2b = 1;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Use 1 byte storage because we can
|
||||
unsigned char* nt = (unsigned char*)nsMemory::Alloc(aLength*sizeof(unsigned char));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
unsigned char* cp = nt;
|
||||
unsigned char* end = nt + aLength;
|
||||
while (cp < end) {
|
||||
*cp++ = (unsigned char) *aBuffer++;
|
||||
}
|
||||
|
||||
// Setup our fields
|
||||
m1b = nt;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void SetTo(const PRUnichar* aBuffer, PRInt32 aLength);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the given
|
||||
@@ -244,14 +189,7 @@ public:
|
||||
/**
|
||||
* Append the contents of this string fragment to aString
|
||||
*/
|
||||
void AppendTo(nsString& aString) const {
|
||||
if (mState.mIs2b) {
|
||||
aString.Append(m2b, mState.mLength);
|
||||
}
|
||||
else {
|
||||
aString.AppendWithConversion((char*)m1b, mState.mLength);
|
||||
}
|
||||
}
|
||||
void AppendTo(nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Make a copy of the fragments contents starting at offset for
|
||||
@@ -297,20 +235,7 @@ protected:
|
||||
FragmentBits mState;
|
||||
};
|
||||
|
||||
void ReleaseText() {
|
||||
if (mState.mLength && m1b && mState.mInHeap) {
|
||||
if (mState.mIs2b) {
|
||||
nsMemory::Free(m2b);
|
||||
}
|
||||
else {
|
||||
nsMemory::Free(m1b);
|
||||
}
|
||||
}
|
||||
m1b = nsnull;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 0;
|
||||
mState.mLength = 0;
|
||||
}
|
||||
void ReleaseText();
|
||||
};
|
||||
|
||||
#endif /* nsTextFragment_h___ */
|
||||
|
||||
@@ -3,4 +3,3 @@
|
||||
#
|
||||
|
||||
nsContentCID.h
|
||||
gbdate.h
|
||||
|
||||
@@ -45,11 +45,10 @@ ifndef MKSHLIB_FORCE_ALL
|
||||
CPPSRCS += dlldeps.cpp
|
||||
endif
|
||||
|
||||
EXPORTS = nsContentCID.h $(BUILD_DATE)
|
||||
EXPORTS = nsContentCID.h
|
||||
|
||||
SHARED_LIBRARY_LIBS = \
|
||||
$(DIST)/lib/libgkconevents_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconhtmlbase_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconhtmlcon_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconhtmldoc_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconhtmlstyle_s.$(LIB_SUFFIX) \
|
||||
@@ -61,6 +60,7 @@ SHARED_LIBRARY_LIBS = \
|
||||
$(DIST)/lib/libgkconxultmpl_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconxbl_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconbase_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconshared_s.$(LIB_SUFFIX) \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_PERF_METRICS
|
||||
@@ -80,8 +80,6 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
|
||||
EXPORT_OBJS = 1
|
||||
endif
|
||||
|
||||
GARBAGE += $(BUILD_DATE)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_HTML
|
||||
|
||||
@@ -38,7 +38,7 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsContentModule.obj \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS=nsContentCID.h $(BUILD_DATE)
|
||||
EXPORTS=nsContentCID.h
|
||||
|
||||
|
||||
MAKE_OBJ_TYPE = DLL
|
||||
@@ -62,7 +62,6 @@ LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor -I$(PUBLIC)\dom \
|
||||
# These are the libraries we need to link with to create the dll
|
||||
LLIBS= \
|
||||
$(DIST)\lib\contentbase_s.lib \
|
||||
$(DIST)\lib\contenthtmlbase_s.lib \
|
||||
$(DIST)\lib\contenthtmlcontent_s.lib \
|
||||
$(DIST)\lib\contenthtmldoc_s.lib \
|
||||
$(DIST)\lib\contenthtmlstyle_s.lib \
|
||||
@@ -74,6 +73,7 @@ LLIBS= \
|
||||
$(DIST)\lib\contentxultemplates_s.lib \
|
||||
$(DIST)\lib\contentxbl_s.lib \
|
||||
$(DIST)\lib\contentevents_s.lib \
|
||||
$(DIST)\lib\contentshared_s.lib \
|
||||
$(DIST)\lib\xpcom.lib \
|
||||
$(DIST)\lib\gkgfxwin.lib \
|
||||
$(DIST)\lib\timer_s.lib \
|
||||
|
||||
@@ -513,33 +513,6 @@ nsContentDLF::CreateXULDocumentFromStream(nsIInputStream& aXULStream,
|
||||
return status;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kDocumentFactoryImplCID, NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
|
||||
|
||||
static nsresult
|
||||
RegisterTypes(nsIComponentManager* aCompMgr,
|
||||
const char* aCommand,
|
||||
nsIFile* aPath,
|
||||
char** aTypes)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
while (*aTypes) {
|
||||
char contractid[500];
|
||||
char* contentType = *aTypes++;
|
||||
PR_snprintf(contractid, sizeof(contractid),
|
||||
NS_DOCUMENT_LOADER_FACTORY_CONTRACTID_PREFIX "%s;1?type=%s",
|
||||
aCommand, contentType);
|
||||
#ifdef NOISY_REGISTRY
|
||||
printf("Register %s => %s\n", contractid, aPath);
|
||||
#endif
|
||||
rv = aCompMgr->RegisterComponentSpec(kDocumentFactoryImplCID, "Content",
|
||||
contractid, aPath, PR_TRUE, PR_TRUE);
|
||||
if (NS_FAILED(rv)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsContentModule::RegisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
nsIFile* aPath)
|
||||
@@ -549,6 +522,8 @@ nsContentModule::RegisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kDocumentFactoryImplCID, NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
|
||||
|
||||
void
|
||||
nsContentModule::UnregisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
nsIFile* aPath)
|
||||
|
||||
@@ -26,6 +26,6 @@ VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = base content document style
|
||||
DIRS = content document style
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape 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/NPL/
|
||||
#
|
||||
# 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) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = src
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape 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/NPL/
|
||||
#
|
||||
# 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) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = layout
|
||||
LIBRARY_NAME = gkconhtmlbase_s
|
||||
REQUIRES = xpcom string dom widget locale view necko js caps pref htmlparser webshell plugin timer docshell mime webbrwsr oji util uriloader rdf unicharutil lwbrk
|
||||
|
||||
CPPSRCS = \
|
||||
nsHTMLAtoms.cpp \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
override NO_SHARED_LIB=1
|
||||
override NO_STATIC_LIB=
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_HTML
|
||||
|
||||
INCLUDES += \
|
||||
-I$(srcdir)/../../../xul/base/src \
|
||||
-I$(srcdir)/../../../xul/content/src \
|
||||
-I$(srcdir)/../../style/src \
|
||||
-I$(srcdir)/../../forms/src \
|
||||
-I$(srcdir)/../../../base/src \
|
||||
-I$(srcdir) \
|
||||
$(NULL)
|
||||
@@ -1,301 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all HTML atoms
|
||||
See nsHTMLAtoms.h for access to the atoms
|
||||
|
||||
It is designed to be used as inline input to nsHTMLAtoms.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro HTML_ATOM which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
The first argument to HTML_ATOM is the C++ name of the atom
|
||||
The second argument it HTML_ATOM is the string value of the atom
|
||||
|
||||
******/
|
||||
|
||||
HTML_ATOM(mozAnonymousBlock, ":-moz-anonymous-block")
|
||||
HTML_ATOM(mozAnonymousPositionedBlock, ":-moz-anonymous-positioned-block")
|
||||
HTML_ATOM(mozFirstLineFixup, ":-moz-first-line-fixup")
|
||||
HTML_ATOM(mozLetterFrame, ":-moz-letter-frame")
|
||||
HTML_ATOM(mozLineFrame, ":-moz-line-frame")
|
||||
HTML_ATOM(mozListBulletPseudo, ":-moz-list-bullet")
|
||||
HTML_ATOM(mozSingleLineTextControlFrame, ":-moz-singleline-textcontrol-frame")
|
||||
HTML_ATOM(mozFocusInnerPseudo, ":-moz-focus-inner")
|
||||
HTML_ATOM(mozFocusOuterPseudo, ":-moz-focus-outer")
|
||||
HTML_ATOM(mozDisplayComboboxControlFrame, ":-moz-display-comboboxcontrol-frame")
|
||||
|
||||
HTML_ATOM(_baseHref, NS_HTML_BASE_HREF)
|
||||
HTML_ATOM(_baseTarget, NS_HTML_BASE_TARGET)
|
||||
HTML_ATOM(a, "a")
|
||||
HTML_ATOM(abbr, "abbr")
|
||||
HTML_ATOM(above, "above")
|
||||
HTML_ATOM(accept, "accept")
|
||||
HTML_ATOM(acceptcharset, "accept-charset")
|
||||
HTML_ATOM(accesskey, "accesskey")
|
||||
HTML_ATOM(action, "action")
|
||||
HTML_ATOM(align, "align")
|
||||
HTML_ATOM(alink, "alink")
|
||||
HTML_ATOM(alt, "alt")
|
||||
HTML_ATOM(applet, "applet")
|
||||
HTML_ATOM(archive, "archive")
|
||||
HTML_ATOM(area, "area")
|
||||
HTML_ATOM(axis, "axis")
|
||||
HTML_ATOM(background, "background")
|
||||
HTML_ATOM(below, "below")
|
||||
HTML_ATOM(bgcolor, "bgcolor")
|
||||
HTML_ATOM(blockquote, "blockquote")
|
||||
HTML_ATOM(body, "body")
|
||||
HTML_ATOM(border, "border")
|
||||
HTML_ATOM(bordercolor, "bordercolor")
|
||||
HTML_ATOM(bottompadding, "bottompadding")
|
||||
HTML_ATOM(br, "br")
|
||||
HTML_ATOM(b, "b")
|
||||
HTML_ATOM(button, "button")
|
||||
HTML_ATOM(buttonContentPseudo, ":button-content")
|
||||
HTML_ATOM(caption, "caption")
|
||||
HTML_ATOM(cellContentPseudo, ":cell-content")
|
||||
HTML_ATOM(cellpadding, "cellpadding")
|
||||
HTML_ATOM(cellspacing, "cellspacing")
|
||||
HTML_ATOM(ch, "ch")
|
||||
HTML_ATOM(_char, "char")
|
||||
HTML_ATOM(charoff, "charoff")
|
||||
HTML_ATOM(charset, "charset")
|
||||
HTML_ATOM(checked, "checked")
|
||||
HTML_ATOM(cite, "cite")
|
||||
HTML_ATOM(kClass, "class")
|
||||
HTML_ATOM(classid, "classid")
|
||||
HTML_ATOM(clear, "clear")
|
||||
HTML_ATOM(clip, "clip")
|
||||
HTML_ATOM(code, "code")
|
||||
HTML_ATOM(codebase, "codebase")
|
||||
HTML_ATOM(codetype, "codetype")
|
||||
HTML_ATOM(color, "color")
|
||||
HTML_ATOM(col, "col")
|
||||
HTML_ATOM(colgroup, "colgroup")
|
||||
HTML_ATOM(cols, "cols")
|
||||
HTML_ATOM(colspan, "colspan")
|
||||
HTML_ATOM(combobox, "combobox")
|
||||
HTML_ATOM(columnPseudo, ":body-column")
|
||||
HTML_ATOM(commentPseudo, ":-moz-comment")
|
||||
HTML_ATOM(compact, "compact")
|
||||
HTML_ATOM(content, "content")
|
||||
HTML_ATOM(coords, "coords")
|
||||
HTML_ATOM(dd, "dd")
|
||||
HTML_ATOM(defaultchecked, "defaultchecked")
|
||||
HTML_ATOM(defaultselected, "defaultselected")
|
||||
HTML_ATOM(defaultvalue, "defaultvalue")
|
||||
HTML_ATOM(declare, "declare")
|
||||
HTML_ATOM(defer, "defer")
|
||||
HTML_ATOM(dir, "dir")
|
||||
HTML_ATOM(div, "div")
|
||||
HTML_ATOM(disabled, "disabled")
|
||||
HTML_ATOM(dl, "dl")
|
||||
HTML_ATOM(dropDownListPseudo, ":-moz-dropdown-list")
|
||||
HTML_ATOM(dt, "dt")
|
||||
|
||||
HTML_ATOM(datetime, "datetime")
|
||||
HTML_ATOM(data, "data")
|
||||
HTML_ATOM(dfn, "dfn")
|
||||
HTML_ATOM(em, "em")
|
||||
HTML_ATOM(embed, "embed")
|
||||
HTML_ATOM(encoding, "encoding")
|
||||
HTML_ATOM(enctype, "enctype")
|
||||
HTML_ATOM(face, "face")
|
||||
HTML_ATOM(fieldset, "fieldset")
|
||||
HTML_ATOM(fieldsetContentPseudo, ":fieldset-content")
|
||||
HTML_ATOM(firstLetterPseudo, ":first-letter")
|
||||
HTML_ATOM(firstLinePseudo, ":first-line")
|
||||
HTML_ATOM(font, "font")
|
||||
HTML_ATOM(fontWeight, "font-weight")
|
||||
HTML_ATOM(_for, "for")
|
||||
HTML_ATOM(form, "form")
|
||||
HTML_ATOM(frame, "frame")
|
||||
HTML_ATOM(frameborder, "frameborder")
|
||||
HTML_ATOM(frameset, "frameset")
|
||||
HTML_ATOM(framesetBlankPseudo, ":frameset-blank")
|
||||
HTML_ATOM(gutter, "gutter")
|
||||
HTML_ATOM(h1, "h1")
|
||||
HTML_ATOM(h2, "h2")
|
||||
HTML_ATOM(h3, "h3")
|
||||
HTML_ATOM(h4, "h4")
|
||||
HTML_ATOM(h5, "h5")
|
||||
HTML_ATOM(h6, "h6")
|
||||
HTML_ATOM(head, "head")
|
||||
HTML_ATOM(headerContentBase, "content-base")
|
||||
HTML_ATOM(headerContentLanguage, "content-language")
|
||||
HTML_ATOM(headerContentScriptType, "content-script-type")
|
||||
HTML_ATOM(headerContentStyleType, "content-style-type")
|
||||
HTML_ATOM(headerContentType, "content-type")
|
||||
HTML_ATOM(headerDefaultStyle, "default-style")
|
||||
HTML_ATOM(headerWindowTarget, "window-target")
|
||||
HTML_ATOM(headers, "headers")
|
||||
HTML_ATOM(height, "height")
|
||||
HTML_ATOM(hidden, "hidden")
|
||||
HTML_ATOM(horizontalFramesetBorderPseudo, ":hframeset-border")
|
||||
HTML_ATOM(hr, "hr")
|
||||
HTML_ATOM(href, "href")
|
||||
HTML_ATOM(hreflang, "hreflang")
|
||||
HTML_ATOM(hspace, "hspace")
|
||||
HTML_ATOM(html, "html")
|
||||
HTML_ATOM(httpEquiv, "http-equiv")
|
||||
HTML_ATOM(ibPseudo, ":ib-pseudo")
|
||||
HTML_ATOM(i, "i")
|
||||
HTML_ATOM(id, "id")
|
||||
HTML_ATOM(iframe, "iframe")
|
||||
HTML_ATOM(ilayer, "ilayer")
|
||||
HTML_ATOM(img, "img")
|
||||
HTML_ATOM(index, "index")
|
||||
HTML_ATOM(input, "input")
|
||||
HTML_ATOM(isindex, "isindex")
|
||||
HTML_ATOM(ismap, "ismap")
|
||||
HTML_ATOM(label, "label")
|
||||
HTML_ATOM(labelContentPseudo, ":label-content")
|
||||
HTML_ATOM(lang, "lang")
|
||||
HTML_ATOM(layer, "layer")
|
||||
HTML_ATOM(layout, "layout")
|
||||
HTML_ATOM(li, "li")
|
||||
HTML_ATOM(link, "link")
|
||||
HTML_ATOM(left, "left")
|
||||
HTML_ATOM(leftpadding, "leftpadding")
|
||||
HTML_ATOM(legend, "legend")
|
||||
HTML_ATOM(legendContentPseudo, ":legend-content")
|
||||
HTML_ATOM(length, "length")
|
||||
HTML_ATOM(longdesc, "longdesc")
|
||||
HTML_ATOM(lowsrc, "lowsrc")
|
||||
HTML_ATOM(marginheight, "marginheight")
|
||||
HTML_ATOM(marginwidth, "marginwidth")
|
||||
HTML_ATOM(maxlength, "maxlength")
|
||||
HTML_ATOM(mayscript, "mayscript")
|
||||
HTML_ATOM(media, "media")
|
||||
HTML_ATOM(menu, "menu")
|
||||
HTML_ATOM(meta, "meta")
|
||||
HTML_ATOM(method, "method")
|
||||
HTML_ATOM(multicol, "multicol")
|
||||
HTML_ATOM(multiple, "multiple")
|
||||
HTML_ATOM(name, "name")
|
||||
HTML_ATOM(nohref, "nohref")
|
||||
HTML_ATOM(noresize, "noresize")
|
||||
HTML_ATOM(noscript, "noscript")
|
||||
HTML_ATOM(noshade, "noshade")
|
||||
HTML_ATOM(nowrap, "nowrap")
|
||||
HTML_ATOM(object, "object")
|
||||
HTML_ATOM(ol, "ol")
|
||||
HTML_ATOM(option, "option")
|
||||
HTML_ATOM(overflow, "overflow")
|
||||
HTML_ATOM(p, "p")
|
||||
HTML_ATOM(pagex, "pagex")
|
||||
HTML_ATOM(pagey, "pagey")
|
||||
HTML_ATOM(param, "param")
|
||||
HTML_ATOM(placeholderPseudo, ":placeholder-frame")
|
||||
HTML_ATOM(pointSize, "point-size")
|
||||
HTML_ATOM(pre, "pre")
|
||||
HTML_ATOM(processingInstructionPseudo, ":-moz-pi")
|
||||
HTML_ATOM(profile, "profile")
|
||||
HTML_ATOM(prompt, "prompt")
|
||||
HTML_ATOM(radioPseudo, ":-moz-radio")
|
||||
HTML_ATOM(checkPseudo, ":-moz-checkbox")
|
||||
HTML_ATOM(readonly, "readonly")
|
||||
HTML_ATOM(refresh, "refresh")
|
||||
HTML_ATOM(rel, "rel")
|
||||
HTML_ATOM(repeat, "repeat")
|
||||
HTML_ATOM(rev, "rev")
|
||||
HTML_ATOM(rightpadding, "rightpadding")
|
||||
HTML_ATOM(rows, "rows")
|
||||
HTML_ATOM(rowspan, "rowspan")
|
||||
HTML_ATOM(rules, "rules")
|
||||
HTML_ATOM(s, "s")
|
||||
HTML_ATOM(scheme, "scheme")
|
||||
HTML_ATOM(scope, "scope")
|
||||
HTML_ATOM(script, "script")
|
||||
HTML_ATOM(scrolling, "scrolling")
|
||||
HTML_ATOM(select, "select")
|
||||
HTML_ATOM(selected, "selected")
|
||||
HTML_ATOM(selectedindex, "selectedindex")
|
||||
HTML_ATOM(setcookie, "set-cookie")
|
||||
HTML_ATOM(shape, "shape")
|
||||
HTML_ATOM(size, "size")
|
||||
HTML_ATOM(spacer, "spacer")
|
||||
HTML_ATOM(span, "span")
|
||||
HTML_ATOM(src, "src")
|
||||
HTML_ATOM(standby, "standby")
|
||||
HTML_ATOM(start, "start")
|
||||
HTML_ATOM(strike, "strike")
|
||||
HTML_ATOM(strong, "strong")
|
||||
HTML_ATOM(style, "style")
|
||||
HTML_ATOM(summary, "summary")
|
||||
HTML_ATOM(suppress, "suppress")
|
||||
HTML_ATOM(tabindex, "tabindex")
|
||||
HTML_ATOM(table, "table")
|
||||
HTML_ATOM(tablePseudo, ":table")
|
||||
HTML_ATOM(tableCellPseudo, ":table-cell")
|
||||
HTML_ATOM(tableColGroupPseudo, ":table-column-group")
|
||||
HTML_ATOM(tableColPseudo, ":table-column")
|
||||
HTML_ATOM(tableOuterPseudo, ":table-outer")
|
||||
HTML_ATOM(tableRowGroupPseudo, ":table-row-group")
|
||||
HTML_ATOM(tableRowPseudo, ":table-row")
|
||||
HTML_ATOM(tabstop, "tabstop")
|
||||
HTML_ATOM(target, "target")
|
||||
HTML_ATOM(tbody, "tbody")
|
||||
HTML_ATOM(td, "td")
|
||||
HTML_ATOM(tfoot, "tfoot")
|
||||
HTML_ATOM(thead, "thead")
|
||||
HTML_ATOM(text, "text")
|
||||
HTML_ATOM(textarea, "textarea")
|
||||
HTML_ATOM(textPseudo, ":-moz-text")
|
||||
HTML_ATOM(th, "th")
|
||||
HTML_ATOM(title, "title")
|
||||
HTML_ATOM(top, "top")
|
||||
HTML_ATOM(toppadding, "toppadding")
|
||||
HTML_ATOM(tr, "tr")
|
||||
HTML_ATOM(tt, "tt")
|
||||
HTML_ATOM(type, "type")
|
||||
HTML_ATOM(u, "u")
|
||||
HTML_ATOM(ul, "ul")
|
||||
HTML_ATOM(usemap, "usemap")
|
||||
HTML_ATOM(valign, "valign")
|
||||
HTML_ATOM(value, "value")
|
||||
HTML_ATOM(valuetype, "valuetype")
|
||||
HTML_ATOM(variable, "variable")
|
||||
HTML_ATOM(vcard_name, "vcard_name")
|
||||
HTML_ATOM(version, "version")
|
||||
HTML_ATOM(verticalFramesetBorderPseudo, ":vframeset-border")
|
||||
HTML_ATOM(visibility, "visibility")
|
||||
HTML_ATOM(vlink, "vlink")
|
||||
HTML_ATOM(vspace, "vspace")
|
||||
HTML_ATOM(wbr, "wbr")
|
||||
HTML_ATOM(width, "width")
|
||||
HTML_ATOM(wrap, "wrap")
|
||||
HTML_ATOM(wrappedFramePseudo, ":wrapped-frame")
|
||||
HTML_ATOM(zindex, "zindex")
|
||||
HTML_ATOM(z_index, "z-index")
|
||||
|
||||
HTML_ATOM(moz_tristate, "moz-tristate")
|
||||
HTML_ATOM(moz_tristatevalue, "moz-tristatevalue")
|
||||
|
||||
#ifdef DEBUG
|
||||
HTML_ATOM(iform, "IForm")
|
||||
HTML_ATOM(form_control_list, "FormControlList")
|
||||
#endif
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsHTMLAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define HTML_ATOM(_name, _value) nsIAtom* nsHTMLAtoms::_name;
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsHTMLAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define HTML_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsHTMLAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define HTML_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsHTMLAtoms_h___
|
||||
#define nsHTMLAtoms_h___
|
||||
|
||||
#include "nsIAtom.h"
|
||||
|
||||
#define NS_HTML_BASE_HREF "_base_href"
|
||||
#define NS_HTML_BASE_TARGET "_base_target"
|
||||
|
||||
/**
|
||||
* This class wraps up the creation (and destruction) of the standard
|
||||
* set of html atoms used during normal html handling. This objects
|
||||
* are created when the first html content object is created and they
|
||||
* are destroyed when the last html content object is destroyed.
|
||||
*/
|
||||
class nsHTMLAtoms {
|
||||
public:
|
||||
|
||||
static void AddRefAtoms();
|
||||
static void ReleaseAtoms();
|
||||
|
||||
/* Declare all atoms
|
||||
|
||||
The atom names and values are stored in nsHTMLAtomList.h and
|
||||
are brought to you by the magic of C preprocessing
|
||||
|
||||
Add new atoms to nsHTMLAtomList and all support logic will be auto-generated
|
||||
*/
|
||||
#define HTML_ATOM(_name, _value) static nsIAtom* _name;
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
};
|
||||
|
||||
#endif /* nsHTMLAtoms_h___ */
|
||||
@@ -44,7 +44,6 @@
|
||||
#include "nsIURL.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsIWebShell.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
DEPTH=..\..
|
||||
|
||||
DIRS = base content document style
|
||||
DIRS = content document style
|
||||
# tests is now done after we build content/events
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:content directory
|
||||
#
|
||||
nsCSSAtomList.h
|
||||
nsCSSAtoms.h
|
||||
nsIComputedDOMStyle.h
|
||||
nsICSSLoader.h
|
||||
nsICSSLoaderObserver.h
|
||||
nsICSSParser.h
|
||||
nsICSSPseudoComparator.h
|
||||
nsICSSStyleSheet.h
|
||||
nsStyleUtil.h
|
||||
|
||||
@@ -29,13 +29,10 @@ include $(DEPTH)/config/autoconf.mk
|
||||
MODULE = layout
|
||||
|
||||
EXPORTS = \
|
||||
nsCSSAtoms.h \
|
||||
nsCSSAtomList.h \
|
||||
nsICSSLoader.h \
|
||||
nsICSSParser.h \
|
||||
nsICSSPseudoComparator.h \
|
||||
nsICSSStyleSheet.h \
|
||||
nsStyleUtil.h \
|
||||
nsICSSLoaderObserver.h \
|
||||
nsIComputedDOMStyle.h \
|
||||
$(NULL)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
DEPTH=..\..\..\..
|
||||
|
||||
EXPORTS=nsCSSAtoms.h nsCSSAtomList.h nsICSSLoader.h nsICSSParser.h nsICSSPseudoComparator.h nsICSSStyleSheet.h nsStyleUtil.h nsICSSLoaderObserver.h nsIComputedDOMStyle.h
|
||||
EXPORTS=nsICSSLoader.h nsICSSParser.h nsICSSPseudoComparator.h nsICSSStyleSheet.h nsICSSLoaderObserver.h nsIComputedDOMStyle.h
|
||||
MODULE=raptor
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all CSS nsIAtomsand their values
|
||||
|
||||
It is designed to be used as inline input to nsCSSAtoms.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro CSS_ATOM which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
The first argument to CSS_ATOM is the C++ identifier of the atom
|
||||
The second argument is the string value of the atom
|
||||
|
||||
******/
|
||||
|
||||
|
||||
CSS_ATOM(activePseudo, ":active")
|
||||
CSS_ATOM(afterPseudo, ":after")
|
||||
|
||||
CSS_ATOM(beforePseudo, ":before")
|
||||
|
||||
CSS_ATOM(buttonLabelPseudo, ":-moz-buttonlabel")
|
||||
|
||||
CSS_ATOM(checkedPseudo, ":checked")
|
||||
|
||||
CSS_ATOM(disabledPseudo, ":disabled")
|
||||
CSS_ATOM(dragOverPseudo, ":drag-over")
|
||||
CSS_ATOM(dragPseudo, ":drag")
|
||||
|
||||
CSS_ATOM(enabledPseudo, ":enabled")
|
||||
|
||||
CSS_ATOM(firstChildPseudo, ":first-child")
|
||||
CSS_ATOM(firstNodePseudo, ":first-node")
|
||||
CSS_ATOM(lastNodePseudo, ":last-node")
|
||||
CSS_ATOM(focusPseudo, ":focus")
|
||||
|
||||
CSS_ATOM(hoverPseudo, ":hover")
|
||||
|
||||
CSS_ATOM(langPseudo, ":lang")
|
||||
CSS_ATOM(linkPseudo, ":link")
|
||||
|
||||
CSS_ATOM(menuPseudo, ":menu")
|
||||
|
||||
CSS_ATOM(outOfDatePseudo, ":out-of-date")
|
||||
|
||||
CSS_ATOM(rootPseudo, ":root")
|
||||
|
||||
CSS_ATOM(selectionPseudo, ":selection")
|
||||
|
||||
CSS_ATOM(universalSelector, "*")
|
||||
|
||||
CSS_ATOM(visitedPseudo, ":visited")
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSAtoms_h___
|
||||
#define nsCSSAtoms_h___
|
||||
|
||||
#include "nsIAtom.h"
|
||||
|
||||
/**
|
||||
* This class wraps up the creation (and destruction) of the standard
|
||||
* set of CSS atoms used during normal CSS handling. These objects
|
||||
* are created when the first CSS style sheet is created and they
|
||||
* are destroyed when the last CSS style sheet is destroyed.
|
||||
*/
|
||||
class nsCSSAtoms {
|
||||
public:
|
||||
|
||||
static void AddRefAtoms();
|
||||
static void ReleaseAtoms();
|
||||
|
||||
|
||||
/* Declare all atoms
|
||||
|
||||
The atom names and values are stored in nsCSSAtomList.h and
|
||||
are brought to you by the magic of C preprocessing
|
||||
|
||||
Add new atoms to nsCSSAtomList and all support logic will be auto-generated
|
||||
*/
|
||||
#define CSS_ATOM(_name, _value) static nsIAtom* _name;
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
};
|
||||
|
||||
#endif /* nsCSSAtoms_h___ */
|
||||
@@ -1,13 +1,8 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:content directory
|
||||
#
|
||||
nsCSSKeywordList.h
|
||||
nsCSSKeywords.h
|
||||
nsCSSPropList.h
|
||||
nsCSSProps.h
|
||||
nsCSSValue.h
|
||||
nsDOMCSSDeclaration.h
|
||||
nsHTMLValue.h
|
||||
nsICSSCharsetRule.h
|
||||
nsICSSDeclaration.h
|
||||
nsICSSGroupRule.h
|
||||
|
||||
@@ -31,12 +31,9 @@ LIBRARY_NAME = gkconhtmlstyle_s
|
||||
REQUIRES = xpcom string dom widget timer caps editor locale js view necko webshell pref rdf xul htmlparser txmgr docshell uriloader unicharutil uconv xuldoc xpconnect
|
||||
|
||||
CPPSRCS = \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSDeclaration.cpp \
|
||||
nsCSSLoader.cpp \
|
||||
nsCSSParser.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsCSSScanner.cpp \
|
||||
nsCSSRule.cpp \
|
||||
nsCSSStyleRule.cpp \
|
||||
@@ -47,18 +44,12 @@ CPPSRCS = \
|
||||
nsHTMLAttributes.cpp \
|
||||
nsHTMLStyleSheet.cpp \
|
||||
nsHTMLCSSStyleSheet.cpp \
|
||||
nsHTMLValue.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
nsComputedDOMStyle.cpp \
|
||||
nsROCSSPrimitiveValue.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nsDOMCSSDeclaration.h \
|
||||
nsCSSKeywords.h \
|
||||
nsCSSKeywordList.h \
|
||||
nsCSSProps.h \
|
||||
nsCSSPropList.h \
|
||||
nsCSSValue.h \
|
||||
nsICSSStyleRuleProcessor.h \
|
||||
nsICSSRule.h \
|
||||
@@ -69,7 +60,6 @@ EXPORTS = \
|
||||
nsICSSMediaRule.h \
|
||||
nsICSSNameSpaceRule.h \
|
||||
nsICSSDeclaration.h \
|
||||
nsHTMLValue.h \
|
||||
nsIHTMLCSSStyleSheet.h \
|
||||
nsIHTMLAttributes.h \
|
||||
$(NULL)
|
||||
|
||||
@@ -27,10 +27,6 @@ MODULE=raptor
|
||||
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
|
||||
|
||||
EXPORTS = \
|
||||
nsCSSKeywords.h \
|
||||
nsCSSKeywordList.h \
|
||||
nsCSSProps.h \
|
||||
nsCSSPropList.h \
|
||||
nsCSSValue.h \
|
||||
nsICSSStyleRuleProcessor.h \
|
||||
nsICSSRule.h \
|
||||
@@ -42,19 +38,15 @@ EXPORTS = \
|
||||
nsICSSNameSpaceRule.h \
|
||||
nsICSSDeclaration.h \
|
||||
nsIHTMLCSSStyleSheet.h \
|
||||
nsHTMLValue.h \
|
||||
nsDOMCSSDeclaration.h \
|
||||
nsIHTMLAttributes.h \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS= \
|
||||
nsHTMLStyleSheet.cpp \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSDeclaration.cpp \
|
||||
nsCSSLoader.cpp \
|
||||
nsCSSParser.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsCSSScanner.cpp \
|
||||
nsCSSRule.cpp \
|
||||
nsCSSStyleRule.cpp \
|
||||
@@ -63,8 +55,6 @@ CPPSRCS= \
|
||||
nsCSSValue.cpp \
|
||||
nsHTMLAttributes.cpp \
|
||||
nsHTMLCSSStyleSheet.cpp \
|
||||
nsHTMLValue.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
nsDOMCSSDeclaration.cpp \
|
||||
nsComputedDOMStyle.cpp \
|
||||
nsROCSSPrimitiveValue.cpp \
|
||||
@@ -72,12 +62,9 @@ CPPSRCS= \
|
||||
|
||||
CPP_OBJS = \
|
||||
.\$(OBJDIR)\nsHTMLStyleSheet.obj \
|
||||
.\$(OBJDIR)\nsCSSAtoms.obj \
|
||||
.\$(OBJDIR)\nsCSSKeywords.obj \
|
||||
.\$(OBJDIR)\nsCSSDeclaration.obj \
|
||||
.\$(OBJDIR)\nsCSSLoader.obj \
|
||||
.\$(OBJDIR)\nsCSSParser.obj \
|
||||
.\$(OBJDIR)\nsCSSProps.obj \
|
||||
.\$(OBJDIR)\nsCSSScanner.obj \
|
||||
.\$(OBJDIR)\nsCSSRule.obj \
|
||||
.\$(OBJDIR)\nsCSSStyleRule.obj \
|
||||
@@ -86,8 +73,6 @@ CPP_OBJS = \
|
||||
.\$(OBJDIR)\nsCSSValue.obj \
|
||||
.\$(OBJDIR)\nsHTMLAttributes.obj \
|
||||
.\$(OBJDIR)\nsHTMLCSSStyleSheet.obj \
|
||||
.\$(OBJDIR)\nsHTMLValue.obj \
|
||||
.\$(OBJDIR)\nsStyleUtil.obj \
|
||||
.\$(OBJDIR)\nsDOMCSSDeclaration.obj \
|
||||
.\$(OBJDIR)\nsComputedDOMStyle.obj \
|
||||
.\$(OBJDIR)\nsROCSSPrimitiveValue.obj \
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsCSSAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define CSS_ATOM(_name, _value) nsIAtom* nsCSSAtoms::_name;
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsCSSAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define CSS_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsCSSAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define CSS_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,382 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all parsed CSS keywords
|
||||
See nsCSSKeywords.h for access to the enum values for keywords
|
||||
|
||||
It is designed to be used as inline input to nsCSSKeywords.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro CSS_KEY which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
Requirements:
|
||||
|
||||
Entries are in the form: (name,id). 'id' must always be the same as 'name'
|
||||
except that all hyphens ('-') in 'name' are converted to underscores ('_')
|
||||
in 'id'. This lets us do nice things with the macros without having to
|
||||
copy/convert strings at runtime.
|
||||
|
||||
'name' entries *must* use only lowercase characters.
|
||||
|
||||
** Break these invarient and bad things will happen. **
|
||||
|
||||
******/
|
||||
|
||||
CSS_KEY(-moz-all, _moz_all)
|
||||
CSS_KEY(-moz-bg-inset, _moz_bg_inset)
|
||||
CSS_KEY(-moz-bg-outset, _moz_bg_outset)
|
||||
CSS_KEY(-moz-center, _moz_center)
|
||||
CSS_KEY(-moz-field, _moz_field)
|
||||
CSS_KEY(-moz-dragtargetzone, _moz_dragtargetzone)
|
||||
CSS_KEY(-moz-mac-focusring, _moz_mac_focusring)
|
||||
CSS_KEY(-moz-mac-menuselect, _moz_mac_menuselect)
|
||||
CSS_KEY(-moz-mac-menushadow, _moz_mac_menushadow)
|
||||
CSS_KEY(-moz-mac-menutextselect, _moz_mac_menutextselect)
|
||||
CSS_KEY(-moz-mac-accentlightesthighlight, _moz_mac_accentlightesthighlight)
|
||||
CSS_KEY(-moz-mac-accentregularhighlight, _moz_mac_accentregularhighlight)
|
||||
CSS_KEY(-moz-mac-accentface, _moz_mac_accentface)
|
||||
CSS_KEY(-moz-mac-accentlightshadow, _moz_mac_accentlightshadow)
|
||||
CSS_KEY(-moz-mac-accentregularshadow, _moz_mac_accentregularshadow)
|
||||
CSS_KEY(-moz-mac-accentdarkshadow, _moz_mac_accentdarkshadow)
|
||||
CSS_KEY(-moz-mac-accentdarkestshadow, _moz_mac_accentdarkestshadow)
|
||||
CSS_KEY(-moz-right, _moz_right)
|
||||
CSS_KEY(-moz-pre-wrap, _moz_pre_wrap)
|
||||
CSS_KEY(-moz-scrollbars-none, _moz_scrollbars_none)
|
||||
CSS_KEY(-moz-scrollbars-horizontal, _moz_scrollbars_horizontal)
|
||||
CSS_KEY(-moz-scrollbars-vertical, _moz_scrollbars_vertical)
|
||||
CSS_KEY(-moz-box, _moz_box)
|
||||
CSS_KEY(-moz-inline-box, _moz_inline_box)
|
||||
CSS_KEY(-moz-grid, _moz_grid)
|
||||
CSS_KEY(-moz-inline-grid, _moz_inline_grid)
|
||||
CSS_KEY(-moz-grid-group, _moz_grid_group)
|
||||
CSS_KEY(-moz-grid-line, _moz_grid_line)
|
||||
CSS_KEY(-moz-stack, _moz_stack)
|
||||
CSS_KEY(-moz-inline-stack, _moz_inline_stack)
|
||||
CSS_KEY(above, above)
|
||||
CSS_KEY(absolute, absolute)
|
||||
CSS_KEY(activeborder, activeborder)
|
||||
CSS_KEY(activecaption, activecaption)
|
||||
CSS_KEY(alias, alias)
|
||||
CSS_KEY(all, all)
|
||||
CSS_KEY(always, always)
|
||||
CSS_KEY(appworkspace, appworkspace)
|
||||
CSS_KEY(arabic-indic, arabic_indic)
|
||||
CSS_KEY(armenian, armenian)
|
||||
CSS_KEY(auto, auto)
|
||||
CSS_KEY(avoid, avoid)
|
||||
CSS_KEY(background, background)
|
||||
CSS_KEY(baseline, baseline)
|
||||
CSS_KEY(behind, behind)
|
||||
CSS_KEY(below, below)
|
||||
CSS_KEY(bengali, bengali)
|
||||
CSS_KEY(bidi-override, bidi_override)
|
||||
CSS_KEY(blink, blink)
|
||||
CSS_KEY(block, block)
|
||||
CSS_KEY(block-axis, block_axis)
|
||||
CSS_KEY(bold, bold)
|
||||
CSS_KEY(bolder, bolder)
|
||||
CSS_KEY(border-box, border_box)
|
||||
CSS_KEY(both, both)
|
||||
CSS_KEY(bottom, bottom)
|
||||
CSS_KEY(button, button)
|
||||
CSS_KEY(buttonface, buttonface)
|
||||
CSS_KEY(buttonhighlight, buttonhighlight)
|
||||
CSS_KEY(buttonshadow, buttonshadow)
|
||||
CSS_KEY(buttontext, buttontext)
|
||||
CSS_KEY(capitalize, capitalize)
|
||||
CSS_KEY(caption, caption)
|
||||
CSS_KEY(captiontext, captiontext)
|
||||
CSS_KEY(cell, cell)
|
||||
CSS_KEY(center, center)
|
||||
CSS_KEY(center-left, center_left)
|
||||
CSS_KEY(center-right, center_right)
|
||||
CSS_KEY(ch, ch)
|
||||
CSS_KEY(circle, circle)
|
||||
CSS_KEY(cjk-earthly-branch, cjk_earthly_branch)
|
||||
CSS_KEY(cjk-heavenly-stem, cjk_heavenly_stem)
|
||||
CSS_KEY(cjk-ideographic, cjk_ideographic)
|
||||
CSS_KEY(close-quote, close_quote)
|
||||
CSS_KEY(cm, cm)
|
||||
CSS_KEY(code, code)
|
||||
CSS_KEY(collapse, collapse)
|
||||
CSS_KEY(compact, compact)
|
||||
CSS_KEY(condensed, condensed)
|
||||
CSS_KEY(content-box, content_box)
|
||||
CSS_KEY(context-menu, context_menu)
|
||||
CSS_KEY(continuous, continuous)
|
||||
CSS_KEY(copy, copy)
|
||||
CSS_KEY(count-down, count_down)
|
||||
CSS_KEY(count-up, count_up)
|
||||
CSS_KEY(count-up-down, count_up_down)
|
||||
CSS_KEY(crop, crop)
|
||||
CSS_KEY(cross, cross)
|
||||
CSS_KEY(crosshair, crosshair)
|
||||
CSS_KEY(dashed, dashed)
|
||||
CSS_KEY(decimal, decimal)
|
||||
CSS_KEY(decimal-leading-zero, decimal_leading_zero)
|
||||
CSS_KEY(default, default)
|
||||
CSS_KEY(deg, deg)
|
||||
CSS_KEY(desktop, desktop)
|
||||
CSS_KEY(devanagari, devanagari)
|
||||
CSS_KEY(dialog, dialog)
|
||||
CSS_KEY(digits, digits)
|
||||
CSS_KEY(disabled, disabled)
|
||||
CSS_KEY(disc, disc)
|
||||
CSS_KEY(document, document)
|
||||
CSS_KEY(dotted, dotted)
|
||||
CSS_KEY(double, double)
|
||||
CSS_KEY(e-resize, e_resize)
|
||||
CSS_KEY(element, element)
|
||||
CSS_KEY(elements, elements)
|
||||
CSS_KEY(em, em)
|
||||
CSS_KEY(embed, embed)
|
||||
CSS_KEY(enabled, enabled)
|
||||
CSS_KEY(end, end)
|
||||
CSS_KEY(ex, ex)
|
||||
CSS_KEY(expanded, expanded)
|
||||
CSS_KEY(extra-condensed, extra_condensed)
|
||||
CSS_KEY(extra-expanded, extra_expanded)
|
||||
CSS_KEY(far-left, far_left)
|
||||
CSS_KEY(far-right, far_right)
|
||||
CSS_KEY(fast, fast)
|
||||
CSS_KEY(faster, faster)
|
||||
CSS_KEY(field, field)
|
||||
CSS_KEY(fixed, fixed)
|
||||
CSS_KEY(georgian, georgian)
|
||||
CSS_KEY(grab, grab)
|
||||
CSS_KEY(grabbing, grabbing)
|
||||
CSS_KEY(grad, grad)
|
||||
CSS_KEY(graytext, graytext)
|
||||
CSS_KEY(groove, groove)
|
||||
CSS_KEY(gujarati, gujarati)
|
||||
CSS_KEY(gurmukhi, gurmukhi)
|
||||
CSS_KEY(hebrew, hebrew)
|
||||
CSS_KEY(help, help)
|
||||
CSS_KEY(hidden, hidden)
|
||||
CSS_KEY(hide, hide)
|
||||
CSS_KEY(high, high)
|
||||
CSS_KEY(higher, higher)
|
||||
CSS_KEY(highlight, highlight)
|
||||
CSS_KEY(highlighttext, highlighttext)
|
||||
CSS_KEY(hiragana, hiragana)
|
||||
CSS_KEY(hiragana-iroha, hiragana_iroha)
|
||||
CSS_KEY(horizontal, horizontal)
|
||||
CSS_KEY(hz, hz)
|
||||
CSS_KEY(icon, icon)
|
||||
CSS_KEY(ignore, ignore)
|
||||
CSS_KEY(in, in)
|
||||
CSS_KEY(inactiveborder, inactiveborder)
|
||||
CSS_KEY(inactivecaption, inactivecaption)
|
||||
CSS_KEY(inactivecaptiontext, inactivecaptiontext)
|
||||
CSS_KEY(info, info)
|
||||
CSS_KEY(infobackground, infobackground)
|
||||
CSS_KEY(infotext, infotext)
|
||||
CSS_KEY(inherit, inherit)
|
||||
CSS_KEY(inline, inline)
|
||||
CSS_KEY(inline-axis, inline_axis)
|
||||
CSS_KEY(inline-block, inline_block)
|
||||
CSS_KEY(inline-table, inline_table)
|
||||
CSS_KEY(inset, inset)
|
||||
CSS_KEY(inside, inside)
|
||||
CSS_KEY(invert, invert)
|
||||
CSS_KEY(italic, italic)
|
||||
CSS_KEY(japanese-formal, japanese_formal)
|
||||
CSS_KEY(japanese-informal, japanese_informal)
|
||||
CSS_KEY(justify, justify)
|
||||
CSS_KEY(kannada, kannada)
|
||||
CSS_KEY(katakana, katakana)
|
||||
CSS_KEY(katakana-iroha, katakana_iroha)
|
||||
CSS_KEY(khmer, khmer)
|
||||
CSS_KEY(khz, khz)
|
||||
CSS_KEY(landscape, landscape)
|
||||
CSS_KEY(lao, lao)
|
||||
CSS_KEY(large, large)
|
||||
CSS_KEY(larger, larger)
|
||||
CSS_KEY(left, left)
|
||||
CSS_KEY(left-side, left_side)
|
||||
CSS_KEY(leftwards, leftwards)
|
||||
CSS_KEY(level, level)
|
||||
CSS_KEY(lighter, lighter)
|
||||
CSS_KEY(line-through, line_through)
|
||||
CSS_KEY(list, list)
|
||||
CSS_KEY(list-item, list_item)
|
||||
CSS_KEY(loud, loud)
|
||||
CSS_KEY(low, low)
|
||||
CSS_KEY(lower, lower)
|
||||
CSS_KEY(lower-alpha, lower_alpha)
|
||||
CSS_KEY(lower-greek, lower_greek)
|
||||
CSS_KEY(lower-latin, lower_latin)
|
||||
CSS_KEY(lower-roman, lower_roman)
|
||||
CSS_KEY(lowercase, lowercase)
|
||||
CSS_KEY(ltr, ltr)
|
||||
CSS_KEY(malayalam, malayalam)
|
||||
CSS_KEY(margin-box, margin_box)
|
||||
CSS_KEY(marker, marker)
|
||||
CSS_KEY(medium, medium)
|
||||
CSS_KEY(menu, menu)
|
||||
CSS_KEY(menutext, menutext)
|
||||
CSS_KEY(message-box, message_box)
|
||||
CSS_KEY(middle, middle)
|
||||
CSS_KEY(mix, mix)
|
||||
CSS_KEY(mm, mm)
|
||||
CSS_KEY(move, move)
|
||||
CSS_KEY(ms, ms)
|
||||
CSS_KEY(myanmar, myanmar)
|
||||
CSS_KEY(n-resize, n_resize)
|
||||
CSS_KEY(narrower, narrower)
|
||||
CSS_KEY(ne-resize, ne_resize)
|
||||
CSS_KEY(no-close-quote, no_close_quote)
|
||||
CSS_KEY(no-open-quote, no_open_quote)
|
||||
CSS_KEY(no-repeat, no_repeat)
|
||||
CSS_KEY(none, none)
|
||||
CSS_KEY(normal, normal)
|
||||
CSS_KEY(noshade, noshade)
|
||||
CSS_KEY(nowrap, nowrap)
|
||||
CSS_KEY(nw-resize, nw_resize)
|
||||
CSS_KEY(oblique, oblique)
|
||||
CSS_KEY(once, once)
|
||||
CSS_KEY(open-quote, open_quote)
|
||||
CSS_KEY(oriya, oriya)
|
||||
CSS_KEY(outset, outset)
|
||||
CSS_KEY(outside, outside)
|
||||
CSS_KEY(overline, overline)
|
||||
CSS_KEY(padding-box, padding_box)
|
||||
CSS_KEY(paragraph, paragraph)
|
||||
CSS_KEY(pc, pc)
|
||||
CSS_KEY(persian, persian)
|
||||
CSS_KEY(pointer, pointer)
|
||||
CSS_KEY(portrait, portrait)
|
||||
CSS_KEY(pre, pre)
|
||||
CSS_KEY(pt, pt)
|
||||
CSS_KEY(pull-down-menu, pull_down_menu)
|
||||
CSS_KEY(px, px)
|
||||
CSS_KEY(rad, rad)
|
||||
CSS_KEY(read-only, read_only)
|
||||
CSS_KEY(read-write, read_write)
|
||||
CSS_KEY(relative, relative)
|
||||
CSS_KEY(repeat, repeat)
|
||||
CSS_KEY(repeat-x, repeat_x)
|
||||
CSS_KEY(repeat-y, repeat_y)
|
||||
CSS_KEY(reverse, reverse)
|
||||
CSS_KEY(ridge, ridge)
|
||||
CSS_KEY(right, right)
|
||||
CSS_KEY(right-side, right_side)
|
||||
CSS_KEY(rightwards, rightwards)
|
||||
CSS_KEY(rtl, rtl)
|
||||
CSS_KEY(run-in, run_in)
|
||||
CSS_KEY(s, s)
|
||||
CSS_KEY(s-resize, s_resize)
|
||||
CSS_KEY(scroll, scroll)
|
||||
CSS_KEY(scrollbar, scrollbar)
|
||||
CSS_KEY(se-resize, se_resize)
|
||||
CSS_KEY(select-all, select_all)
|
||||
CSS_KEY(select-before, select_before)
|
||||
CSS_KEY(select-after, select_after)
|
||||
CSS_KEY(select-same, select_same)
|
||||
CSS_KEY(select-menu, select_menu)
|
||||
CSS_KEY(semi-condensed, semi_condensed)
|
||||
CSS_KEY(semi-expanded, semi_expanded)
|
||||
CSS_KEY(separate, separate)
|
||||
CSS_KEY(show, show)
|
||||
CSS_KEY(silent, silent)
|
||||
CSS_KEY(simp-chinese-formal, simp_chinese_formal)
|
||||
CSS_KEY(simp-chinese-informal, simp_chinese_informal)
|
||||
CSS_KEY(slow, slow)
|
||||
CSS_KEY(slower, slower)
|
||||
CSS_KEY(small, small)
|
||||
CSS_KEY(small-caps, small_caps)
|
||||
CSS_KEY(small-caption, small_caption)
|
||||
CSS_KEY(smaller, smaller)
|
||||
CSS_KEY(soft, soft)
|
||||
CSS_KEY(solid, solid)
|
||||
CSS_KEY(spell-out, spell_out)
|
||||
CSS_KEY(spinning, spinning)
|
||||
CSS_KEY(square, square)
|
||||
CSS_KEY(start, start)
|
||||
CSS_KEY(static, static)
|
||||
CSS_KEY(status-bar, status_bar)
|
||||
CSS_KEY(stretch, stretch)
|
||||
CSS_KEY(sub, sub)
|
||||
CSS_KEY(super, super)
|
||||
CSS_KEY(sw-resize, sw_resize)
|
||||
CSS_KEY(table, table)
|
||||
CSS_KEY(table-caption, table_caption)
|
||||
CSS_KEY(table-cell, table_cell)
|
||||
CSS_KEY(table-column, table_column)
|
||||
CSS_KEY(table-column-group, table_column_group)
|
||||
CSS_KEY(table-footer-group, table_footer_group)
|
||||
CSS_KEY(table-header-group, table_header_group)
|
||||
CSS_KEY(table-row, table_row)
|
||||
CSS_KEY(table-row-group, table_row_group)
|
||||
CSS_KEY(tamil, tamil)
|
||||
CSS_KEY(telugu, telugu)
|
||||
CSS_KEY(text, text)
|
||||
CSS_KEY(text-bottom, text_bottom)
|
||||
CSS_KEY(text-top, text_top)
|
||||
CSS_KEY(thai, thai)
|
||||
CSS_KEY(thick, thick)
|
||||
CSS_KEY(thin, thin)
|
||||
CSS_KEY(threeddarkshadow, threeddarkshadow)
|
||||
CSS_KEY(threedface, threedface)
|
||||
CSS_KEY(threedhighlight, threedhighlight)
|
||||
CSS_KEY(threedlightshadow, threedlightshadow)
|
||||
CSS_KEY(threedshadow, threedshadow)
|
||||
CSS_KEY(toggle, toggle)
|
||||
CSS_KEY(top, top)
|
||||
CSS_KEY(trad-chinese-formal, trad_chinese_formal)
|
||||
CSS_KEY(trad-chinese-informal, trad_chinese_informal)
|
||||
CSS_KEY(transparent, transparent)
|
||||
CSS_KEY(tri-state, tri_state)
|
||||
CSS_KEY(ultra-condensed, ultra_condensed)
|
||||
CSS_KEY(ultra-expanded, ultra_expanded)
|
||||
CSS_KEY(underline, underline)
|
||||
CSS_KEY(upper-alpha, upper_alpha)
|
||||
CSS_KEY(upper-latin, upper_latin)
|
||||
CSS_KEY(upper-roman, upper_roman)
|
||||
CSS_KEY(uppercase, uppercase)
|
||||
CSS_KEY(urdu, urdu)
|
||||
CSS_KEY(vertical, vertical)
|
||||
CSS_KEY(visible, visible)
|
||||
CSS_KEY(w-resize, w_resize)
|
||||
CSS_KEY(wait, wait)
|
||||
CSS_KEY(wider, wider)
|
||||
CSS_KEY(window, window)
|
||||
CSS_KEY(windowframe, windowframe)
|
||||
CSS_KEY(windowtext, windowtext)
|
||||
CSS_KEY(workspace, workspace)
|
||||
CSS_KEY(write-only, write_only)
|
||||
CSS_KEY(x-fast, x_fast)
|
||||
CSS_KEY(x-high, x_high)
|
||||
CSS_KEY(x-large, x_large)
|
||||
CSS_KEY(x-loud, x_loud)
|
||||
CSS_KEY(x-low, x_low)
|
||||
CSS_KEY(x-slow, x_slow)
|
||||
CSS_KEY(x-small, x_small)
|
||||
CSS_KEY(x-soft, x_soft)
|
||||
CSS_KEY(xx-large, xx_large)
|
||||
CSS_KEY(xx-small, xx_small)
|
||||
@@ -1,103 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsCSSKeywords.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStaticNameTable.h"
|
||||
|
||||
// define an array of all CSS keywords
|
||||
#define CSS_KEY(_name,_id) #_name,
|
||||
const char* kCSSRawKeywords[] = {
|
||||
#include "nsCSSKeywordList.h"
|
||||
};
|
||||
#undef CSS_KEY
|
||||
|
||||
static PRInt32 gTableRefCount;
|
||||
static nsStaticCaseInsensitiveNameTable* gKeywordTable;
|
||||
|
||||
void
|
||||
nsCSSKeywords::AddRefTable(void)
|
||||
{
|
||||
if (0 == gTableRefCount++) {
|
||||
NS_ASSERTION(!gKeywordTable, "pre existing array!");
|
||||
gKeywordTable = new nsStaticCaseInsensitiveNameTable();
|
||||
if (gKeywordTable) {
|
||||
#ifdef DEBUG
|
||||
{
|
||||
// let's verify the table...
|
||||
for (PRInt32 index = 0; index < eCSSKeyword_COUNT; ++index) {
|
||||
nsCAutoString temp1(kCSSRawKeywords[index]);
|
||||
nsCAutoString temp2(kCSSRawKeywords[index]);
|
||||
temp1.ToLowerCase();
|
||||
NS_ASSERTION(temp1.Equals(temp2), "upper case char in table");
|
||||
NS_ASSERTION(-1 == temp1.FindChar('_'), "underscore char in table");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
gKeywordTable->Init(kCSSRawKeywords, eCSSKeyword_COUNT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSKeywords::ReleaseTable(void)
|
||||
{
|
||||
if (0 == --gTableRefCount) {
|
||||
if (gKeywordTable) {
|
||||
delete gKeywordTable;
|
||||
gKeywordTable = nsnull;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nsCSSKeyword
|
||||
nsCSSKeywords::LookupKeyword(const nsCString& aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return nsCSSKeyword(gKeywordTable->Lookup(aKeyword));
|
||||
}
|
||||
return eCSSKeyword_UNKNOWN;
|
||||
}
|
||||
|
||||
nsCSSKeyword
|
||||
nsCSSKeywords::LookupKeyword(const nsString& aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return nsCSSKeyword(gKeywordTable->Lookup(aKeyword));
|
||||
}
|
||||
return eCSSKeyword_UNKNOWN;
|
||||
}
|
||||
|
||||
const nsCString&
|
||||
nsCSSKeywords::GetStringValue(nsCSSKeyword aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return gKeywordTable->GetStringValue(PRInt32(aKeyword));
|
||||
} else {
|
||||
static nsCString kNullStr;
|
||||
return kNullStr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSKeywords_h___
|
||||
#define nsCSSKeywords_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
|
||||
class nsString;
|
||||
class nsCString;
|
||||
|
||||
/*
|
||||
Declare the enum list using the magic of preprocessing
|
||||
enum values are "eCSSKeyword_foo" (where foo is the keyword)
|
||||
|
||||
To change the list of keywords, see nsCSSKeywordList.h
|
||||
|
||||
*/
|
||||
#define CSS_KEY(_name,_id) eCSSKeyword_##_id,
|
||||
enum nsCSSKeyword {
|
||||
eCSSKeyword_UNKNOWN = -1,
|
||||
#include "nsCSSKeywordList.h"
|
||||
eCSSKeyword_COUNT
|
||||
};
|
||||
#undef CSS_KEY
|
||||
|
||||
|
||||
class NS_LAYOUT nsCSSKeywords {
|
||||
public:
|
||||
static void AddRefTable(void);
|
||||
static void ReleaseTable(void);
|
||||
|
||||
// Given a keyword string, return the enum value
|
||||
static nsCSSKeyword LookupKeyword(const nsCString& aKeyword);
|
||||
static nsCSSKeyword LookupKeyword(const nsString& aKeyword);
|
||||
|
||||
// Given a keyword enum, get the string value
|
||||
static const nsCString& GetStringValue(nsCSSKeyword aKeyword);
|
||||
};
|
||||
|
||||
#endif /* nsCSSKeywords_h___ */
|
||||
@@ -1,227 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all parsed CSS properties
|
||||
See nsCSSProps.h for access to the enum values for properties
|
||||
|
||||
It is designed to be used as inline input to nsCSSProps.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entries must be enclosed in the macro CSS_PROP which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
Requirements:
|
||||
|
||||
Entries are in the form: (name,id,effect). 'id' must always be the same as
|
||||
'name' except that all hyphens ('-') in 'name' are converted to underscores
|
||||
('_') in 'id'. This lets us do nice things with the macros without having to
|
||||
copy/convert strings at runtime.
|
||||
|
||||
'name' entries *must* use only lowercase characters.
|
||||
|
||||
** Break these invariants and bad things will happen. **
|
||||
|
||||
The third argument says what needs to be recomputed when the property
|
||||
changes.
|
||||
******/
|
||||
|
||||
// For notes XXX bug 3935 below, the names being parsed do not correspond
|
||||
// to the constants used internally. It would be nice to bring the
|
||||
// constants into line sometime.
|
||||
|
||||
// The parser will refuse to parse properties marked with -x-.
|
||||
|
||||
// Those marked XXX bug 48973 are CSS2 properties that we support
|
||||
// differently from the spec for UI requirements. If we ever
|
||||
// support them correctly the old constants need to be renamed and
|
||||
// new ones should be entered.
|
||||
|
||||
CSS_PROP(-moz-border-radius, _moz_border_radius, VISUAL)
|
||||
CSS_PROP(-moz-border-radius-topleft, _moz_border_radius_topLeft, VISUAL)
|
||||
CSS_PROP(-moz-border-radius-topright, _moz_border_radius_topRight, VISUAL)
|
||||
CSS_PROP(-moz-border-radius-bottomleft, _moz_border_radius_bottomLeft, VISUAL)
|
||||
CSS_PROP(-moz-border-radius-bottomright, _moz_border_radius_bottomRight, VISUAL)
|
||||
CSS_PROP(-moz-outline-radius, _moz_outline_radius, VISUAL)
|
||||
CSS_PROP(-moz-outline-radius-topleft, _moz_outline_radius_topLeft, VISUAL)
|
||||
CSS_PROP(-moz-outline-radius-topright, _moz_outline_radius_topRight, VISUAL)
|
||||
CSS_PROP(-moz-outline-radius-bottomleft, _moz_outline_radius_bottomLeft, VISUAL)
|
||||
CSS_PROP(-moz-outline-radius-bottomright, _moz_outline_radius_bottomRight, VISUAL)
|
||||
CSS_PROP(azimuth, azimuth, AURAL)
|
||||
CSS_PROP(background, background, VISUAL)
|
||||
CSS_PROP(background-attachment, background_attachment, VISUAL)
|
||||
CSS_PROP(background-color, background_color, VISUAL)
|
||||
CSS_PROP(background-image, background_image, VISUAL)
|
||||
CSS_PROP(background-position, background_position, VISUAL)
|
||||
CSS_PROP(background-repeat, background_repeat, VISUAL)
|
||||
CSS_PROP(-x-background-x-position, background_x_position, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-background-y-position, background_y_position, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-moz-binding, behavior, FRAMECHANGE) // XXX bug 3935
|
||||
CSS_PROP(border, border, REFLOW)
|
||||
CSS_PROP(border-bottom, border_bottom, REFLOW)
|
||||
CSS_PROP(border-bottom-color, border_bottom_color, VISUAL)
|
||||
CSS_PROP(border-bottom-style, border_bottom_style, REFLOW) // on/off will need reflow
|
||||
CSS_PROP(border-bottom-width, border_bottom_width, REFLOW)
|
||||
CSS_PROP(border-collapse, border_collapse, REFLOW)
|
||||
CSS_PROP(border-color, border_color, VISUAL)
|
||||
CSS_PROP(border-left, border_left, REFLOW)
|
||||
CSS_PROP(border-left-color, border_left_color, VISUAL)
|
||||
CSS_PROP(border-left-style, border_left_style, REFLOW) // on/off will need reflow
|
||||
CSS_PROP(border-left-width, border_left_width, REFLOW)
|
||||
CSS_PROP(border-right, border_right, REFLOW)
|
||||
CSS_PROP(border-right-color, border_right_color, VISUAL)
|
||||
CSS_PROP(border-right-style, border_right_style, REFLOW) // on/off will need reflow
|
||||
CSS_PROP(border-right-width, border_right_width, REFLOW)
|
||||
CSS_PROP(border-spacing, border_spacing, REFLOW)
|
||||
CSS_PROP(border-style, border_style, REFLOW) // on/off will need reflow
|
||||
CSS_PROP(border-top, border_top, REFLOW)
|
||||
CSS_PROP(border-top-color, border_top_color, VISUAL)
|
||||
CSS_PROP(border-top-style, border_top_style, REFLOW) // on/off will need reflow
|
||||
CSS_PROP(border-top-width, border_top_width, REFLOW)
|
||||
CSS_PROP(border-width, border_width, REFLOW)
|
||||
CSS_PROP(-x-border-x-spacing, border_x_spacing, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-x-border-y-spacing, border_y_spacing, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(bottom, bottom, REFLOW)
|
||||
CSS_PROP(-moz-box-align, box_align, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-direction, box_direction, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-flex, box_flex, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-flex-group, box_flex_group, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-orient, box_orient, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-pack, box_pack, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-box-sizing, box_sizing, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(caption-side, caption_side, REFLOW)
|
||||
CSS_PROP(clear, clear, REFLOW)
|
||||
CSS_PROP(clip, clip, VISUAL)
|
||||
CSS_PROP(-x-clip-bottom, clip_bottom, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-clip-left, clip_left, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-clip-right, clip_right, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-clip-top, clip_top, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(color, color, VISUAL)
|
||||
CSS_PROP(content, content, FRAMECHANGE)
|
||||
CSS_PROP(counter-increment, counter_increment, REFLOW)
|
||||
CSS_PROP(counter-reset, counter_reset, REFLOW)
|
||||
CSS_PROP(cue, cue, AURAL)
|
||||
CSS_PROP(cue-after, cue_after, AURAL)
|
||||
CSS_PROP(cue-before, cue_before, AURAL)
|
||||
CSS_PROP(cursor, cursor, VISUAL)
|
||||
CSS_PROP(direction, direction, REFLOW)
|
||||
CSS_PROP(display, display, FRAMECHANGE)
|
||||
CSS_PROP(elevation, elevation, AURAL)
|
||||
CSS_PROP(empty-cells, empty_cells, VISUAL)
|
||||
CSS_PROP(float, float, FRAMECHANGE)
|
||||
CSS_PROP(-moz-float-edge, float_edge, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(font, font, REFLOW)
|
||||
CSS_PROP(font-family, font_family, REFLOW)
|
||||
CSS_PROP(font-size, font_size, REFLOW)
|
||||
CSS_PROP(font-size-adjust, font_size_adjust, REFLOW)
|
||||
CSS_PROP(font-stretch, font_stretch, REFLOW)
|
||||
CSS_PROP(font-style, font_style, REFLOW)
|
||||
CSS_PROP(font-variant, font_variant, REFLOW)
|
||||
CSS_PROP(font-weight, font_weight, REFLOW)
|
||||
CSS_PROP(height, height, REFLOW)
|
||||
CSS_PROP(-moz-key-equivalent, key_equivalent, CONTENT) // This will need some other notification, but what? // XXX bug 3935
|
||||
CSS_PROP(left, left, REFLOW)
|
||||
CSS_PROP(letter-spacing, letter_spacing, REFLOW)
|
||||
CSS_PROP(line-height, line_height, REFLOW)
|
||||
CSS_PROP(list-style, list_style, REFLOW)
|
||||
CSS_PROP(list-style-image, list_style_image, REFLOW)
|
||||
CSS_PROP(list-style-position, list_style_position, REFLOW)
|
||||
CSS_PROP(list-style-type, list_style_type, REFLOW)
|
||||
CSS_PROP(margin, margin, REFLOW)
|
||||
CSS_PROP(margin-bottom, margin_bottom, REFLOW)
|
||||
CSS_PROP(margin-left, margin_left, REFLOW)
|
||||
CSS_PROP(margin-right, margin_right, REFLOW)
|
||||
CSS_PROP(margin-top, margin_top, REFLOW)
|
||||
CSS_PROP(marker-offset, marker_offset, REFLOW)
|
||||
CSS_PROP(marks, marks, VISUAL)
|
||||
CSS_PROP(max-height, max_height, REFLOW)
|
||||
CSS_PROP(max-width, max_width, REFLOW)
|
||||
CSS_PROP(min-height, min_height, REFLOW)
|
||||
CSS_PROP(min-width, min_width, REFLOW)
|
||||
CSS_PROP(-moz-opacity, opacity, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(orphans, orphans, REFLOW)
|
||||
CSS_PROP(-moz-outline, outline, VISUAL) // XXX This is temporary fix for nsbeta3+ Bug 48973, turning outline into -moz-outline XXX bug 48973
|
||||
CSS_PROP(-moz-outline-color, outline_color, VISUAL) // XXX bug 48973
|
||||
CSS_PROP(-moz-outline-style, outline_style, VISUAL) // XXX bug 48973
|
||||
CSS_PROP(-moz-outline-width, outline_width, VISUAL) // XXX bug 48973
|
||||
CSS_PROP(overflow, overflow, FRAMECHANGE)
|
||||
CSS_PROP(padding, padding, REFLOW)
|
||||
CSS_PROP(padding-bottom, padding_bottom, REFLOW)
|
||||
CSS_PROP(padding-left, padding_left, REFLOW)
|
||||
CSS_PROP(padding-right, padding_right, REFLOW)
|
||||
CSS_PROP(padding-top, padding_top, REFLOW)
|
||||
CSS_PROP(page, page, REFLOW)
|
||||
CSS_PROP(page-break-after, page_break_after, REFLOW)
|
||||
CSS_PROP(page-break-before, page_break_before, REFLOW)
|
||||
CSS_PROP(page-break-inside, page_break_inside, REFLOW)
|
||||
CSS_PROP(pause, pause, AURAL)
|
||||
CSS_PROP(pause-after, pause_after, AURAL)
|
||||
CSS_PROP(pause-before, pause_before, AURAL)
|
||||
CSS_PROP(pitch, pitch, AURAL)
|
||||
CSS_PROP(pitch-range, pitch_range, AURAL)
|
||||
CSS_PROP(play-during, play_during, AURAL)
|
||||
CSS_PROP(-x-play-during-flags, play_during_flags, AURAL) // XXX why is this here?
|
||||
CSS_PROP(position, position, FRAMECHANGE)
|
||||
CSS_PROP(quotes, quotes, REFLOW)
|
||||
CSS_PROP(-x-quotes-close, quotes_close, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-x-quotes-open, quotes_open, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-moz-resizer, resizer, FRAMECHANGE) // XXX bug 3935
|
||||
CSS_PROP(richness, richness, AURAL)
|
||||
CSS_PROP(right, right, REFLOW)
|
||||
CSS_PROP(size, size, REFLOW)
|
||||
CSS_PROP(-x-size-height, size_height, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(-x-size-width, size_width, REFLOW) // XXX bug 3935
|
||||
CSS_PROP(speak, speak, AURAL)
|
||||
CSS_PROP(speak-header, speak_header, AURAL)
|
||||
CSS_PROP(speak-numeral, speak_numeral, AURAL)
|
||||
CSS_PROP(speak-punctuation, speak_punctuation, AURAL)
|
||||
CSS_PROP(speech-rate, speech_rate, AURAL)
|
||||
CSS_PROP(stress, stress, AURAL)
|
||||
CSS_PROP(table-layout, table_layout, REFLOW)
|
||||
CSS_PROP(text-align, text_align, REFLOW)
|
||||
CSS_PROP(text-decoration, text_decoration, VISUAL)
|
||||
CSS_PROP(text-indent, text_indent, REFLOW)
|
||||
CSS_PROP(text-shadow, text_shadow, VISUAL)
|
||||
CSS_PROP(-x-text-shadow-color, text_shadow_color, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-text-shadow-radius, text_shadow_radius, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-text-shadow-x, text_shadow_x, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(-x-text-shadow-y, text_shadow_y, VISUAL) // XXX bug 3935
|
||||
CSS_PROP(text-transform, text_transform, REFLOW)
|
||||
CSS_PROP(top, top, REFLOW)
|
||||
CSS_PROP(unicode-bidi, unicode_bidi, REFLOW)
|
||||
CSS_PROP(-moz-user-focus, user_focus, CONTENT) // XXX bug 3935
|
||||
CSS_PROP(-moz-user-input, user_input, FRAMECHANGE) // XXX ??? // XXX bug 3935
|
||||
CSS_PROP(-moz-user-modify, user_modify, FRAMECHANGE) // XXX bug 3935
|
||||
CSS_PROP(-moz-user-select, user_select, CONTENT) // XXX bug 3935
|
||||
CSS_PROP(vertical-align, vertical_align, REFLOW)
|
||||
CSS_PROP(visibility, visibility, REFLOW) // reflow for collapse
|
||||
CSS_PROP(voice-family, voice_family, AURAL)
|
||||
CSS_PROP(volume, volume, AURAL)
|
||||
CSS_PROP(white-space, white_space, REFLOW)
|
||||
CSS_PROP(widows, widows, REFLOW)
|
||||
CSS_PROP(width, width, REFLOW)
|
||||
CSS_PROP(word-spacing, word_spacing, REFLOW)
|
||||
CSS_PROP(z-index, z_index, REFLOW)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,133 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSProps_h___
|
||||
#define nsCSSProps_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsString.h"
|
||||
|
||||
/*
|
||||
Declare the enum list using the magic of preprocessing
|
||||
enum values are "eCSSProperty_foo" (where foo is the property)
|
||||
|
||||
To change the list of properties, see nsCSSPropList.h
|
||||
|
||||
*/
|
||||
#define CSS_PROP(_name, _id, _hint) eCSSProperty_##_id,
|
||||
enum nsCSSProperty {
|
||||
eCSSProperty_UNKNOWN = -1,
|
||||
#include "nsCSSPropList.h"
|
||||
eCSSProperty_COUNT
|
||||
};
|
||||
#undef CSS_PROP
|
||||
|
||||
|
||||
class NS_LAYOUT nsCSSProps {
|
||||
public:
|
||||
static void AddRefTable(void);
|
||||
static void ReleaseTable(void);
|
||||
|
||||
// Given a property string, return the enum value
|
||||
static nsCSSProperty LookupProperty(const nsAReadableString& aProperty);
|
||||
static nsCSSProperty LookupProperty(const nsCString& aProperty);
|
||||
|
||||
// Given a property enum, get the string value
|
||||
static const nsCString& GetStringValue(nsCSSProperty aProperty);
|
||||
|
||||
// Given a CSS Property and a Property Enum Value
|
||||
// Return back a const nsString& representation of the
|
||||
// value. Return back nullstr if no value is found
|
||||
static const nsCString& LookupPropertyValue(nsCSSProperty aProperty, PRInt32 aValue);
|
||||
|
||||
// Get a color name for a predefined color value like buttonhighlight or activeborder
|
||||
// Sets the aStr param to the name of the propertyID
|
||||
static PRBool GetColorName(PRInt32 aPropID, nsCString &aStr);
|
||||
|
||||
static PRInt32 SearchKeywordTableInt(PRInt32 aValue, const PRInt32 aTable[]);
|
||||
static const nsCString& SearchKeywordTable(PRInt32 aValue, const PRInt32 aTable[]);
|
||||
|
||||
static const PRInt32 kHintTable[];
|
||||
|
||||
// Keyword/Enum value tables
|
||||
static const PRInt32 kAzimuthKTable[];
|
||||
static const PRInt32 kBackgroundAttachmentKTable[];
|
||||
static const PRInt32 kBackgroundColorKTable[];
|
||||
static const PRInt32 kBackgroundRepeatKTable[];
|
||||
static const PRInt32 kBorderCollapseKTable[];
|
||||
static const PRInt32 kBorderColorKTable[];
|
||||
static const PRInt32 kBorderStyleKTable[];
|
||||
static const PRInt32 kBorderWidthKTable[];
|
||||
#ifdef INCLUDE_XUL
|
||||
static const PRInt32 kBoxOrientKTable[];
|
||||
#endif
|
||||
static const PRInt32 kBoxSizingKTable[];
|
||||
static const PRInt32 kCaptionSideKTable[];
|
||||
static const PRInt32 kClearKTable[];
|
||||
static const PRInt32 kColorKTable[];
|
||||
static const PRInt32 kContentKTable[];
|
||||
static const PRInt32 kCursorKTable[];
|
||||
static const PRInt32 kDirectionKTable[];
|
||||
static const PRInt32 kDisplayKTable[];
|
||||
static const PRInt32 kElevationKTable[];
|
||||
static const PRInt32 kEmptyCellsKTable[];
|
||||
static const PRInt32 kFloatKTable[];
|
||||
static const PRInt32 kFloatEdgeKTable[];
|
||||
static const PRInt32 kFontKTable[];
|
||||
static const PRInt32 kFontSizeKTable[];
|
||||
static const PRInt32 kFontStretchKTable[];
|
||||
static const PRInt32 kFontStyleKTable[];
|
||||
static const PRInt32 kFontVariantKTable[];
|
||||
static const PRInt32 kFontWeightKTable[];
|
||||
static const PRInt32 kKeyEquivalentKTable[];
|
||||
static const PRInt32 kListStylePositionKTable[];
|
||||
static const PRInt32 kListStyleKTable[];
|
||||
static const PRInt32 kOutlineColorKTable[];
|
||||
static const PRInt32 kOverflowKTable[];
|
||||
static const PRInt32 kPageBreakKTable[];
|
||||
static const PRInt32 kPageBreakInsideKTable[];
|
||||
static const PRInt32 kPageMarksKTable[];
|
||||
static const PRInt32 kPageSizeKTable[];
|
||||
static const PRInt32 kPitchKTable[];
|
||||
static const PRInt32 kPlayDuringKTable[];
|
||||
static const PRInt32 kPositionKTable[];
|
||||
static const PRInt32 kResizerKTable[];
|
||||
static const PRInt32 kSpeakKTable[];
|
||||
static const PRInt32 kSpeakHeaderKTable[];
|
||||
static const PRInt32 kSpeakNumeralKTable[];
|
||||
static const PRInt32 kSpeakPunctuationKTable[];
|
||||
static const PRInt32 kSpeechRateKTable[];
|
||||
static const PRInt32 kTableLayoutKTable[];
|
||||
static const PRInt32 kTextAlignKTable[];
|
||||
static const PRInt32 kTextDecorationKTable[];
|
||||
static const PRInt32 kTextTransformKTable[];
|
||||
static const PRInt32 kUnicodeBidiKTable[];
|
||||
static const PRInt32 kUserFocusKTable[];
|
||||
static const PRInt32 kUserInputKTable[];
|
||||
static const PRInt32 kUserModifyKTable[];
|
||||
static const PRInt32 kUserSelectKTable[];
|
||||
static const PRInt32 kVerticalAlignKTable[];
|
||||
static const PRInt32 kVisibilityKTable[];
|
||||
static const PRInt32 kVolumeKTable[];
|
||||
static const PRInt32 kWhitespaceKTable[];
|
||||
};
|
||||
|
||||
#endif /* nsCSSProps_h___ */
|
||||
@@ -1,289 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsHTMLValue.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsISizeOfHandler.h"
|
||||
|
||||
nsHTMLValue::nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_Integer == aUnit) ||
|
||||
(eHTMLUnit_Enumerated == aUnit) ||
|
||||
(eHTMLUnit_Proportional == aUnit) ||
|
||||
(eHTMLUnit_Pixel == aUnit), "not an integer value");
|
||||
if ((eHTMLUnit_Integer == aUnit) ||
|
||||
(eHTMLUnit_Enumerated == aUnit) ||
|
||||
(eHTMLUnit_Proportional == aUnit) ||
|
||||
(eHTMLUnit_Pixel == aUnit)) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(float aValue)
|
||||
: mUnit(eHTMLUnit_Percent)
|
||||
{
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nsISupports* aValue)
|
||||
: mUnit(eHTMLUnit_ISupports)
|
||||
{
|
||||
mValue.mISupports = aValue;
|
||||
NS_IF_ADDREF(mValue.mISupports);
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nscolor aValue)
|
||||
: mUnit(eHTMLUnit_Color)
|
||||
{
|
||||
mValue.mColor = aValue;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(const nsHTMLValue& aCopy)
|
||||
: mUnit(aCopy.mUnit)
|
||||
{
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != aCopy.mValue.mString) {
|
||||
mValue.mString = nsCRT::strdup(aCopy.mValue.mString);
|
||||
}
|
||||
else {
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
mValue.mISupports = aCopy.mValue.mISupports;
|
||||
NS_IF_ADDREF(mValue.mISupports);
|
||||
}
|
||||
else if (eHTMLUnit_Color == mUnit){
|
||||
mValue.mColor = aCopy.mValue.mColor;
|
||||
}
|
||||
else if (eHTMLUnit_Percent == mUnit) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue& nsHTMLValue::operator=(const nsHTMLValue& aCopy)
|
||||
{
|
||||
Reset();
|
||||
mUnit = aCopy.mUnit;
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != aCopy.mValue.mString) {
|
||||
mValue.mString = nsCRT::strdup(aCopy.mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
mValue.mISupports = aCopy.mValue.mISupports;
|
||||
NS_IF_ADDREF(mValue.mISupports);
|
||||
}
|
||||
else if (eHTMLUnit_Color == mUnit){
|
||||
mValue.mColor = aCopy.mValue.mColor;
|
||||
}
|
||||
else if (eHTMLUnit_Percent == mUnit) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
PRBool nsHTMLValue::operator==(const nsHTMLValue& aOther) const
|
||||
{
|
||||
if (mUnit == aOther.mUnit) {
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull == mValue.mString) {
|
||||
if (nsnull == aOther.mValue.mString) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
}
|
||||
else if (nsnull != aOther.mValue.mString) {
|
||||
return 0 == nsCRT::strcasecmp(mValue.mString, aOther.mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
return PRBool(mValue.mISupports == aOther.mValue.mISupports);
|
||||
}
|
||||
else if (eHTMLUnit_Color == mUnit){
|
||||
return PRBool(mValue.mColor == aOther.mValue.mColor);
|
||||
}
|
||||
else if (eHTMLUnit_Percent == mUnit) {
|
||||
return PRBool(mValue.mFloat == aOther.mValue.mFloat);
|
||||
}
|
||||
else {
|
||||
return PRBool(mValue.mInt == aOther.mValue.mInt);
|
||||
}
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRUint32 nsHTMLValue::HashValue(void) const
|
||||
{
|
||||
return PRUint32(mUnit) ^
|
||||
((((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) &&
|
||||
(nsnull != mValue.mString)) ?
|
||||
nsCRT::HashCode(mValue.mString) :
|
||||
mValue.mInt);
|
||||
}
|
||||
|
||||
|
||||
void nsHTMLValue::SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
{
|
||||
Reset();
|
||||
NS_ASSERTION((eHTMLUnit_Integer == aUnit) ||
|
||||
(eHTMLUnit_Enumerated == aUnit) ||
|
||||
(eHTMLUnit_Proportional == aUnit), "not an int value");
|
||||
if ((eHTMLUnit_Integer == aUnit) ||
|
||||
(eHTMLUnit_Enumerated == aUnit) ||
|
||||
(eHTMLUnit_Proportional == aUnit)) {
|
||||
mUnit = aUnit;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetPixelValue(PRInt32 aValue)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eHTMLUnit_Pixel;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetPercentValue(float aValue)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eHTMLUnit_Percent;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetStringValue(const nsAReadableString& aValue,
|
||||
nsHTMLUnit aUnit)
|
||||
{
|
||||
Reset();
|
||||
if ((eHTMLUnit_String == aUnit) || (eHTMLUnit_ColorName == aUnit)) {
|
||||
mUnit = aUnit;
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetISupportsValue(nsISupports* aValue)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eHTMLUnit_ISupports;
|
||||
mValue.mISupports = aValue;
|
||||
NS_IF_ADDREF(mValue.mISupports);
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetColorValue(nscolor aValue)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eHTMLUnit_Color;
|
||||
mValue.mColor = aValue;
|
||||
}
|
||||
|
||||
void nsHTMLValue::SetEmptyValue(void)
|
||||
{
|
||||
Reset();
|
||||
mUnit = eHTMLUnit_Empty;
|
||||
}
|
||||
|
||||
void nsHTMLValue::AppendToString(nsAWritableString& aBuffer) const
|
||||
{
|
||||
if (eHTMLUnit_Null == mUnit) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (eHTMLUnit_Empty == mUnit) {
|
||||
}
|
||||
else if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
aBuffer.Append(PRUnichar('"'));
|
||||
aBuffer.Append(mValue.mString);
|
||||
aBuffer.Append(PRUnichar('"'));
|
||||
}
|
||||
else {
|
||||
aBuffer.Append(NS_LITERAL_STRING("null str"));
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
aBuffer.Append(NS_LITERAL_STRING("0x"));
|
||||
nsAutoString intStr;
|
||||
intStr.AppendInt((PRInt32)mValue.mISupports, 16);
|
||||
aBuffer.Append(intStr);
|
||||
}
|
||||
else if (eHTMLUnit_Color == mUnit){
|
||||
nsAutoString intStr;
|
||||
intStr.Append(NS_LITERAL_STRING("(0x"));
|
||||
intStr.AppendInt(NS_GET_R(mValue.mColor), 16);
|
||||
intStr.Append(intStr);
|
||||
intStr.Append(NS_LITERAL_STRING(" 0x"));
|
||||
intStr.AppendInt(NS_GET_G(mValue.mColor), 16);
|
||||
intStr.Append(NS_LITERAL_STRING(" 0x"));
|
||||
intStr.AppendInt(NS_GET_B(mValue.mColor), 16);
|
||||
intStr.Append(NS_LITERAL_STRING(" 0x"));
|
||||
intStr.AppendInt(NS_GET_A(mValue.mColor), 16);
|
||||
intStr.Append(PRUnichar(')'));
|
||||
|
||||
aBuffer.Append(intStr);
|
||||
}
|
||||
else if (eHTMLUnit_Percent == mUnit) {
|
||||
nsAutoString floatStr;
|
||||
floatStr.AppendFloat(mValue.mFloat * 100.0f);
|
||||
aBuffer.Append(floatStr);
|
||||
}
|
||||
else {
|
||||
nsAutoString intStr;
|
||||
intStr.AppendInt(mValue.mInt, 10);
|
||||
intStr.Append(NS_LITERAL_STRING("[0x"));
|
||||
intStr.AppendInt(mValue.mInt, 16);
|
||||
intStr.Append(PRUnichar(']'));
|
||||
|
||||
aBuffer.Append(intStr);
|
||||
}
|
||||
|
||||
switch (mUnit) {
|
||||
case eHTMLUnit_Null: break;
|
||||
case eHTMLUnit_Empty: break;
|
||||
case eHTMLUnit_String: break;
|
||||
case eHTMLUnit_ColorName: break;
|
||||
case eHTMLUnit_ISupports: aBuffer.Append(NS_LITERAL_STRING("ptr")); break;
|
||||
case eHTMLUnit_Integer: break;
|
||||
case eHTMLUnit_Enumerated: aBuffer.Append(NS_LITERAL_STRING("enum")); break;
|
||||
case eHTMLUnit_Proportional: aBuffer.Append(NS_LITERAL_STRING("*")); break;
|
||||
case eHTMLUnit_Color: aBuffer.Append(NS_LITERAL_STRING("rbga")); break;
|
||||
case eHTMLUnit_Percent: aBuffer.Append(NS_LITERAL_STRING("%")); break;
|
||||
case eHTMLUnit_Pixel: aBuffer.Append(NS_LITERAL_STRING("px")); break;
|
||||
}
|
||||
aBuffer.Append(PRUnichar(' '));
|
||||
}
|
||||
|
||||
void nsHTMLValue::ToString(nsAWritableString& aBuffer) const
|
||||
{
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
@@ -1,215 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsHTMLValue_h___
|
||||
#define nsHTMLValue_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
enum nsHTMLUnit {
|
||||
eHTMLUnit_Null = 0, // (n/a) null unit, value is not specified
|
||||
eHTMLUnit_Empty = 1, // (n/a) empty unit, value is not specified
|
||||
eHTMLUnit_String = 10, // (nsString) a string value
|
||||
eHTMLUnit_ISupports = 20, // (nsISupports*) a ref counted interface
|
||||
eHTMLUnit_Integer = 50, // (int) simple value
|
||||
eHTMLUnit_Enumerated = 51, // (int) value has enumerated meaning
|
||||
eHTMLUnit_Proportional = 52, // (int) value is a relative proportion of some whole
|
||||
eHTMLUnit_Color = 80, // (color) an RGBA value
|
||||
eHTMLUnit_ColorName = 81, // (nsString/color) a color name value
|
||||
eHTMLUnit_Percent = 90, // (float) 1.0 == 100%) value is percentage of something
|
||||
|
||||
// Screen relative measure
|
||||
eHTMLUnit_Pixel = 600 // (int) screen pixels
|
||||
};
|
||||
|
||||
class nsHTMLValue {
|
||||
public:
|
||||
nsHTMLValue(nsHTMLUnit aUnit = eHTMLUnit_Null) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit <= eHTMLUnit_Empty), "not a valueless unit");
|
||||
if (aUnit > eHTMLUnit_Empty) {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
}
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
nsHTMLValue(float aValue);
|
||||
nsHTMLValue(const nsAReadableString& aValue,
|
||||
nsHTMLUnit aUnit = eHTMLUnit_String) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit), "not a string value");
|
||||
if ((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit)) {
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue(nsISupports* aValue);
|
||||
nsHTMLValue(nscolor aValue);
|
||||
nsHTMLValue(const nsHTMLValue& aCopy);
|
||||
~nsHTMLValue(void)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
nsHTMLValue& operator=(const nsHTMLValue& aCopy);
|
||||
PRBool operator==(const nsHTMLValue& aOther) const;
|
||||
PRBool operator!=(const nsHTMLValue& aOther) const;
|
||||
PRUint32 HashValue(void) const;
|
||||
|
||||
nsHTMLUnit GetUnit(void) const { return mUnit; }
|
||||
PRInt32 GetIntValue(void) const;
|
||||
PRInt32 GetPixelValue(void) const;
|
||||
float GetPercentValue(void) const;
|
||||
nsAWritableString& GetStringValue(nsAWritableString& aBuffer) const;
|
||||
nsISupports* GetISupportsValue(void) const;
|
||||
nscolor GetColorValue(void) const;
|
||||
|
||||
void Reset(void) {
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
nsCRT::free(mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
NS_IF_RELEASE(mValue.mISupports);
|
||||
}
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
void SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
void SetPixelValue(PRInt32 aValue);
|
||||
void SetPercentValue(float aValue);
|
||||
void SetStringValue(const nsAReadableString& aValue, nsHTMLUnit aUnit = eHTMLUnit_String);
|
||||
void SetISupportsValue(nsISupports* aValue);
|
||||
void SetColorValue(nscolor aValue);
|
||||
void SetEmptyValue(void);
|
||||
|
||||
void AppendToString(nsAWritableString& aBuffer) const;
|
||||
void ToString(nsAWritableString& aBuffer) const;
|
||||
|
||||
protected:
|
||||
nsHTMLUnit mUnit;
|
||||
union {
|
||||
PRInt32 mInt;
|
||||
float mFloat;
|
||||
PRUnichar* mString;
|
||||
nsISupports* mISupports;
|
||||
nscolor mColor;
|
||||
} mValue;
|
||||
};
|
||||
|
||||
inline PRInt32 nsHTMLValue::GetIntValue(void) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eHTMLUnit_String) ||
|
||||
(mUnit == eHTMLUnit_Integer) ||
|
||||
(mUnit == eHTMLUnit_Enumerated) ||
|
||||
(mUnit == eHTMLUnit_Proportional), "not an int value");
|
||||
if ((mUnit == eHTMLUnit_Integer) ||
|
||||
(mUnit == eHTMLUnit_Enumerated) ||
|
||||
(mUnit == eHTMLUnit_Proportional)) {
|
||||
return mValue.mInt;
|
||||
}
|
||||
else if (mUnit == eHTMLUnit_String) {
|
||||
if (mValue.mString) {
|
||||
PRInt32 err=0;
|
||||
nsAutoString str(mValue.mString); // XXX copy. new string APIs will make this better, right?
|
||||
return str.ToInteger(&err);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline PRInt32 nsHTMLValue::GetPixelValue(void) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eHTMLUnit_Pixel), "not a pixel value");
|
||||
if (mUnit == eHTMLUnit_Pixel) {
|
||||
return mValue.mInt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline float nsHTMLValue::GetPercentValue(void) const
|
||||
{
|
||||
NS_ASSERTION(mUnit == eHTMLUnit_Percent, "not a percent value");
|
||||
if (mUnit == eHTMLUnit_Percent) {
|
||||
return mValue.mFloat;
|
||||
}
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
inline nsAWritableString& nsHTMLValue::GetStringValue(nsAWritableString& aBuffer) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eHTMLUnit_String) || (mUnit == eHTMLUnit_ColorName) ||
|
||||
(mUnit == eHTMLUnit_Null), "not a string value");
|
||||
aBuffer.SetLength(0);
|
||||
if (((mUnit == eHTMLUnit_String) || (mUnit == eHTMLUnit_ColorName)) &&
|
||||
(nsnull != mValue.mString)) {
|
||||
aBuffer.Append(mValue.mString);
|
||||
}
|
||||
return aBuffer;
|
||||
}
|
||||
|
||||
inline nsISupports* nsHTMLValue::GetISupportsValue(void) const
|
||||
{
|
||||
NS_ASSERTION(mUnit == eHTMLUnit_ISupports, "not an ISupports value");
|
||||
if (mUnit == eHTMLUnit_ISupports) {
|
||||
nsISupports *result = mValue.mISupports;
|
||||
NS_IF_ADDREF(result);
|
||||
return result;
|
||||
}
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
inline nscolor nsHTMLValue::GetColorValue(void) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eHTMLUnit_Color) || (mUnit == eHTMLUnit_ColorName),
|
||||
"not a color value");
|
||||
if (mUnit == eHTMLUnit_Color) {
|
||||
return mValue.mColor;
|
||||
}
|
||||
if ((mUnit == eHTMLUnit_ColorName) && (mValue.mString)) {
|
||||
nscolor color;
|
||||
if (NS_ColorNameToRGB(nsAutoString(mValue.mString), &color)) {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
return NS_RGB(0,0,0);
|
||||
}
|
||||
|
||||
inline PRBool nsHTMLValue::operator!=(const nsHTMLValue& aOther) const
|
||||
{
|
||||
return PRBool(! ((*this) == aOther));
|
||||
}
|
||||
|
||||
#endif /* nsHTMLValue_h___ */
|
||||
|
||||
@@ -29,6 +29,7 @@ DIRS= \
|
||||
xbl \
|
||||
events \
|
||||
xul \
|
||||
shared \
|
||||
build \
|
||||
$(NULL)
|
||||
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = src
|
||||
DIRS = public src
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -19,8 +19,9 @@
|
||||
#
|
||||
# Contributor(s):
|
||||
|
||||
DEPTH=..\..\..
|
||||
DEPTH=..\..
|
||||
|
||||
DIRS=src
|
||||
DIRS=public src \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "nsColor.h"
|
||||
#include "nsString.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
enum nsHTMLUnit {
|
||||
eHTMLUnit_Null = 0, // (n/a) null unit, value is not specified
|
||||
@@ -46,39 +45,14 @@ enum nsHTMLUnit {
|
||||
|
||||
class nsHTMLValue {
|
||||
public:
|
||||
nsHTMLValue(nsHTMLUnit aUnit = eHTMLUnit_Null) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit <= eHTMLUnit_Empty), "not a valueless unit");
|
||||
if (aUnit > eHTMLUnit_Empty) {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
}
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
nsHTMLValue(nsHTMLUnit aUnit = eHTMLUnit_Null);
|
||||
nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
nsHTMLValue(float aValue);
|
||||
nsHTMLValue(const nsAReadableString& aValue,
|
||||
nsHTMLUnit aUnit = eHTMLUnit_String) : mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit), "not a string value");
|
||||
if ((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit)) {
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue(const nsAReadableString& aValue, nsHTMLUnit aUnit = eHTMLUnit_String);
|
||||
nsHTMLValue(nsISupports* aValue);
|
||||
nsHTMLValue(nscolor aValue);
|
||||
nsHTMLValue(const nsHTMLValue& aCopy);
|
||||
~nsHTMLValue(void)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
~nsHTMLValue(void);
|
||||
|
||||
nsHTMLValue& operator=(const nsHTMLValue& aCopy);
|
||||
PRBool operator==(const nsHTMLValue& aOther) const;
|
||||
@@ -93,19 +67,7 @@ public:
|
||||
nsISupports* GetISupportsValue(void) const;
|
||||
nscolor GetColorValue(void) const;
|
||||
|
||||
void Reset(void) {
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
nsCRT::free(mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
NS_IF_RELEASE(mValue.mISupports);
|
||||
}
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
void Reset(void);
|
||||
void SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit);
|
||||
void SetPixelValue(PRInt32 aValue);
|
||||
void SetPercentValue(float aValue);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "nscore.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
class nsString;
|
||||
|
||||
enum nsStyleUnit {
|
||||
eStyleUnit_Null = 0, // (no value) value is not specified
|
||||
@@ -48,86 +48,15 @@ typedef union {
|
||||
|
||||
class nsStyleCoord {
|
||||
public:
|
||||
nsStyleCoord(nsStyleUnit aUnit = eStyleUnit_Null)
|
||||
: mUnit(aUnit) {
|
||||
NS_ASSERTION(aUnit < eStyleUnit_Percent, "not a valueless unit");
|
||||
if (aUnit >= eStyleUnit_Percent) {
|
||||
mUnit = eStyleUnit_Null;
|
||||
}
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
nsStyleCoord(nsStyleUnit aUnit = eStyleUnit_Null);
|
||||
nsStyleCoord(nscoord aValue);
|
||||
nsStyleCoord(PRInt32 aValue, nsStyleUnit aUnit);
|
||||
nsStyleCoord(float aValue, nsStyleUnit aUnit);
|
||||
nsStyleCoord(const nsStyleCoord& aCopy);
|
||||
|
||||
nsStyleCoord(nscoord aValue)
|
||||
: mUnit(eStyleUnit_Coord) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
nsStyleCoord(PRInt32 aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit) {
|
||||
//if you want to pass in eStyleUnit_Coord, don't. instead, use the
|
||||
//constructor just above this one... MMP
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer), "not an int value");
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord(float aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit) {
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor), "not a float value");
|
||||
if ((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor)) {
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord(const nsStyleCoord& aCopy)
|
||||
: mUnit(aCopy.mUnit) {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord& operator=(const nsStyleCoord& aCopy) {
|
||||
mUnit = aCopy.mUnit;
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
PRBool operator==(const nsStyleCoord& aOther) const {
|
||||
if (mUnit == aOther.mUnit) {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
return PRBool(mValue.mFloat == aOther.mValue.mFloat);
|
||||
}
|
||||
else {
|
||||
return PRBool(mValue.mInt == aOther.mValue.mInt);
|
||||
}
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool operator!=(const nsStyleCoord& aOther) const;
|
||||
nsStyleCoord& operator=(const nsStyleCoord& aCopy);
|
||||
PRBool operator==(const nsStyleCoord& aOther) const;
|
||||
PRBool operator!=(const nsStyleCoord& aOther) const;
|
||||
|
||||
nsStyleUnit GetUnit(void) const { return mUnit; }
|
||||
nscoord GetCoordValue(void) const;
|
||||
@@ -136,98 +65,18 @@ public:
|
||||
float GetFactorValue(void) const;
|
||||
void GetUnionValue(nsStyleUnion& aValue) const;
|
||||
|
||||
void Reset(void) {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
void Reset(void); // sets to null
|
||||
void SetCoordValue(nscoord aValue);
|
||||
void SetIntValue(PRInt32 aValue, nsStyleUnit aUnit);
|
||||
void SetPercentValue(float aValue);
|
||||
void SetFactorValue(float aValue);
|
||||
void SetNormalValue(void);
|
||||
void SetAutoValue(void);
|
||||
void SetInheritValue(void);
|
||||
void SetUnionValue(const nsStyleUnion& aValue, nsStyleUnit aUnit);
|
||||
|
||||
void SetCoordValue(nscoord aValue) {
|
||||
mUnit = eStyleUnit_Coord;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
void SetIntValue(PRInt32 aValue, nsStyleUnit aUnit) {
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Chars) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mUnit = aUnit;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
NS_WARNING("not an int value");
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
void SetPercentValue(float aValue) {
|
||||
mUnit = eStyleUnit_Percent;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void SetFactorValue(float aValue) {
|
||||
mUnit = eStyleUnit_Factor;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void SetNormalValue(void) {
|
||||
mUnit = eStyleUnit_Normal;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetAutoValue(void) {
|
||||
mUnit = eStyleUnit_Auto;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetInheritValue(void) {
|
||||
mUnit = eStyleUnit_Inherit;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetUnionValue(const nsStyleUnion& aValue, nsStyleUnit aUnit) {
|
||||
mUnit = aUnit;
|
||||
#if PR_BYTES_PER_INT == PR_BYTES_PER_FLOAT
|
||||
mValue.mInt = aValue.mInt;
|
||||
#else
|
||||
nsCRT::memcpy(&mValue, &aValue, sizeof(nsStyleUnion));
|
||||
#endif
|
||||
}
|
||||
|
||||
void AppendToString(nsString& aBuffer) const {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
aBuffer.AppendFloat(mValue.mFloat);
|
||||
}
|
||||
else if ((eStyleUnit_Coord == mUnit) ||
|
||||
(eStyleUnit_Proportional == mUnit) ||
|
||||
(eStyleUnit_Enumerated == mUnit) ||
|
||||
(eStyleUnit_Integer == mUnit)) {
|
||||
aBuffer.AppendInt(mValue.mInt, 10);
|
||||
aBuffer.AppendWithConversion("[0x");
|
||||
aBuffer.AppendInt(mValue.mInt, 16);
|
||||
aBuffer.AppendWithConversion(']');
|
||||
}
|
||||
|
||||
switch (mUnit) {
|
||||
case eStyleUnit_Null: aBuffer.AppendWithConversion("Null"); break;
|
||||
case eStyleUnit_Coord: aBuffer.AppendWithConversion("tw"); break;
|
||||
case eStyleUnit_Percent: aBuffer.AppendWithConversion("%"); break;
|
||||
case eStyleUnit_Factor: aBuffer.AppendWithConversion("f"); break;
|
||||
case eStyleUnit_Normal: aBuffer.AppendWithConversion("Normal"); break;
|
||||
case eStyleUnit_Auto: aBuffer.AppendWithConversion("Auto"); break;
|
||||
case eStyleUnit_Inherit: aBuffer.AppendWithConversion("Inherit"); break;
|
||||
case eStyleUnit_Proportional: aBuffer.AppendWithConversion("*"); break;
|
||||
case eStyleUnit_Enumerated: aBuffer.AppendWithConversion("enum"); break;
|
||||
case eStyleUnit_Integer: aBuffer.AppendWithConversion("int"); break;
|
||||
case eStyleUnit_Chars: aBuffer.AppendWithConversion("chars"); break;
|
||||
}
|
||||
aBuffer.AppendWithConversion(' ');
|
||||
}
|
||||
|
||||
void ToString(nsString& aBuffer) const {
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
void AppendToString(nsString& aBuffer) const;
|
||||
void ToString(nsString& aBuffer) const;
|
||||
|
||||
public:
|
||||
nsStyleUnit mUnit;
|
||||
@@ -235,38 +84,12 @@ public:
|
||||
};
|
||||
|
||||
|
||||
#define COMPARE_SIDE(side) \
|
||||
if ((eStyleUnit_Percent <= m##side##Unit) && \
|
||||
(m##side##Unit < eStyleUnit_Coord)) { \
|
||||
if (m##side##Value.mFloat != aOther.m##side##Value.mFloat) \
|
||||
return PR_FALSE; \
|
||||
} \
|
||||
else { \
|
||||
if (m##side##Value.mInt != aOther.m##side##Value.mInt) \
|
||||
return PR_FALSE; \
|
||||
}
|
||||
|
||||
class nsStyleSides {
|
||||
public:
|
||||
nsStyleSides(void) {
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
nsStyleSides(void);
|
||||
|
||||
// nsStyleSides& operator=(const nsStyleSides& aCopy); // use compiler's version
|
||||
PRBool operator==(const nsStyleSides& aOther) const {
|
||||
if ((mLeftUnit == aOther.mLeftUnit) &&
|
||||
(mTopUnit == aOther.mTopUnit) &&
|
||||
(mRightUnit == aOther.mRightUnit) &&
|
||||
(mBottomUnit == aOther.mBottomUnit)) {
|
||||
COMPARE_SIDE(Left);
|
||||
COMPARE_SIDE(Top);
|
||||
COMPARE_SIDE(Right);
|
||||
COMPARE_SIDE(Bottom);
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool operator==(const nsStyleSides& aOther) const;
|
||||
PRBool operator!=(const nsStyleSides& aOther) const;
|
||||
|
||||
nsStyleUnit GetLeftUnit(void) const;
|
||||
@@ -279,39 +102,14 @@ public:
|
||||
nsStyleCoord& GetRight(nsStyleCoord& aCoord) const;
|
||||
nsStyleCoord& GetBottom(nsStyleCoord& aCoord) const;
|
||||
|
||||
void Reset(void) {
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
|
||||
void Reset(void);
|
||||
void SetLeft(const nsStyleCoord& aCoord);
|
||||
void SetTop(const nsStyleCoord& aCoord);
|
||||
void SetRight(const nsStyleCoord& aCoord);
|
||||
void SetBottom(const nsStyleCoord& aCoord);
|
||||
|
||||
void AppendToString(nsString& aBuffer) const {
|
||||
nsStyleCoord temp;
|
||||
|
||||
GetLeft(temp);
|
||||
aBuffer.AppendWithConversion("left: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetTop(temp);
|
||||
aBuffer.AppendWithConversion("top: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetRight(temp);
|
||||
aBuffer.AppendWithConversion("right: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetBottom(temp);
|
||||
aBuffer.AppendWithConversion("bottom: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
void ToString(nsString& aBuffer) const {
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
void AppendToString(nsString& aBuffer) const;
|
||||
void ToString(nsString& aBuffer) const;
|
||||
|
||||
protected:
|
||||
PRUint8 mLeftUnit;
|
||||
|
||||
@@ -24,9 +24,7 @@
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsAWritableString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "nsMemory.h"
|
||||
class nsString;
|
||||
|
||||
// XXX should this normalize the code to keep a \u0000 at the end?
|
||||
|
||||
@@ -67,9 +65,7 @@ public:
|
||||
mAllBits = 0;
|
||||
}
|
||||
|
||||
~nsTextFragment() {
|
||||
ReleaseText();
|
||||
}
|
||||
~nsTextFragment();
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
@@ -87,10 +83,7 @@ public:
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
* the argument ucs2 string.
|
||||
*/
|
||||
nsTextFragment(const PRUnichar* aString) : m1b(nsnull), mAllBits(0) {
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
}
|
||||
|
||||
nsTextFragment(const PRUnichar* aString);
|
||||
|
||||
/**
|
||||
* Initialize the contents of this fragment to be a copy of
|
||||
@@ -184,55 +177,7 @@ public:
|
||||
* buffer. Like operator= except a length is specified instead of
|
||||
* assuming 0 termination.
|
||||
*/
|
||||
void SetTo(const PRUnichar* aBuffer, PRInt32 aLength) {
|
||||
ReleaseText();
|
||||
if (0 != aLength) {
|
||||
// See if we need to store the data in ucs2 or not
|
||||
PRBool need2 = PR_FALSE;
|
||||
const PRUnichar* ucp = aBuffer;
|
||||
const PRUnichar* uend = aBuffer + aLength;
|
||||
while (ucp < uend) {
|
||||
PRUnichar ch = *ucp++;
|
||||
if (ch >> 8) {
|
||||
need2 = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (need2) {
|
||||
// Use ucs2 storage because we have to
|
||||
PRUnichar* nt = (PRUnichar*)nsMemory::Alloc(aLength*sizeof(PRUnichar));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
nsCRT::memcpy(nt, aBuffer, sizeof(PRUnichar) * aLength);
|
||||
|
||||
// Setup our fields
|
||||
m2b = nt;
|
||||
mState.mIs2b = 1;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Use 1 byte storage because we can
|
||||
unsigned char* nt = (unsigned char*)nsMemory::Alloc(aLength*sizeof(unsigned char));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
unsigned char* cp = nt;
|
||||
unsigned char* end = nt + aLength;
|
||||
while (cp < end) {
|
||||
*cp++ = (unsigned char) *aBuffer++;
|
||||
}
|
||||
|
||||
// Setup our fields
|
||||
m1b = nt;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void SetTo(const PRUnichar* aBuffer, PRInt32 aLength);
|
||||
|
||||
/**
|
||||
* Change the contents of this fragment to be a copy of the given
|
||||
@@ -244,14 +189,7 @@ public:
|
||||
/**
|
||||
* Append the contents of this string fragment to aString
|
||||
*/
|
||||
void AppendTo(nsString& aString) const {
|
||||
if (mState.mIs2b) {
|
||||
aString.Append(m2b, mState.mLength);
|
||||
}
|
||||
else {
|
||||
aString.AppendWithConversion((char*)m1b, mState.mLength);
|
||||
}
|
||||
}
|
||||
void AppendTo(nsString& aString) const;
|
||||
|
||||
/**
|
||||
* Make a copy of the fragments contents starting at offset for
|
||||
@@ -297,20 +235,7 @@ protected:
|
||||
FragmentBits mState;
|
||||
};
|
||||
|
||||
void ReleaseText() {
|
||||
if (mState.mLength && m1b && mState.mInHeap) {
|
||||
if (mState.mIs2b) {
|
||||
nsMemory::Free(m2b);
|
||||
}
|
||||
else {
|
||||
nsMemory::Free(m1b);
|
||||
}
|
||||
}
|
||||
m1b = nsnull;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 0;
|
||||
mState.mLength = 0;
|
||||
}
|
||||
void ReleaseText();
|
||||
};
|
||||
|
||||
#endif /* nsTextFragment_h___ */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../../..
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
@@ -27,10 +27,21 @@ VPATH = @srcdir@
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = layout
|
||||
LIBRARY_NAME = gkxulcon_s
|
||||
LIBRARY_NAME = gkconshared_s
|
||||
REQUIRES = xpcom string
|
||||
|
||||
CPPSRCS = nsXULAtoms.cpp
|
||||
CPPSRCS = \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsHTMLAtoms.cpp \
|
||||
nsHTMLValue.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
nsTextFragment.cpp \
|
||||
nsXULAtoms.cpp \
|
||||
nsStyleCoord.cpp \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
override NO_SHARED_LIB=1
|
||||
@@ -38,8 +49,4 @@ override NO_STATIC_LIB=
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_HTML
|
||||
|
||||
INCLUDES += \
|
||||
$(NULL)
|
||||
|
||||
DEFINES += -D_IMPL_NS_LAYOUT
|
||||
@@ -19,34 +19,41 @@
|
||||
#
|
||||
# Contributor(s):
|
||||
|
||||
DEPTH=..\..\..\..
|
||||
DEPTH=..\..\..
|
||||
|
||||
LIBRARY_NAME=contenthtmlbase_s
|
||||
MODULE=raptor
|
||||
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
|
||||
LIBRARY_NAME=contentshared_s
|
||||
DEFINES=-D_IMPL_NS_LAYOUT -DWIN32_LEAN_AND_MEAN
|
||||
!if defined(XP_NEW_SELECTION)
|
||||
DEFINES = $(DEFINES) -DXP_NEW_SELECTION
|
||||
!endif
|
||||
|
||||
CPPSRCS= \
|
||||
nsHTMLAtoms.cpp \
|
||||
CPPSRCS = \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsHTMLAtoms.cpp \
|
||||
nsHTMLValue.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
nsTextFragment.cpp \
|
||||
nsXULAtoms.cpp \
|
||||
nsStyleCoord.cpp \
|
||||
$(NULL)
|
||||
|
||||
CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsHTMLAtoms.obj \
|
||||
$(NULL)
|
||||
MODULE=raptor
|
||||
|
||||
LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor -I$(PUBLIC)\js \
|
||||
-I$(PUBLIC)\dom -I$(PUBLIC)\netlib -I$(PUBLIC)\unicharutil \
|
||||
-I..\..\style\src \
|
||||
-I..\..\forms\src \
|
||||
-I..\..\..\base\src -I$(PUBLIC)\plugin -I$(PUBLIC)\java \
|
||||
-I$(PUBLIC)\pref \
|
||||
-I$(PUBLIC)\lwbrk \
|
||||
-I$(PUBLIC)\unicharutil \
|
||||
-I$(PUBLIC)\oji \
|
||||
-I..\..\..\xul\content\src \
|
||||
-I..\..\..\xul\base\src \
|
||||
CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsCSSAtoms.obj \
|
||||
.\$(OBJDIR)\nsCSSKeywords.obj \
|
||||
.\$(OBJDIR)\nsCSSProps.obj \
|
||||
.\$(OBJDIR)\nsHTMLAtoms.obj \
|
||||
.\$(OBJDIR)\nsHTMLValue.obj \
|
||||
.\$(OBJDIR)\nsLayoutAtoms.obj \
|
||||
.\$(OBJDIR)\nsStyleUtil.obj \
|
||||
.\$(OBJDIR)\nsTextFragment.obj \
|
||||
.\$(OBJDIR)\nsXULAtoms.obj \
|
||||
.\$(OBJDIR)\StyleCoord.obj \
|
||||
$(NULL)
|
||||
|
||||
LCFLAGS = \
|
||||
$(LCFLAGS) \
|
||||
@@ -60,3 +67,4 @@ install:: $(LIBRARY)
|
||||
|
||||
clobber::
|
||||
rm -f $(DIST)\lib\$(LIBRARY_NAME).lib
|
||||
rm -f $(PDBFILE).pdb
|
||||
@@ -22,9 +22,20 @@
|
||||
|
||||
#include "nsHTMLValue.h"
|
||||
#include "nsString.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsISizeOfHandler.h"
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit <= eHTMLUnit_Empty), "not a valueless unit");
|
||||
if (aUnit > eHTMLUnit_Empty) {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
}
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
@@ -50,6 +61,21 @@ nsHTMLValue::nsHTMLValue(float aValue)
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(const nsAReadableString& aValue, nsHTMLUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit), "not a string value");
|
||||
if ((eHTMLUnit_String == aUnit) ||
|
||||
(eHTMLUnit_ColorName == aUnit)) {
|
||||
mValue.mString = ToNewUnicode(aValue);
|
||||
}
|
||||
else {
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue::nsHTMLValue(nsISupports* aValue)
|
||||
: mUnit(eHTMLUnit_ISupports)
|
||||
{
|
||||
@@ -89,6 +115,11 @@ nsHTMLValue::nsHTMLValue(const nsHTMLValue& aCopy)
|
||||
}
|
||||
}
|
||||
|
||||
nsHTMLValue::~nsHTMLValue(void)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
nsHTMLValue& nsHTMLValue::operator=(const nsHTMLValue& aCopy)
|
||||
{
|
||||
Reset();
|
||||
@@ -153,6 +184,21 @@ PRUint32 nsHTMLValue::HashValue(void) const
|
||||
}
|
||||
|
||||
|
||||
void nsHTMLValue::Reset(void)
|
||||
{
|
||||
if ((eHTMLUnit_String == mUnit) || (eHTMLUnit_ColorName == mUnit)) {
|
||||
if (nsnull != mValue.mString) {
|
||||
nsCRT::free(mValue.mString);
|
||||
}
|
||||
}
|
||||
else if (eHTMLUnit_ISupports == mUnit) {
|
||||
NS_IF_RELEASE(mValue.mISupports);
|
||||
}
|
||||
mUnit = eHTMLUnit_Null;
|
||||
mValue.mString = nsnull;
|
||||
}
|
||||
|
||||
|
||||
void nsHTMLValue::SetIntValue(PRInt32 aValue, nsHTMLUnit aUnit)
|
||||
{
|
||||
Reset();
|
||||
|
||||
284
mozilla/content/shared/src/nsStyleCoord.cpp
Normal file
284
mozilla/content/shared/src/nsStyleCoord.cpp
Normal file
@@ -0,0 +1,284 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsStyleCoord.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
nsStyleCoord::nsStyleCoord(nsStyleUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION(aUnit < eStyleUnit_Percent, "not a valueless unit");
|
||||
if (aUnit >= eStyleUnit_Percent) {
|
||||
mUnit = eStyleUnit_Null;
|
||||
}
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
nsStyleCoord::nsStyleCoord(nscoord aValue)
|
||||
: mUnit(eStyleUnit_Coord)
|
||||
{
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
nsStyleCoord::nsStyleCoord(PRInt32 aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
//if you want to pass in eStyleUnit_Coord, don't. instead, use the
|
||||
//constructor just above this one... MMP
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer), "not an int value");
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord::nsStyleCoord(float aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor), "not a float value");
|
||||
if ((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor)) {
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord::nsStyleCoord(const nsStyleCoord& aCopy)
|
||||
: mUnit(aCopy.mUnit)
|
||||
{
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord& nsStyleCoord::operator=(const nsStyleCoord& aCopy)
|
||||
{
|
||||
mUnit = aCopy.mUnit;
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
PRBool nsStyleCoord::operator==(const nsStyleCoord& aOther) const
|
||||
{
|
||||
if (mUnit == aOther.mUnit) {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
return PRBool(mValue.mFloat == aOther.mValue.mFloat);
|
||||
}
|
||||
else {
|
||||
return PRBool(mValue.mInt == aOther.mValue.mInt);
|
||||
}
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
void nsStyleCoord::Reset(void)
|
||||
{
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetCoordValue(nscoord aValue)
|
||||
{
|
||||
mUnit = eStyleUnit_Coord;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetIntValue(PRInt32 aValue, nsStyleUnit aUnit)
|
||||
{
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Chars) ||
|
||||
(aUnit == eStyleUnit_Integer), "not an int value");
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Chars) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mUnit = aUnit;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetPercentValue(float aValue)
|
||||
{
|
||||
mUnit = eStyleUnit_Percent;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetFactorValue(float aValue)
|
||||
{
|
||||
mUnit = eStyleUnit_Factor;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetNormalValue(void)
|
||||
{
|
||||
mUnit = eStyleUnit_Normal;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetAutoValue(void)
|
||||
{
|
||||
mUnit = eStyleUnit_Auto;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetInheritValue(void)
|
||||
{
|
||||
mUnit = eStyleUnit_Inherit;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void nsStyleCoord::SetUnionValue(const nsStyleUnion& aValue, nsStyleUnit aUnit)
|
||||
{
|
||||
mUnit = aUnit;
|
||||
#if PR_BYTES_PER_INT == PR_BYTES_PER_FLOAT
|
||||
mValue.mInt = aValue.mInt;
|
||||
#else
|
||||
nsCRT::memcpy(&mValue, &aValue, sizeof(nsStyleUnion));
|
||||
#endif
|
||||
}
|
||||
|
||||
void nsStyleCoord::AppendToString(nsString& aBuffer) const
|
||||
{
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
aBuffer.AppendFloat(mValue.mFloat);
|
||||
}
|
||||
else if ((eStyleUnit_Coord == mUnit) ||
|
||||
(eStyleUnit_Proportional == mUnit) ||
|
||||
(eStyleUnit_Enumerated == mUnit) ||
|
||||
(eStyleUnit_Integer == mUnit)) {
|
||||
aBuffer.AppendInt(mValue.mInt, 10);
|
||||
aBuffer.AppendWithConversion("[0x");
|
||||
aBuffer.AppendInt(mValue.mInt, 16);
|
||||
aBuffer.AppendWithConversion(']');
|
||||
}
|
||||
|
||||
switch (mUnit) {
|
||||
case eStyleUnit_Null: aBuffer.AppendWithConversion("Null"); break;
|
||||
case eStyleUnit_Coord: aBuffer.AppendWithConversion("tw"); break;
|
||||
case eStyleUnit_Percent: aBuffer.AppendWithConversion("%"); break;
|
||||
case eStyleUnit_Factor: aBuffer.AppendWithConversion("f"); break;
|
||||
case eStyleUnit_Normal: aBuffer.AppendWithConversion("Normal"); break;
|
||||
case eStyleUnit_Auto: aBuffer.AppendWithConversion("Auto"); break;
|
||||
case eStyleUnit_Inherit: aBuffer.AppendWithConversion("Inherit"); break;
|
||||
case eStyleUnit_Proportional: aBuffer.AppendWithConversion("*"); break;
|
||||
case eStyleUnit_Enumerated: aBuffer.AppendWithConversion("enum"); break;
|
||||
case eStyleUnit_Integer: aBuffer.AppendWithConversion("int"); break;
|
||||
case eStyleUnit_Chars: aBuffer.AppendWithConversion("chars"); break;
|
||||
}
|
||||
aBuffer.AppendWithConversion(' ');
|
||||
}
|
||||
|
||||
void nsStyleCoord::ToString(nsString& aBuffer) const
|
||||
{
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
nsStyleSides::nsStyleSides(void)
|
||||
{
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
|
||||
#define COMPARE_SIDE(side) \
|
||||
if ((eStyleUnit_Percent <= m##side##Unit) && (m##side##Unit < eStyleUnit_Coord)) { \
|
||||
if (m##side##Value.mFloat != aOther.m##side##Value.mFloat) \
|
||||
return PR_FALSE; \
|
||||
} \
|
||||
else { \
|
||||
if (m##side##Value.mInt != aOther.m##side##Value.mInt) \
|
||||
return PR_FALSE; \
|
||||
}
|
||||
|
||||
PRBool nsStyleSides::operator==(const nsStyleSides& aOther) const
|
||||
{
|
||||
if ((mLeftUnit == aOther.mLeftUnit) &&
|
||||
(mTopUnit == aOther.mTopUnit) &&
|
||||
(mRightUnit == aOther.mRightUnit) &&
|
||||
(mBottomUnit == aOther.mBottomUnit)) {
|
||||
COMPARE_SIDE(Left);
|
||||
COMPARE_SIDE(Top);
|
||||
COMPARE_SIDE(Right);
|
||||
COMPARE_SIDE(Bottom);
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
void nsStyleSides::Reset(void)
|
||||
{
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
|
||||
void nsStyleSides::AppendToString(nsString& aBuffer) const
|
||||
{
|
||||
nsStyleCoord temp;
|
||||
|
||||
GetLeft(temp);
|
||||
aBuffer.AppendWithConversion("left: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetTop(temp);
|
||||
aBuffer.AppendWithConversion("top: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetRight(temp);
|
||||
aBuffer.AppendWithConversion("right: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetBottom(temp);
|
||||
aBuffer.AppendWithConversion("bottom: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
void nsStyleSides::ToString(nsString& aBuffer) const
|
||||
{
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,32 @@
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsTextFragment.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsMemory.h"
|
||||
|
||||
nsTextFragment::~nsTextFragment()
|
||||
{
|
||||
ReleaseText();
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::ReleaseText()
|
||||
{
|
||||
if (mState.mLength && m1b && mState.mInHeap) {
|
||||
if (mState.mIs2b) {
|
||||
nsMemory::Free(m2b);
|
||||
}
|
||||
else {
|
||||
nsMemory::Free(m1b);
|
||||
}
|
||||
}
|
||||
m1b = nsnull;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 0;
|
||||
mState.mLength = 0;
|
||||
}
|
||||
|
||||
nsTextFragment::nsTextFragment(const nsTextFragment& aOther)
|
||||
: m1b(nsnull),
|
||||
@@ -41,6 +66,13 @@ nsTextFragment::nsTextFragment(const char* aString)
|
||||
SetTo(aString, strlen(aString));
|
||||
}
|
||||
|
||||
nsTextFragment::nsTextFragment(const PRUnichar* aString)
|
||||
: m1b(nsnull),
|
||||
mAllBits(0)
|
||||
{
|
||||
SetTo(aString, nsCRT::strlen(aString));
|
||||
}
|
||||
|
||||
nsTextFragment::nsTextFragment(const nsString& aString)
|
||||
: m1b(nsnull),
|
||||
mAllBits(0)
|
||||
@@ -107,6 +139,58 @@ nsTextFragment::SetTo(PRUnichar* aBuffer, PRInt32 aLength, PRBool aRelease)
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::SetTo(const PRUnichar* aBuffer, PRInt32 aLength)
|
||||
{
|
||||
ReleaseText();
|
||||
if (0 != aLength) {
|
||||
// See if we need to store the data in ucs2 or not
|
||||
PRBool need2 = PR_FALSE;
|
||||
const PRUnichar* ucp = aBuffer;
|
||||
const PRUnichar* uend = aBuffer + aLength;
|
||||
while (ucp < uend) {
|
||||
PRUnichar ch = *ucp++;
|
||||
if (ch >> 8) {
|
||||
need2 = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (need2) {
|
||||
// Use ucs2 storage because we have to
|
||||
PRUnichar* nt = (PRUnichar*)nsMemory::Alloc(aLength*sizeof(PRUnichar));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
nsCRT::memcpy(nt, aBuffer, sizeof(PRUnichar) * aLength);
|
||||
|
||||
// Setup our fields
|
||||
m2b = nt;
|
||||
mState.mIs2b = 1;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Use 1 byte storage because we can
|
||||
unsigned char* nt = (unsigned char*)nsMemory::Alloc(aLength*sizeof(unsigned char));
|
||||
if (nsnull != nt) {
|
||||
// Copy data
|
||||
unsigned char* cp = nt;
|
||||
unsigned char* end = nt + aLength;
|
||||
while (cp < end) {
|
||||
*cp++ = (unsigned char) *aBuffer++;
|
||||
}
|
||||
|
||||
// Setup our fields
|
||||
m1b = nt;
|
||||
mState.mIs2b = 0;
|
||||
mState.mInHeap = 1;
|
||||
mState.mLength = aLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::SetTo(const char* aBuffer, PRInt32 aLength)
|
||||
{
|
||||
@@ -124,6 +208,17 @@ nsTextFragment::SetTo(const char* aBuffer, PRInt32 aLength)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::AppendTo(nsString& aString) const
|
||||
{
|
||||
if (mState.mIs2b) {
|
||||
aString.Append(m2b, mState.mLength);
|
||||
}
|
||||
else {
|
||||
aString.AppendWithConversion((char*)m1b, mState.mLength);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsTextFragment::CopyTo(PRUnichar* aDest, PRInt32 aOffset, PRInt32 aCount)
|
||||
{
|
||||
|
||||
@@ -33,7 +33,6 @@ REQUIRES = xpcom string widget htmlparser necko dom webshell js caps rdf xpconne
|
||||
CPPSRCS = \
|
||||
nsAnonymousElement.cpp \
|
||||
nsRDFDOMNodeList.cpp \
|
||||
nsXULAtoms.cpp \
|
||||
nsXULAttributeValue.cpp \
|
||||
nsXULAttributes.cpp \
|
||||
nsXULElement.cpp \
|
||||
|
||||
@@ -29,7 +29,6 @@ DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
|
||||
CPPSRCS= \
|
||||
nsAnonymousElement.cpp \
|
||||
nsRDFDOMNodeList.cpp \
|
||||
nsXULAtoms.cpp \
|
||||
nsXULAttributeValue.cpp \
|
||||
nsXULAttributes.cpp \
|
||||
nsXULElement.cpp \
|
||||
@@ -40,7 +39,6 @@ CPPSRCS= \
|
||||
CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsAnonymousElement.obj \
|
||||
.\$(OBJDIR)\nsRDFDOMNodeList.obj \
|
||||
.\$(OBJDIR)\nsXULAtoms.obj \
|
||||
.\$(OBJDIR)\nsXULAttributeValue.obj \
|
||||
.\$(OBJDIR)\nsXULAttributes.obj \
|
||||
.\$(OBJDIR)\nsXULElement.obj \
|
||||
|
||||
@@ -1,249 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all XUL nsIAtoms and their values
|
||||
|
||||
It is designed to be used as inline input to nsXULAtoms.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro XUL_ATOM which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
The first argument to XUL_ATOM is the C++ identifier of the atom
|
||||
The second argument is the string value of the atom
|
||||
|
||||
******/
|
||||
|
||||
|
||||
XUL_ATOM(button, "button")
|
||||
XUL_ATOM(spinner, "spinner")
|
||||
XUL_ATOM(scrollbar, "scrollbar")
|
||||
XUL_ATOM(slider, "slider")
|
||||
XUL_ATOM(palettename, "palettename")
|
||||
XUL_ATOM(fontpicker, "fontpicker")
|
||||
XUL_ATOM(text, "text")
|
||||
XUL_ATOM(toolbar, "toolbar")
|
||||
XUL_ATOM(toolbaritem, "toolbaritem")
|
||||
XUL_ATOM(toolbox, "toolbox")
|
||||
XUL_ATOM(image, "image")
|
||||
|
||||
// The tree atoms
|
||||
XUL_ATOM(tree, "tree") // The start of a tree view
|
||||
XUL_ATOM(treecaption, "treecaption") // The caption of a tree view
|
||||
XUL_ATOM(treehead, "treehead") // The header of the tree view
|
||||
XUL_ATOM(treerow, "treerow") // A row in the tree view
|
||||
XUL_ATOM(treerows, "treerows") // A row in the tree view
|
||||
XUL_ATOM(treecell, "treecell") // An item in the tree view
|
||||
XUL_ATOM(treeitem, "treeitem") // A cell in the tree view
|
||||
XUL_ATOM(treechildren, "treechildren") // The children of an item in the tree view
|
||||
XUL_ATOM(treeindentation, "treeindentation") // Specifies that the indentation for the level should occur here.
|
||||
XUL_ATOM(allowevents, "allowevents") // Lets events be handled on the cell contents or in menus.
|
||||
XUL_ATOM(treecol, "treecol") // A column in the tree view
|
||||
XUL_ATOM(treecolgroup, "treecolgroup") // A column group in the tree view
|
||||
XUL_ATOM(treecols, "treecols") // A column group in the tree view
|
||||
XUL_ATOM(treefoot, "treefoot") // The footer of the tree view
|
||||
XUL_ATOM(scrollbarlist, "scrollbarlist") // An atom for internal use by the tree view
|
||||
XUL_ATOM(indent, "indent") // indicates that a cell should be indented
|
||||
XUL_ATOM(outer, "outer") // indicates that a treechildren is the outermost rowgroup
|
||||
XUL_ATOM(sizemode, "sizemode") // when set, measure strings to determine preferred width
|
||||
|
||||
XUL_ATOM(open, "open") // Whether or not a menu, tree, etc. is open
|
||||
|
||||
XUL_ATOM(outliner, "outliner")
|
||||
XUL_ATOM(outlinerbody, "outlinerbody")
|
||||
XUL_ATOM(outlinercol, "outlinercol")
|
||||
XUL_ATOM(cycler, "cycler")
|
||||
XUL_ATOM(primary, "primary")
|
||||
XUL_ATOM(current, "current")
|
||||
XUL_ATOM(mozoutlinerrow, ":-moz-outliner-row")
|
||||
XUL_ATOM(mozoutlinercell, ":-moz-outliner-cell")
|
||||
XUL_ATOM(mozoutlinercolumn, ":-moz-outliner-column")
|
||||
XUL_ATOM(mozoutlinercelltext, ":-moz-outliner-cell-text")
|
||||
XUL_ATOM(mozoutlinertwisty, ":-moz-outliner-twisty")
|
||||
XUL_ATOM(mozoutlinerindentation, ":-moz-outliner-indentation")
|
||||
|
||||
XUL_ATOM(menubar, "menubar") // An XP menu bar.
|
||||
XUL_ATOM(menu, "menu") // Represents an XP menu
|
||||
XUL_ATOM(menuitem, "menuitem") // Represents an XP menu item
|
||||
XUL_ATOM(menupopup, "menupopup") // The XP menu's children.
|
||||
XUL_ATOM(menutobedisplayed, "menutobedisplayed") // The menu is about to be displayed at the next sync w/ frame
|
||||
XUL_ATOM(menuactive, "menuactive") // Whether or not a menu is active (without necessarily being open)
|
||||
XUL_ATOM(accesskey, "accesskey") // The shortcut key for a menu or menu item
|
||||
XUL_ATOM(acceltext, "acceltext") // Text to use for the accelerator
|
||||
XUL_ATOM(popupset, "popupset") // Contains popup menus, context menus, and tooltips
|
||||
XUL_ATOM(popup, "popup") // The popup for a context menu, popup menu, or tooltip
|
||||
XUL_ATOM(menugenerated, "menugenerated") // Internal
|
||||
XUL_ATOM(popupanchor, "popupanchor") // Anchor for popups
|
||||
XUL_ATOM(popupalign, "popupalign") // Alignment for popups
|
||||
XUL_ATOM(ignorekeys, "ignorekeys") // Alignment for popups
|
||||
XUL_ATOM(sizetopopup, "sizetopopup") // Whether or not menus size to their popup children (used by menulists)
|
||||
|
||||
XUL_ATOM(key, "key") // The key element / attribute
|
||||
XUL_ATOM(keycode, "keycode") // The keycode attribute
|
||||
XUL_ATOM(keytext, "keytext") // The keytext attribute
|
||||
XUL_ATOM(modifiers, "modifiers") // The modifiers attribute
|
||||
XUL_ATOM(broadcaster, "broadcaster") // A broadcaster
|
||||
XUL_ATOM(observes, "observes") // The observes element
|
||||
XUL_ATOM(templateAtom, "template") // A XUL template
|
||||
|
||||
XUL_ATOM(progressbar, "progressbar")
|
||||
XUL_ATOM(progresstext, "progresstext")
|
||||
XUL_ATOM(crop, "crop")
|
||||
|
||||
XUL_ATOM(mode, "mode")
|
||||
XUL_ATOM(equalsize, "equalsize")
|
||||
XUL_ATOM(box, "box")
|
||||
XUL_ATOM(hbox, "hbox")
|
||||
XUL_ATOM(vbox, "vbox")
|
||||
XUL_ATOM(scrollbox, "scrollbox")
|
||||
XUL_ATOM(mousethrough, "mousethrough")
|
||||
XUL_ATOM(flex, "flex")
|
||||
XUL_ATOM(spring, "spring")
|
||||
XUL_ATOM(orient, "orient")
|
||||
XUL_ATOM(autostretch, "autostretch")
|
||||
XUL_ATOM(minwidth, "min-width")
|
||||
XUL_ATOM(minheight, "min-height")
|
||||
|
||||
XUL_ATOM(autorepeatbutton, "autorepeatbutton")
|
||||
|
||||
XUL_ATOM(bulletinboard, "bulletinboard")
|
||||
|
||||
XUL_ATOM(titledbox, "titledbox")
|
||||
XUL_ATOM(title, "title")
|
||||
XUL_ATOM(titledboxContentPseudo, ":titledbox-content")
|
||||
|
||||
XUL_ATOM(stack, "stack")
|
||||
XUL_ATOM(deck, "deck")
|
||||
XUL_ATOM(tabcontrol, "tabcontrol")
|
||||
XUL_ATOM(tab, "tab")
|
||||
XUL_ATOM(tabpanel, "tabpanel")
|
||||
XUL_ATOM(tabpage, "tabpage")
|
||||
XUL_ATOM(tabbox, "tabbox")
|
||||
XUL_ATOM(index, "index")
|
||||
XUL_ATOM(maxpos, "maxpos")
|
||||
XUL_ATOM(curpos, "curpos")
|
||||
XUL_ATOM(scrollbarbutton, "scrollbarbutton")
|
||||
XUL_ATOM(increment, "increment")
|
||||
XUL_ATOM(pageincrement, "pageincrement")
|
||||
XUL_ATOM(thumb, "thumb")
|
||||
XUL_ATOM(toggled, "toggled")
|
||||
XUL_ATOM(grippy, "grippy")
|
||||
XUL_ATOM(splitter, "splitter")
|
||||
XUL_ATOM(collapse, "collapse")
|
||||
XUL_ATOM(collapsed, "collapsed")
|
||||
XUL_ATOM(resizebefore, "resizebefore")
|
||||
XUL_ATOM(resizeafter, "resizeafter")
|
||||
XUL_ATOM(state, "state")
|
||||
XUL_ATOM(debug, "debug")
|
||||
|
||||
XUL_ATOM(fixed, "fixed")
|
||||
|
||||
// grid
|
||||
XUL_ATOM(grid, "grid")
|
||||
XUL_ATOM(rows, "rows")
|
||||
XUL_ATOM(columns, "columns")
|
||||
XUL_ATOM(row, "row")
|
||||
XUL_ATOM(column, "column")
|
||||
|
||||
// toolbar & toolbar d&d atoms
|
||||
XUL_ATOM(ddDropLocation, "dd-droplocation")
|
||||
XUL_ATOM(ddDropLocationCoord, "dd-droplocationcoord")
|
||||
XUL_ATOM(ddDropOn, "dd-dropon")
|
||||
XUL_ATOM(ddTriggerRepaintSorted, "dd-triggerrepaintsorted")
|
||||
XUL_ATOM(ddTriggerRepaintRestore, "dd-triggerrepaintrestore")
|
||||
XUL_ATOM(ddTriggerRepaint, "dd-triggerrepaint")
|
||||
XUL_ATOM(ddNoDropBetweenRows, "dd-nodropbetweenrows")
|
||||
XUL_ATOM(container, "container")
|
||||
XUL_ATOM(ddDragDropArea, "dragdroparea")
|
||||
XUL_ATOM(ddDropMarker, ":-moz-drop-marker")
|
||||
|
||||
XUL_ATOM(widget, "widget")
|
||||
XUL_ATOM(window, "window")
|
||||
|
||||
XUL_ATOM(iframe, "iframe")
|
||||
XUL_ATOM(browser, "browser")
|
||||
XUL_ATOM(editor, "editor")
|
||||
|
||||
//
|
||||
|
||||
XUL_ATOM(checkbox, "checkbox")
|
||||
XUL_ATOM(radio, "radio")
|
||||
XUL_ATOM(radiogroup, "radiogroup")
|
||||
XUL_ATOM(menulist, "menulist")
|
||||
XUL_ATOM(menubutton, "menubutton")
|
||||
XUL_ATOM(textfield, "textfield")
|
||||
XUL_ATOM(textarea, "textarea")
|
||||
XUL_ATOM(listbox, "listbox")
|
||||
XUL_ATOM(tooltip, "tooltip")
|
||||
XUL_ATOM(context, "context")
|
||||
XUL_ATOM(style, "style")
|
||||
XUL_ATOM(selected, "selected")
|
||||
XUL_ATOM(clazz, "class")
|
||||
XUL_ATOM(id, "id")
|
||||
XUL_ATOM(persist, "persist")
|
||||
XUL_ATOM(ref, "ref")
|
||||
XUL_ATOM(command, "command")
|
||||
XUL_ATOM(value, "value")
|
||||
XUL_ATOM(width, "width")
|
||||
XUL_ATOM(height, "height")
|
||||
XUL_ATOM(left, "left")
|
||||
XUL_ATOM(top, "top")
|
||||
XUL_ATOM(events, "events")
|
||||
XUL_ATOM(targets, "targets")
|
||||
XUL_ATOM(uri, "uri")
|
||||
XUL_ATOM(empty, "empty")
|
||||
XUL_ATOM(textnode, "textnode")
|
||||
XUL_ATOM(rule, "rule")
|
||||
XUL_ATOM(action, "action")
|
||||
XUL_ATOM(containment, "containment")
|
||||
XUL_ATOM(flags, "flags")
|
||||
XUL_ATOM(Template, "template")
|
||||
XUL_ATOM(member, "member")
|
||||
XUL_ATOM(conditions, "conditions")
|
||||
XUL_ATOM(property, "property")
|
||||
XUL_ATOM(instanceOf, "instanceOf")
|
||||
XUL_ATOM(xulcontentsgenerated, "xulcontentsgenerated")
|
||||
XUL_ATOM(parent, "parent")
|
||||
XUL_ATOM(iscontainer, "iscontainer")
|
||||
XUL_ATOM(isempty, "isempty")
|
||||
XUL_ATOM(bindings, "bindings")
|
||||
XUL_ATOM(binding, "binding")
|
||||
XUL_ATOM(triple, "triple")
|
||||
XUL_ATOM(subject, "subject")
|
||||
XUL_ATOM(predicate, "predicate")
|
||||
XUL_ATOM(child, "child")
|
||||
XUL_ATOM(object, "object")
|
||||
XUL_ATOM(tag, "tag")
|
||||
XUL_ATOM(content, "content")
|
||||
|
||||
XUL_ATOM(blankrow, "blankrow")
|
||||
XUL_ATOM(titlebar, "titlebar")
|
||||
XUL_ATOM(resizer, "resizer")
|
||||
XUL_ATOM(dir, "dir")
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsString.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsXULAtoms.h"
|
||||
|
||||
static const char kXULNameSpace[] = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
PRInt32 nsXULAtoms::nameSpaceID;
|
||||
|
||||
// define storage for all atoms
|
||||
#define XUL_ATOM(_name, _value) nsIAtom* nsXULAtoms::_name;
|
||||
#include "nsXULAtomList.h"
|
||||
#undef XUL_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt = 0;
|
||||
static nsINameSpaceManager* gNameSpaceManager;
|
||||
|
||||
void nsXULAtoms::AddRefAtoms() {
|
||||
|
||||
if (gRefCnt == 0) {
|
||||
/* XUL Atoms registers the XUL name space ID because it's a convenient
|
||||
place to do this, if you don't want a permanent, "well-known" ID.
|
||||
*/
|
||||
if (NS_SUCCEEDED(NS_NewNameSpaceManager(&gNameSpaceManager))) {
|
||||
// gNameSpaceManager->CreateRootNameSpace(namespace);
|
||||
nsAutoString nameSpace; nameSpace.AssignWithConversion(kXULNameSpace);
|
||||
gNameSpaceManager->RegisterNameSpace(nameSpace, nameSpaceID);
|
||||
} else {
|
||||
NS_ASSERTION(0, "failed to create xul atoms namespace manager");
|
||||
}
|
||||
|
||||
// now register the atoms
|
||||
#define XUL_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsXULAtomList.h"
|
||||
#undef XUL_ATOM
|
||||
}
|
||||
++gRefCnt;
|
||||
}
|
||||
|
||||
void nsXULAtoms::ReleaseAtoms() {
|
||||
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release of xul atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
#define XUL_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsXULAtomList.h"
|
||||
#undef XUL_ATOM
|
||||
|
||||
NS_IF_RELEASE(gNameSpaceManager);
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsXULAtoms_h___
|
||||
#define nsXULAtoms_h___
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nsIAtom.h"
|
||||
|
||||
class nsINameSpaceManager;
|
||||
|
||||
/**
|
||||
* This class wraps up the creation and destruction of the standard
|
||||
* set of xul atoms used during normal xul handling. This object
|
||||
* is created when the first xul content object is created, and
|
||||
* destroyed when the last such content object is destroyed.
|
||||
*/
|
||||
class nsXULAtoms {
|
||||
public:
|
||||
|
||||
static void AddRefAtoms();
|
||||
static void ReleaseAtoms();
|
||||
|
||||
// XUL namespace ID, good for the life of the nsXULAtoms object
|
||||
static PRInt32 nameSpaceID;
|
||||
|
||||
/* Declare all atoms
|
||||
|
||||
The atom names and values are stored in nsCSSAtomList.h and
|
||||
are brought to you by the magic of C preprocessing
|
||||
|
||||
Add new atoms to nsCSSAtomList and all support logic will be auto-generated
|
||||
*/
|
||||
#define XUL_ATOM(_name, _value) static nsIAtom* _name;
|
||||
#include "nsXULAtomList.h"
|
||||
#undef XUL_ATOM
|
||||
|
||||
};
|
||||
|
||||
#endif /* nsXULAtoms_h___ */
|
||||
@@ -1,273 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU Public License (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of those above.
|
||||
* If you wish to allow use of your version of this file only
|
||||
* under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the NPL, indicate your decision by
|
||||
* deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this
|
||||
* file under either the NPL or the GPL.
|
||||
*/
|
||||
|
||||
/* A namespace class for static layout utilities. */
|
||||
|
||||
#include "jsapi.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsIScriptContext.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsLayoutUtils::GetStaticScriptGlobal(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptGlobalObject** aNativeGlobal)
|
||||
{
|
||||
nsISupports* supports;
|
||||
JSClass* clazz;
|
||||
JSObject* parent;
|
||||
JSObject* glob = aObj; // starting point for search
|
||||
|
||||
if (!glob)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
while (nsnull != (parent = JS_GetParent(aContext, glob)))
|
||||
glob = parent;
|
||||
|
||||
#ifdef JS_THREADSAFE
|
||||
clazz = JS_GetClass(aContext, glob);
|
||||
#else
|
||||
clazz = JS_GetClass(glob);
|
||||
#endif
|
||||
|
||||
if (!clazz ||
|
||||
!(clazz->flags & JSCLASS_HAS_PRIVATE) ||
|
||||
!(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) ||
|
||||
!(supports = (nsISupports*) JS_GetPrivate(aContext, glob))) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return supports->QueryInterface(NS_GET_IID(nsIScriptGlobalObject),
|
||||
(void**) aNativeGlobal);
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetStaticScriptContext(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptContext** aScriptContext)
|
||||
{
|
||||
nsCOMPtr<nsIScriptGlobalObject> nativeGlobal;
|
||||
GetStaticScriptGlobal(aContext, aObj, getter_AddRefs(nativeGlobal));
|
||||
if (!nativeGlobal)
|
||||
return NS_ERROR_FAILURE;
|
||||
nsIScriptContext* scriptContext = nsnull;
|
||||
nativeGlobal->GetContext(&scriptContext);
|
||||
*aScriptContext = scriptContext;
|
||||
return scriptContext ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetDynamicScriptGlobal(JSContext* aContext,
|
||||
nsIScriptGlobalObject** aNativeGlobal)
|
||||
{
|
||||
nsIScriptGlobalObject* nativeGlobal = nsnull;
|
||||
nsCOMPtr<nsIScriptContext> scriptCX;
|
||||
GetDynamicScriptContext(aContext, getter_AddRefs(scriptCX));
|
||||
if (scriptCX) {
|
||||
*aNativeGlobal = nativeGlobal = scriptCX->GetGlobalObject();
|
||||
}
|
||||
return nativeGlobal ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetDynamicScriptContext(JSContext *aContext,
|
||||
nsIScriptContext** aScriptContext)
|
||||
{
|
||||
// XXX We rely on the rule that if any JSContext in our JSRuntime has a
|
||||
// private set then that private *must* be a pointer to an nsISupports.
|
||||
nsISupports *supports = (nsIScriptContext*) JS_GetContextPrivate(aContext);
|
||||
if (!supports)
|
||||
return nsnull;
|
||||
return supports->QueryInterface(NS_GET_IID(nsIScriptContext),
|
||||
(void**)aScriptContext);
|
||||
}
|
||||
|
||||
template <class OutputIterator>
|
||||
struct NormalizeNewlinesCharTraits {
|
||||
public:
|
||||
typedef typename OutputIterator::value_type value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(OutputIterator& aIterator) : mIterator(aIterator) { }
|
||||
void writechar(typename OutputIterator::value_type aChar) {
|
||||
*mIterator++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
OutputIterator mIterator;
|
||||
};
|
||||
|
||||
#ifdef HAVE_CPP_PARTIAL_SPECIALIZATION
|
||||
|
||||
template <class CharT>
|
||||
struct NormalizeNewlinesCharTraits<CharT*> {
|
||||
public:
|
||||
typedef CharT value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(CharT* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(CharT aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
CharT* mCharPtr;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
NS_SPECIALIZE_TEMPLATE
|
||||
struct NormalizeNewlinesCharTraits<char*> {
|
||||
public:
|
||||
typedef char value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(char* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(char aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
char* mCharPtr;
|
||||
};
|
||||
|
||||
NS_SPECIALIZE_TEMPLATE
|
||||
struct NormalizeNewlinesCharTraits<PRUnichar*> {
|
||||
public:
|
||||
typedef PRUnichar value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(PRUnichar* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(PRUnichar aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
PRUnichar* mCharPtr;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
template <class OutputIterator>
|
||||
class CopyNormalizeNewlines
|
||||
{
|
||||
public:
|
||||
typedef typename OutputIterator::value_type value_type;
|
||||
|
||||
public:
|
||||
CopyNormalizeNewlines(OutputIterator* aDestination) :
|
||||
mLastCharCR(PR_FALSE),
|
||||
mDestination(aDestination),
|
||||
mWritten(0)
|
||||
{ }
|
||||
|
||||
PRUint32 GetCharsWritten() {
|
||||
return mWritten;
|
||||
}
|
||||
|
||||
PRUint32 write(const typename OutputIterator::value_type* aSource, PRUint32 aSourceLength) {
|
||||
// If the last source buffer ended with a CR...
|
||||
if (mLastCharCR) {
|
||||
// ..and if the next one is a LF, then skip it since
|
||||
// we've already written out a newline
|
||||
if (aSourceLength && (*aSource == value_type('\n'))) {
|
||||
aSource++;
|
||||
}
|
||||
mLastCharCR = PR_FALSE;
|
||||
}
|
||||
|
||||
const typename OutputIterator::value_type* done_writing = aSource + aSourceLength;
|
||||
PRUint32 num_written = 0;
|
||||
while ( aSource < done_writing ) {
|
||||
if (*aSource == value_type('\r')) {
|
||||
mDestination->writechar('\n');
|
||||
aSource++;
|
||||
// If we've reached the end of the buffer, record
|
||||
// that we wrote out a CR
|
||||
if (aSource == done_writing) {
|
||||
mLastCharCR = PR_TRUE;
|
||||
}
|
||||
// If the next character is a LF, skip it
|
||||
else if (*aSource == value_type('\n')) {
|
||||
aSource++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mDestination->writechar(*aSource++);
|
||||
}
|
||||
num_written++;
|
||||
}
|
||||
|
||||
mWritten += num_written;
|
||||
return aSourceLength;
|
||||
}
|
||||
|
||||
private:
|
||||
PRBool mLastCharCR;
|
||||
OutputIterator* mDestination;
|
||||
PRUint32 mWritten;
|
||||
};
|
||||
|
||||
// static
|
||||
PRUint32
|
||||
nsLayoutUtils::CopyNewlineNormalizedUnicodeTo(const nsAReadableString& aSource, PRUint32 aSrcOffset, PRUnichar* aDest, PRUint32 aLength)
|
||||
{
|
||||
typedef NormalizeNewlinesCharTraits<PRUnichar*> sink_traits;
|
||||
|
||||
sink_traits dest_traits(aDest);
|
||||
CopyNormalizeNewlines<sink_traits> normalizer(&dest_traits);
|
||||
nsReadingIterator<PRUnichar> fromBegin, fromEnd;
|
||||
copy_string(aSource.BeginReading(fromBegin).advance( PRInt32(aSrcOffset) ), aSource.BeginReading(fromEnd).advance( PRInt32(aSrcOffset+aLength) ), normalizer);
|
||||
return normalizer.GetCharsWritten();
|
||||
}
|
||||
|
||||
// static
|
||||
PRUint32
|
||||
nsLayoutUtils::CopyNewlineNormalizedUnicodeTo(nsReadingIterator<PRUnichar>& aSrcStart, const nsReadingIterator<PRUnichar>& aSrcEnd, nsAWritableString& aDest)
|
||||
{
|
||||
typedef nsWritingIterator<PRUnichar> WritingIterator;
|
||||
typedef NormalizeNewlinesCharTraits<WritingIterator> sink_traits;
|
||||
|
||||
WritingIterator iter;
|
||||
aDest.BeginWriting(iter);
|
||||
sink_traits dest_traits(iter);
|
||||
CopyNormalizeNewlines<sink_traits> normalizer(&dest_traits);
|
||||
copy_string(aSrcStart, aSrcEnd, normalizer);
|
||||
return normalizer.GetCharsWritten();
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU Public License (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of those above.
|
||||
* If you wish to allow use of your version of this file only
|
||||
* under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the NPL, indicate your decision by
|
||||
* deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this
|
||||
* file under either the NPL or the GPL.
|
||||
*/
|
||||
|
||||
/* A namespace class for static layout utilities. */
|
||||
|
||||
#ifndef nsLayoutUtils_h___
|
||||
#define nsLayoutUtils_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "jspubtd.h"
|
||||
#include "nsAReadableString.h"
|
||||
|
||||
class nsIScriptContext;
|
||||
class nsIScriptGlobalObject;
|
||||
|
||||
class nsLayoutUtils
|
||||
{
|
||||
public:
|
||||
|
||||
// These are copied from nsJSUtils.h
|
||||
|
||||
static nsresult GetStaticScriptGlobal(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptGlobalObject** aNativeGlobal);
|
||||
|
||||
static nsresult GetStaticScriptContext(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptContext** aScriptContext);
|
||||
|
||||
static nsresult GetDynamicScriptGlobal(JSContext *aContext,
|
||||
nsIScriptGlobalObject** aNativeGlobal);
|
||||
|
||||
static nsresult GetDynamicScriptContext(JSContext *aContext,
|
||||
nsIScriptContext** aScriptContext);
|
||||
|
||||
static PRUint32 CopyNewlineNormalizedUnicodeTo(const nsAReadableString& aSource,
|
||||
PRUint32 aSrcOffset,
|
||||
PRUnichar* aDest,
|
||||
PRUint32 aLength);
|
||||
|
||||
static PRUint32 CopyNewlineNormalizedUnicodeTo(nsReadingIterator<PRUnichar>& aSrcStart, const nsReadingIterator<PRUnichar>& aSrcEnd, nsAWritableString& aDest);
|
||||
};
|
||||
|
||||
#endif /* nsLayoutUtils_h___ */
|
||||
@@ -31,12 +31,8 @@ nsIStatefulFrame.h
|
||||
nsIStyleContext.h
|
||||
nsIStyleSet.h
|
||||
nslayout.h
|
||||
nsLayoutAtomList.h
|
||||
nsLayoutAtoms.h
|
||||
nsLayoutUtils.h
|
||||
nsStyleChangeList.h
|
||||
nsStyleConsts.h
|
||||
nsStyleCoord.h
|
||||
nsIStyleFrameConstruction.h
|
||||
nsStyleStruct.h
|
||||
nsIFrameTraversal.h
|
||||
|
||||
@@ -58,14 +58,10 @@ nsIStyleContext.h \
|
||||
nsIMutableStyleContext.h \
|
||||
nsIStyleFrameConstruction.h \
|
||||
nsIStyleSet.h \
|
||||
nsLayoutAtoms.h \
|
||||
nsLayoutAtomList.h \
|
||||
nsLayoutUtils.h \
|
||||
nsFrameList.h \
|
||||
nsFrameTraversal.h \
|
||||
nsStyleChangeList.h \
|
||||
nsStyleConsts.h \
|
||||
nsStyleCoord.h \
|
||||
nsStyleStruct.h \
|
||||
nsILayoutHistoryState.h \
|
||||
nsIStatefulFrame.h \
|
||||
|
||||
@@ -49,14 +49,10 @@ EXPORTS = \
|
||||
nsIMutableStyleContext.h \
|
||||
nsIStyleFrameConstruction.h \
|
||||
nsIStyleSet.h \
|
||||
nsLayoutAtoms.h \
|
||||
nsLayoutAtomList.h \
|
||||
nsLayoutUtils.h \
|
||||
nsFrameList.h \
|
||||
nsFrameTraversal.h \
|
||||
nsStyleChangeList.h \
|
||||
nsStyleConsts.h \
|
||||
nsStyleCoord.h \
|
||||
nsStyleStruct.h \
|
||||
nsILayoutHistoryState.h \
|
||||
nsIStatefulFrame.h \
|
||||
|
||||
@@ -1,199 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all layout nsIAtoms and their values
|
||||
|
||||
It is designed to be used as inline input to nsLayoutAtoms.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro LAYOUT_ATOM which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
The first argument to LAYOUT_ATOM is the C++ identifier of the atom
|
||||
The second argument is the string value of the atom
|
||||
|
||||
******/
|
||||
|
||||
|
||||
// Alphabetical list of media type atoms
|
||||
LAYOUT_ATOM(all, "all") // Media atoms must be lower case
|
||||
LAYOUT_ATOM(aural, "aural")
|
||||
LAYOUT_ATOM(braille, "braille")
|
||||
LAYOUT_ATOM(embossed, "embossed")
|
||||
LAYOUT_ATOM(handheld, "handheld")
|
||||
LAYOUT_ATOM(print, "print")
|
||||
LAYOUT_ATOM(projection, "projection")
|
||||
LAYOUT_ATOM(screen, "screen")
|
||||
LAYOUT_ATOM(tty, "tty")
|
||||
LAYOUT_ATOM(tv, "tv")
|
||||
|
||||
// Alphabetical list of standard name space prefixes
|
||||
LAYOUT_ATOM(htmlNameSpace, "html")
|
||||
LAYOUT_ATOM(xmlNameSpace, "xml")
|
||||
LAYOUT_ATOM(xmlnsNameSpace, "xmlns")
|
||||
|
||||
// Alphabetical list of frame additional child list names
|
||||
LAYOUT_ATOM(absoluteList, "Absolute-list")
|
||||
LAYOUT_ATOM(bulletList, "Bullet-list")
|
||||
LAYOUT_ATOM(captionList, "Caption-list")
|
||||
LAYOUT_ATOM(colGroupList, "ColGroup-list")
|
||||
LAYOUT_ATOM(editorDisplayList, "EditorDisplay-List")
|
||||
LAYOUT_ATOM(fixedList, "Fixed-list")
|
||||
LAYOUT_ATOM(floaterList, "Floater-list")
|
||||
LAYOUT_ATOM(overflowList, "Overflow-list")
|
||||
LAYOUT_ATOM(popupList, "Popup-list")
|
||||
|
||||
// Alphabetical list of pseudo tag names for non-element content
|
||||
LAYOUT_ATOM(canvasPseudo, ":canvas")
|
||||
LAYOUT_ATOM(commentTagName, "__moz_comment")
|
||||
LAYOUT_ATOM(dummyOptionPseudo, ":-moz-dummy-option")
|
||||
LAYOUT_ATOM(optionSelectedPseudo, "-moz-option-selected")
|
||||
LAYOUT_ATOM(textTagName, "__moz_text")
|
||||
LAYOUT_ATOM(pagePseudo, ":-moz-page")
|
||||
LAYOUT_ATOM(pageSequencePseudo, ":-moz-page-sequence")
|
||||
LAYOUT_ATOM(processingInstructionTagName, "__moz_pi")
|
||||
LAYOUT_ATOM(scrolledContentPseudo, ":scrolled-content")
|
||||
LAYOUT_ATOM(viewportPseudo, ":viewport")
|
||||
LAYOUT_ATOM(viewportScrollPseudo, ":viewport-scroll")
|
||||
LAYOUT_ATOM(selectScrolledContentPseudo, ":-moz-select-scrolled-content")
|
||||
|
||||
// Alphabetical list of frame types
|
||||
LAYOUT_ATOM(areaFrame, "AreaFrame")
|
||||
LAYOUT_ATOM(blockFrame, "BlockFrame")
|
||||
LAYOUT_ATOM(brFrame, "BRFrame")
|
||||
LAYOUT_ATOM(bulletFrame, "BulletFrame")
|
||||
LAYOUT_ATOM(hrFrame, "HRFrame")
|
||||
LAYOUT_ATOM(htmlFrameInnerFrame, "htmlFrameInnerFrame")
|
||||
LAYOUT_ATOM(htmlFrameOuterFrame, "htmlFrameOuterFrame")
|
||||
LAYOUT_ATOM(imageFrame, "ImageFrame")
|
||||
LAYOUT_ATOM(inlineFrame, "InlineFrame")
|
||||
LAYOUT_ATOM(letterFrame, "LetterFrame")
|
||||
LAYOUT_ATOM(lineFrame, "LineFrame")
|
||||
LAYOUT_ATOM(objectFrame, "ObjectFrame")
|
||||
LAYOUT_ATOM(pageFrame, "PageFrame")
|
||||
LAYOUT_ATOM(placeholderFrame, "PlaceholderFrame")
|
||||
LAYOUT_ATOM(positionedInlineFrame, "PositionedInlineFrame")
|
||||
LAYOUT_ATOM(canvasFrame, "CanvasFrame")
|
||||
LAYOUT_ATOM(rootFrame, "RootFrame")
|
||||
LAYOUT_ATOM(scrollFrame, "ScrollFrame")
|
||||
LAYOUT_ATOM(tableCaptionFrame, "TableCaptionFrame")
|
||||
LAYOUT_ATOM(tableCellFrame, "TableCellFrame")
|
||||
LAYOUT_ATOM(tableColFrame, "TableColFrame")
|
||||
LAYOUT_ATOM(tableColGroupFrame, "TableColGroupFrame")
|
||||
LAYOUT_ATOM(tableFrame, "TableFrame")
|
||||
LAYOUT_ATOM(tableOuterFrame, "TableOuterFrame")
|
||||
LAYOUT_ATOM(tableRowGroupFrame, "TableRowGroupFrame")
|
||||
LAYOUT_ATOM(tableRowFrame, "TableRowFrame")
|
||||
LAYOUT_ATOM(textInputFrame,"TextInputFrame")
|
||||
LAYOUT_ATOM(textFrame, "TextFrame")
|
||||
LAYOUT_ATOM(viewportFrame, "ViewportFrame")
|
||||
|
||||
// Alphabetical list of frame property names
|
||||
LAYOUT_ATOM(collapseOffsetProperty, "CollapseOffsetProperty") // nsPoint*
|
||||
LAYOUT_ATOM(inlineFrameAnnotation, "InlineFrameAnnotation") // BOOL
|
||||
LAYOUT_ATOM(maxElementSizeProperty, "MaxElementSizeProperty") // nsSize*
|
||||
LAYOUT_ATOM(overflowAreaProperty, "OverflowArea") // nsRect*
|
||||
LAYOUT_ATOM(overflowProperty, "OverflowProperty") // list of nsIFrame*
|
||||
LAYOUT_ATOM(overflowLinesProperty, "OverflowLinesProperty") // list of nsLineBox*
|
||||
LAYOUT_ATOM(spaceManagerProperty, "SpaceManagerProperty") // the space manager for a block
|
||||
LAYOUT_ATOM(viewProperty, "ViewProperty") // nsView*
|
||||
|
||||
// Alphabetical list of event handler names
|
||||
LAYOUT_ATOM(onabort, "onabort")
|
||||
LAYOUT_ATOM(onblur, "onblur")
|
||||
LAYOUT_ATOM(onbroadcast, "onbroadcast")
|
||||
LAYOUT_ATOM(onchange, "onchange")
|
||||
LAYOUT_ATOM(onclick, "onclick")
|
||||
LAYOUT_ATOM(onclose, "onclose")
|
||||
LAYOUT_ATOM(oncommand, "oncommand")
|
||||
LAYOUT_ATOM(oncommandupdate, "oncommandupdate")
|
||||
LAYOUT_ATOM(oncreate, "oncreate")
|
||||
LAYOUT_ATOM(ondblclick, "ondblclick")
|
||||
LAYOUT_ATOM(ondestroy, "ondestroy")
|
||||
LAYOUT_ATOM(ondragdrop, "ondragdrop")
|
||||
LAYOUT_ATOM(ondragenter, "ondragenter")
|
||||
LAYOUT_ATOM(ondragexit, "ondragexit")
|
||||
LAYOUT_ATOM(ondraggesture, "ondraggesture")
|
||||
LAYOUT_ATOM(ondragover, "ondragover")
|
||||
LAYOUT_ATOM(onerror, "onerror")
|
||||
LAYOUT_ATOM(onfocus, "onfocus")
|
||||
LAYOUT_ATOM(oninput, "oninput")
|
||||
LAYOUT_ATOM(onkeydown, "onkeydown")
|
||||
LAYOUT_ATOM(onkeypress, "onkeypress")
|
||||
LAYOUT_ATOM(onkeyup, "onkeyup")
|
||||
LAYOUT_ATOM(onload, "onload")
|
||||
LAYOUT_ATOM(onmousedown, "onmousedown")
|
||||
LAYOUT_ATOM(onmousemove, "onmousemove")
|
||||
LAYOUT_ATOM(onmouseover, "onmouseover")
|
||||
LAYOUT_ATOM(onmouseout, "onmouseout")
|
||||
LAYOUT_ATOM(onmouseup, "onmouseup")
|
||||
LAYOUT_ATOM(onpaint, "onpaint")
|
||||
LAYOUT_ATOM(onreset, "onreset")
|
||||
LAYOUT_ATOM(onresize, "onresize")
|
||||
LAYOUT_ATOM(onscroll, "onscroll")
|
||||
LAYOUT_ATOM(onselect, "onselect")
|
||||
LAYOUT_ATOM(onsubmit, "onsubmit")
|
||||
LAYOUT_ATOM(onunload, "onunload")
|
||||
|
||||
// scrolling
|
||||
LAYOUT_ATOM(onoverflow, "onoverflow")
|
||||
LAYOUT_ATOM(onunderflow, "onunderflow")
|
||||
LAYOUT_ATOM(onoverflowchanged, "onoverflowchanged")
|
||||
|
||||
// mutation events
|
||||
LAYOUT_ATOM(onDOMSubtreeModified, "onDOMSubtreeModified")
|
||||
LAYOUT_ATOM(onDOMNodeInserted, "onDOMNodeInserted")
|
||||
LAYOUT_ATOM(onDOMNodeRemoved, "onDOMNodeRemoved")
|
||||
LAYOUT_ATOM(onDOMNodeRemovedFromDocument, "onDOMNodeRemovedFromDocument")
|
||||
LAYOUT_ATOM(onDOMNodeInsertedIntoDocument, "onDOMNodeInsertedIntoDocument")
|
||||
LAYOUT_ATOM(onDOMAttrModified, "onDOMAttrModified")
|
||||
LAYOUT_ATOM(onDOMCharacterDataModified, "onDOMCharacterDataModified")
|
||||
|
||||
// Alphabetical list of languages for lang-specific transforms
|
||||
LAYOUT_ATOM(Japanese, "ja")
|
||||
LAYOUT_ATOM(Korean, "ko")
|
||||
|
||||
// other
|
||||
LAYOUT_ATOM(wildcard, "*")
|
||||
LAYOUT_ATOM(mozdirty, "_moz_dirty")
|
||||
|
||||
#ifdef DEBUG
|
||||
// Alphabetical list of atoms used by debugging code
|
||||
LAYOUT_ATOM(cellMap, "TableCellMap")
|
||||
LAYOUT_ATOM(imageMap, "ImageMap")
|
||||
LAYOUT_ATOM(lineBoxBig, "LineBox:inline,big")
|
||||
LAYOUT_ATOM(lineBoxBlockBig, "LineBox:block,big")
|
||||
LAYOUT_ATOM(lineBoxBlockSmall, "LineBox:block,small")
|
||||
LAYOUT_ATOM(lineBoxFloaters, "LineBoxFloaters")
|
||||
LAYOUT_ATOM(lineBoxSmall, "LineBox:inline,small")
|
||||
LAYOUT_ATOM(spaceManager, "SpaceManager")
|
||||
LAYOUT_ATOM(tableColCache, "TableColumnCache")
|
||||
LAYOUT_ATOM(tableStrategy, "TableLayoutStrategy")
|
||||
LAYOUT_ATOM(textRun, "TextRun")
|
||||
LAYOUT_ATOM(xml_document_entities, "XMLDocumentEntities")
|
||||
LAYOUT_ATOM(xml_document_notations, "XMLDocumentNotations")
|
||||
#endif
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsLayoutAtoms_h___
|
||||
#define nsLayoutAtoms_h___
|
||||
|
||||
#include "nsIAtom.h"
|
||||
|
||||
/**
|
||||
* This class wraps up the creation (and destruction) of the standard
|
||||
* set of atoms used during layout processing. These objects
|
||||
* are created when the first presentation context is created and they
|
||||
* are destroyed when the last presentation context object is destroyed.
|
||||
*/
|
||||
|
||||
class nsLayoutAtoms {
|
||||
public:
|
||||
|
||||
static void AddRefAtoms();
|
||||
static void ReleaseAtoms();
|
||||
|
||||
/* Declare all atoms
|
||||
|
||||
The atom names and values are stored in nsLayoutAtomList.h and
|
||||
are brought to you by the magic of C preprocessing
|
||||
|
||||
Add new atoms to nsLayoutAtomList and all support logic will be auto-generated
|
||||
*/
|
||||
#define LAYOUT_ATOM(_name, _value) static nsIAtom* _name;
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
};
|
||||
|
||||
#endif /* nsLayoutAtoms_h___ */
|
||||
@@ -1,75 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU Public License (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of those above.
|
||||
* If you wish to allow use of your version of this file only
|
||||
* under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the NPL, indicate your decision by
|
||||
* deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this
|
||||
* file under either the NPL or the GPL.
|
||||
*/
|
||||
|
||||
/* A namespace class for static layout utilities. */
|
||||
|
||||
#ifndef nsLayoutUtils_h___
|
||||
#define nsLayoutUtils_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "jspubtd.h"
|
||||
#include "nsAReadableString.h"
|
||||
|
||||
class nsIScriptContext;
|
||||
class nsIScriptGlobalObject;
|
||||
|
||||
class nsLayoutUtils
|
||||
{
|
||||
public:
|
||||
|
||||
// These are copied from nsJSUtils.h
|
||||
|
||||
static nsresult GetStaticScriptGlobal(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptGlobalObject** aNativeGlobal);
|
||||
|
||||
static nsresult GetStaticScriptContext(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptContext** aScriptContext);
|
||||
|
||||
static nsresult GetDynamicScriptGlobal(JSContext *aContext,
|
||||
nsIScriptGlobalObject** aNativeGlobal);
|
||||
|
||||
static nsresult GetDynamicScriptContext(JSContext *aContext,
|
||||
nsIScriptContext** aScriptContext);
|
||||
|
||||
static PRUint32 CopyNewlineNormalizedUnicodeTo(const nsAReadableString& aSource,
|
||||
PRUint32 aSrcOffset,
|
||||
PRUnichar* aDest,
|
||||
PRUint32 aLength);
|
||||
|
||||
static PRUint32 CopyNewlineNormalizedUnicodeTo(nsReadingIterator<PRUnichar>& aSrcStart, const nsReadingIterator<PRUnichar>& aSrcEnd, nsAWritableString& aDest);
|
||||
};
|
||||
|
||||
#endif /* nsLayoutUtils_h___ */
|
||||
@@ -1,458 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsStyleCoord_h___
|
||||
#define nsStyleCoord_h___
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
|
||||
enum nsStyleUnit {
|
||||
eStyleUnit_Null = 0, // (no value) value is not specified
|
||||
eStyleUnit_Normal = 1, // (no value)
|
||||
eStyleUnit_Auto = 2, // (no value)
|
||||
eStyleUnit_Inherit = 3, // (no value) value should be inherited
|
||||
eStyleUnit_Percent = 10, // (float) 1.0 == 100%
|
||||
eStyleUnit_Factor = 11, // (float) a multiplier
|
||||
eStyleUnit_Coord = 20, // (nscoord) value is twips
|
||||
eStyleUnit_Integer = 30, // (int) value is simple integer
|
||||
eStyleUnit_Proportional = 31, // (int) value has proportional meaning
|
||||
eStyleUnit_Enumerated = 32, // (int) value has enumerated meaning
|
||||
eStyleUnit_Chars = 33 // (int) value is number of characters
|
||||
};
|
||||
|
||||
typedef union {
|
||||
PRInt32 mInt; // nscoord is a PRInt32 for now
|
||||
float mFloat;
|
||||
} nsStyleUnion;
|
||||
|
||||
class nsStyleCoord {
|
||||
public:
|
||||
nsStyleCoord(nsStyleUnit aUnit = eStyleUnit_Null)
|
||||
: mUnit(aUnit) {
|
||||
NS_ASSERTION(aUnit < eStyleUnit_Percent, "not a valueless unit");
|
||||
if (aUnit >= eStyleUnit_Percent) {
|
||||
mUnit = eStyleUnit_Null;
|
||||
}
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
nsStyleCoord(nscoord aValue)
|
||||
: mUnit(eStyleUnit_Coord) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
nsStyleCoord(PRInt32 aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit) {
|
||||
//if you want to pass in eStyleUnit_Coord, don't. instead, use the
|
||||
//constructor just above this one... MMP
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer), "not an int value");
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord(float aValue, nsStyleUnit aUnit)
|
||||
: mUnit(aUnit) {
|
||||
NS_ASSERTION((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor), "not a float value");
|
||||
if ((aUnit == eStyleUnit_Percent) ||
|
||||
(aUnit == eStyleUnit_Factor)) {
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
else {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord(const nsStyleCoord& aCopy)
|
||||
: mUnit(aCopy.mUnit) {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
}
|
||||
|
||||
nsStyleCoord& operator=(const nsStyleCoord& aCopy) {
|
||||
mUnit = aCopy.mUnit;
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
mValue.mFloat = aCopy.mValue.mFloat;
|
||||
}
|
||||
else {
|
||||
mValue.mInt = aCopy.mValue.mInt;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
PRBool operator==(const nsStyleCoord& aOther) const {
|
||||
if (mUnit == aOther.mUnit) {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
return PRBool(mValue.mFloat == aOther.mValue.mFloat);
|
||||
}
|
||||
else {
|
||||
return PRBool(mValue.mInt == aOther.mValue.mInt);
|
||||
}
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool operator!=(const nsStyleCoord& aOther) const;
|
||||
|
||||
nsStyleUnit GetUnit(void) const { return mUnit; }
|
||||
nscoord GetCoordValue(void) const;
|
||||
PRInt32 GetIntValue(void) const;
|
||||
float GetPercentValue(void) const;
|
||||
float GetFactorValue(void) const;
|
||||
void GetUnionValue(nsStyleUnion& aValue) const;
|
||||
|
||||
void Reset(void) {
|
||||
mUnit = eStyleUnit_Null;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetCoordValue(nscoord aValue) {
|
||||
mUnit = eStyleUnit_Coord;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
|
||||
void SetIntValue(PRInt32 aValue, nsStyleUnit aUnit) {
|
||||
if ((aUnit == eStyleUnit_Proportional) ||
|
||||
(aUnit == eStyleUnit_Enumerated) ||
|
||||
(aUnit == eStyleUnit_Chars) ||
|
||||
(aUnit == eStyleUnit_Integer)) {
|
||||
mUnit = aUnit;
|
||||
mValue.mInt = aValue;
|
||||
}
|
||||
else {
|
||||
NS_WARNING("not an int value");
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
void SetPercentValue(float aValue) {
|
||||
mUnit = eStyleUnit_Percent;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void SetFactorValue(float aValue) {
|
||||
mUnit = eStyleUnit_Factor;
|
||||
mValue.mFloat = aValue;
|
||||
}
|
||||
|
||||
void SetNormalValue(void) {
|
||||
mUnit = eStyleUnit_Normal;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetAutoValue(void) {
|
||||
mUnit = eStyleUnit_Auto;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetInheritValue(void) {
|
||||
mUnit = eStyleUnit_Inherit;
|
||||
mValue.mInt = 0;
|
||||
}
|
||||
|
||||
void SetUnionValue(const nsStyleUnion& aValue, nsStyleUnit aUnit) {
|
||||
mUnit = aUnit;
|
||||
#if PR_BYTES_PER_INT == PR_BYTES_PER_FLOAT
|
||||
mValue.mInt = aValue.mInt;
|
||||
#else
|
||||
nsCRT::memcpy(&mValue, &aValue, sizeof(nsStyleUnion));
|
||||
#endif
|
||||
}
|
||||
|
||||
void AppendToString(nsString& aBuffer) const {
|
||||
if ((eStyleUnit_Percent <= mUnit) && (mUnit < eStyleUnit_Coord)) {
|
||||
aBuffer.AppendFloat(mValue.mFloat);
|
||||
}
|
||||
else if ((eStyleUnit_Coord == mUnit) ||
|
||||
(eStyleUnit_Proportional == mUnit) ||
|
||||
(eStyleUnit_Enumerated == mUnit) ||
|
||||
(eStyleUnit_Integer == mUnit)) {
|
||||
aBuffer.AppendInt(mValue.mInt, 10);
|
||||
aBuffer.AppendWithConversion("[0x");
|
||||
aBuffer.AppendInt(mValue.mInt, 16);
|
||||
aBuffer.AppendWithConversion(']');
|
||||
}
|
||||
|
||||
switch (mUnit) {
|
||||
case eStyleUnit_Null: aBuffer.AppendWithConversion("Null"); break;
|
||||
case eStyleUnit_Coord: aBuffer.AppendWithConversion("tw"); break;
|
||||
case eStyleUnit_Percent: aBuffer.AppendWithConversion("%"); break;
|
||||
case eStyleUnit_Factor: aBuffer.AppendWithConversion("f"); break;
|
||||
case eStyleUnit_Normal: aBuffer.AppendWithConversion("Normal"); break;
|
||||
case eStyleUnit_Auto: aBuffer.AppendWithConversion("Auto"); break;
|
||||
case eStyleUnit_Inherit: aBuffer.AppendWithConversion("Inherit"); break;
|
||||
case eStyleUnit_Proportional: aBuffer.AppendWithConversion("*"); break;
|
||||
case eStyleUnit_Enumerated: aBuffer.AppendWithConversion("enum"); break;
|
||||
case eStyleUnit_Integer: aBuffer.AppendWithConversion("int"); break;
|
||||
case eStyleUnit_Chars: aBuffer.AppendWithConversion("chars"); break;
|
||||
}
|
||||
aBuffer.AppendWithConversion(' ');
|
||||
}
|
||||
|
||||
void ToString(nsString& aBuffer) const {
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
public:
|
||||
nsStyleUnit mUnit;
|
||||
nsStyleUnion mValue;
|
||||
};
|
||||
|
||||
|
||||
#define COMPARE_SIDE(side) \
|
||||
if ((eStyleUnit_Percent <= m##side##Unit) && \
|
||||
(m##side##Unit < eStyleUnit_Coord)) { \
|
||||
if (m##side##Value.mFloat != aOther.m##side##Value.mFloat) \
|
||||
return PR_FALSE; \
|
||||
} \
|
||||
else { \
|
||||
if (m##side##Value.mInt != aOther.m##side##Value.mInt) \
|
||||
return PR_FALSE; \
|
||||
}
|
||||
|
||||
class nsStyleSides {
|
||||
public:
|
||||
nsStyleSides(void) {
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
|
||||
// nsStyleSides& operator=(const nsStyleSides& aCopy); // use compiler's version
|
||||
PRBool operator==(const nsStyleSides& aOther) const {
|
||||
if ((mLeftUnit == aOther.mLeftUnit) &&
|
||||
(mTopUnit == aOther.mTopUnit) &&
|
||||
(mRightUnit == aOther.mRightUnit) &&
|
||||
(mBottomUnit == aOther.mBottomUnit)) {
|
||||
COMPARE_SIDE(Left);
|
||||
COMPARE_SIDE(Top);
|
||||
COMPARE_SIDE(Right);
|
||||
COMPARE_SIDE(Bottom);
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool operator!=(const nsStyleSides& aOther) const;
|
||||
|
||||
nsStyleUnit GetLeftUnit(void) const;
|
||||
nsStyleUnit GetTopUnit(void) const;
|
||||
nsStyleUnit GetRightUnit(void) const;
|
||||
nsStyleUnit GetBottomUnit(void) const;
|
||||
|
||||
nsStyleCoord& GetLeft(nsStyleCoord& aCoord) const;
|
||||
nsStyleCoord& GetTop(nsStyleCoord& aCoord) const;
|
||||
nsStyleCoord& GetRight(nsStyleCoord& aCoord) const;
|
||||
nsStyleCoord& GetBottom(nsStyleCoord& aCoord) const;
|
||||
|
||||
void Reset(void) {
|
||||
nsCRT::memset(this, 0x00, sizeof(nsStyleSides));
|
||||
}
|
||||
|
||||
void SetLeft(const nsStyleCoord& aCoord);
|
||||
void SetTop(const nsStyleCoord& aCoord);
|
||||
void SetRight(const nsStyleCoord& aCoord);
|
||||
void SetBottom(const nsStyleCoord& aCoord);
|
||||
|
||||
void AppendToString(nsString& aBuffer) const {
|
||||
nsStyleCoord temp;
|
||||
|
||||
GetLeft(temp);
|
||||
aBuffer.AppendWithConversion("left: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetTop(temp);
|
||||
aBuffer.AppendWithConversion("top: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetRight(temp);
|
||||
aBuffer.AppendWithConversion("right: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
|
||||
GetBottom(temp);
|
||||
aBuffer.AppendWithConversion("bottom: ");
|
||||
temp.AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
void ToString(nsString& aBuffer) const {
|
||||
aBuffer.Truncate();
|
||||
AppendToString(aBuffer);
|
||||
}
|
||||
|
||||
protected:
|
||||
PRUint8 mLeftUnit;
|
||||
PRUint8 mTopUnit;
|
||||
PRUint8 mRightUnit;
|
||||
PRUint8 mBottomUnit;
|
||||
nsStyleUnion mLeftValue;
|
||||
nsStyleUnion mTopValue;
|
||||
nsStyleUnion mRightValue;
|
||||
nsStyleUnion mBottomValue;
|
||||
};
|
||||
|
||||
// -------------------------
|
||||
// nsStyleCoord inlines
|
||||
//
|
||||
inline PRBool nsStyleCoord::operator!=(const nsStyleCoord& aOther) const
|
||||
{
|
||||
return PRBool(! ((*this) == aOther));
|
||||
}
|
||||
|
||||
inline PRInt32 nsStyleCoord::GetCoordValue(void) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eStyleUnit_Coord), "not a coord value");
|
||||
if (mUnit == eStyleUnit_Coord) {
|
||||
return mValue.mInt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline PRInt32 nsStyleCoord::GetIntValue(void) const
|
||||
{
|
||||
NS_ASSERTION((mUnit == eStyleUnit_Proportional) ||
|
||||
(mUnit == eStyleUnit_Enumerated) ||
|
||||
(mUnit == eStyleUnit_Chars) ||
|
||||
(mUnit == eStyleUnit_Integer), "not an int value");
|
||||
if ((mUnit == eStyleUnit_Proportional) ||
|
||||
(mUnit == eStyleUnit_Enumerated) ||
|
||||
(mUnit == eStyleUnit_Chars) ||
|
||||
(mUnit == eStyleUnit_Integer)) {
|
||||
return mValue.mInt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline float nsStyleCoord::GetPercentValue(void) const
|
||||
{
|
||||
NS_ASSERTION(mUnit == eStyleUnit_Percent, "not a percent value");
|
||||
if (mUnit == eStyleUnit_Percent) {
|
||||
return mValue.mFloat;
|
||||
}
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
inline float nsStyleCoord::GetFactorValue(void) const
|
||||
{
|
||||
NS_ASSERTION(mUnit == eStyleUnit_Factor, "not a factor value");
|
||||
if (mUnit == eStyleUnit_Factor) {
|
||||
return mValue.mFloat;
|
||||
}
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
inline void nsStyleCoord::GetUnionValue(nsStyleUnion& aValue) const
|
||||
{
|
||||
nsCRT::memcpy(&aValue, &mValue, sizeof(nsStyleUnion));
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
// nsStyleSides inlines
|
||||
//
|
||||
inline PRBool nsStyleSides::operator!=(const nsStyleSides& aOther) const
|
||||
{
|
||||
return PRBool(! ((*this) == aOther));
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetLeftUnit(void) const
|
||||
{
|
||||
return (nsStyleUnit)mLeftUnit;
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetTopUnit(void) const
|
||||
{
|
||||
return (nsStyleUnit)mTopUnit;
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetRightUnit(void) const
|
||||
{
|
||||
return (nsStyleUnit)mRightUnit;
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetBottomUnit(void) const
|
||||
{
|
||||
return (nsStyleUnit)mBottomUnit;
|
||||
}
|
||||
|
||||
inline nsStyleCoord& nsStyleSides::GetLeft(nsStyleCoord& aCoord) const
|
||||
{
|
||||
aCoord.SetUnionValue(mLeftValue, (nsStyleUnit)mLeftUnit);
|
||||
return aCoord;
|
||||
}
|
||||
|
||||
inline nsStyleCoord& nsStyleSides::GetTop(nsStyleCoord& aCoord) const
|
||||
{
|
||||
aCoord.SetUnionValue(mTopValue, (nsStyleUnit)mTopUnit);
|
||||
return aCoord;
|
||||
}
|
||||
|
||||
inline nsStyleCoord& nsStyleSides::GetRight(nsStyleCoord& aCoord) const
|
||||
{
|
||||
aCoord.SetUnionValue(mRightValue, (nsStyleUnit)mRightUnit);
|
||||
return aCoord;
|
||||
}
|
||||
|
||||
inline nsStyleCoord& nsStyleSides::GetBottom(nsStyleCoord& aCoord) const
|
||||
{
|
||||
aCoord.SetUnionValue(mBottomValue, (nsStyleUnit)mBottomUnit);
|
||||
return aCoord;
|
||||
}
|
||||
|
||||
inline void nsStyleSides::SetLeft(const nsStyleCoord& aCoord)
|
||||
{
|
||||
mLeftUnit = aCoord.GetUnit();
|
||||
aCoord.GetUnionValue(mLeftValue);
|
||||
}
|
||||
|
||||
inline void nsStyleSides::SetTop(const nsStyleCoord& aCoord)
|
||||
{
|
||||
mTopUnit = aCoord.GetUnit();
|
||||
aCoord.GetUnionValue(mTopValue);
|
||||
}
|
||||
|
||||
inline void nsStyleSides::SetRight(const nsStyleCoord& aCoord)
|
||||
{
|
||||
mRightUnit = aCoord.GetUnit();
|
||||
aCoord.GetUnionValue(mRightValue);
|
||||
}
|
||||
|
||||
inline void nsStyleSides::SetBottom(const nsStyleCoord& aCoord)
|
||||
{
|
||||
mBottomUnit = aCoord.GetUnit();
|
||||
aCoord.GetUnionValue(mBottomValue);
|
||||
}
|
||||
|
||||
#endif /* nsStyleCoord_h___ */
|
||||
@@ -39,9 +39,7 @@ CPPSRCS = \
|
||||
nsFrameTraversal.cpp \
|
||||
nsFrameUtil.cpp \
|
||||
nsGalleyContext.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsLayoutDebugger.cpp \
|
||||
nsLayoutUtils.cpp \
|
||||
nsPresContext.cpp \
|
||||
nsPresState.cpp \
|
||||
nsPrintContext.cpp \
|
||||
|
||||
@@ -41,9 +41,7 @@ CPPSRCS = \
|
||||
nsPrintPreviewContext.cpp \
|
||||
nsSpaceManager.cpp \
|
||||
nsStyleChangeList.cpp \
|
||||
nsLayoutAtoms.cpp \
|
||||
nsLayoutDebugger.cpp \
|
||||
nsLayoutUtils.cpp \
|
||||
nsCaret.cpp \
|
||||
nsLayoutHistoryState.cpp \
|
||||
$(NULL)
|
||||
@@ -64,9 +62,7 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsPrintPreviewContext.obj \
|
||||
.\$(OBJDIR)\nsSpaceManager.obj \
|
||||
.\$(OBJDIR)\nsStyleChangeList.obj \
|
||||
.\$(OBJDIR)\nsLayoutAtoms.obj \
|
||||
.\$(OBJDIR)\nsLayoutDebugger.obj \
|
||||
.\$(OBJDIR)\nsLayoutUtils.obj \
|
||||
.\$(OBJDIR)\nsCaret.obj \
|
||||
.\$(OBJDIR)\nsLayoutHistoryState.obj \
|
||||
$(NULL)
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsLayoutAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define LAYOUT_ATOM(_name, _value) nsIAtom* nsLayoutAtoms::_name;
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsLayoutAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define LAYOUT_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsLayoutAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define LAYOUT_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsLayoutAtomList.h"
|
||||
#undef LAYOUT_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,273 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU Public License (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of those above.
|
||||
* If you wish to allow use of your version of this file only
|
||||
* under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the NPL, indicate your decision by
|
||||
* deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this
|
||||
* file under either the NPL or the GPL.
|
||||
*/
|
||||
|
||||
/* A namespace class for static layout utilities. */
|
||||
|
||||
#include "jsapi.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsIScriptContext.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
// static
|
||||
nsresult
|
||||
nsLayoutUtils::GetStaticScriptGlobal(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptGlobalObject** aNativeGlobal)
|
||||
{
|
||||
nsISupports* supports;
|
||||
JSClass* clazz;
|
||||
JSObject* parent;
|
||||
JSObject* glob = aObj; // starting point for search
|
||||
|
||||
if (!glob)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
while (nsnull != (parent = JS_GetParent(aContext, glob)))
|
||||
glob = parent;
|
||||
|
||||
#ifdef JS_THREADSAFE
|
||||
clazz = JS_GetClass(aContext, glob);
|
||||
#else
|
||||
clazz = JS_GetClass(glob);
|
||||
#endif
|
||||
|
||||
if (!clazz ||
|
||||
!(clazz->flags & JSCLASS_HAS_PRIVATE) ||
|
||||
!(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) ||
|
||||
!(supports = (nsISupports*) JS_GetPrivate(aContext, glob))) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return supports->QueryInterface(NS_GET_IID(nsIScriptGlobalObject),
|
||||
(void**) aNativeGlobal);
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetStaticScriptContext(JSContext* aContext,
|
||||
JSObject* aObj,
|
||||
nsIScriptContext** aScriptContext)
|
||||
{
|
||||
nsCOMPtr<nsIScriptGlobalObject> nativeGlobal;
|
||||
GetStaticScriptGlobal(aContext, aObj, getter_AddRefs(nativeGlobal));
|
||||
if (!nativeGlobal)
|
||||
return NS_ERROR_FAILURE;
|
||||
nsIScriptContext* scriptContext = nsnull;
|
||||
nativeGlobal->GetContext(&scriptContext);
|
||||
*aScriptContext = scriptContext;
|
||||
return scriptContext ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetDynamicScriptGlobal(JSContext* aContext,
|
||||
nsIScriptGlobalObject** aNativeGlobal)
|
||||
{
|
||||
nsIScriptGlobalObject* nativeGlobal = nsnull;
|
||||
nsCOMPtr<nsIScriptContext> scriptCX;
|
||||
GetDynamicScriptContext(aContext, getter_AddRefs(scriptCX));
|
||||
if (scriptCX) {
|
||||
*aNativeGlobal = nativeGlobal = scriptCX->GetGlobalObject();
|
||||
}
|
||||
return nativeGlobal ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
//static
|
||||
nsresult
|
||||
nsLayoutUtils::GetDynamicScriptContext(JSContext *aContext,
|
||||
nsIScriptContext** aScriptContext)
|
||||
{
|
||||
// XXX We rely on the rule that if any JSContext in our JSRuntime has a
|
||||
// private set then that private *must* be a pointer to an nsISupports.
|
||||
nsISupports *supports = (nsIScriptContext*) JS_GetContextPrivate(aContext);
|
||||
if (!supports)
|
||||
return nsnull;
|
||||
return supports->QueryInterface(NS_GET_IID(nsIScriptContext),
|
||||
(void**)aScriptContext);
|
||||
}
|
||||
|
||||
template <class OutputIterator>
|
||||
struct NormalizeNewlinesCharTraits {
|
||||
public:
|
||||
typedef typename OutputIterator::value_type value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(OutputIterator& aIterator) : mIterator(aIterator) { }
|
||||
void writechar(typename OutputIterator::value_type aChar) {
|
||||
*mIterator++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
OutputIterator mIterator;
|
||||
};
|
||||
|
||||
#ifdef HAVE_CPP_PARTIAL_SPECIALIZATION
|
||||
|
||||
template <class CharT>
|
||||
struct NormalizeNewlinesCharTraits<CharT*> {
|
||||
public:
|
||||
typedef CharT value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(CharT* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(CharT aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
CharT* mCharPtr;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
NS_SPECIALIZE_TEMPLATE
|
||||
struct NormalizeNewlinesCharTraits<char*> {
|
||||
public:
|
||||
typedef char value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(char* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(char aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
char* mCharPtr;
|
||||
};
|
||||
|
||||
NS_SPECIALIZE_TEMPLATE
|
||||
struct NormalizeNewlinesCharTraits<PRUnichar*> {
|
||||
public:
|
||||
typedef PRUnichar value_type;
|
||||
|
||||
public:
|
||||
NormalizeNewlinesCharTraits(PRUnichar* aCharPtr) : mCharPtr(aCharPtr) { }
|
||||
void writechar(PRUnichar aChar) {
|
||||
*mCharPtr++ = aChar;
|
||||
}
|
||||
|
||||
private:
|
||||
PRUnichar* mCharPtr;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
template <class OutputIterator>
|
||||
class CopyNormalizeNewlines
|
||||
{
|
||||
public:
|
||||
typedef typename OutputIterator::value_type value_type;
|
||||
|
||||
public:
|
||||
CopyNormalizeNewlines(OutputIterator* aDestination) :
|
||||
mLastCharCR(PR_FALSE),
|
||||
mDestination(aDestination),
|
||||
mWritten(0)
|
||||
{ }
|
||||
|
||||
PRUint32 GetCharsWritten() {
|
||||
return mWritten;
|
||||
}
|
||||
|
||||
PRUint32 write(const typename OutputIterator::value_type* aSource, PRUint32 aSourceLength) {
|
||||
// If the last source buffer ended with a CR...
|
||||
if (mLastCharCR) {
|
||||
// ..and if the next one is a LF, then skip it since
|
||||
// we've already written out a newline
|
||||
if (aSourceLength && (*aSource == value_type('\n'))) {
|
||||
aSource++;
|
||||
}
|
||||
mLastCharCR = PR_FALSE;
|
||||
}
|
||||
|
||||
const typename OutputIterator::value_type* done_writing = aSource + aSourceLength;
|
||||
PRUint32 num_written = 0;
|
||||
while ( aSource < done_writing ) {
|
||||
if (*aSource == value_type('\r')) {
|
||||
mDestination->writechar('\n');
|
||||
aSource++;
|
||||
// If we've reached the end of the buffer, record
|
||||
// that we wrote out a CR
|
||||
if (aSource == done_writing) {
|
||||
mLastCharCR = PR_TRUE;
|
||||
}
|
||||
// If the next character is a LF, skip it
|
||||
else if (*aSource == value_type('\n')) {
|
||||
aSource++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mDestination->writechar(*aSource++);
|
||||
}
|
||||
num_written++;
|
||||
}
|
||||
|
||||
mWritten += num_written;
|
||||
return aSourceLength;
|
||||
}
|
||||
|
||||
private:
|
||||
PRBool mLastCharCR;
|
||||
OutputIterator* mDestination;
|
||||
PRUint32 mWritten;
|
||||
};
|
||||
|
||||
// static
|
||||
PRUint32
|
||||
nsLayoutUtils::CopyNewlineNormalizedUnicodeTo(const nsAReadableString& aSource, PRUint32 aSrcOffset, PRUnichar* aDest, PRUint32 aLength)
|
||||
{
|
||||
typedef NormalizeNewlinesCharTraits<PRUnichar*> sink_traits;
|
||||
|
||||
sink_traits dest_traits(aDest);
|
||||
CopyNormalizeNewlines<sink_traits> normalizer(&dest_traits);
|
||||
nsReadingIterator<PRUnichar> fromBegin, fromEnd;
|
||||
copy_string(aSource.BeginReading(fromBegin).advance( PRInt32(aSrcOffset) ), aSource.BeginReading(fromEnd).advance( PRInt32(aSrcOffset+aLength) ), normalizer);
|
||||
return normalizer.GetCharsWritten();
|
||||
}
|
||||
|
||||
// static
|
||||
PRUint32
|
||||
nsLayoutUtils::CopyNewlineNormalizedUnicodeTo(nsReadingIterator<PRUnichar>& aSrcStart, const nsReadingIterator<PRUnichar>& aSrcEnd, nsAWritableString& aDest)
|
||||
{
|
||||
typedef nsWritingIterator<PRUnichar> WritingIterator;
|
||||
typedef NormalizeNewlinesCharTraits<WritingIterator> sink_traits;
|
||||
|
||||
WritingIterator iter;
|
||||
aDest.BeginWriting(iter);
|
||||
sink_traits dest_traits(iter);
|
||||
CopyNormalizeNewlines<sink_traits> normalizer(&dest_traits);
|
||||
copy_string(aSrcStart, aSrcEnd, normalizer);
|
||||
return normalizer.GetCharsWritten();
|
||||
}
|
||||
@@ -26,8 +26,6 @@ VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
BUILD_DATE = gbdate.h
|
||||
|
||||
MODULE = layout
|
||||
LIBRARY_NAME = gklayout
|
||||
SHORT_LIBNAME = gkhtml
|
||||
@@ -45,7 +43,7 @@ ifndef MKSHLIB_FORCE_ALL
|
||||
CPPSRCS += dlldeps.cpp
|
||||
endif
|
||||
|
||||
EXPORTS = nsLayoutCID.h $(BUILD_DATE)
|
||||
EXPORTS = nsLayoutCID.h
|
||||
|
||||
SHARED_LIBRARY_LIBS = \
|
||||
$(DIST)/lib/libgkhtmlbase_s.$(LIB_SUFFIX) \
|
||||
@@ -53,9 +51,9 @@ SHARED_LIBRARY_LIBS = \
|
||||
$(DIST)/lib/libgkhtmlforms_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkhtmlstyle_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkhtmltable_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkxulcon_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkxulbase_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkbase_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconshared_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkxuloutliner_s.$(LIB_SUFFIX) \
|
||||
$(NULL)
|
||||
|
||||
@@ -90,8 +88,6 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
|
||||
EXPORT_OBJS = 1
|
||||
endif
|
||||
|
||||
GARBAGE += $(BUILD_DATE)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_HTML
|
||||
@@ -111,10 +107,6 @@ ifdef MOZ_SVG
|
||||
INCLUDES += -I$(srcdir)/../svg/content/src
|
||||
endif
|
||||
|
||||
$(BUILD_DATE):
|
||||
$(RM) $@
|
||||
$(PERL) $(srcdir)/gbdate.pl > $@
|
||||
|
||||
# To prevent ILink from crashing
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
OS_DLLFLAGS := ilink /FREE /NOE /NOL /DLL /O:nglayout.dll /M /INC:_dllentry
|
||||
|
||||
@@ -27,8 +27,6 @@ DEFINES=-D_IMPL_NS_HTML
|
||||
MODULE=raptor
|
||||
IS_COMPONENT = 1
|
||||
|
||||
BUILD_DATE=gbdate.h
|
||||
|
||||
CPPSRCS=dlldeps.cpp nsLayoutDLF.cpp nsLayoutFactory.cpp
|
||||
|
||||
CPP_OBJS= \
|
||||
@@ -38,8 +36,7 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsLayoutModule.obj \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS=nsLayoutCID.h $(BUILD_DATE)
|
||||
|
||||
EXPORTS=nsLayoutCID.h
|
||||
|
||||
MAKE_OBJ_TYPE = DLL
|
||||
DLLNAME = gklayout
|
||||
@@ -72,7 +69,7 @@ LLIBS= \
|
||||
$(DIST)\lib\layouthtmlstyle_s.lib \
|
||||
$(DIST)\lib\layouthtmltable_s.lib \
|
||||
$(DIST)\lib\layoutxulbase_s.lib \
|
||||
$(DIST)\lib\layoutxulcontent_s.lib \
|
||||
$(DIST)\lib\contentshared_s.lib \
|
||||
$(DIST)\lib\raptorxuloutliner_s.lib \
|
||||
!ifdef MOZ_MATHML
|
||||
$(DIST)\lib\layoutmathmlbase_s.lib \
|
||||
@@ -101,7 +98,3 @@ install:: $(DLL)
|
||||
clobber::
|
||||
rm -f $(DIST)\bin\$(DLLNAME).dll
|
||||
rm -f $(DIST)\lib\$(DLLNAME).lib
|
||||
|
||||
$(BUILD_DATE)::
|
||||
rm -f $@
|
||||
$(PERL) gbdate.pl > $@
|
||||
|
||||
@@ -513,33 +513,6 @@ nsContentDLF::CreateXULDocumentFromStream(nsIInputStream& aXULStream,
|
||||
return status;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kDocumentFactoryImplCID, NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
|
||||
|
||||
static nsresult
|
||||
RegisterTypes(nsIComponentManager* aCompMgr,
|
||||
const char* aCommand,
|
||||
nsIFile* aPath,
|
||||
char** aTypes)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
while (*aTypes) {
|
||||
char contractid[500];
|
||||
char* contentType = *aTypes++;
|
||||
PR_snprintf(contractid, sizeof(contractid),
|
||||
NS_DOCUMENT_LOADER_FACTORY_CONTRACTID_PREFIX "%s;1?type=%s",
|
||||
aCommand, contentType);
|
||||
#ifdef NOISY_REGISTRY
|
||||
printf("Register %s => %s\n", contractid, aPath);
|
||||
#endif
|
||||
rv = aCompMgr->RegisterComponentSpec(kDocumentFactoryImplCID, "Content",
|
||||
contractid, aPath, PR_TRUE, PR_TRUE);
|
||||
if (NS_FAILED(rv)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsContentModule::RegisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
nsIFile* aPath)
|
||||
@@ -549,6 +522,8 @@ nsContentModule::RegisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kDocumentFactoryImplCID, NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
|
||||
|
||||
void
|
||||
nsContentModule::UnregisterDocumentFactories(nsIComponentManager* aCompMgr,
|
||||
nsIFile* aPath)
|
||||
|
||||
@@ -73,12 +73,8 @@
|
||||
#include "nsSprocketLayout.h"
|
||||
#include "nsStackLayout.h"
|
||||
#endif
|
||||
#include "nsIHTTPProtocolHandler.h"
|
||||
#include "gbdate.h"
|
||||
#include "nsContentPolicyUtils.h"
|
||||
#define PRODUCT_NAME "Gecko"
|
||||
|
||||
static NS_DEFINE_CID(kHTTPHandlerCID, NS_IHTTPHANDLER_CID);
|
||||
static nsLayoutModule *gModule = NULL;
|
||||
|
||||
extern "C" NS_EXPORT nsresult NSGetModule(nsIComponentManager *servMgr,
|
||||
@@ -236,8 +232,6 @@ nsLayoutModule::Initialize()
|
||||
}
|
||||
}
|
||||
|
||||
SetUserAgent();
|
||||
|
||||
rv = nsTextTransformer::Initialize();
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
@@ -417,21 +411,3 @@ nsLayoutModule::CanUnload(nsIComponentManager *aCompMgr, PRBool *okToUnload)
|
||||
*okToUnload = PR_FALSE;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
void
|
||||
nsLayoutModule::SetUserAgent( void )
|
||||
{
|
||||
nsString productName; productName.AssignWithConversion(PRODUCT_NAME);
|
||||
nsString productVersion; productVersion.AssignWithConversion(PRODUCT_VERSION);
|
||||
nsresult rv = nsnull;
|
||||
|
||||
nsCOMPtr<nsIHTTPProtocolHandler> theService(do_GetService(kHTTPHandlerCID,
|
||||
&rv));
|
||||
|
||||
if( NS_SUCCEEDED(rv) && (nsnull != theService) )
|
||||
{
|
||||
rv = theService->SetProduct(productName.GetUnicode());
|
||||
|
||||
rv = theService->SetProductSub(productVersion.GetUnicode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,3 +5,5 @@
|
||||
nsILineIterator.h
|
||||
nsIHTMLContent.h
|
||||
nsHTMLParts.h
|
||||
nsHTMLAtoms.h
|
||||
nsHTMLAtomList.h
|
||||
|
||||
@@ -45,7 +45,6 @@ CPPSRCS = \
|
||||
nsFrame.cpp \
|
||||
nsFrameManager.cpp \
|
||||
nsHRFrame.cpp \
|
||||
nsHTMLAtoms.cpp \
|
||||
nsHTMLContainerFrame.cpp \
|
||||
nsHTMLIIDs.cpp \
|
||||
nsHTMLFrame.cpp \
|
||||
|
||||
@@ -51,7 +51,6 @@ CPPSRCS= \
|
||||
nsFrame.cpp \
|
||||
nsFrameManager.cpp \
|
||||
nsHRFrame.cpp \
|
||||
nsHTMLAtoms.cpp \
|
||||
nsHTMLContainerFrame.cpp \
|
||||
nsHTMLIIDs.cpp \
|
||||
nsHTMLFrame.cpp \
|
||||
@@ -94,7 +93,6 @@ CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsFrame.obj \
|
||||
.\$(OBJDIR)\nsFrameManager.obj \
|
||||
.\$(OBJDIR)\nsHRFrame.obj \
|
||||
.\$(OBJDIR)\nsHTMLAtoms.obj \
|
||||
.\$(OBJDIR)\nsHTMLContainerFrame.obj \
|
||||
.\$(OBJDIR)\nsHTMLFrame.obj \
|
||||
.\$(OBJDIR)\nsHTMLImageLoader.obj \
|
||||
|
||||
@@ -1,301 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all HTML atoms
|
||||
See nsHTMLAtoms.h for access to the atoms
|
||||
|
||||
It is designed to be used as inline input to nsHTMLAtoms.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro HTML_ATOM which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
The first argument to HTML_ATOM is the C++ name of the atom
|
||||
The second argument it HTML_ATOM is the string value of the atom
|
||||
|
||||
******/
|
||||
|
||||
HTML_ATOM(mozAnonymousBlock, ":-moz-anonymous-block")
|
||||
HTML_ATOM(mozAnonymousPositionedBlock, ":-moz-anonymous-positioned-block")
|
||||
HTML_ATOM(mozFirstLineFixup, ":-moz-first-line-fixup")
|
||||
HTML_ATOM(mozLetterFrame, ":-moz-letter-frame")
|
||||
HTML_ATOM(mozLineFrame, ":-moz-line-frame")
|
||||
HTML_ATOM(mozListBulletPseudo, ":-moz-list-bullet")
|
||||
HTML_ATOM(mozSingleLineTextControlFrame, ":-moz-singleline-textcontrol-frame")
|
||||
HTML_ATOM(mozFocusInnerPseudo, ":-moz-focus-inner")
|
||||
HTML_ATOM(mozFocusOuterPseudo, ":-moz-focus-outer")
|
||||
HTML_ATOM(mozDisplayComboboxControlFrame, ":-moz-display-comboboxcontrol-frame")
|
||||
|
||||
HTML_ATOM(_baseHref, NS_HTML_BASE_HREF)
|
||||
HTML_ATOM(_baseTarget, NS_HTML_BASE_TARGET)
|
||||
HTML_ATOM(a, "a")
|
||||
HTML_ATOM(abbr, "abbr")
|
||||
HTML_ATOM(above, "above")
|
||||
HTML_ATOM(accept, "accept")
|
||||
HTML_ATOM(acceptcharset, "accept-charset")
|
||||
HTML_ATOM(accesskey, "accesskey")
|
||||
HTML_ATOM(action, "action")
|
||||
HTML_ATOM(align, "align")
|
||||
HTML_ATOM(alink, "alink")
|
||||
HTML_ATOM(alt, "alt")
|
||||
HTML_ATOM(applet, "applet")
|
||||
HTML_ATOM(archive, "archive")
|
||||
HTML_ATOM(area, "area")
|
||||
HTML_ATOM(axis, "axis")
|
||||
HTML_ATOM(background, "background")
|
||||
HTML_ATOM(below, "below")
|
||||
HTML_ATOM(bgcolor, "bgcolor")
|
||||
HTML_ATOM(blockquote, "blockquote")
|
||||
HTML_ATOM(body, "body")
|
||||
HTML_ATOM(border, "border")
|
||||
HTML_ATOM(bordercolor, "bordercolor")
|
||||
HTML_ATOM(bottompadding, "bottompadding")
|
||||
HTML_ATOM(br, "br")
|
||||
HTML_ATOM(b, "b")
|
||||
HTML_ATOM(button, "button")
|
||||
HTML_ATOM(buttonContentPseudo, ":button-content")
|
||||
HTML_ATOM(caption, "caption")
|
||||
HTML_ATOM(cellContentPseudo, ":cell-content")
|
||||
HTML_ATOM(cellpadding, "cellpadding")
|
||||
HTML_ATOM(cellspacing, "cellspacing")
|
||||
HTML_ATOM(ch, "ch")
|
||||
HTML_ATOM(_char, "char")
|
||||
HTML_ATOM(charoff, "charoff")
|
||||
HTML_ATOM(charset, "charset")
|
||||
HTML_ATOM(checked, "checked")
|
||||
HTML_ATOM(cite, "cite")
|
||||
HTML_ATOM(kClass, "class")
|
||||
HTML_ATOM(classid, "classid")
|
||||
HTML_ATOM(clear, "clear")
|
||||
HTML_ATOM(clip, "clip")
|
||||
HTML_ATOM(code, "code")
|
||||
HTML_ATOM(codebase, "codebase")
|
||||
HTML_ATOM(codetype, "codetype")
|
||||
HTML_ATOM(color, "color")
|
||||
HTML_ATOM(col, "col")
|
||||
HTML_ATOM(colgroup, "colgroup")
|
||||
HTML_ATOM(cols, "cols")
|
||||
HTML_ATOM(colspan, "colspan")
|
||||
HTML_ATOM(combobox, "combobox")
|
||||
HTML_ATOM(columnPseudo, ":body-column")
|
||||
HTML_ATOM(commentPseudo, ":-moz-comment")
|
||||
HTML_ATOM(compact, "compact")
|
||||
HTML_ATOM(content, "content")
|
||||
HTML_ATOM(coords, "coords")
|
||||
HTML_ATOM(dd, "dd")
|
||||
HTML_ATOM(defaultchecked, "defaultchecked")
|
||||
HTML_ATOM(defaultselected, "defaultselected")
|
||||
HTML_ATOM(defaultvalue, "defaultvalue")
|
||||
HTML_ATOM(declare, "declare")
|
||||
HTML_ATOM(defer, "defer")
|
||||
HTML_ATOM(dir, "dir")
|
||||
HTML_ATOM(div, "div")
|
||||
HTML_ATOM(disabled, "disabled")
|
||||
HTML_ATOM(dl, "dl")
|
||||
HTML_ATOM(dropDownListPseudo, ":-moz-dropdown-list")
|
||||
HTML_ATOM(dt, "dt")
|
||||
|
||||
HTML_ATOM(datetime, "datetime")
|
||||
HTML_ATOM(data, "data")
|
||||
HTML_ATOM(dfn, "dfn")
|
||||
HTML_ATOM(em, "em")
|
||||
HTML_ATOM(embed, "embed")
|
||||
HTML_ATOM(encoding, "encoding")
|
||||
HTML_ATOM(enctype, "enctype")
|
||||
HTML_ATOM(face, "face")
|
||||
HTML_ATOM(fieldset, "fieldset")
|
||||
HTML_ATOM(fieldsetContentPseudo, ":fieldset-content")
|
||||
HTML_ATOM(firstLetterPseudo, ":first-letter")
|
||||
HTML_ATOM(firstLinePseudo, ":first-line")
|
||||
HTML_ATOM(font, "font")
|
||||
HTML_ATOM(fontWeight, "font-weight")
|
||||
HTML_ATOM(_for, "for")
|
||||
HTML_ATOM(form, "form")
|
||||
HTML_ATOM(frame, "frame")
|
||||
HTML_ATOM(frameborder, "frameborder")
|
||||
HTML_ATOM(frameset, "frameset")
|
||||
HTML_ATOM(framesetBlankPseudo, ":frameset-blank")
|
||||
HTML_ATOM(gutter, "gutter")
|
||||
HTML_ATOM(h1, "h1")
|
||||
HTML_ATOM(h2, "h2")
|
||||
HTML_ATOM(h3, "h3")
|
||||
HTML_ATOM(h4, "h4")
|
||||
HTML_ATOM(h5, "h5")
|
||||
HTML_ATOM(h6, "h6")
|
||||
HTML_ATOM(head, "head")
|
||||
HTML_ATOM(headerContentBase, "content-base")
|
||||
HTML_ATOM(headerContentLanguage, "content-language")
|
||||
HTML_ATOM(headerContentScriptType, "content-script-type")
|
||||
HTML_ATOM(headerContentStyleType, "content-style-type")
|
||||
HTML_ATOM(headerContentType, "content-type")
|
||||
HTML_ATOM(headerDefaultStyle, "default-style")
|
||||
HTML_ATOM(headerWindowTarget, "window-target")
|
||||
HTML_ATOM(headers, "headers")
|
||||
HTML_ATOM(height, "height")
|
||||
HTML_ATOM(hidden, "hidden")
|
||||
HTML_ATOM(horizontalFramesetBorderPseudo, ":hframeset-border")
|
||||
HTML_ATOM(hr, "hr")
|
||||
HTML_ATOM(href, "href")
|
||||
HTML_ATOM(hreflang, "hreflang")
|
||||
HTML_ATOM(hspace, "hspace")
|
||||
HTML_ATOM(html, "html")
|
||||
HTML_ATOM(httpEquiv, "http-equiv")
|
||||
HTML_ATOM(ibPseudo, ":ib-pseudo")
|
||||
HTML_ATOM(i, "i")
|
||||
HTML_ATOM(id, "id")
|
||||
HTML_ATOM(iframe, "iframe")
|
||||
HTML_ATOM(ilayer, "ilayer")
|
||||
HTML_ATOM(img, "img")
|
||||
HTML_ATOM(index, "index")
|
||||
HTML_ATOM(input, "input")
|
||||
HTML_ATOM(isindex, "isindex")
|
||||
HTML_ATOM(ismap, "ismap")
|
||||
HTML_ATOM(label, "label")
|
||||
HTML_ATOM(labelContentPseudo, ":label-content")
|
||||
HTML_ATOM(lang, "lang")
|
||||
HTML_ATOM(layer, "layer")
|
||||
HTML_ATOM(layout, "layout")
|
||||
HTML_ATOM(li, "li")
|
||||
HTML_ATOM(link, "link")
|
||||
HTML_ATOM(left, "left")
|
||||
HTML_ATOM(leftpadding, "leftpadding")
|
||||
HTML_ATOM(legend, "legend")
|
||||
HTML_ATOM(legendContentPseudo, ":legend-content")
|
||||
HTML_ATOM(length, "length")
|
||||
HTML_ATOM(longdesc, "longdesc")
|
||||
HTML_ATOM(lowsrc, "lowsrc")
|
||||
HTML_ATOM(marginheight, "marginheight")
|
||||
HTML_ATOM(marginwidth, "marginwidth")
|
||||
HTML_ATOM(maxlength, "maxlength")
|
||||
HTML_ATOM(mayscript, "mayscript")
|
||||
HTML_ATOM(media, "media")
|
||||
HTML_ATOM(menu, "menu")
|
||||
HTML_ATOM(meta, "meta")
|
||||
HTML_ATOM(method, "method")
|
||||
HTML_ATOM(multicol, "multicol")
|
||||
HTML_ATOM(multiple, "multiple")
|
||||
HTML_ATOM(name, "name")
|
||||
HTML_ATOM(nohref, "nohref")
|
||||
HTML_ATOM(noresize, "noresize")
|
||||
HTML_ATOM(noscript, "noscript")
|
||||
HTML_ATOM(noshade, "noshade")
|
||||
HTML_ATOM(nowrap, "nowrap")
|
||||
HTML_ATOM(object, "object")
|
||||
HTML_ATOM(ol, "ol")
|
||||
HTML_ATOM(option, "option")
|
||||
HTML_ATOM(overflow, "overflow")
|
||||
HTML_ATOM(p, "p")
|
||||
HTML_ATOM(pagex, "pagex")
|
||||
HTML_ATOM(pagey, "pagey")
|
||||
HTML_ATOM(param, "param")
|
||||
HTML_ATOM(placeholderPseudo, ":placeholder-frame")
|
||||
HTML_ATOM(pointSize, "point-size")
|
||||
HTML_ATOM(pre, "pre")
|
||||
HTML_ATOM(processingInstructionPseudo, ":-moz-pi")
|
||||
HTML_ATOM(profile, "profile")
|
||||
HTML_ATOM(prompt, "prompt")
|
||||
HTML_ATOM(radioPseudo, ":-moz-radio")
|
||||
HTML_ATOM(checkPseudo, ":-moz-checkbox")
|
||||
HTML_ATOM(readonly, "readonly")
|
||||
HTML_ATOM(refresh, "refresh")
|
||||
HTML_ATOM(rel, "rel")
|
||||
HTML_ATOM(repeat, "repeat")
|
||||
HTML_ATOM(rev, "rev")
|
||||
HTML_ATOM(rightpadding, "rightpadding")
|
||||
HTML_ATOM(rows, "rows")
|
||||
HTML_ATOM(rowspan, "rowspan")
|
||||
HTML_ATOM(rules, "rules")
|
||||
HTML_ATOM(s, "s")
|
||||
HTML_ATOM(scheme, "scheme")
|
||||
HTML_ATOM(scope, "scope")
|
||||
HTML_ATOM(script, "script")
|
||||
HTML_ATOM(scrolling, "scrolling")
|
||||
HTML_ATOM(select, "select")
|
||||
HTML_ATOM(selected, "selected")
|
||||
HTML_ATOM(selectedindex, "selectedindex")
|
||||
HTML_ATOM(setcookie, "set-cookie")
|
||||
HTML_ATOM(shape, "shape")
|
||||
HTML_ATOM(size, "size")
|
||||
HTML_ATOM(spacer, "spacer")
|
||||
HTML_ATOM(span, "span")
|
||||
HTML_ATOM(src, "src")
|
||||
HTML_ATOM(standby, "standby")
|
||||
HTML_ATOM(start, "start")
|
||||
HTML_ATOM(strike, "strike")
|
||||
HTML_ATOM(strong, "strong")
|
||||
HTML_ATOM(style, "style")
|
||||
HTML_ATOM(summary, "summary")
|
||||
HTML_ATOM(suppress, "suppress")
|
||||
HTML_ATOM(tabindex, "tabindex")
|
||||
HTML_ATOM(table, "table")
|
||||
HTML_ATOM(tablePseudo, ":table")
|
||||
HTML_ATOM(tableCellPseudo, ":table-cell")
|
||||
HTML_ATOM(tableColGroupPseudo, ":table-column-group")
|
||||
HTML_ATOM(tableColPseudo, ":table-column")
|
||||
HTML_ATOM(tableOuterPseudo, ":table-outer")
|
||||
HTML_ATOM(tableRowGroupPseudo, ":table-row-group")
|
||||
HTML_ATOM(tableRowPseudo, ":table-row")
|
||||
HTML_ATOM(tabstop, "tabstop")
|
||||
HTML_ATOM(target, "target")
|
||||
HTML_ATOM(tbody, "tbody")
|
||||
HTML_ATOM(td, "td")
|
||||
HTML_ATOM(tfoot, "tfoot")
|
||||
HTML_ATOM(thead, "thead")
|
||||
HTML_ATOM(text, "text")
|
||||
HTML_ATOM(textarea, "textarea")
|
||||
HTML_ATOM(textPseudo, ":-moz-text")
|
||||
HTML_ATOM(th, "th")
|
||||
HTML_ATOM(title, "title")
|
||||
HTML_ATOM(top, "top")
|
||||
HTML_ATOM(toppadding, "toppadding")
|
||||
HTML_ATOM(tr, "tr")
|
||||
HTML_ATOM(tt, "tt")
|
||||
HTML_ATOM(type, "type")
|
||||
HTML_ATOM(u, "u")
|
||||
HTML_ATOM(ul, "ul")
|
||||
HTML_ATOM(usemap, "usemap")
|
||||
HTML_ATOM(valign, "valign")
|
||||
HTML_ATOM(value, "value")
|
||||
HTML_ATOM(valuetype, "valuetype")
|
||||
HTML_ATOM(variable, "variable")
|
||||
HTML_ATOM(vcard_name, "vcard_name")
|
||||
HTML_ATOM(version, "version")
|
||||
HTML_ATOM(verticalFramesetBorderPseudo, ":vframeset-border")
|
||||
HTML_ATOM(visibility, "visibility")
|
||||
HTML_ATOM(vlink, "vlink")
|
||||
HTML_ATOM(vspace, "vspace")
|
||||
HTML_ATOM(wbr, "wbr")
|
||||
HTML_ATOM(width, "width")
|
||||
HTML_ATOM(wrap, "wrap")
|
||||
HTML_ATOM(wrappedFramePseudo, ":wrapped-frame")
|
||||
HTML_ATOM(zindex, "zindex")
|
||||
HTML_ATOM(z_index, "z-index")
|
||||
|
||||
HTML_ATOM(moz_tristate, "moz-tristate")
|
||||
HTML_ATOM(moz_tristatevalue, "moz-tristatevalue")
|
||||
|
||||
#ifdef DEBUG
|
||||
HTML_ATOM(iform, "IForm")
|
||||
HTML_ATOM(form_control_list, "FormControlList")
|
||||
#endif
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsHTMLAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define HTML_ATOM(_name, _value) nsIAtom* nsHTMLAtoms::_name;
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsHTMLAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define HTML_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsHTMLAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define HTML_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsHTMLAtoms_h___
|
||||
#define nsHTMLAtoms_h___
|
||||
|
||||
#include "nsIAtom.h"
|
||||
|
||||
#define NS_HTML_BASE_HREF "_base_href"
|
||||
#define NS_HTML_BASE_TARGET "_base_target"
|
||||
|
||||
/**
|
||||
* This class wraps up the creation (and destruction) of the standard
|
||||
* set of html atoms used during normal html handling. This objects
|
||||
* are created when the first html content object is created and they
|
||||
* are destroyed when the last html content object is destroyed.
|
||||
*/
|
||||
class nsHTMLAtoms {
|
||||
public:
|
||||
|
||||
static void AddRefAtoms();
|
||||
static void ReleaseAtoms();
|
||||
|
||||
/* Declare all atoms
|
||||
|
||||
The atom names and values are stored in nsHTMLAtomList.h and
|
||||
are brought to you by the magic of C preprocessing
|
||||
|
||||
Add new atoms to nsHTMLAtomList and all support logic will be auto-generated
|
||||
*/
|
||||
#define HTML_ATOM(_name, _value) static nsIAtom* _name;
|
||||
#include "nsHTMLAtomList.h"
|
||||
#undef HTML_ATOM
|
||||
};
|
||||
|
||||
#endif /* nsHTMLAtoms_h___ */
|
||||
@@ -26,7 +26,7 @@ VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = public src
|
||||
DIRS = src
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
||||
@@ -21,6 +21,6 @@
|
||||
|
||||
DEPTH=..\..\..
|
||||
|
||||
DIRS=public src
|
||||
DIRS=src
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:layout directory
|
||||
#
|
||||
nsStyleUtil.h
|
||||
@@ -1,38 +0,0 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape 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/NPL/
|
||||
#
|
||||
# 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) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = layout
|
||||
|
||||
EXPORTS = \
|
||||
nsStyleUtil.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape 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/NPL/
|
||||
#
|
||||
# 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) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
|
||||
DEPTH=..\..\..\..
|
||||
|
||||
EXPORTS=nsStyleUtil.h
|
||||
MODULE=raptor
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsStyleUtil_h___
|
||||
#define nsStyleUtil_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsILinkHandler.h" // for nsLinkState
|
||||
|
||||
class nsIStyleContext;
|
||||
struct nsStyleColor;
|
||||
|
||||
enum nsFontSizeType {
|
||||
eFontSize_HTML = 1,
|
||||
eFontSize_CSS = 2
|
||||
};
|
||||
|
||||
|
||||
// Style utility functions
|
||||
class nsStyleUtil {
|
||||
public:
|
||||
|
||||
static float GetScalingFactor(PRInt32 aScaler);
|
||||
|
||||
static nscoord CalcFontPointSize(PRInt32 aHTMLSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType = eFontSize_HTML);
|
||||
|
||||
static PRInt32 FindNextSmallerFontSize(nscoord aFontSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType = eFontSize_HTML);
|
||||
|
||||
static PRInt32 FindNextLargerFontSize(nscoord aFontSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType = eFontSize_HTML);
|
||||
|
||||
static PRInt32 ConstrainFontWeight(PRInt32 aWeight);
|
||||
|
||||
static const nsStyleColor* FindNonTransparentBackground(nsIStyleContext* aContext,
|
||||
PRBool aStartAtParent = PR_FALSE);
|
||||
|
||||
static PRBool IsHTMLLink(nsIContent *aContent, nsIAtom *aTag, nsIPresContext *aPresContext, nsLinkState *aState);
|
||||
static PRBool IsSimpleXlink(nsIContent *aContent, nsIPresContext *aPresContext, nsLinkState *aState);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif /* nsStyleUtil_h___ */
|
||||
@@ -31,12 +31,8 @@ LIBRARY_NAME = gkhtmlstyle_s
|
||||
REQUIRES = xpcom string dom widget timer caps editor locale js view necko webshell pref rdf htmlparser txmgr docshell uriloader unicharutil uconv
|
||||
|
||||
CPPSRCS = \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSFrameConstructor.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsCSSRendering.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
|
||||
@@ -32,23 +32,13 @@ EXPORTS = \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS= \
|
||||
nsCSSAtoms.cpp \
|
||||
nsCSSKeywords.cpp \
|
||||
nsCSSFrameConstructor.cpp \
|
||||
nsCSSProps.cpp \
|
||||
nsCSSRendering.cpp \
|
||||
# nsHTMLStyleSheet.cpp \
|
||||
nsStyleUtil.cpp \
|
||||
$(NULL)
|
||||
|
||||
CPP_OBJS = \
|
||||
.\$(OBJDIR)\nsCSSAtoms.obj \
|
||||
.\$(OBJDIR)\nsCSSKeywords.obj \
|
||||
.\$(OBJDIR)\nsCSSFrameConstructor.obj \
|
||||
.\$(OBJDIR)\nsCSSProps.obj \
|
||||
.\$(OBJDIR)\nsCSSRendering.obj \
|
||||
# .\$(OBJDIR)\nsHTMLStyleSheet.obj \
|
||||
.\$(OBJDIR)\nsStyleUtil.obj \
|
||||
$(NULL)
|
||||
|
||||
LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor -I$(PUBLIC)\netlib \
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsCSSAtoms.h"
|
||||
|
||||
// define storage for all atoms
|
||||
#define CSS_ATOM(_name, _value) nsIAtom* nsCSSAtoms::_name;
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
|
||||
|
||||
static nsrefcnt gRefCnt;
|
||||
|
||||
void nsCSSAtoms::AddRefAtoms()
|
||||
{
|
||||
if (0 == gRefCnt++) {
|
||||
// create atoms
|
||||
#define CSS_ATOM(_name, _value) _name = NS_NewAtom(_value);
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
void nsCSSAtoms::ReleaseAtoms()
|
||||
{
|
||||
NS_PRECONDITION(gRefCnt != 0, "bad release atoms");
|
||||
if (--gRefCnt == 0) {
|
||||
// release atoms
|
||||
#define CSS_ATOM(_name, _value) NS_RELEASE(_name);
|
||||
#include "nsCSSAtomList.h"
|
||||
#undef CSS_ATOM
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,382 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******
|
||||
|
||||
This file contains the list of all parsed CSS keywords
|
||||
See nsCSSKeywords.h for access to the enum values for keywords
|
||||
|
||||
It is designed to be used as inline input to nsCSSKeywords.cpp *only*
|
||||
through the magic of C preprocessing.
|
||||
|
||||
All entires must be enclosed in the macro CSS_KEY which will have cruel
|
||||
and unusual things done to it
|
||||
|
||||
It is recommended (but not strictly necessary) to keep all entries
|
||||
in alphabetical order
|
||||
|
||||
Requirements:
|
||||
|
||||
Entries are in the form: (name,id). 'id' must always be the same as 'name'
|
||||
except that all hyphens ('-') in 'name' are converted to underscores ('_')
|
||||
in 'id'. This lets us do nice things with the macros without having to
|
||||
copy/convert strings at runtime.
|
||||
|
||||
'name' entries *must* use only lowercase characters.
|
||||
|
||||
** Break these invarient and bad things will happen. **
|
||||
|
||||
******/
|
||||
|
||||
CSS_KEY(-moz-all, _moz_all)
|
||||
CSS_KEY(-moz-bg-inset, _moz_bg_inset)
|
||||
CSS_KEY(-moz-bg-outset, _moz_bg_outset)
|
||||
CSS_KEY(-moz-center, _moz_center)
|
||||
CSS_KEY(-moz-field, _moz_field)
|
||||
CSS_KEY(-moz-dragtargetzone, _moz_dragtargetzone)
|
||||
CSS_KEY(-moz-mac-focusring, _moz_mac_focusring)
|
||||
CSS_KEY(-moz-mac-menuselect, _moz_mac_menuselect)
|
||||
CSS_KEY(-moz-mac-menushadow, _moz_mac_menushadow)
|
||||
CSS_KEY(-moz-mac-menutextselect, _moz_mac_menutextselect)
|
||||
CSS_KEY(-moz-mac-accentlightesthighlight, _moz_mac_accentlightesthighlight)
|
||||
CSS_KEY(-moz-mac-accentregularhighlight, _moz_mac_accentregularhighlight)
|
||||
CSS_KEY(-moz-mac-accentface, _moz_mac_accentface)
|
||||
CSS_KEY(-moz-mac-accentlightshadow, _moz_mac_accentlightshadow)
|
||||
CSS_KEY(-moz-mac-accentregularshadow, _moz_mac_accentregularshadow)
|
||||
CSS_KEY(-moz-mac-accentdarkshadow, _moz_mac_accentdarkshadow)
|
||||
CSS_KEY(-moz-mac-accentdarkestshadow, _moz_mac_accentdarkestshadow)
|
||||
CSS_KEY(-moz-right, _moz_right)
|
||||
CSS_KEY(-moz-pre-wrap, _moz_pre_wrap)
|
||||
CSS_KEY(-moz-scrollbars-none, _moz_scrollbars_none)
|
||||
CSS_KEY(-moz-scrollbars-horizontal, _moz_scrollbars_horizontal)
|
||||
CSS_KEY(-moz-scrollbars-vertical, _moz_scrollbars_vertical)
|
||||
CSS_KEY(-moz-box, _moz_box)
|
||||
CSS_KEY(-moz-inline-box, _moz_inline_box)
|
||||
CSS_KEY(-moz-grid, _moz_grid)
|
||||
CSS_KEY(-moz-inline-grid, _moz_inline_grid)
|
||||
CSS_KEY(-moz-grid-group, _moz_grid_group)
|
||||
CSS_KEY(-moz-grid-line, _moz_grid_line)
|
||||
CSS_KEY(-moz-stack, _moz_stack)
|
||||
CSS_KEY(-moz-inline-stack, _moz_inline_stack)
|
||||
CSS_KEY(above, above)
|
||||
CSS_KEY(absolute, absolute)
|
||||
CSS_KEY(activeborder, activeborder)
|
||||
CSS_KEY(activecaption, activecaption)
|
||||
CSS_KEY(alias, alias)
|
||||
CSS_KEY(all, all)
|
||||
CSS_KEY(always, always)
|
||||
CSS_KEY(appworkspace, appworkspace)
|
||||
CSS_KEY(arabic-indic, arabic_indic)
|
||||
CSS_KEY(armenian, armenian)
|
||||
CSS_KEY(auto, auto)
|
||||
CSS_KEY(avoid, avoid)
|
||||
CSS_KEY(background, background)
|
||||
CSS_KEY(baseline, baseline)
|
||||
CSS_KEY(behind, behind)
|
||||
CSS_KEY(below, below)
|
||||
CSS_KEY(bengali, bengali)
|
||||
CSS_KEY(bidi-override, bidi_override)
|
||||
CSS_KEY(blink, blink)
|
||||
CSS_KEY(block, block)
|
||||
CSS_KEY(block-axis, block_axis)
|
||||
CSS_KEY(bold, bold)
|
||||
CSS_KEY(bolder, bolder)
|
||||
CSS_KEY(border-box, border_box)
|
||||
CSS_KEY(both, both)
|
||||
CSS_KEY(bottom, bottom)
|
||||
CSS_KEY(button, button)
|
||||
CSS_KEY(buttonface, buttonface)
|
||||
CSS_KEY(buttonhighlight, buttonhighlight)
|
||||
CSS_KEY(buttonshadow, buttonshadow)
|
||||
CSS_KEY(buttontext, buttontext)
|
||||
CSS_KEY(capitalize, capitalize)
|
||||
CSS_KEY(caption, caption)
|
||||
CSS_KEY(captiontext, captiontext)
|
||||
CSS_KEY(cell, cell)
|
||||
CSS_KEY(center, center)
|
||||
CSS_KEY(center-left, center_left)
|
||||
CSS_KEY(center-right, center_right)
|
||||
CSS_KEY(ch, ch)
|
||||
CSS_KEY(circle, circle)
|
||||
CSS_KEY(cjk-earthly-branch, cjk_earthly_branch)
|
||||
CSS_KEY(cjk-heavenly-stem, cjk_heavenly_stem)
|
||||
CSS_KEY(cjk-ideographic, cjk_ideographic)
|
||||
CSS_KEY(close-quote, close_quote)
|
||||
CSS_KEY(cm, cm)
|
||||
CSS_KEY(code, code)
|
||||
CSS_KEY(collapse, collapse)
|
||||
CSS_KEY(compact, compact)
|
||||
CSS_KEY(condensed, condensed)
|
||||
CSS_KEY(content-box, content_box)
|
||||
CSS_KEY(context-menu, context_menu)
|
||||
CSS_KEY(continuous, continuous)
|
||||
CSS_KEY(copy, copy)
|
||||
CSS_KEY(count-down, count_down)
|
||||
CSS_KEY(count-up, count_up)
|
||||
CSS_KEY(count-up-down, count_up_down)
|
||||
CSS_KEY(crop, crop)
|
||||
CSS_KEY(cross, cross)
|
||||
CSS_KEY(crosshair, crosshair)
|
||||
CSS_KEY(dashed, dashed)
|
||||
CSS_KEY(decimal, decimal)
|
||||
CSS_KEY(decimal-leading-zero, decimal_leading_zero)
|
||||
CSS_KEY(default, default)
|
||||
CSS_KEY(deg, deg)
|
||||
CSS_KEY(desktop, desktop)
|
||||
CSS_KEY(devanagari, devanagari)
|
||||
CSS_KEY(dialog, dialog)
|
||||
CSS_KEY(digits, digits)
|
||||
CSS_KEY(disabled, disabled)
|
||||
CSS_KEY(disc, disc)
|
||||
CSS_KEY(document, document)
|
||||
CSS_KEY(dotted, dotted)
|
||||
CSS_KEY(double, double)
|
||||
CSS_KEY(e-resize, e_resize)
|
||||
CSS_KEY(element, element)
|
||||
CSS_KEY(elements, elements)
|
||||
CSS_KEY(em, em)
|
||||
CSS_KEY(embed, embed)
|
||||
CSS_KEY(enabled, enabled)
|
||||
CSS_KEY(end, end)
|
||||
CSS_KEY(ex, ex)
|
||||
CSS_KEY(expanded, expanded)
|
||||
CSS_KEY(extra-condensed, extra_condensed)
|
||||
CSS_KEY(extra-expanded, extra_expanded)
|
||||
CSS_KEY(far-left, far_left)
|
||||
CSS_KEY(far-right, far_right)
|
||||
CSS_KEY(fast, fast)
|
||||
CSS_KEY(faster, faster)
|
||||
CSS_KEY(field, field)
|
||||
CSS_KEY(fixed, fixed)
|
||||
CSS_KEY(georgian, georgian)
|
||||
CSS_KEY(grab, grab)
|
||||
CSS_KEY(grabbing, grabbing)
|
||||
CSS_KEY(grad, grad)
|
||||
CSS_KEY(graytext, graytext)
|
||||
CSS_KEY(groove, groove)
|
||||
CSS_KEY(gujarati, gujarati)
|
||||
CSS_KEY(gurmukhi, gurmukhi)
|
||||
CSS_KEY(hebrew, hebrew)
|
||||
CSS_KEY(help, help)
|
||||
CSS_KEY(hidden, hidden)
|
||||
CSS_KEY(hide, hide)
|
||||
CSS_KEY(high, high)
|
||||
CSS_KEY(higher, higher)
|
||||
CSS_KEY(highlight, highlight)
|
||||
CSS_KEY(highlighttext, highlighttext)
|
||||
CSS_KEY(hiragana, hiragana)
|
||||
CSS_KEY(hiragana-iroha, hiragana_iroha)
|
||||
CSS_KEY(horizontal, horizontal)
|
||||
CSS_KEY(hz, hz)
|
||||
CSS_KEY(icon, icon)
|
||||
CSS_KEY(ignore, ignore)
|
||||
CSS_KEY(in, in)
|
||||
CSS_KEY(inactiveborder, inactiveborder)
|
||||
CSS_KEY(inactivecaption, inactivecaption)
|
||||
CSS_KEY(inactivecaptiontext, inactivecaptiontext)
|
||||
CSS_KEY(info, info)
|
||||
CSS_KEY(infobackground, infobackground)
|
||||
CSS_KEY(infotext, infotext)
|
||||
CSS_KEY(inherit, inherit)
|
||||
CSS_KEY(inline, inline)
|
||||
CSS_KEY(inline-axis, inline_axis)
|
||||
CSS_KEY(inline-block, inline_block)
|
||||
CSS_KEY(inline-table, inline_table)
|
||||
CSS_KEY(inset, inset)
|
||||
CSS_KEY(inside, inside)
|
||||
CSS_KEY(invert, invert)
|
||||
CSS_KEY(italic, italic)
|
||||
CSS_KEY(japanese-formal, japanese_formal)
|
||||
CSS_KEY(japanese-informal, japanese_informal)
|
||||
CSS_KEY(justify, justify)
|
||||
CSS_KEY(kannada, kannada)
|
||||
CSS_KEY(katakana, katakana)
|
||||
CSS_KEY(katakana-iroha, katakana_iroha)
|
||||
CSS_KEY(khmer, khmer)
|
||||
CSS_KEY(khz, khz)
|
||||
CSS_KEY(landscape, landscape)
|
||||
CSS_KEY(lao, lao)
|
||||
CSS_KEY(large, large)
|
||||
CSS_KEY(larger, larger)
|
||||
CSS_KEY(left, left)
|
||||
CSS_KEY(left-side, left_side)
|
||||
CSS_KEY(leftwards, leftwards)
|
||||
CSS_KEY(level, level)
|
||||
CSS_KEY(lighter, lighter)
|
||||
CSS_KEY(line-through, line_through)
|
||||
CSS_KEY(list, list)
|
||||
CSS_KEY(list-item, list_item)
|
||||
CSS_KEY(loud, loud)
|
||||
CSS_KEY(low, low)
|
||||
CSS_KEY(lower, lower)
|
||||
CSS_KEY(lower-alpha, lower_alpha)
|
||||
CSS_KEY(lower-greek, lower_greek)
|
||||
CSS_KEY(lower-latin, lower_latin)
|
||||
CSS_KEY(lower-roman, lower_roman)
|
||||
CSS_KEY(lowercase, lowercase)
|
||||
CSS_KEY(ltr, ltr)
|
||||
CSS_KEY(malayalam, malayalam)
|
||||
CSS_KEY(margin-box, margin_box)
|
||||
CSS_KEY(marker, marker)
|
||||
CSS_KEY(medium, medium)
|
||||
CSS_KEY(menu, menu)
|
||||
CSS_KEY(menutext, menutext)
|
||||
CSS_KEY(message-box, message_box)
|
||||
CSS_KEY(middle, middle)
|
||||
CSS_KEY(mix, mix)
|
||||
CSS_KEY(mm, mm)
|
||||
CSS_KEY(move, move)
|
||||
CSS_KEY(ms, ms)
|
||||
CSS_KEY(myanmar, myanmar)
|
||||
CSS_KEY(n-resize, n_resize)
|
||||
CSS_KEY(narrower, narrower)
|
||||
CSS_KEY(ne-resize, ne_resize)
|
||||
CSS_KEY(no-close-quote, no_close_quote)
|
||||
CSS_KEY(no-open-quote, no_open_quote)
|
||||
CSS_KEY(no-repeat, no_repeat)
|
||||
CSS_KEY(none, none)
|
||||
CSS_KEY(normal, normal)
|
||||
CSS_KEY(noshade, noshade)
|
||||
CSS_KEY(nowrap, nowrap)
|
||||
CSS_KEY(nw-resize, nw_resize)
|
||||
CSS_KEY(oblique, oblique)
|
||||
CSS_KEY(once, once)
|
||||
CSS_KEY(open-quote, open_quote)
|
||||
CSS_KEY(oriya, oriya)
|
||||
CSS_KEY(outset, outset)
|
||||
CSS_KEY(outside, outside)
|
||||
CSS_KEY(overline, overline)
|
||||
CSS_KEY(padding-box, padding_box)
|
||||
CSS_KEY(paragraph, paragraph)
|
||||
CSS_KEY(pc, pc)
|
||||
CSS_KEY(persian, persian)
|
||||
CSS_KEY(pointer, pointer)
|
||||
CSS_KEY(portrait, portrait)
|
||||
CSS_KEY(pre, pre)
|
||||
CSS_KEY(pt, pt)
|
||||
CSS_KEY(pull-down-menu, pull_down_menu)
|
||||
CSS_KEY(px, px)
|
||||
CSS_KEY(rad, rad)
|
||||
CSS_KEY(read-only, read_only)
|
||||
CSS_KEY(read-write, read_write)
|
||||
CSS_KEY(relative, relative)
|
||||
CSS_KEY(repeat, repeat)
|
||||
CSS_KEY(repeat-x, repeat_x)
|
||||
CSS_KEY(repeat-y, repeat_y)
|
||||
CSS_KEY(reverse, reverse)
|
||||
CSS_KEY(ridge, ridge)
|
||||
CSS_KEY(right, right)
|
||||
CSS_KEY(right-side, right_side)
|
||||
CSS_KEY(rightwards, rightwards)
|
||||
CSS_KEY(rtl, rtl)
|
||||
CSS_KEY(run-in, run_in)
|
||||
CSS_KEY(s, s)
|
||||
CSS_KEY(s-resize, s_resize)
|
||||
CSS_KEY(scroll, scroll)
|
||||
CSS_KEY(scrollbar, scrollbar)
|
||||
CSS_KEY(se-resize, se_resize)
|
||||
CSS_KEY(select-all, select_all)
|
||||
CSS_KEY(select-before, select_before)
|
||||
CSS_KEY(select-after, select_after)
|
||||
CSS_KEY(select-same, select_same)
|
||||
CSS_KEY(select-menu, select_menu)
|
||||
CSS_KEY(semi-condensed, semi_condensed)
|
||||
CSS_KEY(semi-expanded, semi_expanded)
|
||||
CSS_KEY(separate, separate)
|
||||
CSS_KEY(show, show)
|
||||
CSS_KEY(silent, silent)
|
||||
CSS_KEY(simp-chinese-formal, simp_chinese_formal)
|
||||
CSS_KEY(simp-chinese-informal, simp_chinese_informal)
|
||||
CSS_KEY(slow, slow)
|
||||
CSS_KEY(slower, slower)
|
||||
CSS_KEY(small, small)
|
||||
CSS_KEY(small-caps, small_caps)
|
||||
CSS_KEY(small-caption, small_caption)
|
||||
CSS_KEY(smaller, smaller)
|
||||
CSS_KEY(soft, soft)
|
||||
CSS_KEY(solid, solid)
|
||||
CSS_KEY(spell-out, spell_out)
|
||||
CSS_KEY(spinning, spinning)
|
||||
CSS_KEY(square, square)
|
||||
CSS_KEY(start, start)
|
||||
CSS_KEY(static, static)
|
||||
CSS_KEY(status-bar, status_bar)
|
||||
CSS_KEY(stretch, stretch)
|
||||
CSS_KEY(sub, sub)
|
||||
CSS_KEY(super, super)
|
||||
CSS_KEY(sw-resize, sw_resize)
|
||||
CSS_KEY(table, table)
|
||||
CSS_KEY(table-caption, table_caption)
|
||||
CSS_KEY(table-cell, table_cell)
|
||||
CSS_KEY(table-column, table_column)
|
||||
CSS_KEY(table-column-group, table_column_group)
|
||||
CSS_KEY(table-footer-group, table_footer_group)
|
||||
CSS_KEY(table-header-group, table_header_group)
|
||||
CSS_KEY(table-row, table_row)
|
||||
CSS_KEY(table-row-group, table_row_group)
|
||||
CSS_KEY(tamil, tamil)
|
||||
CSS_KEY(telugu, telugu)
|
||||
CSS_KEY(text, text)
|
||||
CSS_KEY(text-bottom, text_bottom)
|
||||
CSS_KEY(text-top, text_top)
|
||||
CSS_KEY(thai, thai)
|
||||
CSS_KEY(thick, thick)
|
||||
CSS_KEY(thin, thin)
|
||||
CSS_KEY(threeddarkshadow, threeddarkshadow)
|
||||
CSS_KEY(threedface, threedface)
|
||||
CSS_KEY(threedhighlight, threedhighlight)
|
||||
CSS_KEY(threedlightshadow, threedlightshadow)
|
||||
CSS_KEY(threedshadow, threedshadow)
|
||||
CSS_KEY(toggle, toggle)
|
||||
CSS_KEY(top, top)
|
||||
CSS_KEY(trad-chinese-formal, trad_chinese_formal)
|
||||
CSS_KEY(trad-chinese-informal, trad_chinese_informal)
|
||||
CSS_KEY(transparent, transparent)
|
||||
CSS_KEY(tri-state, tri_state)
|
||||
CSS_KEY(ultra-condensed, ultra_condensed)
|
||||
CSS_KEY(ultra-expanded, ultra_expanded)
|
||||
CSS_KEY(underline, underline)
|
||||
CSS_KEY(upper-alpha, upper_alpha)
|
||||
CSS_KEY(upper-latin, upper_latin)
|
||||
CSS_KEY(upper-roman, upper_roman)
|
||||
CSS_KEY(uppercase, uppercase)
|
||||
CSS_KEY(urdu, urdu)
|
||||
CSS_KEY(vertical, vertical)
|
||||
CSS_KEY(visible, visible)
|
||||
CSS_KEY(w-resize, w_resize)
|
||||
CSS_KEY(wait, wait)
|
||||
CSS_KEY(wider, wider)
|
||||
CSS_KEY(window, window)
|
||||
CSS_KEY(windowframe, windowframe)
|
||||
CSS_KEY(windowtext, windowtext)
|
||||
CSS_KEY(workspace, workspace)
|
||||
CSS_KEY(write-only, write_only)
|
||||
CSS_KEY(x-fast, x_fast)
|
||||
CSS_KEY(x-high, x_high)
|
||||
CSS_KEY(x-large, x_large)
|
||||
CSS_KEY(x-loud, x_loud)
|
||||
CSS_KEY(x-low, x_low)
|
||||
CSS_KEY(x-slow, x_slow)
|
||||
CSS_KEY(x-small, x_small)
|
||||
CSS_KEY(x-soft, x_soft)
|
||||
CSS_KEY(xx-large, xx_large)
|
||||
CSS_KEY(xx-small, xx_small)
|
||||
@@ -1,103 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsCSSKeywords.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStaticNameTable.h"
|
||||
|
||||
// define an array of all CSS keywords
|
||||
#define CSS_KEY(_name,_id) #_name,
|
||||
const char* kCSSRawKeywords[] = {
|
||||
#include "nsCSSKeywordList.h"
|
||||
};
|
||||
#undef CSS_KEY
|
||||
|
||||
static PRInt32 gTableRefCount;
|
||||
static nsStaticCaseInsensitiveNameTable* gKeywordTable;
|
||||
|
||||
void
|
||||
nsCSSKeywords::AddRefTable(void)
|
||||
{
|
||||
if (0 == gTableRefCount++) {
|
||||
NS_ASSERTION(!gKeywordTable, "pre existing array!");
|
||||
gKeywordTable = new nsStaticCaseInsensitiveNameTable();
|
||||
if (gKeywordTable) {
|
||||
#ifdef DEBUG
|
||||
{
|
||||
// let's verify the table...
|
||||
for (PRInt32 index = 0; index < eCSSKeyword_COUNT; ++index) {
|
||||
nsCAutoString temp1(kCSSRawKeywords[index]);
|
||||
nsCAutoString temp2(kCSSRawKeywords[index]);
|
||||
temp1.ToLowerCase();
|
||||
NS_ASSERTION(temp1.Equals(temp2), "upper case char in table");
|
||||
NS_ASSERTION(-1 == temp1.FindChar('_'), "underscore char in table");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
gKeywordTable->Init(kCSSRawKeywords, eCSSKeyword_COUNT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSKeywords::ReleaseTable(void)
|
||||
{
|
||||
if (0 == --gTableRefCount) {
|
||||
if (gKeywordTable) {
|
||||
delete gKeywordTable;
|
||||
gKeywordTable = nsnull;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nsCSSKeyword
|
||||
nsCSSKeywords::LookupKeyword(const nsCString& aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return nsCSSKeyword(gKeywordTable->Lookup(aKeyword));
|
||||
}
|
||||
return eCSSKeyword_UNKNOWN;
|
||||
}
|
||||
|
||||
nsCSSKeyword
|
||||
nsCSSKeywords::LookupKeyword(const nsString& aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return nsCSSKeyword(gKeywordTable->Lookup(aKeyword));
|
||||
}
|
||||
return eCSSKeyword_UNKNOWN;
|
||||
}
|
||||
|
||||
const nsCString&
|
||||
nsCSSKeywords::GetStringValue(nsCSSKeyword aKeyword)
|
||||
{
|
||||
NS_ASSERTION(gKeywordTable, "no lookup table, needs addref");
|
||||
if (gKeywordTable) {
|
||||
return gKeywordTable->GetStringValue(PRInt32(aKeyword));
|
||||
} else {
|
||||
static nsCString kNullStr;
|
||||
return kNullStr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSKeywords_h___
|
||||
#define nsCSSKeywords_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
|
||||
class nsString;
|
||||
class nsCString;
|
||||
|
||||
/*
|
||||
Declare the enum list using the magic of preprocessing
|
||||
enum values are "eCSSKeyword_foo" (where foo is the keyword)
|
||||
|
||||
To change the list of keywords, see nsCSSKeywordList.h
|
||||
|
||||
*/
|
||||
#define CSS_KEY(_name,_id) eCSSKeyword_##_id,
|
||||
enum nsCSSKeyword {
|
||||
eCSSKeyword_UNKNOWN = -1,
|
||||
#include "nsCSSKeywordList.h"
|
||||
eCSSKeyword_COUNT
|
||||
};
|
||||
#undef CSS_KEY
|
||||
|
||||
|
||||
class NS_LAYOUT nsCSSKeywords {
|
||||
public:
|
||||
static void AddRefTable(void);
|
||||
static void ReleaseTable(void);
|
||||
|
||||
// Given a keyword string, return the enum value
|
||||
static nsCSSKeyword LookupKeyword(const nsCString& aKeyword);
|
||||
static nsCSSKeyword LookupKeyword(const nsString& aKeyword);
|
||||
|
||||
// Given a keyword enum, get the string value
|
||||
static const nsCString& GetStringValue(nsCSSKeyword aKeyword);
|
||||
};
|
||||
|
||||
#endif /* nsCSSKeywords_h___ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,133 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSProps_h___
|
||||
#define nsCSSProps_h___
|
||||
|
||||
#include "nslayout.h"
|
||||
#include "nsString.h"
|
||||
|
||||
/*
|
||||
Declare the enum list using the magic of preprocessing
|
||||
enum values are "eCSSProperty_foo" (where foo is the property)
|
||||
|
||||
To change the list of properties, see nsCSSPropList.h
|
||||
|
||||
*/
|
||||
#define CSS_PROP(_name, _id, _hint) eCSSProperty_##_id,
|
||||
enum nsCSSProperty {
|
||||
eCSSProperty_UNKNOWN = -1,
|
||||
#include "nsCSSPropList.h"
|
||||
eCSSProperty_COUNT
|
||||
};
|
||||
#undef CSS_PROP
|
||||
|
||||
|
||||
class NS_LAYOUT nsCSSProps {
|
||||
public:
|
||||
static void AddRefTable(void);
|
||||
static void ReleaseTable(void);
|
||||
|
||||
// Given a property string, return the enum value
|
||||
static nsCSSProperty LookupProperty(const nsAReadableString& aProperty);
|
||||
static nsCSSProperty LookupProperty(const nsCString& aProperty);
|
||||
|
||||
// Given a property enum, get the string value
|
||||
static const nsCString& GetStringValue(nsCSSProperty aProperty);
|
||||
|
||||
// Given a CSS Property and a Property Enum Value
|
||||
// Return back a const nsString& representation of the
|
||||
// value. Return back nullstr if no value is found
|
||||
static const nsCString& LookupPropertyValue(nsCSSProperty aProperty, PRInt32 aValue);
|
||||
|
||||
// Get a color name for a predefined color value like buttonhighlight or activeborder
|
||||
// Sets the aStr param to the name of the propertyID
|
||||
static PRBool GetColorName(PRInt32 aPropID, nsCString &aStr);
|
||||
|
||||
static const PRInt32 kHintTable[];
|
||||
|
||||
static PRInt32 SearchKeywordTableInt(PRInt32 aValue, const PRInt32 aTable[]);
|
||||
static const nsCString& SearchKeywordTable(PRInt32 aValue, const PRInt32 aTable[]);
|
||||
|
||||
// Keyword/Enum value tables
|
||||
static const PRInt32 kAzimuthKTable[];
|
||||
static const PRInt32 kBackgroundAttachmentKTable[];
|
||||
static const PRInt32 kBackgroundColorKTable[];
|
||||
static const PRInt32 kBackgroundRepeatKTable[];
|
||||
static const PRInt32 kBorderCollapseKTable[];
|
||||
static const PRInt32 kBorderColorKTable[];
|
||||
static const PRInt32 kBorderStyleKTable[];
|
||||
static const PRInt32 kBorderWidthKTable[];
|
||||
#ifdef INCLUDE_XUL
|
||||
static const PRInt32 kBoxOrientKTable[];
|
||||
#endif
|
||||
static const PRInt32 kBoxSizingKTable[];
|
||||
static const PRInt32 kCaptionSideKTable[];
|
||||
static const PRInt32 kClearKTable[];
|
||||
static const PRInt32 kColorKTable[];
|
||||
static const PRInt32 kContentKTable[];
|
||||
static const PRInt32 kCursorKTable[];
|
||||
static const PRInt32 kDirectionKTable[];
|
||||
static const PRInt32 kDisplayKTable[];
|
||||
static const PRInt32 kElevationKTable[];
|
||||
static const PRInt32 kEmptyCellsKTable[];
|
||||
static const PRInt32 kFloatKTable[];
|
||||
static const PRInt32 kFloatEdgeKTable[];
|
||||
static const PRInt32 kFontKTable[];
|
||||
static const PRInt32 kFontSizeKTable[];
|
||||
static const PRInt32 kFontStretchKTable[];
|
||||
static const PRInt32 kFontStyleKTable[];
|
||||
static const PRInt32 kFontVariantKTable[];
|
||||
static const PRInt32 kFontWeightKTable[];
|
||||
static const PRInt32 kKeyEquivalentKTable[];
|
||||
static const PRInt32 kListStylePositionKTable[];
|
||||
static const PRInt32 kListStyleKTable[];
|
||||
static const PRInt32 kOutlineColorKTable[];
|
||||
static const PRInt32 kOverflowKTable[];
|
||||
static const PRInt32 kPageBreakKTable[];
|
||||
static const PRInt32 kPageBreakInsideKTable[];
|
||||
static const PRInt32 kPageMarksKTable[];
|
||||
static const PRInt32 kPageSizeKTable[];
|
||||
static const PRInt32 kPitchKTable[];
|
||||
static const PRInt32 kPlayDuringKTable[];
|
||||
static const PRInt32 kPositionKTable[];
|
||||
static const PRInt32 kResizerKTable[];
|
||||
static const PRInt32 kSpeakKTable[];
|
||||
static const PRInt32 kSpeakHeaderKTable[];
|
||||
static const PRInt32 kSpeakNumeralKTable[];
|
||||
static const PRInt32 kSpeakPunctuationKTable[];
|
||||
static const PRInt32 kSpeechRateKTable[];
|
||||
static const PRInt32 kTableLayoutKTable[];
|
||||
static const PRInt32 kTextAlignKTable[];
|
||||
static const PRInt32 kTextDecorationKTable[];
|
||||
static const PRInt32 kTextTransformKTable[];
|
||||
static const PRInt32 kUnicodeBidiKTable[];
|
||||
static const PRInt32 kUserFocusKTable[];
|
||||
static const PRInt32 kUserInputKTable[];
|
||||
static const PRInt32 kUserModifyKTable[];
|
||||
static const PRInt32 kUserSelectKTable[];
|
||||
static const PRInt32 kVerticalAlignKTable[];
|
||||
static const PRInt32 kVisibilityKTable[];
|
||||
static const PRInt32 kVolumeKTable[];
|
||||
static const PRInt32 kWhitespaceKTable[];
|
||||
};
|
||||
|
||||
#endif /* nsCSSProps_h___ */
|
||||
@@ -1,897 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#include "nsCSSScanner.h"
|
||||
#include "nsIInputStream.h"
|
||||
#include "nsIUnicharInputStream.h"
|
||||
#include "nsString.h"
|
||||
#include "nsCRT.h"
|
||||
|
||||
#ifdef NS_DEBUG
|
||||
static char* kNullPointer = "null pointer";
|
||||
#endif
|
||||
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsIConsoleService.h"
|
||||
#include "nsIScriptError.h"
|
||||
#include "nsComponentManagerUtils.h" // put this higher and gcc barfs...
|
||||
#endif
|
||||
|
||||
// Don't bother collecting whitespace characters in token's mIdent buffer
|
||||
#undef COLLECT_WHITESPACE
|
||||
|
||||
#define BUFFER_SIZE 256
|
||||
|
||||
static const PRUnichar CSS_ESCAPE = PRUnichar('\\');
|
||||
|
||||
static const PRUint8 IS_LATIN1 = 0x01;
|
||||
static const PRUint8 IS_DIGIT = 0x02;
|
||||
static const PRUint8 IS_HEX_DIGIT = 0x04;
|
||||
static const PRUint8 IS_ALPHA = 0x08;
|
||||
static const PRUint8 START_IDENT = 0x10;
|
||||
static const PRUint8 IS_IDENT = 0x20;
|
||||
static const PRUint8 IS_WHITESPACE = 0x40;
|
||||
|
||||
static PRBool gLexTableSetup = PR_FALSE;
|
||||
static PRUint8 gLexTable[256];
|
||||
|
||||
static void BuildLexTable()
|
||||
{
|
||||
gLexTableSetup = PR_TRUE;
|
||||
|
||||
PRUint8* lt = gLexTable;
|
||||
int i;
|
||||
lt[CSS_ESCAPE] = START_IDENT;
|
||||
lt['-'] |= IS_IDENT;
|
||||
// XXX add in other whitespace chars
|
||||
lt[' '] |= IS_WHITESPACE; // space
|
||||
lt['\t'] |= IS_WHITESPACE; // horizontal tab
|
||||
lt['\v'] |= IS_WHITESPACE; // vertical tab
|
||||
lt['\r'] |= IS_WHITESPACE; // carriage return
|
||||
lt['\n'] |= IS_WHITESPACE; // line feed
|
||||
lt['\f'] |= IS_WHITESPACE; // form feed
|
||||
for (i = 161; i <= 255; i++) {
|
||||
lt[i] |= IS_LATIN1 | IS_IDENT | START_IDENT;
|
||||
}
|
||||
for (i = '0'; i <= '9'; i++) {
|
||||
lt[i] |= IS_DIGIT | IS_HEX_DIGIT | IS_IDENT;
|
||||
}
|
||||
for (i = 'A'; i <= 'Z'; i++) {
|
||||
if ((i >= 'A') && (i <= 'F')) {
|
||||
lt[i] |= IS_HEX_DIGIT;
|
||||
lt[i+32] |= IS_HEX_DIGIT;
|
||||
}
|
||||
lt[i] |= IS_ALPHA | IS_IDENT | START_IDENT;
|
||||
lt[i+32] |= IS_ALPHA | IS_IDENT | START_IDENT;
|
||||
}
|
||||
}
|
||||
|
||||
nsCSSToken::nsCSSToken()
|
||||
{
|
||||
mType = eCSSToken_Symbol;
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSToken::AppendToString(nsString& aBuffer)
|
||||
{
|
||||
switch (mType) {
|
||||
case eCSSToken_AtKeyword:
|
||||
aBuffer.Append(PRUnichar('@')); // fall through intentional
|
||||
case eCSSToken_Ident:
|
||||
case eCSSToken_WhiteSpace:
|
||||
case eCSSToken_Function:
|
||||
case eCSSToken_URL:
|
||||
case eCSSToken_InvalidURL:
|
||||
case eCSSToken_HTMLComment:
|
||||
aBuffer.Append(mIdent);
|
||||
break;
|
||||
case eCSSToken_Number:
|
||||
if (mIntegerValid) {
|
||||
aBuffer.AppendInt(mInteger, 10);
|
||||
}
|
||||
else {
|
||||
aBuffer.AppendFloat(mNumber);
|
||||
}
|
||||
break;
|
||||
case eCSSToken_Percentage:
|
||||
if (mIntegerValid) {
|
||||
aBuffer.AppendInt(mInteger, 10);
|
||||
}
|
||||
else {
|
||||
aBuffer.AppendFloat(mNumber);
|
||||
}
|
||||
aBuffer.Append(PRUnichar('%')); // STRING USE WARNING: technically, this should be |AppendWithConversion|
|
||||
break;
|
||||
case eCSSToken_Dimension:
|
||||
if (mIntegerValid) {
|
||||
aBuffer.AppendInt(mInteger, 10);
|
||||
}
|
||||
else {
|
||||
aBuffer.AppendFloat(mNumber);
|
||||
}
|
||||
aBuffer.Append(mIdent);
|
||||
break;
|
||||
case eCSSToken_String:
|
||||
aBuffer.Append(mSymbol);
|
||||
aBuffer.Append(mIdent); // fall through intentional
|
||||
case eCSSToken_Symbol:
|
||||
aBuffer.Append(mSymbol);
|
||||
break;
|
||||
case eCSSToken_ID:
|
||||
aBuffer.Append(PRUnichar('#'));
|
||||
aBuffer.Append(mIdent);
|
||||
break;
|
||||
case eCSSToken_Includes:
|
||||
aBuffer.Append(PRUnichar('~'));
|
||||
aBuffer.Append(PRUnichar('='));
|
||||
break;
|
||||
case eCSSToken_Dashmatch:
|
||||
aBuffer.Append(PRUnichar('|'));
|
||||
aBuffer.Append(PRUnichar('='));
|
||||
break;
|
||||
|
||||
default:
|
||||
NS_ERROR("invalid token type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MOZ_DECL_CTOR_COUNTER(nsCSSScanner)
|
||||
|
||||
nsCSSScanner::nsCSSScanner()
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsCSSScanner);
|
||||
if (!gLexTableSetup) {
|
||||
// XXX need a monitor
|
||||
BuildLexTable();
|
||||
}
|
||||
mInput = nsnull;
|
||||
mBuffer = new PRUnichar[BUFFER_SIZE];
|
||||
mOffset = 0;
|
||||
mCount = 0;
|
||||
mPushback = mLocalPushback;
|
||||
mPushbackCount = 0;
|
||||
mPushbackSize = 4;
|
||||
mLineNumber = 1;
|
||||
mLastRead = 0;
|
||||
}
|
||||
|
||||
nsCSSScanner::~nsCSSScanner()
|
||||
{
|
||||
MOZ_COUNT_DTOR(nsCSSScanner);
|
||||
Close();
|
||||
if (nsnull != mBuffer) {
|
||||
delete [] mBuffer;
|
||||
mBuffer = nsnull;
|
||||
}
|
||||
if (mLocalPushback != mPushback) {
|
||||
delete [] mPushback;
|
||||
}
|
||||
}
|
||||
|
||||
void nsCSSScanner::Init(nsIUnicharInputStream* aInput)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aInput, kNullPointer);
|
||||
Close();
|
||||
mInput = aInput;
|
||||
NS_IF_ADDREF(aInput);
|
||||
}
|
||||
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
|
||||
void nsCSSScanner::InitErrorReporting(nsIURI* aURI)
|
||||
{
|
||||
if (aURI) {
|
||||
aURI->GetSpec(getter_Copies(mFileName));
|
||||
} else {
|
||||
mFileName = "from DOM";
|
||||
}
|
||||
mColNumber = 0;
|
||||
}
|
||||
|
||||
void nsCSSScanner::ReportError(const nsAReadableString& aError)
|
||||
{
|
||||
printf("CSS Error (%s :%u.%u): %s.\n",
|
||||
mFileName.get(),
|
||||
mLineNumber,
|
||||
mColNumber,
|
||||
NS_ConvertUCS2toUTF8(aError).GetBuffer());
|
||||
|
||||
// Log it to the JavaScript console
|
||||
nsCOMPtr<nsIConsoleService> consoleService
|
||||
(do_GetService("@mozilla.org/consoleservice;1"));
|
||||
nsCOMPtr<nsIScriptError> errorObject
|
||||
(do_CreateInstance("@mozilla.org/scripterror;1"));
|
||||
|
||||
if (consoleService && errorObject) {
|
||||
nsresult rv;
|
||||
PRUnichar *error = ToNewUnicode(aError);
|
||||
rv = errorObject->Init(error,
|
||||
NS_ConvertASCIItoUCS2(mFileName.get()).GetUnicode(),
|
||||
NS_LITERAL_STRING(""),
|
||||
mLineNumber,
|
||||
mColNumber,
|
||||
0,
|
||||
"CSS Parser");
|
||||
nsMemory::Free(error);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
consoleService->LogMessage(errorObject);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // CSS_REPORT_PARSE_ERRORS
|
||||
|
||||
PRUint32 nsCSSScanner::GetLineNumber()
|
||||
{
|
||||
return mLineNumber;
|
||||
}
|
||||
|
||||
void nsCSSScanner::Close()
|
||||
{
|
||||
NS_IF_RELEASE(mInput);
|
||||
}
|
||||
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
#define TAB_STOP_WIDTH 8
|
||||
#endif
|
||||
|
||||
// Returns -1 on error or eof
|
||||
PRInt32 nsCSSScanner::Read(PRInt32& aErrorCode)
|
||||
{
|
||||
PRInt32 rv;
|
||||
if (0 < mPushbackCount) {
|
||||
rv = PRInt32(mPushback[--mPushbackCount]);
|
||||
} else {
|
||||
if (mCount < 0) {
|
||||
return -1;
|
||||
}
|
||||
if (mOffset == mCount) {
|
||||
mOffset = 0;
|
||||
aErrorCode = mInput->Read(mBuffer, 0, BUFFER_SIZE, (PRUint32*)&mCount);
|
||||
if (NS_FAILED(aErrorCode) || mCount == 0) {
|
||||
mCount = 0;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
rv = PRInt32(mBuffer[mOffset++]);
|
||||
if (((rv == '\n') && (mLastRead != '\r')) || (rv == '\r')) {
|
||||
mLineNumber++;
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
mColNumber = 0;
|
||||
#endif
|
||||
}
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
else if (rv == '\t') {
|
||||
mColNumber = ((mColNumber - 1 + TAB_STOP_WIDTH) / TAB_STOP_WIDTH)
|
||||
* TAB_STOP_WIDTH;
|
||||
} else if (rv != '\n') {
|
||||
mColNumber++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
mLastRead = rv;
|
||||
//printf("Read => %x\n", rv);
|
||||
return rv;
|
||||
}
|
||||
|
||||
PRInt32 nsCSSScanner::Peek(PRInt32& aErrorCode)
|
||||
{
|
||||
if (0 == mPushbackCount) {
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return -1;
|
||||
}
|
||||
mPushback[0] = PRUnichar(ch);
|
||||
mPushbackCount++;
|
||||
}
|
||||
//printf("Peek => %x\n", mLookAhead);
|
||||
return PRInt32(mPushback[mPushbackCount - 1]);
|
||||
}
|
||||
|
||||
void nsCSSScanner::Unread()
|
||||
{
|
||||
NS_PRECONDITION((mLastRead >= 0), "double pushback");
|
||||
Pushback(PRUnichar(mLastRead));
|
||||
mLastRead = -1;
|
||||
}
|
||||
|
||||
void nsCSSScanner::Pushback(PRUnichar aChar)
|
||||
{
|
||||
if (mPushbackCount == mPushbackSize) { // grow buffer
|
||||
PRUnichar* newPushback = new PRUnichar[mPushbackSize + 4];
|
||||
if (nsnull == newPushback) {
|
||||
return;
|
||||
}
|
||||
mPushbackSize += 4;
|
||||
nsCRT::memcpy(newPushback, mPushback, sizeof(PRUnichar) * mPushbackCount);
|
||||
if (mPushback != mLocalPushback) {
|
||||
delete [] mPushback;
|
||||
}
|
||||
mPushback = newPushback;
|
||||
}
|
||||
mPushback[mPushbackCount++] = aChar;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::LookAhead(PRInt32& aErrorCode, PRUnichar aChar)
|
||||
{
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
if (ch == aChar) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
Unread();
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::EatWhiteSpace(PRInt32& aErrorCode)
|
||||
{
|
||||
PRBool eaten = PR_FALSE;
|
||||
for (;;) {
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
break;
|
||||
}
|
||||
if ((ch == ' ') || (ch == '\n') || (ch == '\r') || (ch == '\t')) {
|
||||
eaten = PR_TRUE;
|
||||
continue;
|
||||
}
|
||||
Unread();
|
||||
break;
|
||||
}
|
||||
return eaten;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::EatNewline(PRInt32& aErrorCode)
|
||||
{
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
PRBool eaten = PR_FALSE;
|
||||
if (ch == '\r') {
|
||||
eaten = PR_TRUE;
|
||||
ch = Peek(aErrorCode);
|
||||
if (ch == '\n') {
|
||||
(void) Read(aErrorCode);
|
||||
}
|
||||
} else if (ch == '\n') {
|
||||
eaten = PR_TRUE;
|
||||
} else {
|
||||
Unread();
|
||||
}
|
||||
return eaten;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::Next(PRInt32& aErrorCode, nsCSSToken& aToken)
|
||||
{
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
if (ch < 256) {
|
||||
PRUint8* lexTable = gLexTable;
|
||||
|
||||
// IDENT
|
||||
if ((lexTable[ch] & START_IDENT) != 0) {
|
||||
return ParseIdent(aErrorCode, ch, aToken);
|
||||
}
|
||||
if (ch == '-') { // possible ident
|
||||
PRInt32 nextChar = Peek(aErrorCode);
|
||||
if ((0 <= nextChar) && (0 != (lexTable[nextChar] & START_IDENT))) {
|
||||
return ParseIdent(aErrorCode, ch, aToken);
|
||||
}
|
||||
}
|
||||
|
||||
// AT_KEYWORD
|
||||
if (ch == '@') {
|
||||
PRInt32 nextChar = Peek(aErrorCode);
|
||||
if ((nextChar >= 0) && (nextChar <= 255)) {
|
||||
if ((lexTable[nextChar] & START_IDENT) != 0) {
|
||||
return ParseAtKeyword(aErrorCode, ch, aToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NUMBER or DIM
|
||||
if ((ch == '.') || (ch == '+') || (ch == '-')) {
|
||||
PRInt32 nextChar = Peek(aErrorCode);
|
||||
if ((nextChar >= 0) && (nextChar <= 255)) {
|
||||
if ((lexTable[nextChar] & IS_DIGIT) != 0) {
|
||||
return ParseNumber(aErrorCode, ch, aToken);
|
||||
}
|
||||
else if (('.' == nextChar) && ('.' != ch)) {
|
||||
PRInt32 holdNext = Read(aErrorCode);
|
||||
nextChar = Peek(aErrorCode);
|
||||
if ((0 <= nextChar) && (nextChar <= 255)) {
|
||||
if ((lexTable[nextChar] & IS_DIGIT) != 0) {
|
||||
Pushback(holdNext);
|
||||
return ParseNumber(aErrorCode, ch, aToken);
|
||||
}
|
||||
}
|
||||
Pushback(holdNext);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((lexTable[ch] & IS_DIGIT) != 0) {
|
||||
return ParseNumber(aErrorCode, ch, aToken);
|
||||
}
|
||||
|
||||
// ID
|
||||
if (ch == '#') {
|
||||
return ParseID(aErrorCode, ch, aToken);
|
||||
}
|
||||
|
||||
// STRING
|
||||
if ((ch == '"') || (ch == '\'')) {
|
||||
return ParseString(aErrorCode, ch, aToken);
|
||||
}
|
||||
|
||||
// WS
|
||||
if ((lexTable[ch] & IS_WHITESPACE) != 0) {
|
||||
aToken.mType = eCSSToken_WhiteSpace;
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.Append(PRUnichar(ch));
|
||||
(void) EatWhiteSpace(aErrorCode);
|
||||
return PR_TRUE;
|
||||
}
|
||||
if (ch == '/') {
|
||||
PRInt32 nextChar = Peek(aErrorCode);
|
||||
if (nextChar == '*') {
|
||||
(void) Read(aErrorCode);
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.Append(PRUnichar(ch));
|
||||
aToken.mIdent.Append(PRUnichar(nextChar));
|
||||
return ParseCComment(aErrorCode, aToken);
|
||||
}
|
||||
}
|
||||
if (ch == '<') { // consume HTML comment tags
|
||||
if (LookAhead(aErrorCode, '!')) {
|
||||
if (LookAhead(aErrorCode, '-')) {
|
||||
if (LookAhead(aErrorCode, '-')) {
|
||||
aToken.mType = eCSSToken_HTMLComment;
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.Append(PRUnichar('<'));
|
||||
aToken.mIdent.Append(PRUnichar('!'));
|
||||
aToken.mIdent.Append(PRUnichar('-'));
|
||||
aToken.mIdent.Append(PRUnichar('-'));
|
||||
return PR_TRUE;
|
||||
}
|
||||
Pushback('-');
|
||||
}
|
||||
Pushback('!');
|
||||
}
|
||||
}
|
||||
if (ch == '-') { // check for HTML comment end
|
||||
if (LookAhead(aErrorCode, '-')) {
|
||||
if (LookAhead(aErrorCode, '>')) {
|
||||
aToken.mType = eCSSToken_HTMLComment;
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.AppendWithConversion('-');
|
||||
aToken.mIdent.AppendWithConversion('-');
|
||||
aToken.mIdent.AppendWithConversion('>');
|
||||
return PR_TRUE;
|
||||
}
|
||||
Pushback('-');
|
||||
}
|
||||
}
|
||||
|
||||
// INCLUDES ("~=") and DASHMATCH ("|=")
|
||||
if (( ch == '|' ) || ( ch == '~')) {
|
||||
PRInt32 nextChar = Read(aErrorCode);
|
||||
if ( nextChar == '=' ) {
|
||||
aToken.mType = (ch == '~') ? eCSSToken_Includes : eCSSToken_Dashmatch;
|
||||
return PR_TRUE;
|
||||
} else {
|
||||
Pushback(nextChar);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return ParseIdent(aErrorCode, ch, aToken);
|
||||
}
|
||||
aToken.mType = eCSSToken_Symbol;
|
||||
aToken.mSymbol = ch;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::NextURL(PRInt32& aErrorCode, nsCSSToken& aToken)
|
||||
{
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
if (ch < 256) {
|
||||
PRUint8* lexTable = gLexTable;
|
||||
|
||||
// STRING
|
||||
if ((ch == '"') || (ch == '\'')) {
|
||||
return ParseString(aErrorCode, ch, aToken);
|
||||
}
|
||||
|
||||
// WS
|
||||
if ((lexTable[ch] & IS_WHITESPACE) != 0) {
|
||||
aToken.mType = eCSSToken_WhiteSpace;
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.Append(PRUnichar(ch));
|
||||
(void) EatWhiteSpace(aErrorCode);
|
||||
return PR_TRUE;
|
||||
}
|
||||
if (ch == '/') {
|
||||
PRInt32 nextChar = Peek(aErrorCode);
|
||||
if (nextChar == '*') {
|
||||
(void) Read(aErrorCode);
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mIdent.Append(PRUnichar(ch));
|
||||
aToken.mIdent.Append(PRUnichar(nextChar));
|
||||
return ParseCComment(aErrorCode, aToken);
|
||||
}
|
||||
}
|
||||
|
||||
// Process a url lexical token. A CSS1 url token can contain
|
||||
// characters beyond identifier characters (e.g. '/', ':', etc.)
|
||||
// Because of this the normal rules for tokenizing the input don't
|
||||
// apply very well. To simplify the parser and relax some of the
|
||||
// requirements on the scanner we parse url's here. If we find a
|
||||
// malformed URL then we emit a token of type "InvalidURL" so that
|
||||
// the CSS1 parser can ignore the invalid input. We attempt to eat
|
||||
// the right amount of input data when an invalid URL is presented.
|
||||
|
||||
aToken.mType = eCSSToken_InvalidURL;
|
||||
nsString& ident = aToken.mIdent;
|
||||
ident.SetLength(0);
|
||||
|
||||
if (ch == ')') {
|
||||
Pushback(ch);
|
||||
// empty url spec: this is invalid
|
||||
} else {
|
||||
// start of a non-quoted url
|
||||
Pushback(ch);
|
||||
PRBool ok = PR_TRUE;
|
||||
for (;;) {
|
||||
ch = Read(aErrorCode);
|
||||
if (ch < 0) break;
|
||||
if (ch == CSS_ESCAPE) {
|
||||
ch = ParseEscape(aErrorCode);
|
||||
if (0 < ch) {
|
||||
ident.Append(PRUnichar(ch));
|
||||
}
|
||||
} else if ((ch == '"') || (ch == '\'') || (ch == '(')) {
|
||||
// This is an invalid URL spec
|
||||
ok = PR_FALSE;
|
||||
} else if ((256 >= ch) && ((gLexTable[ch] & IS_WHITESPACE) != 0)) {
|
||||
// Whitespace is allowed at the end of the URL
|
||||
(void) EatWhiteSpace(aErrorCode);
|
||||
if (LookAhead(aErrorCode, ')')) {
|
||||
Pushback(')'); // leave the closing symbol
|
||||
// done!
|
||||
break;
|
||||
}
|
||||
// Whitespace is followed by something other than a
|
||||
// ")". This is an invalid url spec.
|
||||
ok = PR_FALSE;
|
||||
} else if (ch == ')') {
|
||||
Unread();
|
||||
// All done
|
||||
break;
|
||||
} else {
|
||||
// A regular url character.
|
||||
ident.Append(PRUnichar(ch));
|
||||
}
|
||||
}
|
||||
|
||||
// If the result of the above scanning is ok then change the token
|
||||
// type to a useful one.
|
||||
if (ok) {
|
||||
aToken.mType = eCSSToken_URL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
||||
PRInt32 nsCSSScanner::ParseEscape(PRInt32& aErrorCode)
|
||||
{
|
||||
PRUint8* lexTable = gLexTable;
|
||||
PRInt32 ch = Peek(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return CSS_ESCAPE;
|
||||
}
|
||||
if ((ch <= 255) && ((lexTable[ch] & IS_HEX_DIGIT) != 0)) {
|
||||
PRInt32 rv = 0;
|
||||
int i;
|
||||
for (i = 0; i < 6; i++) { // up to six digits
|
||||
ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
// Whoops: error or premature eof
|
||||
break;
|
||||
}
|
||||
if ((lexTable[ch] & IS_HEX_DIGIT) != 0) {
|
||||
if ((lexTable[ch] & IS_DIGIT) != 0) {
|
||||
rv = rv * 16 + (ch - '0');
|
||||
} else {
|
||||
// Note: c&7 just keeps the low three bits which causes
|
||||
// upper and lower case alphabetics to both yield their
|
||||
// "relative to 10" value for computing the hex value.
|
||||
rv = rv * 16 + ((ch & 0x7) + 9);
|
||||
}
|
||||
}
|
||||
else if ((lexTable[ch] & IS_WHITESPACE) != 0) { // single space ends escape
|
||||
if (ch == '\r') { // if CR/LF, eat LF too
|
||||
ch = Peek(aErrorCode);
|
||||
if (ch == '\n') {
|
||||
ch = Read(aErrorCode);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else {
|
||||
Unread();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (6 == i) { // look for trailing whitespace and eat it
|
||||
ch = Peek(aErrorCode);
|
||||
if ((0 <= ch) && (ch <= 255) &&
|
||||
((lexTable[ch] & IS_WHITESPACE) != 0)) {
|
||||
ch = Read(aErrorCode);
|
||||
// special case: if trailing whitespace is CR/LF, eat both chars (not part of spec, but should be)
|
||||
if (ch == '\r') {
|
||||
ch = Peek(aErrorCode);
|
||||
if (ch == '\n') {
|
||||
ch = Read(aErrorCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
} else {
|
||||
// "Any character except a hexidecimal digit can be escaped to
|
||||
// remove its special meaning by putting a backslash in front"
|
||||
// -- CSS1 spec section 7.1
|
||||
if (EatNewline(aErrorCode)) { // skip escaped newline
|
||||
ch = 0;
|
||||
}
|
||||
else {
|
||||
(void) Read(aErrorCode);
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gather up the characters in an identifier. The identfier was
|
||||
* started by "aChar" which will be appended to aIdent. The result
|
||||
* will be aIdent with all of the identifier characters appended
|
||||
* until the first non-identifier character is seen. The termination
|
||||
* character is unread for the future re-reading.
|
||||
*/
|
||||
PRBool nsCSSScanner::GatherIdent(PRInt32& aErrorCode, PRInt32 aChar,
|
||||
nsString& aIdent)
|
||||
{
|
||||
if (aChar == CSS_ESCAPE) {
|
||||
aChar = ParseEscape(aErrorCode);
|
||||
}
|
||||
if (0 < aChar) {
|
||||
aIdent.Append(PRUnichar(aChar));
|
||||
}
|
||||
for (;;) {
|
||||
aChar = Read(aErrorCode);
|
||||
if (aChar < 0) break;
|
||||
if (aChar == CSS_ESCAPE) {
|
||||
aChar = ParseEscape(aErrorCode);
|
||||
if (0 < aChar) {
|
||||
aIdent.Append(PRUnichar(aChar));
|
||||
}
|
||||
} else if ((aChar > 255) || ((gLexTable[aChar] & IS_IDENT) != 0)) {
|
||||
aIdent.Append(PRUnichar(aChar));
|
||||
} else {
|
||||
Unread();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseID(PRInt32& aErrorCode,
|
||||
PRInt32 aChar,
|
||||
nsCSSToken& aToken)
|
||||
{
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mType = eCSSToken_ID;
|
||||
return GatherIdent(aErrorCode, 0, aToken.mIdent);
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseIdent(PRInt32& aErrorCode,
|
||||
PRInt32 aChar,
|
||||
nsCSSToken& aToken)
|
||||
{
|
||||
nsString& ident = aToken.mIdent;
|
||||
ident.SetLength(0);
|
||||
if (!GatherIdent(aErrorCode, aChar, ident)) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
nsCSSTokenType tokenType = eCSSToken_Ident;
|
||||
// look for functions (ie: "ident(")
|
||||
if (PRUnichar('(') == PRUnichar(Peek(aErrorCode))) { // this is a function definition
|
||||
tokenType = eCSSToken_Function;
|
||||
}
|
||||
|
||||
aToken.mType = tokenType;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseAtKeyword(PRInt32& aErrorCode, PRInt32 aChar,
|
||||
nsCSSToken& aToken)
|
||||
{
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mType = eCSSToken_AtKeyword;
|
||||
return GatherIdent(aErrorCode, 0, aToken.mIdent);
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseNumber(PRInt32& aErrorCode, PRInt32 c,
|
||||
nsCSSToken& aToken)
|
||||
{
|
||||
nsString& ident = aToken.mIdent;
|
||||
ident.SetLength(0);
|
||||
PRBool gotDot = (c == '.') ? PR_TRUE : PR_FALSE;
|
||||
if (c != '+') {
|
||||
ident.Append(PRUnichar(c));
|
||||
}
|
||||
|
||||
// Gather up characters that make up the number
|
||||
PRUint8* lexTable = gLexTable;
|
||||
for (;;) {
|
||||
c = Read(aErrorCode);
|
||||
if (c < 0) break;
|
||||
if (!gotDot && (c == '.')) {
|
||||
gotDot = PR_TRUE;
|
||||
} else if ((c > 255) || ((lexTable[c] & IS_DIGIT) == 0)) {
|
||||
break;
|
||||
}
|
||||
ident.Append(PRUnichar(c));
|
||||
}
|
||||
|
||||
// Convert number to floating point
|
||||
nsCSSTokenType type = eCSSToken_Number;
|
||||
PRInt32 ec;
|
||||
float value = ident.ToFloat(&ec);
|
||||
|
||||
// Look at character that terminated the number
|
||||
aToken.mIntegerValid = PR_FALSE;
|
||||
if (c >= 0) {
|
||||
if ((c <= 255) && ((lexTable[c] & START_IDENT) != 0)) {
|
||||
ident.SetLength(0);
|
||||
if (!GatherIdent(aErrorCode, c, ident)) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
type = eCSSToken_Dimension;
|
||||
} else if ('%' == c) {
|
||||
type = eCSSToken_Percentage;
|
||||
value = value / 100.0f;
|
||||
ident.SetLength(0);
|
||||
} else {
|
||||
// Put back character that stopped numeric scan
|
||||
Unread();
|
||||
if (!gotDot) {
|
||||
aToken.mInteger = ident.ToInteger(&ec);
|
||||
aToken.mIntegerValid = PR_TRUE;
|
||||
}
|
||||
ident.SetLength(0);
|
||||
}
|
||||
}
|
||||
else { // stream ended
|
||||
if (!gotDot) {
|
||||
aToken.mInteger = ident.ToInteger(&ec);
|
||||
aToken.mIntegerValid = PR_TRUE;
|
||||
}
|
||||
ident.SetLength(0);
|
||||
}
|
||||
aToken.mNumber = value;
|
||||
aToken.mType = type;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseCComment(PRInt32& aErrorCode, nsCSSToken& aToken)
|
||||
{
|
||||
nsString& ident = aToken.mIdent;
|
||||
for (;;) {
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) break;
|
||||
if (ch == '*') {
|
||||
if (LookAhead(aErrorCode, '/')) {
|
||||
ident.Append(PRUnichar(ch)); // STRING USE WARNING: technically, this should be |AppendWithConversion|
|
||||
ident.AppendWithConversion('/');
|
||||
break;
|
||||
}
|
||||
}
|
||||
#ifdef COLLECT_WHITESPACE
|
||||
ident.Append(PRUnichar(ch));
|
||||
#endif
|
||||
}
|
||||
aToken.mType = eCSSToken_WhiteSpace;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
#if 0
|
||||
PRBool nsCSSScanner::ParseEOLComment(PRInt32& aErrorCode, nsCSSToken& aToken)
|
||||
{
|
||||
nsString& ident = aToken.mIdent;
|
||||
ident.SetLength(0);
|
||||
for (;;) {
|
||||
if (EatNewline(aErrorCode)) {
|
||||
break;
|
||||
}
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
break;
|
||||
}
|
||||
#ifdef COLLECT_WHITESPACE
|
||||
ident.Append(PRUnichar(ch));
|
||||
#endif
|
||||
}
|
||||
aToken.mType = eCSSToken_WhiteSpace;
|
||||
return PR_TRUE;
|
||||
}
|
||||
#endif // 0
|
||||
|
||||
PRBool nsCSSScanner::GatherString(PRInt32& aErrorCode, PRInt32 aStop,
|
||||
nsString& aBuffer)
|
||||
{
|
||||
for (;;) {
|
||||
if (EatNewline(aErrorCode)) {
|
||||
break;
|
||||
}
|
||||
PRInt32 ch = Read(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
if (ch == aStop) {
|
||||
break;
|
||||
}
|
||||
if (ch == CSS_ESCAPE) {
|
||||
ch = ParseEscape(aErrorCode);
|
||||
if (ch < 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
}
|
||||
if (0 < ch) {
|
||||
aBuffer.Append(PRUnichar(ch));
|
||||
}
|
||||
}
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool nsCSSScanner::ParseString(PRInt32& aErrorCode, PRInt32 aStop,
|
||||
nsCSSToken& aToken)
|
||||
{
|
||||
aToken.mIdent.SetLength(0);
|
||||
aToken.mType = eCSSToken_String;
|
||||
aToken.mSymbol = PRUnichar(aStop); // remember how it's quoted
|
||||
return GatherString(aErrorCode, aStop, aToken.mIdent);
|
||||
}
|
||||
@@ -1,166 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsCSSScanner_h___
|
||||
#define nsCSSScanner_h___
|
||||
|
||||
#include "nsString.h"
|
||||
class nsIUnicharInputStream;
|
||||
|
||||
// for testing
|
||||
//#define CSS_REPORT_PARSE_ERRORS
|
||||
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
#include "nsXPIDLString.h"
|
||||
class nsIURI;
|
||||
#endif
|
||||
|
||||
// Token types
|
||||
enum nsCSSTokenType {
|
||||
// A css identifier (e.g. foo)
|
||||
eCSSToken_Ident = 0, // mIdent
|
||||
|
||||
// A css at keyword (e.g. @foo)
|
||||
eCSSToken_AtKeyword = 1, // mIdent
|
||||
|
||||
// A css number without a percentage or dimension; with percentage;
|
||||
// without percentage but with a dimension
|
||||
eCSSToken_Number = 2, // mNumber
|
||||
eCSSToken_Percentage = 3, // mNumber
|
||||
eCSSToken_Dimension = 4, // mNumber + mIdent
|
||||
|
||||
// A css string (e.g. "foo" or 'foo')
|
||||
eCSSToken_String = 5, // mSymbol + mIdent + mSymbol
|
||||
|
||||
// Whitespace (e.g. " " or "/* abc */")
|
||||
eCSSToken_WhiteSpace = 6, // mIdent
|
||||
|
||||
// A css symbol (e.g. ':', ';', '+', etc.)
|
||||
eCSSToken_Symbol = 7, // mSymbol
|
||||
|
||||
// A css1 id (e.g. #foo3)
|
||||
eCSSToken_ID = 8, // mIdent
|
||||
|
||||
eCSSToken_Function = 9, // mIdent
|
||||
|
||||
eCSSToken_URL = 10, // mIdent
|
||||
eCSSToken_InvalidURL = 11, // doesn't matter
|
||||
|
||||
eCSSToken_HTMLComment = 12, // "<!--" or "-->"
|
||||
|
||||
eCSSToken_Includes = 13, // "~="
|
||||
eCSSToken_Dashmatch = 14 // "|="
|
||||
|
||||
};
|
||||
|
||||
struct nsCSSToken {
|
||||
nsCSSTokenType mType;
|
||||
nsAutoString mIdent;
|
||||
float mNumber;
|
||||
PRInt32 mInteger;
|
||||
PRBool mIntegerValid;
|
||||
PRUnichar mSymbol;
|
||||
|
||||
nsCSSToken();
|
||||
|
||||
PRBool IsDimension() {
|
||||
return PRBool((eCSSToken_Dimension == mType) ||
|
||||
((eCSSToken_Number == mType) && (mNumber == 0.0f)));
|
||||
}
|
||||
|
||||
PRBool IsSymbol(PRUnichar aSymbol) {
|
||||
return PRBool((eCSSToken_Symbol == mType) && (mSymbol == aSymbol));
|
||||
}
|
||||
|
||||
void AppendToString(nsString& aBuffer);
|
||||
};
|
||||
|
||||
// CSS Scanner API. Used to tokenize an input stream using the CSS
|
||||
// forward compatible tokenization rules. This implementation is
|
||||
// private to this package and is only used internally by the css
|
||||
// parser.
|
||||
class nsCSSScanner {
|
||||
public:
|
||||
nsCSSScanner();
|
||||
~nsCSSScanner();
|
||||
|
||||
// Init the scanner.
|
||||
void Init(nsIUnicharInputStream* aInput);
|
||||
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
void InitErrorReporting(nsIURI* aURI);
|
||||
void ReportError(const nsAReadableString& aError);
|
||||
#endif
|
||||
|
||||
PRUint32 GetLineNumber();
|
||||
|
||||
// Get the next token. Return nsfalse on EOF or ERROR. aTokenResult
|
||||
// is filled in with the data for the token.
|
||||
PRBool Next(PRInt32& aErrorCode, nsCSSToken& aTokenResult);
|
||||
|
||||
// Get the next token that may be a string or unquoted URL or whitespace
|
||||
PRBool NextURL(PRInt32& aErrorCode, nsCSSToken& aTokenResult);
|
||||
|
||||
protected:
|
||||
void Close();
|
||||
PRInt32 Read(PRInt32& aErrorCode);
|
||||
PRInt32 Peek(PRInt32& aErrorCode);
|
||||
void Unread();
|
||||
void Pushback(PRUnichar aChar);
|
||||
PRBool LookAhead(PRInt32& aErrorCode, PRUnichar aChar);
|
||||
PRBool EatWhiteSpace(PRInt32& aErrorCode);
|
||||
PRBool EatNewline(PRInt32& aErrorCode);
|
||||
|
||||
PRInt32 ParseEscape(PRInt32& aErrorCode);
|
||||
PRBool ParseIdent(PRInt32& aErrorCode, PRInt32 aChar, nsCSSToken& aResult);
|
||||
PRBool ParseAtKeyword(PRInt32& aErrorCode, PRInt32 aChar,
|
||||
nsCSSToken& aResult);
|
||||
PRBool ParseNumber(PRInt32& aErrorCode, PRInt32 aChar, nsCSSToken& aResult);
|
||||
PRBool ParseID(PRInt32& aErrorCode, PRInt32 aChar, nsCSSToken& aResult);
|
||||
PRBool ParseString(PRInt32& aErrorCode, PRInt32 aChar, nsCSSToken& aResult);
|
||||
#if 0
|
||||
PRBool ParseEOLComment(PRInt32& aErrorCode, nsCSSToken& aResult);
|
||||
#endif
|
||||
PRBool ParseCComment(PRInt32& aErrorCode, nsCSSToken& aResult);
|
||||
|
||||
PRBool GatherString(PRInt32& aErrorCode, PRInt32 aStop,
|
||||
nsString& aString);
|
||||
PRBool GatherIdent(PRInt32& aErrorCode, PRInt32 aChar, nsString& aIdent);
|
||||
|
||||
nsIUnicharInputStream* mInput;
|
||||
PRUnichar* mBuffer;
|
||||
PRInt32 mOffset;
|
||||
PRInt32 mCount;
|
||||
PRUnichar* mPushback;
|
||||
PRInt32 mPushbackCount;
|
||||
PRInt32 mPushbackSize;
|
||||
PRInt32 mLastRead;
|
||||
PRUnichar mLocalPushback[4];
|
||||
|
||||
PRUint32 mLineNumber;
|
||||
#ifdef CSS_REPORT_PARSE_ERRORS
|
||||
nsXPIDLCString mFileName;
|
||||
PRUint32 mColNumber;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#endif /* nsCSSScanner_h___ */
|
||||
@@ -1,782 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* IBM Corp.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include "nsStyleUtil.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsIStyleContext.h"
|
||||
#include "nsStyleConsts.h"
|
||||
#include "nsUnitConversion.h"
|
||||
|
||||
#include "nsHTMLAtoms.h"
|
||||
#include "nsILinkHandler.h"
|
||||
#include "nsILink.h"
|
||||
#include "nsIXMLContent.h"
|
||||
#include "nsIHTMLContent.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIPref.h"
|
||||
|
||||
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||
|
||||
#define POSITIVE_SCALE_FACTOR 1.10 /* 10% */
|
||||
#define NEGATIVE_SCALE_FACTOR .90 /* 10% */
|
||||
|
||||
#if DEBUG
|
||||
#define DUMP_FONT_SIZES 0
|
||||
#endif
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
* Return the scaling percentage given a font scaler
|
||||
* Lifted from layutil.c
|
||||
*/
|
||||
float nsStyleUtil::GetScalingFactor(PRInt32 aScaler)
|
||||
{
|
||||
double scale = 1.0;
|
||||
double mult;
|
||||
PRInt32 count;
|
||||
|
||||
if(aScaler < 0) {
|
||||
count = -aScaler;
|
||||
mult = NEGATIVE_SCALE_FACTOR;
|
||||
}
|
||||
else {
|
||||
count = aScaler;
|
||||
mult = POSITIVE_SCALE_FACTOR;
|
||||
}
|
||||
|
||||
/* use the percentage scaling factor to the power of the pref */
|
||||
while(count--) {
|
||||
scale *= mult;
|
||||
}
|
||||
|
||||
return (float)scale;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
static PRBool gNavAlgorithmPref = PR_FALSE;
|
||||
|
||||
static int PR_CALLBACK NavAlgorithmPrefChangedCallback(const char * name, void * closure)
|
||||
{
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &rv);
|
||||
if (NS_SUCCEEDED(rv) && prefs) {
|
||||
prefs->GetBoolPref(name, &gNavAlgorithmPref);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
static PRBool UseNewFontAlgorithm()
|
||||
{
|
||||
static PRBool once = PR_TRUE;
|
||||
|
||||
if (once)
|
||||
{
|
||||
once = PR_FALSE;
|
||||
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &rv);
|
||||
if (NS_SUCCEEDED(rv) && prefs) {
|
||||
prefs->GetBoolPref("font.size.nav4algorithm", &gNavAlgorithmPref);
|
||||
prefs->RegisterCallback("font.size.nav4algorithm", NavAlgorithmPrefChangedCallback, NULL);
|
||||
}
|
||||
}
|
||||
return (gNavAlgorithmPref ? PR_FALSE : PR_TRUE);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
* Lifted from winfe/cxdc.cpp
|
||||
*/
|
||||
static nscoord OldCalcFontPointSize(PRInt32 aHTMLSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor)
|
||||
{ // lifted directly from Nav 5.0 code to replicate rounding errors
|
||||
double dFontSize;
|
||||
|
||||
switch(aHTMLSize) {
|
||||
case 1:
|
||||
dFontSize = 7 * aBasePointSize / 10;
|
||||
break;
|
||||
case 2:
|
||||
dFontSize = 85 * aBasePointSize / 100;
|
||||
break;
|
||||
case 3:
|
||||
dFontSize = aBasePointSize;
|
||||
break;
|
||||
case 4:
|
||||
dFontSize = 12 * aBasePointSize / 10;
|
||||
break;
|
||||
case 5:
|
||||
dFontSize = 3 * aBasePointSize / 2;
|
||||
break;
|
||||
case 6:
|
||||
dFontSize = 2 * aBasePointSize;
|
||||
break;
|
||||
case 7:
|
||||
dFontSize = 3 * aBasePointSize;
|
||||
break;
|
||||
default:
|
||||
if (aHTMLSize < 1) {
|
||||
dFontSize = (7 * aBasePointSize / 10) * pow(1.1, aHTMLSize - 1);
|
||||
}
|
||||
else { // aHTMLSize > 7
|
||||
dFontSize = (3 * aBasePointSize) * pow(1.2, aHTMLSize - 7);
|
||||
}
|
||||
}
|
||||
|
||||
dFontSize *= aScalingFactor;
|
||||
|
||||
if (1.0 < dFontSize) {
|
||||
return (nscoord)dFontSize;
|
||||
}
|
||||
return (nscoord)1;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
static nscoord NewCalcFontPointSize(PRInt32 aHTMLSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType)
|
||||
{
|
||||
#define sFontSizeTableMin 9
|
||||
#define sFontSizeTableMax 16
|
||||
|
||||
// This table seems to be the one used by MacIE5. We hope its adoption in Mozilla
|
||||
// and eventually in WinIE5.5 will help to establish a standard rendering across
|
||||
// platforms and browsers. For now, it is used only in Strict mode. More can be read
|
||||
// in the document written by Todd Farhner at:
|
||||
// http://style.verso.com/font_size_intervals/altintervals.html
|
||||
//
|
||||
static PRInt32 sStrictFontSizeTable[sFontSizeTableMax - sFontSizeTableMin + 1][8] =
|
||||
{
|
||||
{ 9, 9, 9, 9, 11, 14, 18, 27},
|
||||
{ 9, 9, 9, 10, 12, 15, 20, 30},
|
||||
{ 9, 9, 10, 11, 13, 17, 22, 33},
|
||||
{ 9, 9, 10, 12, 14, 18, 24, 36},
|
||||
{ 9, 10, 12, 13, 16, 20, 26, 39},
|
||||
{ 9, 10, 12, 14, 17, 21, 28, 42},
|
||||
{ 9, 10, 13, 15, 18, 23, 30, 45},
|
||||
{ 9, 10, 13, 16, 18, 24, 32, 48}
|
||||
};
|
||||
// HTML 1 2 3 4 5 6 7
|
||||
// CSS xxs xs s m l xl xxl
|
||||
// |
|
||||
// user pref
|
||||
//
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// This table gives us compatibility with WinNav4 for the default fonts only.
|
||||
// In WinNav4, the default fonts were:
|
||||
//
|
||||
// Times/12pt == Times/16px at 96ppi
|
||||
// Courier/10pt == Courier/13px at 96ppi
|
||||
//
|
||||
// The 2 lines below marked "anchored" have the exact pixel sizes used by
|
||||
// WinNav4 for Times/12pt and Courier/10pt at 96ppi. As you can see, the
|
||||
// HTML size 3 (user pref) for those 2 anchored lines is 13px and 16px.
|
||||
//
|
||||
// All values other than the anchored values were filled in by hand, never
|
||||
// going below 9px, and maintaining a "diagonal" relationship. See for
|
||||
// example the 13s -- they follow a diagonal line through the table.
|
||||
//
|
||||
static PRInt32 sQuirksFontSizeTable[sFontSizeTableMax - sFontSizeTableMin + 1][8] =
|
||||
{
|
||||
{ 9, 9, 9, 9, 11, 14, 18, 28 },
|
||||
{ 9, 9, 9, 10, 12, 15, 20, 31 },
|
||||
{ 9, 9, 9, 11, 13, 17, 22, 34 },
|
||||
{ 9, 9, 10, 12, 14, 18, 24, 37 },
|
||||
{ 9, 9, 10, 13, 16, 20, 26, 40 }, // anchored (13)
|
||||
{ 9, 9, 11, 14, 17, 21, 28, 42 },
|
||||
{ 9, 10, 12, 15, 17, 23, 30, 45 },
|
||||
{ 9, 10, 13, 16, 18, 24, 32, 48 } // anchored (16)
|
||||
};
|
||||
// HTML 1 2 3 4 5 6 7
|
||||
// CSS xxs xs s m l xl xxl
|
||||
// |
|
||||
// user pref
|
||||
|
||||
#if 0
|
||||
//
|
||||
// These are the exact pixel values used by WinIE5 at 96ppi.
|
||||
//
|
||||
{ ?, 8, 11, 12, 13, 16, 21, 32 }, // smallest
|
||||
{ ?, 9, 12, 13, 16, 21, 27, 40 }, // smaller
|
||||
{ ?, 10, 13, 16, 18, 24, 32, 48 }, // medium
|
||||
{ ?, 13, 16, 19, 21, 27, 37, ?? }, // larger
|
||||
{ ?, 16, 19, 21, 24, 32, 43, ?? } // largest
|
||||
//
|
||||
// HTML 1 2 3 4 5 6 7
|
||||
// CSS ? ? ? ? ? ? ? ?
|
||||
//
|
||||
// (CSS not tested yet.)
|
||||
//
|
||||
#endif
|
||||
|
||||
static PRInt32 sFontSizeFactors[8] = { 60,75,89,100,120,150,200,300 };
|
||||
|
||||
static PRInt32 sCSSColumns[7] = {0, 1, 2, 3, 4, 5, 6}; // xxs...xxl
|
||||
static PRInt32 sHTMLColumns[7] = {1, 2, 3, 4, 5, 6, 7}; // 1...7
|
||||
|
||||
double dFontSize;
|
||||
|
||||
if (aFontSizeType == eFontSize_HTML) {
|
||||
aHTMLSize--; // input as 1-7
|
||||
}
|
||||
|
||||
if (aHTMLSize < 0)
|
||||
aHTMLSize = 0;
|
||||
else if (aHTMLSize > 6)
|
||||
aHTMLSize = 6;
|
||||
|
||||
PRInt32* column;
|
||||
switch (aFontSizeType)
|
||||
{
|
||||
case eFontSize_HTML: column = sHTMLColumns; break;
|
||||
case eFontSize_CSS: column = sCSSColumns; break;
|
||||
}
|
||||
|
||||
float t2p;
|
||||
aPresContext->GetTwipsToPixels(&t2p);
|
||||
PRInt32 fontSize = NSTwipsToIntPixels(aBasePointSize, t2p);
|
||||
|
||||
if ((fontSize >= sFontSizeTableMin) && (fontSize <= sFontSizeTableMax))
|
||||
{
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
PRInt32 row = fontSize - sFontSizeTableMin;
|
||||
|
||||
nsCompatibility mode;
|
||||
aPresContext->GetCompatibilityMode(&mode);
|
||||
if (mode == eCompatibility_NavQuirks) {
|
||||
dFontSize = NSIntPixelsToTwips(sQuirksFontSizeTable[row][column[aHTMLSize]], p2t);
|
||||
} else {
|
||||
dFontSize = NSIntPixelsToTwips(sStrictFontSizeTable[row][column[aHTMLSize]], p2t);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PRInt32 factor = sFontSizeFactors[column[aHTMLSize]];
|
||||
dFontSize = (factor * aBasePointSize) / 100;
|
||||
}
|
||||
|
||||
dFontSize *= aScalingFactor;
|
||||
|
||||
if (1.0 < dFontSize) {
|
||||
return (nscoord)dFontSize;
|
||||
}
|
||||
return (nscoord)1;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
nscoord nsStyleUtil::CalcFontPointSize(PRInt32 aHTMLSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType)
|
||||
{
|
||||
#if DUMP_FONT_SIZES
|
||||
extern void DumpFontSizes(nsIPresContext* aPresContext);
|
||||
DumpFontSizes(aPresContext);
|
||||
#endif
|
||||
if (UseNewFontAlgorithm())
|
||||
return NewCalcFontPointSize(aHTMLSize, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType);
|
||||
else
|
||||
return OldCalcFontPointSize(aHTMLSize, aBasePointSize, aScalingFactor);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
PRInt32 nsStyleUtil::FindNextSmallerFontSize(nscoord aFontSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType)
|
||||
{
|
||||
PRInt32 index;
|
||||
PRInt32 indexMin;
|
||||
PRInt32 indexMax;
|
||||
PRInt32 fontSize = NSTwipsToFloorIntPoints(aFontSize);
|
||||
|
||||
if (aFontSizeType == eFontSize_HTML) {
|
||||
indexMin = 1;
|
||||
indexMax = 7;
|
||||
} else {
|
||||
indexMin = 0;
|
||||
indexMax = 6;
|
||||
}
|
||||
|
||||
if (NSTwipsToFloorIntPoints(CalcFontPointSize(indexMin, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType)) < fontSize) {
|
||||
if (fontSize <= NSTwipsToFloorIntPoints(CalcFontPointSize(indexMax, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType))) { // in HTML table
|
||||
for (index = indexMax; index > indexMin; index--)
|
||||
if (fontSize > NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType)))
|
||||
break;
|
||||
}
|
||||
else { // larger than HTML table
|
||||
return indexMax;
|
||||
// for (index = 8; ; index++)
|
||||
// if (fontSize < NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext))) {
|
||||
// index--;
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
}
|
||||
else { // smaller than HTML table
|
||||
return indexMin;
|
||||
// for (index = 0; -25<index ; index--) //prevent infinite loop (bug 17045)
|
||||
// if (fontSize > NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext))) {
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
PRInt32 nsStyleUtil::FindNextLargerFontSize(nscoord aFontSize, PRInt32 aBasePointSize,
|
||||
float aScalingFactor, nsIPresContext* aPresContext,
|
||||
nsFontSizeType aFontSizeType)
|
||||
{
|
||||
PRInt32 index;
|
||||
PRInt32 indexMin;
|
||||
PRInt32 indexMax;
|
||||
PRInt32 fontSize = NSTwipsToFloorIntPoints(aFontSize);
|
||||
|
||||
if (aFontSizeType == eFontSize_HTML) {
|
||||
indexMin = 1;
|
||||
indexMax = 7;
|
||||
} else {
|
||||
indexMin = 0;
|
||||
indexMax = 6;
|
||||
}
|
||||
|
||||
if (NSTwipsToFloorIntPoints(CalcFontPointSize(indexMin, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType)) <= fontSize) {
|
||||
if (fontSize < NSTwipsToFloorIntPoints(CalcFontPointSize(indexMax, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType))) { // in HTML table
|
||||
for (index = indexMin; index < indexMax; index++)
|
||||
if (fontSize < NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext, aFontSizeType)))
|
||||
break;
|
||||
}
|
||||
else { // larger than HTML table
|
||||
return indexMax;
|
||||
// for (index = 8; ; index++)
|
||||
// if (fontSize < NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext)))
|
||||
// break;
|
||||
}
|
||||
}
|
||||
else { // smaller than HTML table
|
||||
return indexMin;
|
||||
// for (index = 0; -25<index ; index--) //prevent infinite loop (bug 17045)
|
||||
// if (fontSize > NSTwipsToFloorIntPoints(CalcFontPointSize(index, aBasePointSize, aScalingFactor, aPresContext))) {
|
||||
// index++;
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
PRInt32
|
||||
nsStyleUtil::ConstrainFontWeight(PRInt32 aWeight)
|
||||
{
|
||||
aWeight = ((aWeight < 100) ? 100 : ((aWeight > 900) ? 900 : aWeight));
|
||||
PRInt32 base = ((aWeight / 100) * 100);
|
||||
PRInt32 step = (aWeight % 100);
|
||||
PRBool negativeStep = PRBool(50 < step);
|
||||
PRInt32 maxStep;
|
||||
if (negativeStep) {
|
||||
step = 100 - step;
|
||||
maxStep = (base / 100);
|
||||
base += 100;
|
||||
}
|
||||
else {
|
||||
maxStep = ((900 - base) / 100);
|
||||
}
|
||||
if (maxStep < step) {
|
||||
step = maxStep;
|
||||
}
|
||||
return (base + ((negativeStep) ? -step : step));
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const nsStyleColor* nsStyleUtil::FindNonTransparentBackground(nsIStyleContext* aContext,
|
||||
PRBool aStartAtParent /*= PR_FALSE*/)
|
||||
{
|
||||
const nsStyleColor* result = nsnull;
|
||||
nsIStyleContext* context;
|
||||
if (aStartAtParent) {
|
||||
context = aContext->GetParent(); // balance ending release
|
||||
} else {
|
||||
context = aContext;
|
||||
NS_IF_ADDREF(context); // balance ending release
|
||||
}
|
||||
NS_ASSERTION( context != nsnull, "Cannot find NonTransparentBackground in a null context" );
|
||||
|
||||
while (nsnull != context) {
|
||||
result = (const nsStyleColor*)context->GetStyleData(eStyleStruct_Color);
|
||||
|
||||
if (0 == (result->mBackgroundFlags & NS_STYLE_BG_COLOR_TRANSPARENT)) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
nsIStyleContext* last = context;
|
||||
context = context->GetParent();
|
||||
NS_RELEASE(last);
|
||||
}
|
||||
}
|
||||
NS_IF_RELEASE(context);
|
||||
return result;
|
||||
}
|
||||
|
||||
/*static*/
|
||||
PRBool nsStyleUtil::IsHTMLLink(nsIContent *aContent, nsIAtom *aTag, nsIPresContext *aPresContext, nsLinkState *aState)
|
||||
{
|
||||
NS_ASSERTION(aContent && aState, "null arg in IsHTMLLink");
|
||||
|
||||
// check for:
|
||||
// - HTML ANCHOR with valid HREF
|
||||
// - HTML LINK with valid HREF
|
||||
// - HTML AREA with valid HREF
|
||||
|
||||
PRBool result = PR_FALSE;
|
||||
|
||||
if ((aTag == nsHTMLAtoms::a) ||
|
||||
(aTag == nsHTMLAtoms::link) ||
|
||||
(aTag == nsHTMLAtoms::area)) {
|
||||
|
||||
nsCOMPtr<nsILink> link( do_QueryInterface(aContent) );
|
||||
// In XML documents, this can be null.
|
||||
if (link) {
|
||||
nsLinkState linkState;
|
||||
link->GetLinkState(linkState);
|
||||
if (linkState == eLinkState_Unknown) {
|
||||
// if it is an anchor, area or link then check the href attribute
|
||||
// make sure this anchor has a link even if we are not testing state
|
||||
// if there is no link, then this anchor is not really a linkpseudo.
|
||||
// bug=23209
|
||||
|
||||
char* href;
|
||||
link->GetHrefCString(href);
|
||||
|
||||
if (href) {
|
||||
nsILinkHandler *linkHandler = nsnull;
|
||||
aPresContext->GetLinkHandler(&linkHandler);
|
||||
if (linkHandler) {
|
||||
linkHandler->GetLinkState(href, linkState);
|
||||
NS_RELEASE(linkHandler);
|
||||
}
|
||||
else {
|
||||
// no link handler? then all links are unvisited
|
||||
linkState = eLinkState_Unvisited;
|
||||
}
|
||||
nsCRT::free(href);
|
||||
} else {
|
||||
linkState = eLinkState_NotLink;
|
||||
}
|
||||
link->SetLinkState(linkState);
|
||||
}
|
||||
if (linkState != eLinkState_NotLink) {
|
||||
*aState = linkState;
|
||||
result = PR_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*static*/
|
||||
PRBool nsStyleUtil::IsSimpleXlink(nsIContent *aContent, nsIPresContext *aPresContext, nsLinkState *aState)
|
||||
{
|
||||
// XXX PERF This function will cause serious performance problems on
|
||||
// pages with lots of XLinks. We should be caching the visited
|
||||
// state of the XLinks. Where???
|
||||
|
||||
NS_ASSERTION(aContent && aState, "invalid call to IsXlink with null content");
|
||||
|
||||
PRBool rv = PR_FALSE;
|
||||
|
||||
if (aContent && aState) {
|
||||
// first see if we have an XML element
|
||||
nsCOMPtr<nsIXMLContent> xml(do_QueryInterface(aContent));
|
||||
if (xml) {
|
||||
// see if it is type=simple (we don't deal with other types)
|
||||
nsAutoString val;
|
||||
aContent->GetAttribute(kNameSpaceID_XLink, nsHTMLAtoms::type, val);
|
||||
if (val == NS_LITERAL_STRING("simple")) {
|
||||
// see if there is an xlink namespace'd href attribute:
|
||||
// - get it if there is, if not no big deal, it is not required for xlinks
|
||||
// is it bad to re-use val here?
|
||||
aContent->GetAttribute(kNameSpaceID_XLink, nsHTMLAtoms::href, val);
|
||||
|
||||
// It's an XLink. Resolve it relative to its document.
|
||||
nsCOMPtr<nsIURI> baseURI;
|
||||
nsCOMPtr<nsIHTMLContent> htmlContent = do_QueryInterface(aContent);
|
||||
if (htmlContent) {
|
||||
// XXX why do this? will nsIHTMLContent's
|
||||
// GetBaseURL() may return something different
|
||||
// than the URL of the document it lives in?
|
||||
htmlContent->GetBaseURL(*getter_AddRefs(baseURI));
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
aContent->GetDocument(*getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetBaseURL(*getter_AddRefs(baseURI));
|
||||
}
|
||||
}
|
||||
|
||||
// convert here, rather than twice in NS_MakeAbsoluteURI and
|
||||
// back again
|
||||
char * href = val.ToNewCString();
|
||||
char * absHREF = nsnull;
|
||||
(void) NS_MakeAbsoluteURI(&absHREF, href, baseURI);
|
||||
nsCRT::free(href);
|
||||
|
||||
nsILinkHandler *linkHandler = nsnull;
|
||||
aPresContext->GetLinkHandler(&linkHandler);
|
||||
if (linkHandler) {
|
||||
linkHandler->GetLinkState(absHREF, *aState);
|
||||
NS_RELEASE(linkHandler);
|
||||
}
|
||||
else {
|
||||
// no link handler? then all links are unvisited
|
||||
*aState = eLinkState_Unvisited;
|
||||
}
|
||||
nsCRT::free(absHREF);
|
||||
|
||||
rv = PR_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
#if DUMP_FONT_SIZES
|
||||
#include "nsIDeviceContext.h"
|
||||
PRInt32 RoundSize(nscoord aVal, nsIPresContext* aPresContext, bool aWinRounding)
|
||||
{
|
||||
|
||||
PRInt32 lfHeight;
|
||||
nsIDeviceContext* dc;
|
||||
aPresContext->GetDeviceContext(&dc);
|
||||
|
||||
float app2dev, app2twip, scale;
|
||||
dc->GetAppUnitsToDevUnits(app2dev);
|
||||
|
||||
if (aWinRounding)
|
||||
{
|
||||
dc->GetDevUnitsToTwips(app2twip);
|
||||
dc->GetCanonicalPixelScale(scale);
|
||||
app2twip *= app2dev * scale;
|
||||
|
||||
// This interesting bit of code rounds the font size off to the floor point
|
||||
// value. This is necessary for proper font scaling under windows.
|
||||
PRInt32 sizePoints = NSTwipsToFloorIntPoints(nscoord(aVal*app2twip));
|
||||
float rounded = ((float)NSIntPointsToTwips(sizePoints)) / app2twip;
|
||||
|
||||
// round font size off to floor point size to be windows compatible
|
||||
// this is proper (windows) rounding
|
||||
// lfHeight = NSToIntRound(rounded * app2dev);
|
||||
|
||||
// this floor rounding is to make ours compatible with Nav 4.0
|
||||
lfHeight = long(rounded * app2dev);
|
||||
return lfHeight;
|
||||
}
|
||||
else
|
||||
return NSToIntRound(aVal*app2dev);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
#if DUMP_FONT_SIZES
|
||||
void DumpFontSizes(nsIPresContext* aPresContext)
|
||||
{
|
||||
static gOnce = true;
|
||||
if (gOnce)
|
||||
{
|
||||
gOnce = false;
|
||||
|
||||
PRInt32 baseSize;
|
||||
PRInt32 htmlSize;
|
||||
PRInt32 cssSize;
|
||||
nscoord val;
|
||||
nscoord oldVal;
|
||||
|
||||
nsIDeviceContext* dc;
|
||||
aPresContext->GetDeviceContext(&dc);
|
||||
float dev2app;
|
||||
dc->GetDevUnitsToAppUnits(dev2app);
|
||||
|
||||
bool doWinRounding = true;
|
||||
for (short i=0; i<2; i ++)
|
||||
{
|
||||
doWinRounding ^= true;
|
||||
printf("\n\n\n");
|
||||
printf("---------------------------------------------------------------\n");
|
||||
printf(" CSS \n");
|
||||
printf(" Rounding %s\n", (doWinRounding ? "ON" : "OFF"));
|
||||
printf("---------------------------------------------------------------\n");
|
||||
printf("\n");
|
||||
printf("NEW SIZES:\n");
|
||||
printf("----------\n");
|
||||
printf(" xx-small x-small small medium large x-large xx-large\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (cssSize = 0; cssSize <= 6; cssSize++) {
|
||||
val = NewCalcFontPointSize(cssSize, baseSize*dev2app, 1.0f, aPresContext, eFontSize_CSS);
|
||||
printf("%2d ", RoundSize(val, aPresContext, false));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("OLD SIZES:\n");
|
||||
printf("----------\n");
|
||||
printf(" xx-small x-small small medium large x-large xx-large\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (cssSize = 0; cssSize <= 6; cssSize++) {
|
||||
val = OldCalcFontPointSize(cssSize, baseSize*dev2app, 1.0f);
|
||||
printf("%2d ", RoundSize(val, aPresContext, doWinRounding));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("DIFFS:\n");
|
||||
printf("------\n");
|
||||
printf(" xx-small x-small small medium large x-large xx-large\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (cssSize = 0; cssSize <= 6; cssSize++) {
|
||||
oldVal = OldCalcFontPointSize(cssSize, baseSize*dev2app, 1.0f);
|
||||
val = NewCalcFontPointSize(cssSize, baseSize*dev2app, 1.0f, aPresContext, eFontSize_CSS);
|
||||
if (RoundSize(oldVal, aPresContext, doWinRounding) <= 8)
|
||||
printf(" .");
|
||||
else
|
||||
printf("%2d", (RoundSize(val, aPresContext, false)-RoundSize(oldVal, aPresContext, doWinRounding)));
|
||||
printf(" ");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
printf("\n\n\n");
|
||||
printf("---------------------------------------------------------------\n");
|
||||
printf(" HTML \n");
|
||||
printf(" Rounding %s\n", (doWinRounding ? "ON" : "OFF"));
|
||||
printf("---------------------------------------------------------------\n");
|
||||
printf("\n");
|
||||
printf("NEW SIZES:\n");
|
||||
printf("----------\n");
|
||||
printf(" #1 #2 #3 #4 #5 #6 #7\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (htmlSize = 1; htmlSize <= 7; htmlSize++) {
|
||||
val = NewCalcFontPointSize(htmlSize, baseSize*dev2app, 1.0f, aPresContext, eFontSize_HTML);
|
||||
printf("%2d ", RoundSize(val, aPresContext, false));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("OLD SIZES:\n");
|
||||
printf("----------\n");
|
||||
printf(" #1 #2 #3 #4 #5 #6 #7\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (htmlSize = 1; htmlSize <= 7; htmlSize++) {
|
||||
val = OldCalcFontPointSize(htmlSize, baseSize*dev2app, 1.0f);
|
||||
printf("%2d ", RoundSize(val, aPresContext, doWinRounding));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("DIFFS:\n");
|
||||
printf("------\n");
|
||||
printf(" #1 #2 #3 #4 #5 #6 #7\n");
|
||||
for (baseSize = 9; baseSize <= 20; baseSize++) {
|
||||
printf("%2d: ", baseSize);
|
||||
for (htmlSize = 1; htmlSize <= 7; htmlSize++) {
|
||||
oldVal = OldCalcFontPointSize(htmlSize, baseSize*dev2app, 1.0f);
|
||||
val = NewCalcFontPointSize(htmlSize, baseSize*dev2app, 1.0f, aPresContext, eFontSize_HTML);
|
||||
if (RoundSize(oldVal, aPresContext, doWinRounding) <= 8)
|
||||
printf(" .");
|
||||
else
|
||||
printf("%2d", (RoundSize(val, aPresContext, false)-RoundSize(oldVal, aPresContext, doWinRounding)));
|
||||
printf(" ");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n\n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -53,7 +53,7 @@ LIBS = \
|
||||
$(DIST)/lib/libgkconxmlcon_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconxmldoc_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkxulbase_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkxulcon_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libgkconshared_s.$(LIB_SUFFIX) \
|
||||
$(MOZ_JS_LIBS) \
|
||||
$(EXTRA_DSO_LIBS) \
|
||||
$(TK_LIBS) \
|
||||
|
||||
@@ -54,7 +54,7 @@ LLIBS= \
|
||||
$(DIST)\lib\layoutbase_s.lib \
|
||||
$(DIST)\lib\gkgfxwin.lib \
|
||||
$(DIST)\lib\layoutxulbase_s.lib \
|
||||
$(DIST)\lib\layoutxulcontent_s.lib \
|
||||
$(DIST)\lib\contentshared_s.lib \
|
||||
!ifdef MOZ_MATHML
|
||||
$(DIST)\lib\layoutmathmlbase_s.lib \
|
||||
$(DIST)\lib\layoutmathmlcontent_s.lib \
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user