cssstyleselector.cpp
来自「将konqueror浏览器移植到ARM9 2410中」· C++ 代码 · 共 1,995 行 · 第 1/5 页
CPP
1,995 行
style->setFont(f); break; } case CSS_PROP_LIST_STYLE_POSITION: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setListStylePosition(e->parentNode()->style()->listStylePosition()); return; } if(!primitiveValue) return; if(primitiveValue->getIdent()) style->setListStylePosition( (EListStylePosition) (primitiveValue->getIdent() - CSS_VAL_OUTSIDE) ); return; } case CSS_PROP_LIST_STYLE_TYPE: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setListStyleType(e->parentNode()->style()->listStyleType()); return; } if(!primitiveValue) return; if(primitiveValue->getIdent()) { EListStyleType t; int id = primitiveValue->getIdent(); if ( id == CSS_VAL_NONE) { // important!! t = LNONE; } else { t = EListStyleType(id - CSS_VAL_DISC); } style->setListStyleType(t); } return; } case CSS_PROP_OVERFLOW: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setOverflow(e->parentNode()->style()->overflow()); return; } if(!primitiveValue) return; EOverflow o; switch(primitiveValue->getIdent()) { case CSS_VAL_VISIBLE: o = OVISIBLE; break; case CSS_VAL_HIDDEN: o = OHIDDEN; kdDebug() << "overflow:hidden" << endl; break; case CSS_VAL_SCROLL: o = SCROLL; break; case CSS_VAL_AUTO: o = AUTO; break; default: return; } style->setOverflow(o); return; } break; case CSS_PROP_PAGE: case CSS_PROP_PAGE_BREAK_AFTER: case CSS_PROP_PAGE_BREAK_BEFORE: case CSS_PROP_PAGE_BREAK_INSIDE:// case CSS_PROP_PAUSE_AFTER:// case CSS_PROP_PAUSE_BEFORE: break; case CSS_PROP_POSITION: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setPosition(e->parentNode()->style()->position()); return; } if(!primitiveValue) return; EPosition p; switch(primitiveValue->getIdent()) { case CSS_VAL_STATIC: p = STATIC; break; case CSS_VAL_RELATIVE: p = RELATIVE; break; case CSS_VAL_ABSOLUTE: p = ABSOLUTE; break; case CSS_VAL_FIXED: { doc->view()->useSlowRepaints(); p = FIXED; break; } default: return; } style->setPosition(p); return; }// case CSS_PROP_SPEAK:// case CSS_PROP_SPEAK_HEADER:// case CSS_PROP_SPEAK_NUMERAL:// case CSS_PROP_SPEAK_PUNCTUATION: case CSS_PROP_TABLE_LAYOUT: case CSS_PROP_UNICODE_BIDI: break; case CSS_PROP_TEXT_TRANSFORM: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setTextTransform(e->parentNode()->style()->textTransform()); return; } if(!primitiveValue->getIdent()) return; ETextTransform tt; switch(primitiveValue->getIdent()) { case CSS_VAL_CAPITALIZE: tt = CAPITALIZE; break; case CSS_VAL_UPPERCASE: tt = UPPERCASE; break; case CSS_VAL_LOWERCASE: tt = LOWERCASE; break; case CSS_VAL_NONE: default: tt = TTNONE; break; } style->setTextTransform(tt); break; } case CSS_PROP_VISIBILITY: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setVisiblity(e->parentNode()->style()->visiblity()); return; } switch( primitiveValue->getIdent() ) { case CSS_VAL_HIDDEN: style->setVisiblity( HIDDEN ); break; case CSS_VAL_VISIBLE: style->setVisiblity( VISIBLE ); break; case CSS_VAL_COLLAPSE: style->setVisiblity( COLLAPSE ); default: break; } break; } case CSS_PROP_WHITE_SPACE: if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setWhiteSpace(e->parentNode()->style()->whiteSpace()); return; } if(!primitiveValue->getIdent()) return; EWhiteSpace s; switch(primitiveValue->getIdent()) { case CSS_VAL_NOWRAP: s = NOWRAP; break; case CSS_VAL_PRE: s = PRE; break; case CSS_VAL_NORMAL: default: s = NORMAL; break; } style->setWhiteSpace(s); break;// special properties (css_extensions)// case CSS_PROP_AZIMUTH: // CSS2Azimuth case CSS_PROP_BACKGROUND_POSITION: // CSS2BackgroundPosition break; case CSS_PROP_BACKGROUND_POSITION_X: { if(!primitiveValue) break; Length l; int type = primitiveValue->primitiveType(); if(type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) l = Length(primitiveValue->computeLength(style, doc), Fixed); else if(type == CSSPrimitiveValue::CSS_PERCENTAGE) l = Length((int)primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent); else return; style->setBackgroundXPosition(l); break; } case CSS_PROP_BACKGROUND_POSITION_Y: { if(!primitiveValue) break; Length l; int type = primitiveValue->primitiveType(); if(type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) l = Length(primitiveValue->computeLength(style, doc), Fixed); else if(type == CSSPrimitiveValue::CSS_PERCENTAGE) l = Length((int)primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent); else return; style->setBackgroundYPosition(l); break; } case CSS_PROP_BORDER_SPACING: { if(!primitiveValue) break; short spacing = 0; spacing = primitiveValue->computeLength(style, doc); style->setBorderSpacing(spacing); break; } // CSS2BorderSpacing case CSS_PROP_CURSOR: // CSS2Cursor if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setCursor(e->parentNode()->style()->cursor()); return; } else if(primitiveValue) { if(primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_URI) { CSSImageValueImpl *image = static_cast<CSSImageValueImpl *>(primitiveValue); kdDebug( 6080 ) << "setting cursor image to " << image->cssText().string() << endl; style->setCursorImage(image->image()); } else { style->setCursor( (ECursor) (primitiveValue->getIdent() - CSS_VAL_AUTO) ); } } break;// case CSS_PROP_PLAY_DURING: // CSS2PlayDuring case CSS_PROP_TEXT_SHADOW: // list of CSS2TextShadow break;// colors || inherit case CSS_PROP_BACKGROUND_COLOR: case CSS_PROP_BORDER_TOP_COLOR: case CSS_PROP_BORDER_RIGHT_COLOR: case CSS_PROP_BORDER_BOTTOM_COLOR: case CSS_PROP_BORDER_LEFT_COLOR: case CSS_PROP_COLOR: case CSS_PROP_OUTLINE_COLOR: // this property is an extension used to get HTML4 <font> right. case CSS_PROP_TEXT_DECORATION_COLOR: // ie scrollbar styling case CSS_PROP_SCROLLBAR_FACE_COLOR: case CSS_PROP_SCROLLBAR_SHADOW_COLOR: case CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR: case CSS_PROP_SCROLLBAR_3DLIGHT_COLOR: case CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR: case CSS_PROP_SCROLLBAR_TRACK_COLOR: case CSS_PROP_SCROLLBAR_ARROW_COLOR: { QColor col; if(value->valueType() == CSSValue::CSS_INHERIT) { switch(prop->m_id) { case CSS_PROP_BACKGROUND_COLOR: style->setBackgroundColor(e->parentNode()->style()->backgroundColor()); break; case CSS_PROP_BORDER_TOP_COLOR: style->setBorderTopColor(e->parentNode()->style()->borderTopColor()); break; case CSS_PROP_BORDER_RIGHT_COLOR: style->setBorderRightColor(e->parentNode()->style()->borderRightColor()); break; case CSS_PROP_BORDER_BOTTOM_COLOR: style->setBorderBottomColor(e->parentNode()->style()->borderBottomColor()); break; case CSS_PROP_BORDER_LEFT_COLOR: style->setBorderLeftColor(e->parentNode()->style()->borderLeftColor()); break; case CSS_PROP_COLOR: style->setColor(e->parentNode()->style()->color()); break; case CSS_PROP_OUTLINE_COLOR: style->setOutlineColor(e->parentNode()->style()->outlineColor()); break; default: // ### break; } return; } if(!primitiveValue) return; if(primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_RGBCOLOR) col = primitiveValue->getRGBColorValue()->color(); else return; //kdDebug( 6080 ) << "applying color " << col.isValid() << endl; switch(prop->m_id) { case CSS_PROP_BACKGROUND_COLOR: style->setBackgroundColor(col); break; case CSS_PROP_BORDER_TOP_COLOR: style->setBorderTopColor(col); break; case CSS_PROP_BORDER_RIGHT_COLOR: style->setBorderRightColor(col); break; case CSS_PROP_BORDER_BOTTOM_COLOR: style->setBorderBottomColor(col); break; case CSS_PROP_BORDER_LEFT_COLOR: style->setBorderLeftColor(col); break; case CSS_PROP_COLOR: style->setColor(col); break; case CSS_PROP_TEXT_DECORATION_COLOR: style->setTextDecorationColor(col); break; case CSS_PROP_OUTLINE_COLOR: style->setOutlineColor(col); break; case CSS_PROP_SCROLLBAR_FACE_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::Button, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Button, col); break; case CSS_PROP_SCROLLBAR_SHADOW_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::Shadow, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Shadow, col); break; case CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::Light, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Light, col); break; case CSS_PROP_SCROLLBAR_3DLIGHT_COLOR: break; case CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::Dark, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Dark, col); break; case CSS_PROP_SCROLLBAR_TRACK_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::Base, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Base, col); style->setPaletteColor(QPalette::Active, QColorGroup::Mid, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Mid, col); style->setPaletteColor(QPalette::Active, QColorGroup::Background, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::Background, col); break; case CSS_PROP_SCROLLBAR_ARROW_COLOR: style->setPaletteColor(QPalette::Active, QColorGroup::ButtonText, col); style->setPaletteColor(QPalette::Inactive, QColorGroup::ButtonText, col); break; default: return; } return; } break;// uri || inherit case CSS_PROP_BACKGROUND_IMAGE: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setBackgroundImage(e->parentNode()->style()->backgroundImage()); break; } if(!primitiveValue) return; CSSImageValueImpl *image = static_cast<CSSImageValueImpl *>(primitiveValue); style->setBackgroundImage(image->image()); //kdDebug( 6080 ) << "setting image in style to " << image->image() << endl; break; }// case CSS_PROP_CUE_AFTER:// case CSS_PROP_CUE_BEFORE:// break; case CSS_PROP_LIST_STYLE_IMAGE: { if(value->valueType() == CSSValue::CSS_INHERIT) { if(!e->parentNode()) return; style->setListStyleImage(e->parentNode()->style()->listStyleImage()); break; } if(!primitiveValue) return; CSSImageValueImpl *image = static_cast<CSSImageValueImpl *>(primitiveValue); style->setListStyleImage(image->image()); kdDebug( 6080 ) << "setting image in list to " << image->image() << endl; break; }// length case CSS_PROP_BORDER_TOP_WIDTH: case CSS_PROP_BORDER_RIGHT_WIDTH: case CSS_PROP_BORDER_BOTTOM_WIDTH: case CSS_PROP_BORDER_LEFT_WIDTH: case CSS_PROP_OUTLINE_WIDTH: { if(value->valueType() == CSSValue::CSS_INHERIT) { switch(prop->m_id) { case CSS_PROP_BORDER_TOP_WIDTH:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?