Implement computed position and clip, make computed style not round
values, fix font-style to say "normal" instead of "", and some random cleanup. Bugs 116032, 116033, 94080, 98052 git-svn-id: svn://10.0.0.236/trunk@111897 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
caa1fd0f57
commit
b7de1b681f
@ -47,6 +47,7 @@
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIStyleContext.h"
|
||||
#include "nsROCSSPrimitiveValue.h"
|
||||
#include "nsDOMCSSRect.h"
|
||||
|
||||
#include "nsCSSProps.h"
|
||||
#include "nsCSSKeywords.h"
|
||||
@ -213,6 +214,8 @@ private:
|
||||
nsresult GetBehavior(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetCssFloat(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetDisplay(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetPosition(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetClip(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
|
||||
nsROCSSPrimitiveValue* GetROCSSPrimitiveValue();
|
||||
|
||||
@ -233,6 +236,7 @@ static const nsCSSProperty queryableProperties[] = {
|
||||
eCSSProperty_top,
|
||||
eCSSProperty_right,
|
||||
eCSSProperty_bottom,
|
||||
eCSSProperty_clip,
|
||||
|
||||
eCSSProperty_color,
|
||||
eCSSProperty_font_family,
|
||||
@ -245,39 +249,48 @@ static const nsCSSProperty queryableProperties[] = {
|
||||
eCSSProperty_background_image,
|
||||
|
||||
eCSSProperty_display,
|
||||
eCSSProperty_position,
|
||||
eCSSProperty_binding,
|
||||
eCSSProperty_float,
|
||||
|
||||
eCSSProperty_padding,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_padding,
|
||||
eCSSProperty_padding_top,
|
||||
eCSSProperty_padding_bottom,
|
||||
eCSSProperty_padding_left,
|
||||
eCSSProperty_padding_right,
|
||||
|
||||
eCSSProperty_border_style,
|
||||
eCSSProperty_border_width,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_border_style,
|
||||
// eCSSProperty_border_width,
|
||||
eCSSProperty_border_collapse,
|
||||
eCSSProperty_border_spacing,
|
||||
eCSSProperty_border_top_style,
|
||||
eCSSProperty_border_right_style,
|
||||
eCSSProperty_border_bottom_style,
|
||||
eCSSProperty_border_left_style,
|
||||
eCSSProperty_border_right_style,
|
||||
eCSSProperty_border_top_width,
|
||||
eCSSProperty_border_right_width,
|
||||
eCSSProperty_border_bottom_width,
|
||||
eCSSProperty_border_left_width,
|
||||
eCSSProperty_border_right_width,
|
||||
eCSSProperty_border_top_color,
|
||||
eCSSProperty_border_right_color,
|
||||
eCSSProperty_border_bottom_color,
|
||||
eCSSProperty_border_left_color,
|
||||
eCSSProperty_border_right_color,
|
||||
|
||||
eCSSProperty_margin,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_margin,
|
||||
eCSSProperty_margin_top,
|
||||
eCSSProperty_margin_bottom,
|
||||
eCSSProperty_margin_left,
|
||||
eCSSProperty_margin_right,
|
||||
|
||||
eCSSProperty_outline,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_outline,
|
||||
eCSSProperty_outline_width,
|
||||
eCSSProperty_outline_style,
|
||||
eCSSProperty_outline_color,
|
||||
@ -442,6 +455,8 @@ nsComputedDOMStyle::GetPropertyCSSValue(const nsAReadableString& aPropertyName,
|
||||
rv = GetBehavior(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_display :
|
||||
rv = GetDisplay(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_position :
|
||||
rv = GetPosition(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_float :
|
||||
rv = GetCssFloat(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_width :
|
||||
@ -557,6 +572,10 @@ nsComputedDOMStyle::GetPropertyCSSValue(const nsAReadableString& aPropertyName,
|
||||
// Z-Index property
|
||||
case eCSSProperty_z_index:
|
||||
rv = GetZIndex(frame, *getter_AddRefs(val)); break;
|
||||
|
||||
// Clip
|
||||
case eCSSProperty_clip:
|
||||
rv = GetClip(frame, *getter_AddRefs(val)); break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
@ -675,7 +694,7 @@ nsComputedDOMStyle::GetBehavior(nsIFrame *aFrame,
|
||||
val->SetString(display->mBinding);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -696,10 +715,10 @@ nsComputedDOMStyle::GetCssFloat(nsIFrame *aFrame,
|
||||
const nsAFlatCString& cssFloat =
|
||||
nsCSSProps::SearchKeywordTable(display->mFloats,
|
||||
nsCSSProps::kFloatKTable);
|
||||
val->SetString(cssFloat.get());
|
||||
val->SetString(cssFloat);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -878,7 +897,7 @@ nsComputedDOMStyle::GetColor(nsIFrame *aFrame,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -918,7 +937,7 @@ nsComputedDOMStyle::GetFontFamily(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -953,13 +972,17 @@ nsComputedDOMStyle::GetFontStyle(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Font, (const nsStyleStruct*&)font, aFrame);
|
||||
|
||||
if(font) {
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.style,
|
||||
nsCSSProps::kFontStyleKTable);
|
||||
val->SetString(style.get());
|
||||
if (font->mFont.style == NS_STYLE_FONT_STYLE_NORMAL) {
|
||||
val->SetString(NS_LITERAL_STRING("normal"));
|
||||
} else {
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.style,
|
||||
nsCSSProps::kFontStyleKTable);
|
||||
val->SetString(style);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -980,8 +1003,8 @@ nsComputedDOMStyle::GetFontWeight(nsIFrame *aFrame,
|
||||
const nsAFlatCString& str_weight=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.weight,
|
||||
nsCSSProps::kFontWeightKTable);
|
||||
if(str_weight.Length()>0) {
|
||||
val->SetString(str_weight.get());
|
||||
if(!str_weight.IsEmpty()) {
|
||||
val->SetString(str_weight);
|
||||
}
|
||||
else {
|
||||
nsAutoString num_weight;
|
||||
@ -990,7 +1013,7 @@ nsComputedDOMStyle::GetFontWeight(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1008,13 +1031,17 @@ nsComputedDOMStyle::GetFontVariant(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Font, (const nsStyleStruct*&)font, aFrame);
|
||||
|
||||
if(font) {
|
||||
const nsAFlatCString& variant=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.variant,
|
||||
nsCSSProps::kFontVariantKTable);
|
||||
val->SetString(variant.get());
|
||||
if (font->mFont.variant == NS_STYLE_FONT_VARIANT_NORMAL) {
|
||||
val->SetString(NS_LITERAL_STRING("normal"));
|
||||
} else {
|
||||
const nsAFlatCString& variant=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.variant,
|
||||
nsCSSProps::kFontVariantKTable);
|
||||
val->SetString(variant);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1036,7 +1063,7 @@ nsComputedDOMStyle::GetBackgroundColor(nsIFrame *aFrame,
|
||||
const nsAFlatCString& backgroundColor =
|
||||
nsCSSProps::SearchKeywordTable(NS_STYLE_BG_COLOR_TRANSPARENT,
|
||||
nsCSSProps::kBackgroundColorKTable);
|
||||
val->SetString(backgroundColor.get());
|
||||
val->SetString(backgroundColor);
|
||||
}
|
||||
else {
|
||||
nsAutoString hex;
|
||||
@ -1045,7 +1072,7 @@ nsComputedDOMStyle::GetBackgroundColor(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1063,10 +1090,14 @@ nsComputedDOMStyle::GetBackgroundImage(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Background, (const nsStyleStruct*&)color, aFrame);
|
||||
|
||||
if(color) {
|
||||
if (color->mBackgroundFlags & NS_STYLE_BG_IMAGE_NONE) {
|
||||
val->SetString(NS_LITERAL_STRING("none"));
|
||||
} else {
|
||||
val->SetString(color->mBackgroundImage);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1123,10 +1154,10 @@ nsComputedDOMStyle::GetBorderCollapse(nsIFrame *aFrame,
|
||||
const nsAFlatCString& ident=
|
||||
nsCSSProps::SearchKeywordTable(table->mBorderCollapse,
|
||||
nsCSSProps::kBorderCollapseKTable);
|
||||
val->SetString(ident.get());
|
||||
val->SetString(ident);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1340,7 +1371,7 @@ nsComputedDOMStyle::GetOutlineWidth(nsIFrame *aFrame,
|
||||
const nsAFlatCString& width =
|
||||
nsCSSProps::LookupPropertyValue(eCSSProperty_outline_width,
|
||||
outline->mOutlineWidth.GetIntValue());
|
||||
val->SetString(width.get());
|
||||
val->SetString(width);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -1374,11 +1405,11 @@ nsComputedDOMStyle::GetOutlineStyle(nsIFrame *aFrame,
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(outline->GetOutlineStyle(),
|
||||
nsCSSProps::kBorderStyleKTable);
|
||||
val->SetString(style.get());
|
||||
val->SetString(style);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1405,7 +1436,7 @@ nsComputedDOMStyle::GetOutlineColor(nsIFrame *aFrame,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1462,7 +1493,7 @@ nsComputedDOMStyle::GetListStyleImage(nsIFrame *aFrame,
|
||||
val->SetString(list->mListStyleImage);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1483,10 +1514,10 @@ nsComputedDOMStyle::GetTextAlign(nsIFrame *aFrame,
|
||||
const nsAFlatCString& align=
|
||||
nsCSSProps::SearchKeywordTable(text->mTextAlign,
|
||||
nsCSSProps::kTextAlignKTable);
|
||||
val->SetString(align.get());
|
||||
val->SetString(align);
|
||||
}
|
||||
else {
|
||||
val->SetString("start");
|
||||
val->SetString(NS_LITERAL_STRING("start"));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1507,7 +1538,7 @@ nsComputedDOMStyle::GetTextDecoration(nsIFrame *aFrame,
|
||||
if (NS_STYLE_TEXT_DECORATION_NONE == text->mTextDecoration) {
|
||||
const nsAFlatCString& decoration=
|
||||
nsCSSKeywords::GetStringValue(eCSSKeyword_none);
|
||||
val->SetString(decoration.get());
|
||||
val->SetString(decoration);
|
||||
}
|
||||
else {
|
||||
nsAutoString decorationString;
|
||||
@ -1548,7 +1579,7 @@ nsComputedDOMStyle::GetTextDecoration(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1569,10 +1600,10 @@ nsComputedDOMStyle::GetVisibility(nsIFrame *aFrame,
|
||||
const nsAFlatCString& value=
|
||||
nsCSSProps::SearchKeywordTable(visibility->mVisible,
|
||||
nsCSSProps::kVisibilityKTable);
|
||||
val->SetString(value.get());
|
||||
val->SetString(value);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1674,45 +1705,45 @@ nsComputedDOMStyle::GetDisplay(nsIFrame *aFrame,
|
||||
if (display) {
|
||||
switch (display->mDisplay) {
|
||||
case NS_STYLE_DISPLAY_NONE :
|
||||
val->SetString("none"); break;
|
||||
val->SetString(NS_LITERAL_STRING("none")); break;
|
||||
case NS_STYLE_DISPLAY_BLOCK :
|
||||
val->SetString("block"); break;
|
||||
val->SetString(NS_LITERAL_STRING("block")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE :
|
||||
val->SetString("inline"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE_BLOCK :
|
||||
val->SetString("inline_block"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline-block")); break;
|
||||
case NS_STYLE_DISPLAY_LIST_ITEM :
|
||||
val->SetString("list-item"); break;
|
||||
val->SetString(NS_LITERAL_STRING("list-item")); break;
|
||||
case NS_STYLE_DISPLAY_MARKER :
|
||||
val->SetString("marker"); break;
|
||||
val->SetString(NS_LITERAL_STRING("marker")); break;
|
||||
case NS_STYLE_DISPLAY_RUN_IN :
|
||||
val->SetString("run-in"); break;
|
||||
val->SetString(NS_LITERAL_STRING("run-in")); break;
|
||||
case NS_STYLE_DISPLAY_COMPACT :
|
||||
val->SetString("compact"); break;
|
||||
val->SetString(NS_LITERAL_STRING("compact")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE :
|
||||
val->SetString("table"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE_TABLE :
|
||||
val->SetString("inline-table"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline-table")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_ROW_GROUP :
|
||||
val->SetString("table-row-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-row-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_COLUMN :
|
||||
val->SetString("table-column"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-column")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP :
|
||||
val->SetString("table-column-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-column-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_HEADER_GROUP :
|
||||
val->SetString("table-header-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-header-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP :
|
||||
val->SetString("table-footer-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-footer-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_ROW :
|
||||
val->SetString("table-row"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-row")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_CELL :
|
||||
val->SetString("table-cell"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-cell")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_CAPTION :
|
||||
val->SetString("table-caption"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-caption")); break;
|
||||
case NS_STYLE_DISPLAY_MENU :
|
||||
val->SetString("menu"); break;
|
||||
val->SetString(NS_LITERAL_STRING("menu")); break;
|
||||
default :
|
||||
val->SetString(""); break;
|
||||
val->SetString(NS_LITERAL_STRING("")); break;
|
||||
|
||||
break;
|
||||
}
|
||||
@ -1722,6 +1753,122 @@ nsComputedDOMStyle::GetDisplay(nsIFrame *aFrame,
|
||||
(void **)&aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetPosition(nsIFrame *aFrame,
|
||||
nsIDOMCSSPrimitiveValue*& aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleDisplay* display = nsnull;
|
||||
|
||||
GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)display, aFrame);
|
||||
|
||||
if (display) {
|
||||
switch (display->mPosition) {
|
||||
case NS_STYLE_POSITION_NORMAL:
|
||||
val->SetString(NS_LITERAL_STRING("static"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_RELATIVE:
|
||||
val->SetString(NS_LITERAL_STRING("relative"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_ABSOLUTE:
|
||||
val->SetString(NS_LITERAL_STRING("absolute"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_FIXED:
|
||||
val->SetString(NS_LITERAL_STRING("fixed"));
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Double check the position!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, &aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetClip(nsIFrame *aFrame,
|
||||
nsIDOMCSSPrimitiveValue*& aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleDisplay* display = nsnull;
|
||||
|
||||
GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)display, aFrame);
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
nsROCSSPrimitiveValue *topVal = nsnull;
|
||||
nsROCSSPrimitiveValue *rightVal = nsnull;
|
||||
nsROCSSPrimitiveValue *bottomVal = nsnull;
|
||||
nsROCSSPrimitiveValue *leftVal = nsnull;
|
||||
if (display) {
|
||||
if (display->mClipFlags == NS_STYLE_CLIP_AUTO ||
|
||||
display->mClipFlags == (NS_STYLE_CLIP_TOP_AUTO |
|
||||
NS_STYLE_CLIP_RIGHT_AUTO |
|
||||
NS_STYLE_CLIP_BOTTOM_AUTO |
|
||||
NS_STYLE_CLIP_LEFT_AUTO)) {
|
||||
val->SetString(NS_LITERAL_STRING("auto"));
|
||||
}
|
||||
else if (display->mClipFlags == NS_STYLE_CLIP_INHERIT) {
|
||||
val->SetString(NS_LITERAL_STRING("inherit"));
|
||||
} else {
|
||||
// create the cssvalues for the sides, stick them in the rect object
|
||||
topVal = GetROCSSPrimitiveValue();
|
||||
rightVal = GetROCSSPrimitiveValue();
|
||||
bottomVal = GetROCSSPrimitiveValue();
|
||||
leftVal = GetROCSSPrimitiveValue();
|
||||
if (topVal && rightVal && bottomVal && leftVal) {
|
||||
nsDOMCSSRect * domRect = new nsDOMCSSRect(topVal, rightVal,
|
||||
bottomVal, leftVal);
|
||||
if (domRect) {
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_TOP_AUTO) {
|
||||
topVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
topVal->SetTwips(display->mClip.y);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_RIGHT_AUTO) {
|
||||
rightVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
rightVal->SetTwips(display->mClip.width + display->mClip.x);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_BOTTOM_AUTO) {
|
||||
bottomVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
bottomVal->SetTwips(display->mClip.height + display->mClip.y);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_LEFT_AUTO) {
|
||||
leftVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
leftVal->SetTwips(display->mClip.x);
|
||||
}
|
||||
|
||||
val->SetRect(domRect);
|
||||
} else {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
} else {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
delete topVal;
|
||||
delete rightVal;
|
||||
delete bottomVal;
|
||||
delete leftVal;
|
||||
delete val;
|
||||
return rv;
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, &aValue);
|
||||
}
|
||||
|
||||
#if 0
|
||||
NS_IMETHODIMP
|
||||
nsComputedDOMStyle::GetElevation(nsAWritableString& aElevation)
|
||||
@ -2721,7 +2868,7 @@ nsComputedDOMStyle::GetBorderWidthFor(PRUint8 aSide,
|
||||
const nsAFlatCString& width=
|
||||
nsCSSProps::SearchKeywordTable(coord.GetIntValue(),
|
||||
nsCSSProps::kBorderWidthKTable);
|
||||
val->SetString(width.get()); break;
|
||||
val->SetString(width); break;
|
||||
}
|
||||
default:
|
||||
NS_WARNING("double check the unit");
|
||||
@ -2761,7 +2908,7 @@ nsComputedDOMStyle::GetBorderColorFor(PRUint8 aSide,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -2829,10 +2976,10 @@ nsComputedDOMStyle::GetBorderStyleFor(PRUint8 aSide,
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(border->GetBorderStyle(aSide),
|
||||
nsCSSProps::kBorderStyleKTable);
|
||||
val->SetString(style.get());
|
||||
val->SetString(style);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
|
||||
@ -75,47 +75,42 @@ NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
{
|
||||
nsAutoString tmpStr;
|
||||
|
||||
aCssText.Truncate();
|
||||
nsresult result = NS_OK;
|
||||
|
||||
switch (mType) {
|
||||
case CSS_PX :
|
||||
{
|
||||
PRInt32 px = NSTwipsToIntPixels(mTwips, mT2P);
|
||||
tmpStr.AppendInt(px);
|
||||
float val = NSTwipsToFloatPixels(mTwips, mT2P);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("px"));
|
||||
|
||||
break;
|
||||
}
|
||||
case CSS_CM :
|
||||
{
|
||||
float val = NS_TWIPS_TO_CENTIMETERS(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("cm"));
|
||||
break;
|
||||
}
|
||||
case CSS_MM :
|
||||
{
|
||||
float val = NS_TWIPS_TO_MILLIMETERS(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("mm"));
|
||||
break;
|
||||
}
|
||||
case CSS_IN :
|
||||
{
|
||||
float val = NS_TWIPS_TO_INCHES(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("in"));
|
||||
break;
|
||||
}
|
||||
case CSS_PT :
|
||||
{
|
||||
float val = NSTwipsToFloatPoints(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("pt"));
|
||||
break;
|
||||
}
|
||||
@ -126,10 +121,50 @@ nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
}
|
||||
case CSS_PERCENTAGE :
|
||||
{
|
||||
tmpStr.AppendInt(int(mFloat * 100));
|
||||
tmpStr.AppendFloat(mFloat * 100);
|
||||
tmpStr.Append(PRUnichar('%'));
|
||||
break;
|
||||
}
|
||||
case CSS_RECT :
|
||||
{
|
||||
NS_NAMED_LITERAL_STRING(comma, ", ");
|
||||
nsCOMPtr<nsIDOMCSSPrimitiveValue> sideCSSValue;
|
||||
nsAutoString sideValue;
|
||||
tmpStr = NS_LITERAL_STRING("rect(");
|
||||
// get the top
|
||||
result = mRect->GetTop(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the right
|
||||
result = mRect->GetRight(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the bottom
|
||||
result = mRect->GetBottom(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the left
|
||||
result = mRect->GetLeft(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + NS_LITERAL_STRING(")"));
|
||||
break;
|
||||
}
|
||||
case CSS_PC :
|
||||
case CSS_UNKNOWN :
|
||||
case CSS_NUMBER :
|
||||
@ -147,12 +182,13 @@ nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
case CSS_IDENT :
|
||||
case CSS_ATTR :
|
||||
case CSS_COUNTER :
|
||||
case CSS_RECT :
|
||||
case CSS_RGBCOLOR :
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
|
||||
aCssText.Assign(tmpStr);
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
aCssText.Assign(tmpStr);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@ -219,10 +255,12 @@ nsROCSSPrimitiveValue::GetFloatValue(PRUint16 aUnitType, float* aReturn)
|
||||
case CSS_PT :
|
||||
*aReturn = NSTwipsToFloatPoints(mTwips);
|
||||
break;
|
||||
case CSS_PERCENTAGE :
|
||||
*aReturn = mFloat * 100;
|
||||
break;
|
||||
case CSS_PC :
|
||||
case CSS_UNKNOWN :
|
||||
case CSS_NUMBER :
|
||||
case CSS_PERCENTAGE :
|
||||
case CSS_EMS :
|
||||
case CSS_EXS :
|
||||
case CSS_DEG :
|
||||
@ -258,6 +296,10 @@ nsROCSSPrimitiveValue::SetStringValue(PRUint16 aStringType,
|
||||
NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetStringValue(nsAWritableString& aReturn)
|
||||
{
|
||||
if (mType != CSS_STRING) {
|
||||
aReturn.Truncate();
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
aReturn.Assign(mString);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -273,7 +315,11 @@ nsROCSSPrimitiveValue::GetCounterValue(nsIDOMCounter** aReturn)
|
||||
NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetRectValue(nsIDOMRect** aReturn)
|
||||
{
|
||||
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
if (mType != CSS_RECT || !mRect) {
|
||||
*aReturn = nsnull;
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
return CallQueryInterface(mRect, aReturn);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -43,10 +43,11 @@
|
||||
#include "nsString.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsUnitConversion.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDOMError.h"
|
||||
|
||||
#include "nsDOMCSSRect.h"
|
||||
|
||||
class nsROCSSPrimitiveValue : public nsIDOMCSSPrimitiveValue
|
||||
{
|
||||
@ -74,9 +75,9 @@ public:
|
||||
mTwips = aValue;
|
||||
}
|
||||
|
||||
void SetString(const char *aString)
|
||||
void SetString(const nsACString& aString)
|
||||
{
|
||||
mString.AssignWithConversion(aString);
|
||||
CopyASCIItoUCS2(aString, mString);
|
||||
mType = CSS_STRING;
|
||||
}
|
||||
|
||||
@ -86,10 +87,17 @@ public:
|
||||
mType = CSS_STRING;
|
||||
}
|
||||
|
||||
void SetRect(nsIDOMRect* aRect)
|
||||
{
|
||||
mRect = aRect;
|
||||
mType = CSS_RECT;
|
||||
}
|
||||
|
||||
private:
|
||||
PRUint16 mType;
|
||||
|
||||
nscoord mTwips;
|
||||
nsCOMPtr<nsIDOMRect> mRect;
|
||||
nsString mString;
|
||||
float mFloat;
|
||||
|
||||
|
||||
@ -250,6 +250,11 @@ enum nsDOMClassInfoID {
|
||||
// DOM Traversal classes
|
||||
eDOMClassInfo_TreeWalker_id,
|
||||
|
||||
// We are now trying to preserve binary compat in classinfo. No
|
||||
// more putting things in those categories up there. New entries
|
||||
// are to be added right before eDOMClassInfoIDCount
|
||||
eDOMClassInfo_CSSRect_id,
|
||||
|
||||
// This one better be the last one in this list
|
||||
eDOMClassInfoIDCount
|
||||
};
|
||||
|
||||
@ -139,6 +139,7 @@
|
||||
#include "nsIDOMCSSStyleDeclaration.h"
|
||||
#include "nsIDOMCSSRule.h"
|
||||
#include "nsIDOMCSSRuleList.h"
|
||||
#include "nsIDOMRect.h"
|
||||
|
||||
// XBL related includes.
|
||||
#include "nsIXBLService.h"
|
||||
@ -797,6 +798,12 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
||||
// DOM Traversal classes
|
||||
NS_DEFINE_CLASSINFO_DATA(TreeWalker, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
// We are now trying to preserve binary compat in classinfo. No
|
||||
// more putting things in those categories up there. New entries
|
||||
// are to be added to the end of the list
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSRect, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
};
|
||||
|
||||
nsIXPConnect *nsDOMClassInfo::sXPConnect = nsnull;
|
||||
@ -1668,6 +1675,10 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSPrimitiveValue)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSRect, nsIDOMRect)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMRect)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(Range, nsIDOMRange)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMRange)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSRange)
|
||||
|
||||
@ -47,6 +47,7 @@
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIStyleContext.h"
|
||||
#include "nsROCSSPrimitiveValue.h"
|
||||
#include "nsDOMCSSRect.h"
|
||||
|
||||
#include "nsCSSProps.h"
|
||||
#include "nsCSSKeywords.h"
|
||||
@ -213,6 +214,8 @@ private:
|
||||
nsresult GetBehavior(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetCssFloat(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetDisplay(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetPosition(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
nsresult GetClip(nsIFrame *aFrame, nsIDOMCSSPrimitiveValue*& aValue);
|
||||
|
||||
nsROCSSPrimitiveValue* GetROCSSPrimitiveValue();
|
||||
|
||||
@ -233,6 +236,7 @@ static const nsCSSProperty queryableProperties[] = {
|
||||
eCSSProperty_top,
|
||||
eCSSProperty_right,
|
||||
eCSSProperty_bottom,
|
||||
eCSSProperty_clip,
|
||||
|
||||
eCSSProperty_color,
|
||||
eCSSProperty_font_family,
|
||||
@ -245,39 +249,48 @@ static const nsCSSProperty queryableProperties[] = {
|
||||
eCSSProperty_background_image,
|
||||
|
||||
eCSSProperty_display,
|
||||
eCSSProperty_position,
|
||||
eCSSProperty_binding,
|
||||
eCSSProperty_float,
|
||||
|
||||
eCSSProperty_padding,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_padding,
|
||||
eCSSProperty_padding_top,
|
||||
eCSSProperty_padding_bottom,
|
||||
eCSSProperty_padding_left,
|
||||
eCSSProperty_padding_right,
|
||||
|
||||
eCSSProperty_border_style,
|
||||
eCSSProperty_border_width,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_border_style,
|
||||
// eCSSProperty_border_width,
|
||||
eCSSProperty_border_collapse,
|
||||
eCSSProperty_border_spacing,
|
||||
eCSSProperty_border_top_style,
|
||||
eCSSProperty_border_right_style,
|
||||
eCSSProperty_border_bottom_style,
|
||||
eCSSProperty_border_left_style,
|
||||
eCSSProperty_border_right_style,
|
||||
eCSSProperty_border_top_width,
|
||||
eCSSProperty_border_right_width,
|
||||
eCSSProperty_border_bottom_width,
|
||||
eCSSProperty_border_left_width,
|
||||
eCSSProperty_border_right_width,
|
||||
eCSSProperty_border_top_color,
|
||||
eCSSProperty_border_right_color,
|
||||
eCSSProperty_border_bottom_color,
|
||||
eCSSProperty_border_left_color,
|
||||
eCSSProperty_border_right_color,
|
||||
|
||||
eCSSProperty_margin,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_margin,
|
||||
eCSSProperty_margin_top,
|
||||
eCSSProperty_margin_bottom,
|
||||
eCSSProperty_margin_left,
|
||||
eCSSProperty_margin_right,
|
||||
|
||||
eCSSProperty_outline,
|
||||
// shorthand properties are not really queryable. There is no
|
||||
// decent way to generate them based on computed style
|
||||
// eCSSProperty_outline,
|
||||
eCSSProperty_outline_width,
|
||||
eCSSProperty_outline_style,
|
||||
eCSSProperty_outline_color,
|
||||
@ -442,6 +455,8 @@ nsComputedDOMStyle::GetPropertyCSSValue(const nsAReadableString& aPropertyName,
|
||||
rv = GetBehavior(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_display :
|
||||
rv = GetDisplay(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_position :
|
||||
rv = GetPosition(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_float :
|
||||
rv = GetCssFloat(frame, *getter_AddRefs(val)); break;
|
||||
case eCSSProperty_width :
|
||||
@ -557,6 +572,10 @@ nsComputedDOMStyle::GetPropertyCSSValue(const nsAReadableString& aPropertyName,
|
||||
// Z-Index property
|
||||
case eCSSProperty_z_index:
|
||||
rv = GetZIndex(frame, *getter_AddRefs(val)); break;
|
||||
|
||||
// Clip
|
||||
case eCSSProperty_clip:
|
||||
rv = GetClip(frame, *getter_AddRefs(val)); break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
@ -675,7 +694,7 @@ nsComputedDOMStyle::GetBehavior(nsIFrame *aFrame,
|
||||
val->SetString(display->mBinding);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -696,10 +715,10 @@ nsComputedDOMStyle::GetCssFloat(nsIFrame *aFrame,
|
||||
const nsAFlatCString& cssFloat =
|
||||
nsCSSProps::SearchKeywordTable(display->mFloats,
|
||||
nsCSSProps::kFloatKTable);
|
||||
val->SetString(cssFloat.get());
|
||||
val->SetString(cssFloat);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -878,7 +897,7 @@ nsComputedDOMStyle::GetColor(nsIFrame *aFrame,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -918,7 +937,7 @@ nsComputedDOMStyle::GetFontFamily(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -953,13 +972,17 @@ nsComputedDOMStyle::GetFontStyle(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Font, (const nsStyleStruct*&)font, aFrame);
|
||||
|
||||
if(font) {
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.style,
|
||||
nsCSSProps::kFontStyleKTable);
|
||||
val->SetString(style.get());
|
||||
if (font->mFont.style == NS_STYLE_FONT_STYLE_NORMAL) {
|
||||
val->SetString(NS_LITERAL_STRING("normal"));
|
||||
} else {
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.style,
|
||||
nsCSSProps::kFontStyleKTable);
|
||||
val->SetString(style);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -980,8 +1003,8 @@ nsComputedDOMStyle::GetFontWeight(nsIFrame *aFrame,
|
||||
const nsAFlatCString& str_weight=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.weight,
|
||||
nsCSSProps::kFontWeightKTable);
|
||||
if(str_weight.Length()>0) {
|
||||
val->SetString(str_weight.get());
|
||||
if(!str_weight.IsEmpty()) {
|
||||
val->SetString(str_weight);
|
||||
}
|
||||
else {
|
||||
nsAutoString num_weight;
|
||||
@ -990,7 +1013,7 @@ nsComputedDOMStyle::GetFontWeight(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1008,13 +1031,17 @@ nsComputedDOMStyle::GetFontVariant(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Font, (const nsStyleStruct*&)font, aFrame);
|
||||
|
||||
if(font) {
|
||||
const nsAFlatCString& variant=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.variant,
|
||||
nsCSSProps::kFontVariantKTable);
|
||||
val->SetString(variant.get());
|
||||
if (font->mFont.variant == NS_STYLE_FONT_VARIANT_NORMAL) {
|
||||
val->SetString(NS_LITERAL_STRING("normal"));
|
||||
} else {
|
||||
const nsAFlatCString& variant=
|
||||
nsCSSProps::SearchKeywordTable(font->mFont.variant,
|
||||
nsCSSProps::kFontVariantKTable);
|
||||
val->SetString(variant);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1036,7 +1063,7 @@ nsComputedDOMStyle::GetBackgroundColor(nsIFrame *aFrame,
|
||||
const nsAFlatCString& backgroundColor =
|
||||
nsCSSProps::SearchKeywordTable(NS_STYLE_BG_COLOR_TRANSPARENT,
|
||||
nsCSSProps::kBackgroundColorKTable);
|
||||
val->SetString(backgroundColor.get());
|
||||
val->SetString(backgroundColor);
|
||||
}
|
||||
else {
|
||||
nsAutoString hex;
|
||||
@ -1045,7 +1072,7 @@ nsComputedDOMStyle::GetBackgroundColor(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1063,10 +1090,14 @@ nsComputedDOMStyle::GetBackgroundImage(nsIFrame *aFrame,
|
||||
GetStyleData(eStyleStruct_Background, (const nsStyleStruct*&)color, aFrame);
|
||||
|
||||
if(color) {
|
||||
if (color->mBackgroundFlags & NS_STYLE_BG_IMAGE_NONE) {
|
||||
val->SetString(NS_LITERAL_STRING("none"));
|
||||
} else {
|
||||
val->SetString(color->mBackgroundImage);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1123,10 +1154,10 @@ nsComputedDOMStyle::GetBorderCollapse(nsIFrame *aFrame,
|
||||
const nsAFlatCString& ident=
|
||||
nsCSSProps::SearchKeywordTable(table->mBorderCollapse,
|
||||
nsCSSProps::kBorderCollapseKTable);
|
||||
val->SetString(ident.get());
|
||||
val->SetString(ident);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1340,7 +1371,7 @@ nsComputedDOMStyle::GetOutlineWidth(nsIFrame *aFrame,
|
||||
const nsAFlatCString& width =
|
||||
nsCSSProps::LookupPropertyValue(eCSSProperty_outline_width,
|
||||
outline->mOutlineWidth.GetIntValue());
|
||||
val->SetString(width.get());
|
||||
val->SetString(width);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -1374,11 +1405,11 @@ nsComputedDOMStyle::GetOutlineStyle(nsIFrame *aFrame,
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(outline->GetOutlineStyle(),
|
||||
nsCSSProps::kBorderStyleKTable);
|
||||
val->SetString(style.get());
|
||||
val->SetString(style);
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1405,7 +1436,7 @@ nsComputedDOMStyle::GetOutlineColor(nsIFrame *aFrame,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1462,7 +1493,7 @@ nsComputedDOMStyle::GetListStyleImage(nsIFrame *aFrame,
|
||||
val->SetString(list->mListStyleImage);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1483,10 +1514,10 @@ nsComputedDOMStyle::GetTextAlign(nsIFrame *aFrame,
|
||||
const nsAFlatCString& align=
|
||||
nsCSSProps::SearchKeywordTable(text->mTextAlign,
|
||||
nsCSSProps::kTextAlignKTable);
|
||||
val->SetString(align.get());
|
||||
val->SetString(align);
|
||||
}
|
||||
else {
|
||||
val->SetString("start");
|
||||
val->SetString(NS_LITERAL_STRING("start"));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1507,7 +1538,7 @@ nsComputedDOMStyle::GetTextDecoration(nsIFrame *aFrame,
|
||||
if (NS_STYLE_TEXT_DECORATION_NONE == text->mTextDecoration) {
|
||||
const nsAFlatCString& decoration=
|
||||
nsCSSKeywords::GetStringValue(eCSSKeyword_none);
|
||||
val->SetString(decoration.get());
|
||||
val->SetString(decoration);
|
||||
}
|
||||
else {
|
||||
nsAutoString decorationString;
|
||||
@ -1548,7 +1579,7 @@ nsComputedDOMStyle::GetTextDecoration(nsIFrame *aFrame,
|
||||
}
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1569,10 +1600,10 @@ nsComputedDOMStyle::GetVisibility(nsIFrame *aFrame,
|
||||
const nsAFlatCString& value=
|
||||
nsCSSProps::SearchKeywordTable(visibility->mVisible,
|
||||
nsCSSProps::kVisibilityKTable);
|
||||
val->SetString(value.get());
|
||||
val->SetString(value);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -1674,45 +1705,45 @@ nsComputedDOMStyle::GetDisplay(nsIFrame *aFrame,
|
||||
if (display) {
|
||||
switch (display->mDisplay) {
|
||||
case NS_STYLE_DISPLAY_NONE :
|
||||
val->SetString("none"); break;
|
||||
val->SetString(NS_LITERAL_STRING("none")); break;
|
||||
case NS_STYLE_DISPLAY_BLOCK :
|
||||
val->SetString("block"); break;
|
||||
val->SetString(NS_LITERAL_STRING("block")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE :
|
||||
val->SetString("inline"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE_BLOCK :
|
||||
val->SetString("inline_block"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline-block")); break;
|
||||
case NS_STYLE_DISPLAY_LIST_ITEM :
|
||||
val->SetString("list-item"); break;
|
||||
val->SetString(NS_LITERAL_STRING("list-item")); break;
|
||||
case NS_STYLE_DISPLAY_MARKER :
|
||||
val->SetString("marker"); break;
|
||||
val->SetString(NS_LITERAL_STRING("marker")); break;
|
||||
case NS_STYLE_DISPLAY_RUN_IN :
|
||||
val->SetString("run-in"); break;
|
||||
val->SetString(NS_LITERAL_STRING("run-in")); break;
|
||||
case NS_STYLE_DISPLAY_COMPACT :
|
||||
val->SetString("compact"); break;
|
||||
val->SetString(NS_LITERAL_STRING("compact")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE :
|
||||
val->SetString("table"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table")); break;
|
||||
case NS_STYLE_DISPLAY_INLINE_TABLE :
|
||||
val->SetString("inline-table"); break;
|
||||
val->SetString(NS_LITERAL_STRING("inline-table")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_ROW_GROUP :
|
||||
val->SetString("table-row-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-row-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_COLUMN :
|
||||
val->SetString("table-column"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-column")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP :
|
||||
val->SetString("table-column-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-column-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_HEADER_GROUP :
|
||||
val->SetString("table-header-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-header-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP :
|
||||
val->SetString("table-footer-group"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-footer-group")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_ROW :
|
||||
val->SetString("table-row"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-row")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_CELL :
|
||||
val->SetString("table-cell"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-cell")); break;
|
||||
case NS_STYLE_DISPLAY_TABLE_CAPTION :
|
||||
val->SetString("table-caption"); break;
|
||||
val->SetString(NS_LITERAL_STRING("table-caption")); break;
|
||||
case NS_STYLE_DISPLAY_MENU :
|
||||
val->SetString("menu"); break;
|
||||
val->SetString(NS_LITERAL_STRING("menu")); break;
|
||||
default :
|
||||
val->SetString(""); break;
|
||||
val->SetString(NS_LITERAL_STRING("")); break;
|
||||
|
||||
break;
|
||||
}
|
||||
@ -1722,6 +1753,122 @@ nsComputedDOMStyle::GetDisplay(nsIFrame *aFrame,
|
||||
(void **)&aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetPosition(nsIFrame *aFrame,
|
||||
nsIDOMCSSPrimitiveValue*& aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleDisplay* display = nsnull;
|
||||
|
||||
GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)display, aFrame);
|
||||
|
||||
if (display) {
|
||||
switch (display->mPosition) {
|
||||
case NS_STYLE_POSITION_NORMAL:
|
||||
val->SetString(NS_LITERAL_STRING("static"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_RELATIVE:
|
||||
val->SetString(NS_LITERAL_STRING("relative"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_ABSOLUTE:
|
||||
val->SetString(NS_LITERAL_STRING("absolute"));
|
||||
break;
|
||||
case NS_STYLE_POSITION_FIXED:
|
||||
val->SetString(NS_LITERAL_STRING("fixed"));
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Double check the position!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, &aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetClip(nsIFrame *aFrame,
|
||||
nsIDOMCSSPrimitiveValue*& aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleDisplay* display = nsnull;
|
||||
|
||||
GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)display, aFrame);
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
nsROCSSPrimitiveValue *topVal = nsnull;
|
||||
nsROCSSPrimitiveValue *rightVal = nsnull;
|
||||
nsROCSSPrimitiveValue *bottomVal = nsnull;
|
||||
nsROCSSPrimitiveValue *leftVal = nsnull;
|
||||
if (display) {
|
||||
if (display->mClipFlags == NS_STYLE_CLIP_AUTO ||
|
||||
display->mClipFlags == (NS_STYLE_CLIP_TOP_AUTO |
|
||||
NS_STYLE_CLIP_RIGHT_AUTO |
|
||||
NS_STYLE_CLIP_BOTTOM_AUTO |
|
||||
NS_STYLE_CLIP_LEFT_AUTO)) {
|
||||
val->SetString(NS_LITERAL_STRING("auto"));
|
||||
}
|
||||
else if (display->mClipFlags == NS_STYLE_CLIP_INHERIT) {
|
||||
val->SetString(NS_LITERAL_STRING("inherit"));
|
||||
} else {
|
||||
// create the cssvalues for the sides, stick them in the rect object
|
||||
topVal = GetROCSSPrimitiveValue();
|
||||
rightVal = GetROCSSPrimitiveValue();
|
||||
bottomVal = GetROCSSPrimitiveValue();
|
||||
leftVal = GetROCSSPrimitiveValue();
|
||||
if (topVal && rightVal && bottomVal && leftVal) {
|
||||
nsDOMCSSRect * domRect = new nsDOMCSSRect(topVal, rightVal,
|
||||
bottomVal, leftVal);
|
||||
if (domRect) {
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_TOP_AUTO) {
|
||||
topVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
topVal->SetTwips(display->mClip.y);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_RIGHT_AUTO) {
|
||||
rightVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
rightVal->SetTwips(display->mClip.width + display->mClip.x);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_BOTTOM_AUTO) {
|
||||
bottomVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
bottomVal->SetTwips(display->mClip.height + display->mClip.y);
|
||||
}
|
||||
|
||||
if (display->mClipFlags & NS_STYLE_CLIP_LEFT_AUTO) {
|
||||
leftVal->SetString(NS_LITERAL_STRING("auto"));
|
||||
} else {
|
||||
leftVal->SetTwips(display->mClip.x);
|
||||
}
|
||||
|
||||
val->SetRect(domRect);
|
||||
} else {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
} else {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
delete topVal;
|
||||
delete rightVal;
|
||||
delete bottomVal;
|
||||
delete leftVal;
|
||||
delete val;
|
||||
return rv;
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, &aValue);
|
||||
}
|
||||
|
||||
#if 0
|
||||
NS_IMETHODIMP
|
||||
nsComputedDOMStyle::GetElevation(nsAWritableString& aElevation)
|
||||
@ -2721,7 +2868,7 @@ nsComputedDOMStyle::GetBorderWidthFor(PRUint8 aSide,
|
||||
const nsAFlatCString& width=
|
||||
nsCSSProps::SearchKeywordTable(coord.GetIntValue(),
|
||||
nsCSSProps::kBorderWidthKTable);
|
||||
val->SetString(width.get()); break;
|
||||
val->SetString(width); break;
|
||||
}
|
||||
default:
|
||||
NS_WARNING("double check the unit");
|
||||
@ -2761,7 +2908,7 @@ nsComputedDOMStyle::GetBorderColorFor(PRUint8 aSide,
|
||||
val->SetString(hex);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
@ -2829,10 +2976,10 @@ nsComputedDOMStyle::GetBorderStyleFor(PRUint8 aSide,
|
||||
const nsAFlatCString& style=
|
||||
nsCSSProps::SearchKeywordTable(border->GetBorderStyle(aSide),
|
||||
nsCSSProps::kBorderStyleKTable);
|
||||
val->SetString(style.get());
|
||||
val->SetString(style);
|
||||
}
|
||||
else {
|
||||
val->SetString("");
|
||||
val->SetString(NS_LITERAL_STRING(""));
|
||||
}
|
||||
|
||||
return val->QueryInterface(NS_GET_IID(nsIDOMCSSPrimitiveValue),
|
||||
|
||||
@ -75,47 +75,42 @@ NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
{
|
||||
nsAutoString tmpStr;
|
||||
|
||||
aCssText.Truncate();
|
||||
nsresult result = NS_OK;
|
||||
|
||||
switch (mType) {
|
||||
case CSS_PX :
|
||||
{
|
||||
PRInt32 px = NSTwipsToIntPixels(mTwips, mT2P);
|
||||
tmpStr.AppendInt(px);
|
||||
float val = NSTwipsToFloatPixels(mTwips, mT2P);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("px"));
|
||||
|
||||
break;
|
||||
}
|
||||
case CSS_CM :
|
||||
{
|
||||
float val = NS_TWIPS_TO_CENTIMETERS(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("cm"));
|
||||
break;
|
||||
}
|
||||
case CSS_MM :
|
||||
{
|
||||
float val = NS_TWIPS_TO_MILLIMETERS(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("mm"));
|
||||
break;
|
||||
}
|
||||
case CSS_IN :
|
||||
{
|
||||
float val = NS_TWIPS_TO_INCHES(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("in"));
|
||||
break;
|
||||
}
|
||||
case CSS_PT :
|
||||
{
|
||||
float val = NSTwipsToFloatPoints(mTwips);
|
||||
char buf[64];
|
||||
PR_snprintf(buf, 63, "%.2fcm", val);
|
||||
tmpStr.AppendFloat(val);
|
||||
tmpStr.Append(NS_LITERAL_STRING("pt"));
|
||||
break;
|
||||
}
|
||||
@ -126,10 +121,50 @@ nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
}
|
||||
case CSS_PERCENTAGE :
|
||||
{
|
||||
tmpStr.AppendInt(int(mFloat * 100));
|
||||
tmpStr.AppendFloat(mFloat * 100);
|
||||
tmpStr.Append(PRUnichar('%'));
|
||||
break;
|
||||
}
|
||||
case CSS_RECT :
|
||||
{
|
||||
NS_NAMED_LITERAL_STRING(comma, ", ");
|
||||
nsCOMPtr<nsIDOMCSSPrimitiveValue> sideCSSValue;
|
||||
nsAutoString sideValue;
|
||||
tmpStr = NS_LITERAL_STRING("rect(");
|
||||
// get the top
|
||||
result = mRect->GetTop(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the right
|
||||
result = mRect->GetRight(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the bottom
|
||||
result = mRect->GetBottom(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + comma);
|
||||
// get the left
|
||||
result = mRect->GetLeft(getter_AddRefs(sideCSSValue));
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
result = sideCSSValue->GetCssText(sideValue);
|
||||
if (NS_FAILED(result))
|
||||
break;
|
||||
tmpStr.Append(sideValue + NS_LITERAL_STRING(")"));
|
||||
break;
|
||||
}
|
||||
case CSS_PC :
|
||||
case CSS_UNKNOWN :
|
||||
case CSS_NUMBER :
|
||||
@ -147,12 +182,13 @@ nsROCSSPrimitiveValue::GetCssText(nsAWritableString& aCssText)
|
||||
case CSS_IDENT :
|
||||
case CSS_ATTR :
|
||||
case CSS_COUNTER :
|
||||
case CSS_RECT :
|
||||
case CSS_RGBCOLOR :
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
|
||||
aCssText.Assign(tmpStr);
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
aCssText.Assign(tmpStr);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@ -219,10 +255,12 @@ nsROCSSPrimitiveValue::GetFloatValue(PRUint16 aUnitType, float* aReturn)
|
||||
case CSS_PT :
|
||||
*aReturn = NSTwipsToFloatPoints(mTwips);
|
||||
break;
|
||||
case CSS_PERCENTAGE :
|
||||
*aReturn = mFloat * 100;
|
||||
break;
|
||||
case CSS_PC :
|
||||
case CSS_UNKNOWN :
|
||||
case CSS_NUMBER :
|
||||
case CSS_PERCENTAGE :
|
||||
case CSS_EMS :
|
||||
case CSS_EXS :
|
||||
case CSS_DEG :
|
||||
@ -258,6 +296,10 @@ nsROCSSPrimitiveValue::SetStringValue(PRUint16 aStringType,
|
||||
NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetStringValue(nsAWritableString& aReturn)
|
||||
{
|
||||
if (mType != CSS_STRING) {
|
||||
aReturn.Truncate();
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
aReturn.Assign(mString);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -273,7 +315,11 @@ nsROCSSPrimitiveValue::GetCounterValue(nsIDOMCounter** aReturn)
|
||||
NS_IMETHODIMP
|
||||
nsROCSSPrimitiveValue::GetRectValue(nsIDOMRect** aReturn)
|
||||
{
|
||||
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
if (mType != CSS_RECT || !mRect) {
|
||||
*aReturn = nsnull;
|
||||
return NS_ERROR_DOM_INVALID_ACCESS_ERR;
|
||||
}
|
||||
return CallQueryInterface(mRect, aReturn);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -43,10 +43,11 @@
|
||||
#include "nsString.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsUnitConversion.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDOMError.h"
|
||||
|
||||
#include "nsDOMCSSRect.h"
|
||||
|
||||
class nsROCSSPrimitiveValue : public nsIDOMCSSPrimitiveValue
|
||||
{
|
||||
@ -74,9 +75,9 @@ public:
|
||||
mTwips = aValue;
|
||||
}
|
||||
|
||||
void SetString(const char *aString)
|
||||
void SetString(const nsACString& aString)
|
||||
{
|
||||
mString.AssignWithConversion(aString);
|
||||
CopyASCIItoUCS2(aString, mString);
|
||||
mType = CSS_STRING;
|
||||
}
|
||||
|
||||
@ -86,10 +87,17 @@ public:
|
||||
mType = CSS_STRING;
|
||||
}
|
||||
|
||||
void SetRect(nsIDOMRect* aRect)
|
||||
{
|
||||
mRect = aRect;
|
||||
mType = CSS_RECT;
|
||||
}
|
||||
|
||||
private:
|
||||
PRUint16 mType;
|
||||
|
||||
nscoord mTwips;
|
||||
nsCOMPtr<nsIDOMRect> mRect;
|
||||
nsString mString;
|
||||
float mFloat;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user