📄 css_computedstyle.cpp
字号:
string += " ";
string += "blink";
}
if (string.length() == 0)
return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
}
case CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT:
{
QString string;
if (style->textDecorationsInEffect() & khtml::UNDERLINE)
string += "underline";
if (style->textDecorationsInEffect() & khtml::OVERLINE) {
if (string.length() > 0)
string += " ";
string += "overline";
}
if (style->textDecorationsInEffect() & khtml::LINE_THROUGH) {
if (string.length() > 0)
string += " ";
string += "line-through";
}
if (style->textDecorationsInEffect() & khtml::BLINK) {
if (string.length() > 0)
string += " ";
string += "blink";
}
if (string.length() == 0)
return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
}
case CSS_PROP_TEXT_INDENT:
return valueForLength(style->textIndent());
case CSS_PROP_TEXT_SHADOW:
return valueForShadow(style->textShadow());
case CSS_PROP__APPLE_TEXT_SIZE_ADJUST:
if (style->textSizeAdjust())
return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
else
return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
case CSS_PROP_TEXT_TRANSFORM:
switch (style->textTransform()) {
case khtml::CAPITALIZE:
return new CSSPrimitiveValueImpl(CSS_VAL_CAPITALIZE);
case khtml::UPPERCASE:
return new CSSPrimitiveValueImpl(CSS_VAL_UPPERCASE);
case khtml::LOWERCASE:
return new CSSPrimitiveValueImpl(CSS_VAL_LOWERCASE);
case khtml::TTNONE:
return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_TOP:
return getPositionOffsetValue(renderer, CSS_PROP_TOP);
case CSS_PROP_UNICODE_BIDI:
switch (style->unicodeBidi()) {
case khtml::UBNormal:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::Embed:
return new CSSPrimitiveValueImpl(CSS_VAL_EMBED);
case khtml::Override:
return new CSSPrimitiveValueImpl(CSS_VAL_BIDI_OVERRIDE);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_VERTICAL_ALIGN:
switch (style->verticalAlign()) {
case khtml::BASELINE:
return new CSSPrimitiveValueImpl(CSS_VAL_BASELINE);
case khtml::MIDDLE:
return new CSSPrimitiveValueImpl(CSS_VAL_MIDDLE);
case khtml::SUB:
return new CSSPrimitiveValueImpl(CSS_VAL_SUB);
case khtml::SUPER:
return new CSSPrimitiveValueImpl(CSS_VAL_SUPER);
case khtml::TEXT_TOP:
return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_TOP);
case khtml::TEXT_BOTTOM:
return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_BOTTOM);
case khtml::TOP:
return new CSSPrimitiveValueImpl(CSS_VAL_TOP);
case khtml::BOTTOM:
return new CSSPrimitiveValueImpl(CSS_VAL_BOTTOM);
case khtml::BASELINE_MIDDLE:
return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_BASELINE_MIDDLE);
case khtml::LENGTH:
return valueForLength(style->verticalAlignLength());
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_VISIBILITY:
switch (style->visibility()) {
case khtml::VISIBLE:
return new CSSPrimitiveValueImpl(CSS_VAL_VISIBLE);
case khtml::HIDDEN:
return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
case khtml::COLLAPSE:
return new CSSPrimitiveValueImpl(CSS_VAL_COLLAPSE);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_WHITE_SPACE:
switch (style->whiteSpace()) {
case khtml::NORMAL:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::PRE:
return new CSSPrimitiveValueImpl(CSS_VAL_PRE);
case khtml::NOWRAP:
return new CSSPrimitiveValueImpl(CSS_VAL_NOWRAP);
case khtml::KHTML_NOWRAP:
return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_NOWRAP);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_WIDOWS:
return new CSSPrimitiveValueImpl(style->widows(), CSSPrimitiveValue::CSS_NUMBER);
case CSS_PROP_WIDTH:
return new CSSPrimitiveValueImpl(renderer->contentWidth(), CSSPrimitiveValue::CSS_PX);
case CSS_PROP_WORD_SPACING:
return new CSSPrimitiveValueImpl(style->wordSpacing(), CSSPrimitiveValue::CSS_PX);
case CSS_PROP_WORD_WRAP:
switch (style->wordWrap()) {
case khtml::WBNORMAL:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::BREAK_WORD:
return new CSSPrimitiveValueImpl(CSS_VAL_BREAK_WORD);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP__KHTML_LINE_BREAK:
switch (style->khtmlLineBreak()) {
case khtml::LBNORMAL:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::AFTER_WHITE_SPACE:
return new CSSPrimitiveValueImpl(CSS_VAL_AFTER_WHITE_SPACE);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP__KHTML_NBSP_MODE:
switch (style->nbspMode()) {
case khtml::NBNORMAL:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::SPACE:
return new CSSPrimitiveValueImpl(CSS_VAL_SPACE);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP__KHTML_MATCH_NEAREST_MAIL_BLOCKQUOTE_COLOR:
switch (style->matchNearestMailBlockquoteColor()) {
case khtml::BCNORMAL:
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
case khtml::MATCH:
return new CSSPrimitiveValueImpl(CSS_VAL_MATCH);
}
ASSERT_NOT_REACHED();
return 0;
case CSS_PROP_Z_INDEX:
if (style->hasAutoZIndex())
return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
return new CSSPrimitiveValueImpl(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER);
case CSS_PROP_BACKGROUND:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_STYLE:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_TOP:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_RIGHT:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_BOTTOM:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_LEFT:
// FIXME: unimplemented
break;
case CSS_PROP_BORDER_WIDTH:
// FIXME: unimplemented
break;
case CSS_PROP_FONT:
// FIXME: unimplemented
break;
case CSS_PROP_LIST_STYLE:
// FIXME: unimplemented
break;
case CSS_PROP_MARGIN:
// FIXME: unimplemented
break;
case CSS_PROP_OUTLINE:
// FIXME: unimplemented
break;
case CSS_PROP_PADDING:
// FIXME: unimplemented
break;
#if !APPLE_CHANGES
case CSS_PROP_SCROLLBAR_FACE_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_SHADOW_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_3DLIGHT_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_TRACK_COLOR:
// FIXME: unimplemented
break;
case CSS_PROP_SCROLLBAR_ARROW_COLOR:
// FIXME: unimplemented
break;
#endif
#if APPLE_CHANGES
case CSS_PROP__APPLE_DASHBOARD_REGION: {
QValueList<StyleDashboardRegion> regions = style->dashboardRegions();
uint i, count = regions.count();
if (count == 1 && regions[0].type == StyleDashboardRegion::None)
return new CSSPrimitiveValueImpl (CSS_VAL_NONE);
DashboardRegionImpl *firstRegion = new DashboardRegionImpl(), *region;
region = firstRegion;
for (i = 0; i < count; i++) {
StyleDashboardRegion styleRegion = regions[i];
region->m_label = styleRegion.label;
LengthBox offset = styleRegion.offset;
region->setTop (new CSSPrimitiveValueImpl(offset.top.value, CSSPrimitiveValue::CSS_PX));
region->setRight (new CSSPrimitiveValueImpl(offset.right.value, CSSPrimitiveValue::CSS_PX));
region->setBottom (new CSSPrimitiveValueImpl(offset.bottom.value, CSSPrimitiveValue::CSS_PX));
region->setLeft (new CSSPrimitiveValueImpl(offset.left.value, CSSPrimitiveValue::CSS_PX));
region->m_isRectangle = (styleRegion.type == StyleDashboardRegion::Rectangle);
region->m_isCircle = (styleRegion.type == StyleDashboardRegion::Circle);
if (i != count-1) {
DashboardRegionImpl *newRegion = new DashboardRegionImpl();
region->setNext (newRegion);
region = newRegion;
}
}
return new CSSPrimitiveValueImpl(firstRegion);
}
#endif
}
ERROR("unimplemented propertyID: %d", propertyID);
return 0;
}
DOMString CSSComputedStyleDeclarationImpl::getPropertyValue(int propertyID) const
{
CSSValueImpl* value = getPropertyCSSValue(propertyID);
if (value) {
value->ref();
DOMString result = value->cssText();
value->deref();
return result;
}
return "";
}
bool CSSComputedStyleDeclarationImpl::getPropertyPriority(int) const
{
// All computed styles have a priority of false (not "important").
return false;
}
DOMString CSSComputedStyleDeclarationImpl::removeProperty(int, int &exceptionCode)
{
exceptionCode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
return DOMString();
}
void CSSComputedStyleDeclarationImpl::setProperty(int, const DOMString &, bool, int &exceptionCode)
{
exceptionCode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
}
unsigned long CSSComputedStyleDeclarationImpl::length() const
{
return numComputedProperties;
}
DOMString CSSComputedStyleDeclarationImpl::item(unsigned long i) const
{
if (i >= numComputedProperties)
return DOMString();
return getPropertyValue(computedProperties[i]);
}
CSSMutableStyleDeclarationImpl *CSSComputedStyleDeclarationImpl::copyInheritableProperties() const
{
return copyPropertiesInSet(inheritableProperties, numInheritableProperties);
}
CSSMutableStyleDeclarationImpl *CSSComputedStyleDeclarationImpl::copy() const
{
return copyPropertiesInSet(computedProperties, numComputedProperties);
}
CSSMutableStyleDeclarationImpl *CSSComputedStyleDeclarationImpl::makeMutable()
{
return copy();
}
} // namespace DOM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -