bool nsCSSCompressedDataBlock::HasDefaultBorderImageOutset() const { const nsCSSRect &outset = ValueFor(eCSSProperty_border_image_outset)->GetRectValue(); return outset.AllSidesEqualTo(nsCSSValue(0.0f, eCSSUnit_Number)); }
bool nsCSSCompressedDataBlock::HasDefaultBorderImageWidth() const { const nsCSSRect &width = ValueFor(eCSSProperty_border_image_width)->GetRectValue(); return width.AllSidesEqualTo(nsCSSValue(1.0f, eCSSUnit_Number)); }
bool nsCSSCompressedDataBlock::HasDefaultBorderImageRepeat() const { const nsCSSValuePair &repeat = ValueFor(eCSSProperty_border_image_repeat)->GetPairValue(); return repeat.BothValuesEqualTo( nsCSSValue(NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH, eCSSUnit_Enumerated)); }
bool nsCSSCompressedDataBlock::HasDefaultBorderImageSlice() const { const nsCSSValueList *slice = ValueFor(eCSSProperty_border_image_slice)->GetListValue(); return !slice->mNext && slice->mValue.GetRectValue().AllSidesEqualTo( nsCSSValue(1.0f, eCSSUnit_Percent)); }
void nsCSSCompressedDataBlock::MapRuleInfoInto(nsRuleData *aRuleData) const { // If we have no data for these structs, then return immediately. // This optimization should make us return most of the time, so we // have to worry much less (although still some) about the speed of // the rest of the function. if (!(aRuleData->mSIDs & mStyleBits)) return; nsIDocument* doc = aRuleData->mPresContext->Document(); const char* cursor = Block(); const char* cursor_end = BlockEnd(); while (cursor < cursor_end) { nsCSSProperty iProp = PropertyAtCursor(cursor); NS_ABORT_IF_FALSE(!nsCSSProps::IsShorthand(iProp), "out of range"); if (nsCachedStyleData::GetBitForSID(nsCSSProps::kSIDTable[iProp]) & aRuleData->mSIDs) { nsCSSValue* target = aRuleData->ValueFor(iProp); if (target->GetUnit() == eCSSUnit_Null) { const nsCSSValue *val = ValueAtCursor(cursor); NS_ABORT_IF_FALSE(val->GetUnit() != eCSSUnit_Null, "oops"); if (ShouldStartImageLoads(aRuleData, iProp)) { TryToStartImageLoad(*val, doc, iProp); } *target = *val; if (nsCSSProps::PropHasFlags(iProp, CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED) && ShouldIgnoreColors(aRuleData)) { if (iProp == eCSSProperty_background_color) { // Force non-'transparent' background // colors to the user's default. if (target->IsNonTransparentColor()) { target->SetColorValue(aRuleData->mPresContext-> DefaultBackgroundColor()); } } else { // Ignore 'color', 'border-*-color', etc. *target = nsCSSValue(); } } } } cursor += CDBValueStorage_advance; } NS_ABORT_IF_FALSE(cursor == cursor_end, "inconsistent data"); }