void TrackerSettings::SetWarningSpaceColor(rgb_color color) { gTrackerState.fWarningSpaceColor->ValueChanged(ColorToValue(color)); }
void VSpanTextParser::GenerateSpanText( const VTreeTextStyle& inStyles, const VString& inPlainText, VString& outTaggedText, VTextStyle* inDefaultStyle) { sLONG begin, end; bool vhasForecolore, vistransparent; VString fontName, defaultfontName; sLONG vbold,vitalic,vunderline, vstrikeout, vdefaultbold,vdefaultitalic,vdefaultunderline,vdefaultstrikeout; Real fontSize, defaultfontSize; RGBAColor vforecolor, vdefaultforecolor, vbackcolor, vdefaultbackcolor; justificationStyle justification, defaultjustification; VTextStyle* uniformStyle = inStyles.GetData(); justification = defaultjustification = JST_Left; uniformStyle->GetRange(begin, end); fontName = uniformStyle->GetFontName(); fontSize = uniformStyle->GetFontSize(); vbold = uniformStyle->GetBold(); vitalic = uniformStyle->GetItalic(); vunderline = uniformStyle->GetUnderline(); vstrikeout = uniformStyle->GetStrikeout(); vhasForecolore = uniformStyle->GetHasForeColor(); vistransparent = uniformStyle->GetTransparent(); vforecolor = uniformStyle->GetColor(); vbackcolor = uniformStyle->GetBackGroundColor(); justification = uniformStyle->GetJustification(); VTreeTextStyle* parenttree = inStyles.GetParent(); bool hasDefaultForeColor = false; bool hasDefaultBackColor = false; if(inDefaultStyle) { defaultfontName = inDefaultStyle->GetFontName(); defaultfontSize = inDefaultStyle->GetFontSize(); defaultjustification = inDefaultStyle->GetJustification(); vdefaultbold = inDefaultStyle->GetBold(); vdefaultitalic = inDefaultStyle->GetItalic(); vdefaultunderline = inDefaultStyle->GetUnderline(); vdefaultstrikeout = inDefaultStyle->GetStrikeout(); hasDefaultForeColor = inDefaultStyle->GetHasForeColor(); hasDefaultBackColor = !inDefaultStyle->GetTransparent(); vdefaultforecolor = inDefaultStyle->GetColor(); vdefaultbackcolor = inDefaultStyle->GetBackGroundColor(); } else { defaultfontName = ""; defaultfontSize = -1; vdefaultbold = 0; vdefaultitalic = 0; vdefaultunderline = 0; vdefaultstrikeout = 0; defaultjustification = JST_Notset; } //as we inherit styles from parent, -1 or default value should be assumed equal (otherwise comparison would trigger a useless tag) if (vdefaultbold < 0) vdefaultbold = 0; if (vdefaultitalic < 0) vdefaultitalic = 0; if (vdefaultunderline < 0) vdefaultunderline = 0; if (vdefaultstrikeout < 0) vdefaultstrikeout = 0; if (defaultjustification < 0) defaultjustification = JST_Default; bool addfontag, addfonsizetag, addboldtag, additalictag, addunderlinetag, addstrikeouttag, addforecolortag, addbackcolortag, addjustificationtag; addfontag = addfonsizetag = addboldtag = additalictag = addunderlinetag = addstrikeouttag = addforecolortag = addbackcolortag = addjustificationtag = false; //we pass inherited default style to children to avoid to redefine style already defined by parent node: //so current inDefaultStyle always inherits parent styles VTextStyle *defaultStyleInherit = inStyles.GetChildCount() > 0 ? new VTextStyle( inDefaultStyle) : NULL; if( fontName.GetLength() > 0 && fontName != defaultfontName) { addfontag = true; if (defaultStyleInherit) defaultStyleInherit->SetFontName( fontName); } if( fontSize != -1 && fontSize != defaultfontSize) { addfonsizetag = true; if (defaultStyleInherit) defaultStyleInherit->SetFontSize( fontSize); } if( justification != JST_Notset && justification != defaultjustification) { addjustificationtag = true; if (defaultStyleInherit) defaultStyleInherit->SetJustification( justification); } if( vbold != UNDEFINED_STYLE && vbold != vdefaultbold) { addboldtag = true; if (defaultStyleInherit) defaultStyleInherit->SetBold( vbold); } if( vitalic != UNDEFINED_STYLE && vitalic != vdefaultitalic) { additalictag = true; if (defaultStyleInherit) defaultStyleInherit->SetItalic( vitalic); } if( vunderline != UNDEFINED_STYLE && vunderline != vdefaultunderline) { addunderlinetag = true; if (defaultStyleInherit) defaultStyleInherit->SetUnderline( vunderline); } if( vstrikeout != UNDEFINED_STYLE && vstrikeout != vdefaultstrikeout) { addstrikeouttag = true; if (defaultStyleInherit) defaultStyleInherit->SetStrikeout( vstrikeout); } if( vhasForecolore && ((!hasDefaultForeColor) || vforecolor != vdefaultforecolor)) { addforecolortag = true; if (defaultStyleInherit) { defaultStyleInherit->SetHasForeColor( vhasForecolore); defaultStyleInherit->SetColor( vforecolor); } } if( !vistransparent && ((!hasDefaultBackColor) || vbackcolor != vdefaultbackcolor)) { addbackcolortag = true; if (defaultStyleInherit) { defaultStyleInherit->SetTransparent( false); defaultStyleInherit->SetBackGroundColor( vbackcolor); } } bool addtag = addfontag || addfonsizetag || addboldtag || additalictag || addunderlinetag || addstrikeouttag || addforecolortag || addbackcolortag || addjustificationtag; bool isInitialEmpty = outTaggedText.IsEmpty(); if(addtag) { bool addcoma = false; outTaggedText += "<SPAN STYLE=\""; if(addfontag) { outTaggedText += MS_FONT_NAME; outTaggedText += ":'"; outTaggedText += fontName + "'"; addcoma = true; } if(addfonsizetag) { VString strFontSize; //we need to convert from 72dpi font size to the desired dpi (screen dpi for v12 compatibility) #if VERSIONWIN strFontSize.FromReal(floor(fontSize*72.0f/VSpanTextParser::Get()->GetDPI()+0.5f)); #else strFontSize.FromReal(fontSize); #endif if(addcoma) outTaggedText+=";"; outTaggedText += MS_FONT_SIZE ; outTaggedText += ":"; outTaggedText += strFontSize; outTaggedText += "pt"; addcoma = true; } if(addjustificationtag) { VString value; JustificationToString(justification,value); if(addcoma) outTaggedText+=";"; outTaggedText += MS_JUSTIFICATION; outTaggedText += ":"; outTaggedText += value; addcoma = true; } if(addboldtag) { VString value; if(addcoma) outTaggedText+=";"; vbold ? value = "bold" : value = "normal"; outTaggedText += MS_BOLD ; outTaggedText += ":" + value; addcoma = true; } if(additalictag) { VString value; if(addcoma) outTaggedText+=";"; vitalic ? value = "italic" : value = "normal"; outTaggedText += MS_ITALIC ; outTaggedText += ":"+ value; addcoma = true; } if(addunderlinetag && addstrikeouttag) { VString value; if(addcoma) outTaggedText+=";"; if(!vunderline && !vstrikeout) value = "none"; if(vunderline && vstrikeout) value = "underline line-through"; else if(vunderline) value = "underline"; else if(vstrikeout) value = "line-through"; outTaggedText += MS_UNDERLINE ; outTaggedText += ":"+ value; addcoma = true; } else { if(addunderlinetag) { VString value; if(addcoma) outTaggedText+=";"; vunderline ? value = "underline" : value = "none"; outTaggedText += MS_UNDERLINE ; outTaggedText += ":"+ value; addcoma = true; } if(addstrikeouttag) { VString value; if(addcoma) outTaggedText+=";"; vstrikeout ? value = "line-through" : value = "none"; outTaggedText += MS_UNDERLINE ; outTaggedText += ":"+ value; addcoma = true; } } if(addforecolortag) { VString value; if(addcoma) outTaggedText+=";"; ColorToValue(vforecolor,value); outTaggedText += MS_COLOR; outTaggedText += ":"+ value; addcoma = true; } if(addbackcolortag) { VString value; if(addcoma) outTaggedText+=";"; ColorToValue(vbackcolor,value); outTaggedText += MS_BACKGROUND; outTaggedText += ":"+ value; addcoma = true; } outTaggedText +="\">"; } VString text; VString tmp; sLONG count = inStyles.GetChildCount(); //prevent assert in GetSubString if (end > inPlainText.GetLength()) end = inPlainText.GetLength(); if (begin > inPlainText.GetLength()) begin = inPlainText.GetLength(); if(count == 0) { if(end>begin) { inPlainText.GetSubString(begin+1, end-begin, text); ToXMLCompatibleText(text, tmp); outTaggedText += tmp; } } else { sLONG start = begin; for(sLONG i = 1; i <= count; i++) { VTreeTextStyle* child = inStyles.GetNthChild(i); sLONG b,e; child->GetData()->GetRange(b,e); //prevent assert in GetSubString if (e > inPlainText.GetLength()) e = inPlainText.GetLength(); if (b > inPlainText.GetLength()) b = inPlainText.GetLength(); //if(start < b-1) if(start < b) { inPlainText.GetSubString(start+1, b-start, text); ToXMLCompatibleText(text, tmp); outTaggedText += tmp; } GenerateSpanText(*child, inPlainText, outTaggedText, defaultStyleInherit); start = e; } if(start < end) { inPlainText.GetSubString(start+1, end-start, text); ToXMLCompatibleText(text, tmp); outTaggedText += tmp; } } if (addtag) outTaggedText +="</SPAN>"; //JQ 24/12/2012: ensure tagged text is bracketed with SPAN tag else if (isInitialEmpty) { if (!outTaggedText.BeginsWith(CVSTR("<SPAN"), true)) outTaggedText = CVSTR("<SPAN>")+outTaggedText+CVSTR("</SPAN>"); } if (defaultStyleInherit) delete defaultStyleInherit; }