Parse background style into own class

develop
Nimetu 4 years ago
parent 285cfb163f
commit 12c515c264

@ -21,6 +21,8 @@
#include "nel/misc/rgba.h" #include "nel/misc/rgba.h"
#include "nel/gui/css_selector.h" #include "nel/gui/css_selector.h"
#include "nel/gui/css_types.h" #include "nel/gui/css_types.h"
#include "nel/gui/css_length.h"
#include "nel/gui/css_background.h"
namespace NLGUI namespace NLGUI
{ {
@ -70,7 +72,6 @@ namespace NLGUI
BorderTopStyle = BorderRightStyle = BorderBottomStyle = BorderLeftStyle = CSS_LINE_STYLE_NONE; BorderTopStyle = BorderRightStyle = BorderBottomStyle = BorderLeftStyle = CSS_LINE_STYLE_NONE;
BorderTopColor = BorderRightColor = BorderBottomColor = BorderLeftColor = NLMISC::CRGBA::Transparent; BorderTopColor = BorderRightColor = BorderBottomColor = BorderLeftColor = NLMISC::CRGBA::Transparent;
// background // background
BackgroundColor=NLMISC::CRGBA::Black;
BackgroundColorOver=NLMISC::CRGBA::Black; BackgroundColorOver=NLMISC::CRGBA::Black;
MarginTop = MarginRight = MarginBottom = MarginLeft = 0; MarginTop = MarginRight = MarginBottom = MarginLeft = 0;
PaddingTop = PaddingRight = PaddingBottom = PaddingLeft = 0; PaddingTop = PaddingRight = PaddingBottom = PaddingLeft = 0;
@ -105,7 +106,7 @@ namespace NLGUI
uint32 BorderTopWidth, BorderRightWidth, BorderBottomWidth, BorderLeftWidth; uint32 BorderTopWidth, BorderRightWidth, BorderBottomWidth, BorderLeftWidth;
CSSLineStyle BorderTopStyle, BorderRightStyle, BorderBottomStyle, BorderLeftStyle; CSSLineStyle BorderTopStyle, BorderRightStyle, BorderBottomStyle, BorderLeftStyle;
NLMISC::CRGBA BorderTopColor, BorderRightColor, BorderBottomColor, BorderLeftColor; NLMISC::CRGBA BorderTopColor, BorderRightColor, BorderBottomColor, BorderLeftColor;
NLMISC::CRGBA BackgroundColor; CSSBackground Background;
NLMISC::CRGBA BackgroundColorOver; NLMISC::CRGBA BackgroundColorOver;
uint32 MarginTop, MarginRight, MarginBottom, MarginLeft; uint32 MarginTop, MarginRight, MarginBottom, MarginLeft;
uint32 PaddingTop, PaddingRight, PaddingBottom, PaddingLeft; uint32 PaddingTop, PaddingRight, PaddingBottom, PaddingLeft;
@ -229,7 +230,7 @@ namespace NLGUI
Current.BorderTopStyle = Current.BorderRightStyle = Current.BorderBottomStyle = Current.BorderLeftStyle = CSS_LINE_STYLE_NONE; Current.BorderTopStyle = Current.BorderRightStyle = Current.BorderBottomStyle = Current.BorderLeftStyle = CSS_LINE_STYLE_NONE;
Current.BorderTopColor = Current.BorderRightColor = Current.BorderBottomColor = Current.BorderLeftColor = Current.TextColor; Current.BorderTopColor = Current.BorderRightColor = Current.BorderBottomColor = Current.BorderLeftColor = Current.TextColor;
Current.BackgroundColor = NLMISC::CRGBA::Transparent; Current.Background = CSSBackground();
Current.BackgroundColorOver = NLMISC::CRGBA::Transparent; Current.BackgroundColorOver = NLMISC::CRGBA::Transparent;
Current.MarginTop = Current.MarginRight = Current.MarginBottom = Current.MarginLeft = 0; Current.MarginTop = Current.MarginRight = Current.MarginBottom = Current.MarginLeft = 0;

@ -957,13 +957,13 @@ namespace NLGUI
if (it->first == "background-color") if (it->first == "background-color")
{ {
if (it->second == "inherit") if (it->second == "inherit")
style.BackgroundColor = current.BackgroundColor; style.Background.color = current.Background.color;
else if (it->second == "transparent") else if (it->second == "transparent")
style.BackgroundColor = CRGBA(0, 0, 0, 0); style.Background.color = CRGBA(0, 0, 0, 0);
else if (it->second == "currentcolor") else if (it->second == "currentcolor")
style.BackgroundColorOver = style.TextColor; style.Background.color = style.TextColor;
else else
scanHTMLColor(it->second.c_str(), style.BackgroundColor); scanHTMLColor(it->second.c_str(), style.Background.color);
} }
else else
if (it->first == "-ryzom-background-color-over") if (it->first == "-ryzom-background-color-over")
@ -987,10 +987,13 @@ namespace NLGUI
image = image.substr(4, image.size()-5); image = image.substr(4, image.size()-5);
} }
style.StyleRules[it->first] = trimQuotes(image); style.StyleRules[it->first] = trimQuotes(image);
style.Background.setImage(style.StyleRules[it->first]);
} }
else else
if (it->first == "background-repeat") if (it->first == "background-repeat")
{ {
style.Background.setRepeat(it->second);
// TODO: remove after removing old code that depends on this
// normalize // normalize
std::string val = toLowerAscii(trim(it->second)); std::string val = toLowerAscii(trim(it->second));
std::vector<std::string> parts; std::vector<std::string> parts;
@ -1004,6 +1007,8 @@ namespace NLGUI
else else
if (it->first == "background-size") if (it->first == "background-size")
{ {
style.Background.setSize(it->second);
// TODO: remove after removing old code that depends on this
// normalize // normalize
std::string val = toLowerAscii(trim(it->second)); std::string val = toLowerAscii(trim(it->second));
std::vector<std::string> parts; std::vector<std::string> parts;
@ -1013,6 +1018,27 @@ namespace NLGUI
style.StyleRules[it->first] = val; style.StyleRules[it->first] = val;
} }
else
if (it->first == "background-position")
{
// TODO: background-position-x, background-position-y
style.Background.setPosition(it->second);
}
else
if (it->first == "background-origin")
{
style.Background.setOrigin(it->second);
}
else
if (it->first == "background-clip")
{
style.Background.setClip(it->second);
}
else
if (it->first == "background-attachment")
{
style.Background.setAttachment(it->second);
}
} }
// if outer element has underline set, then inner element cannot remove it // if outer element has underline set, then inner element cannot remove it
@ -1348,10 +1374,10 @@ namespace NLGUI
} }
else else
{ {
// fill in default if one is set // fill in default if one is not set
if (props[i] == "background-image") if (props[i] == "background-image")
{ {
style[props[i]] = "none"; style[props[i]] = "";
} }
else if (props[i] == "background-position") else if (props[i] == "background-position")
{ {

@ -538,14 +538,14 @@ namespace NLGUI
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
{ {
ctrlButton->setColor(style.BackgroundColor); ctrlButton->setColor(style.Background.color);
if (style.hasStyle("-ryzom-background-color-over")) if (style.hasStyle("-ryzom-background-color-over"))
{ {
ctrlButton->setColorOver(style.BackgroundColorOver); ctrlButton->setColorOver(style.BackgroundColorOver);
} }
else else
{ {
ctrlButton->setColorOver(style.BackgroundColor); ctrlButton->setColorOver(style.Background.color);
} }
ctrlButton->setTexture("", "blank.tga", "", false); ctrlButton->setTexture("", "blank.tga", "", false);
ctrlButton->setTextureOver("", "blank.tga", ""); ctrlButton->setTextureOver("", "blank.tga", "");
@ -2706,7 +2706,7 @@ namespace NLGUI
if (bg) if (bg)
{ {
bg->setTexture("blank.tga"); bg->setTexture("blank.tga");
bg->setColor(style.BackgroundColor); bg->setColor(style.Background.color);
} }
} }
} }
@ -4082,7 +4082,7 @@ namespace NLGUI
clearContext(); clearContext();
// Reset default background color // Reset default background color
setBackgroundColor (_BrowserStyle.Current.BackgroundColor); setBackgroundColor (_BrowserStyle.Current.Background.color);
setBackground ("blank.tga", true, false); setBackground ("blank.tga", true, false);
paragraphChange (); paragraphChange ();
@ -4940,7 +4940,7 @@ namespace NLGUI
style.pushStyle(); style.pushStyle();
style.applyStyle(elm.getPseudo(":-webkit-meter-bar")); style.applyStyle(elm.getPseudo(":-webkit-meter-bar"));
if(style.hasStyle("background-color")) if(style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
style.popStyle(); style.popStyle();
return color; return color;
@ -4957,14 +4957,14 @@ namespace NLGUI
{ {
style.applyStyle(elm.getPseudo(":-webkit-meter-optimum-value")); style.applyStyle(elm.getPseudo(":-webkit-meter-optimum-value"));
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
break; break;
} }
case VALUE_SUB_OPTIMAL: case VALUE_SUB_OPTIMAL:
{ {
style.applyStyle(elm.getPseudo(":-webkit-meter-suboptimum-value")); style.applyStyle(elm.getPseudo(":-webkit-meter-suboptimum-value"));
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
break; break;
} }
case VALUE_EVEN_LESS_GOOD: // fall through case VALUE_EVEN_LESS_GOOD: // fall through
@ -4972,7 +4972,7 @@ namespace NLGUI
{ {
style.applyStyle(elm.getPseudo(":-webkit-meter-even-less-good-value")); style.applyStyle(elm.getPseudo(":-webkit-meter-even-less-good-value"));
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
break; break;
} }
}//switch }//switch
@ -5009,7 +5009,7 @@ namespace NLGUI
style.pushStyle(); style.pushStyle();
style.applyStyle(elm.getPseudo(":-webkit-progress-bar")); style.applyStyle(elm.getPseudo(":-webkit-progress-bar"));
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
style.popStyle(); style.popStyle();
return color; return color;
@ -5023,7 +5023,7 @@ namespace NLGUI
style.pushStyle(); style.pushStyle();
style.applyStyle(elm.getPseudo(":-webkit-progress-value")); style.applyStyle(elm.getPseudo(":-webkit-progress-value"));
if (style.hasStyle("background-color")) if (style.hasStyle("background-color"))
color = style.Current.BackgroundColor; color = style.Current.Background.color;
style.popStyle(); style.popStyle();
return color; return color;
@ -5037,7 +5037,7 @@ namespace NLGUI
cellParams = _CellParams.back(); cellParams = _CellParams.back();
if (_Style.hasStyle("background-color")) if (_Style.hasStyle("background-color"))
cellParams.BgColor = _Style.Current.BackgroundColor; cellParams.BgColor = _Style.Current.Background.color;
else if (elm.hasNonEmptyAttribute("bgcolor")) else if (elm.hasNonEmptyAttribute("bgcolor"))
scanHTMLColor(elm.getAttribute("bgcolor").c_str(), cellParams.BgColor); scanHTMLColor(elm.getAttribute("bgcolor").c_str(), cellParams.BgColor);
@ -5120,7 +5120,7 @@ namespace NLGUI
if (_Style.hasStyle("background-color")) if (_Style.hasStyle("background-color"))
{ {
CRGBA bgColor = _Style.Current.BackgroundColor; CRGBA bgColor = _Style.Current.Background.color;
scanHTMLColor(elm.getAttribute("bgcolor").c_str(), bgColor); scanHTMLColor(elm.getAttribute("bgcolor").c_str(), bgColor);
if (root) if (root)
{ {

@ -46,7 +46,7 @@ void checkRuleset(CHtmlElement &elm, CCssStyle &style, TStyleVec testset, bool e
} }
else if (it.first == "background-color") else if (it.first == "background-color")
{ {
printf("[%s]: background-color: '%s'; expected '%s'\n", existsMessage.c_str(), style.Current.BackgroundColor.toString().c_str(), it.second.c_str()); printf("[%s]: background-color: '%s'; expected '%s'\n", existsMessage.c_str(), style.Current.Background.color.toString().c_str(), it.second.c_str());
printf(" (%s)\n", elm.toString().c_str()); printf(" (%s)\n", elm.toString().c_str());
failed2 = false; failed2 = false;
} }

Loading…
Cancel
Save