const std::string WFont::cssText(bool combined) const { WStringStream result; if (combined) { std::string s; s = cssStyle(false); if (!s.empty()) result << s << ' '; s = cssVariant(false); if (!s.empty()) result << s << ' '; s = cssWeight(false); if (!s.empty()) result << s << ' '; result << cssSize(true) << ' '; s = cssFamily(true); if (!s.empty()) result << s << ' '; else result << s << " inherit"; } else { std::string s; s = cssSize(false); if (!s.empty()) result << "font-size: " << s << ";"; s = cssStyle(false); if (!s.empty()) result << "font-style: " << s << ";"; s = cssVariant(false); if (!s.empty()) result << "font-variant: " << s << ";"; s = cssWeight(false); if (!s.empty()) result << "font-weight: " << s << ";"; // Last because of workaround in WVmlImage that searches for a ',' s = cssFamily(false); if (!s.empty()) result << "font-family: " << s << ";"; } return result.str(); }
void WFont::updateDomElement(DomElement& element, bool fontall, bool all) { if (familyChanged_ || fontall || all) { std::string family = cssFamily(fontall); if (!family.empty()) element.setProperty(PropertyStyleFontFamily, family); familyChanged_ = false; } if (styleChanged_ || fontall || all) { std::string style = cssStyle(fontall); if (!style.empty()) element.setProperty(PropertyStyleFontStyle, style); styleChanged_ = false; } if (variantChanged_ || fontall || all) { std::string variant = cssVariant(fontall); if (!variant.empty()) element.setProperty(PropertyStyleFontVariant, variant); variantChanged_ = false; } if (weightChanged_ || fontall || all) { std::string weight = cssWeight(fontall); if (!weight.empty()) element.setProperty(PropertyStyleFontWeight, weight); weightChanged_ = false; } if (sizeChanged_ || fontall || all) { std::string size = cssSize(fontall); if (!size.empty()) element.setProperty(PropertyStyleFontSize, size); sizeChanged_ = false; } }
nscoord nsGrid::GetMaxRowHeight(nsBoxLayoutState& aState, PRInt32 aIndex, bool aIsHorizontal) { RebuildIfNeeded(); nsGridRow* row = GetRowAt(aIndex, aIsHorizontal); if (row->IsCollapsed(aState)) return 0; if (row->IsMaxSet()) return row->mMax; nsIBox* box = row->mBox; // set in CSS? if (box) { bool widthSet, heightSet; nsSize cssSize(-1, -1); nsIBox::AddCSSMaxSize(box, cssSize, widthSet, heightSet); row->mMax = GET_HEIGHT(cssSize, aIsHorizontal); // yep do nothing. if (row->mMax != -1) return row->mMax; } // get the offsets so they are cached. nscoord top; nscoord bottom; GetRowOffsets(aState, aIndex, top, bottom, aIsHorizontal); // is the row bogus? If so then just ask it for its size // it should not be affected by cells in the grid. if (row->mIsBogus) { nsSize size(NS_INTRINSICSIZE,NS_INTRINSICSIZE); if (box) { size = box->GetPrefSize(aState); nsBox::AddMargin(box, size); nsGridLayout2::AddOffset(aState, box, size); } row->mMax = GET_HEIGHT(size, aIsHorizontal); return row->mMax; } nsSize size(NS_INTRINSICSIZE,NS_INTRINSICSIZE); nsGridCell* child; PRInt32 count = GetColumnCount(aIsHorizontal); for (PRInt32 i=0; i < count; i++) { if (aIsHorizontal) child = GetCellAt(i,aIndex); else child = GetCellAt(aIndex,i); // ignore collapsed children if (!child->IsCollapsed(aState)) { nsSize min = child->GetMinSize(aState); nsSize childSize = nsBox::BoundsCheckMinMax(min, child->GetMaxSize(aState)); nsSprocketLayout::AddLargestSize(size, childSize, aIsHorizontal); } } row->mMax = GET_HEIGHT(size, aIsHorizontal) + top + bottom; return row->mMax; }