fixed bugs dealing with string color values

This commit is contained in:
peterl%netscape.com 1998-09-17 00:18:57 +00:00
Родитель f66523e7c7
Коммит f71079e1bd
2 изменённых файлов: 52 добавлений и 2 удалений

Просмотреть файл

@ -326,6 +326,18 @@ nsHTMLBodyElement::AttributeToString(nsIAtom* aAttribute,
return mInner.AttributeToString(aAttribute, aValue, aResult);
}
static nscolor ColorNameToRGB(const nsHTMLValue& aValue)
{
nsAutoString buffer;
aValue.GetStringValue(buffer);
char cbuf[40];
buffer.ToCString(cbuf, sizeof(cbuf));
nscolor color;
NS_ColorNameToRGB(cbuf, &color);
return color;
}
static void
MapAttributesInto(nsIHTMLAttributes* aAttributes,
nsIStyleContext* aContext,
@ -340,7 +352,11 @@ MapAttributesInto(nsIHTMLAttributes* aAttributes,
nsStyleColor* color = (nsStyleColor*)
aContext->GetMutableStyleData(eStyleStruct_Color);
color->mColor = value.GetColorValue();
aPresContext->SetDefaultColor(color->mColor);
}
else if (eHTMLUnit_String == value.GetUnit()) {
nsStyleColor* color = (nsStyleColor*)
aContext->GetMutableStyleData(eStyleStruct_Color);
color->mColor = ColorNameToRGB(value);
}
nsIPresShell* presShell = aPresContext->GetShell();
@ -356,16 +372,25 @@ MapAttributesInto(nsIHTMLAttributes* aAttributes,
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetLinkColor(ColorNameToRGB(value));
}
aAttributes->GetAttribute(nsHTMLAtoms::alink, value);
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetActiveLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetActiveLinkColor(ColorNameToRGB(value));
}
aAttributes->GetAttribute(nsHTMLAtoms::vlink, value);
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetVisitedLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetVisitedLinkColor(ColorNameToRGB(value));
}
NS_RELEASE(styleSheet);
}
NS_RELEASE(htmlDoc);

Просмотреть файл

@ -326,6 +326,18 @@ nsHTMLBodyElement::AttributeToString(nsIAtom* aAttribute,
return mInner.AttributeToString(aAttribute, aValue, aResult);
}
static nscolor ColorNameToRGB(const nsHTMLValue& aValue)
{
nsAutoString buffer;
aValue.GetStringValue(buffer);
char cbuf[40];
buffer.ToCString(cbuf, sizeof(cbuf));
nscolor color;
NS_ColorNameToRGB(cbuf, &color);
return color;
}
static void
MapAttributesInto(nsIHTMLAttributes* aAttributes,
nsIStyleContext* aContext,
@ -340,7 +352,11 @@ MapAttributesInto(nsIHTMLAttributes* aAttributes,
nsStyleColor* color = (nsStyleColor*)
aContext->GetMutableStyleData(eStyleStruct_Color);
color->mColor = value.GetColorValue();
aPresContext->SetDefaultColor(color->mColor);
}
else if (eHTMLUnit_String == value.GetUnit()) {
nsStyleColor* color = (nsStyleColor*)
aContext->GetMutableStyleData(eStyleStruct_Color);
color->mColor = ColorNameToRGB(value);
}
nsIPresShell* presShell = aPresContext->GetShell();
@ -356,16 +372,25 @@ MapAttributesInto(nsIHTMLAttributes* aAttributes,
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetLinkColor(ColorNameToRGB(value));
}
aAttributes->GetAttribute(nsHTMLAtoms::alink, value);
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetActiveLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetActiveLinkColor(ColorNameToRGB(value));
}
aAttributes->GetAttribute(nsHTMLAtoms::vlink, value);
if (eHTMLUnit_Color == value.GetUnit()) {
styleSheet->SetVisitedLinkColor(value.GetColorValue());
}
else if (eHTMLUnit_String == value.GetUnit()) {
styleSheet->SetVisitedLinkColor(ColorNameToRGB(value));
}
NS_RELEASE(styleSheet);
}
NS_RELEASE(htmlDoc);