summaryrefslogtreecommitdiffstats
path: root/khtml/css/css_renderstyledeclarationimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/css/css_renderstyledeclarationimpl.cpp')
-rw-r--r--khtml/css/css_renderstyledeclarationimpl.cpp1147
1 files changed, 0 insertions, 1147 deletions
diff --git a/khtml/css/css_renderstyledeclarationimpl.cpp b/khtml/css/css_renderstyledeclarationimpl.cpp
deleted file mode 100644
index daf607a9e..000000000
--- a/khtml/css/css_renderstyledeclarationimpl.cpp
+++ /dev/null
@@ -1,1147 +0,0 @@
-/**
- * css_renderstyledeclarationimpl.cpp
- *
- * Copyright (C) 2004 Zack Rusin <zack@kde.org>
- * Copyright (C) 2004,2005 Apple Computer, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-#include "css_renderstyledeclarationimpl.h"
-
-#include "rendering/render_style.h"
-#include "rendering/render_object.h"
-
-#include "cssproperties.h"
-#include "cssvalues.h"
-
-using namespace DOM;
-using namespace khtml;
-
-// List of all properties we know how to compute, omitting shorthands.
-static const int computedProperties[] = {
- CSS_PROP_BACKGROUND_COLOR,
- CSS_PROP_BACKGROUND_IMAGE,
- CSS_PROP_BACKGROUND_REPEAT,
- CSS_PROP_BACKGROUND_ATTACHMENT,
- CSS_PROP_BACKGROUND_POSITION,
- CSS_PROP_BACKGROUND_POSITION_X,
- CSS_PROP_BACKGROUND_POSITION_Y,
- CSS_PROP_BORDER_COLLAPSE,
- CSS_PROP_BORDER_SPACING,
- CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING,
- CSS_PROP__KHTML_BORDER_VERTICAL_SPACING,
- CSS_PROP_BORDER_TOP_COLOR,
- CSS_PROP_BORDER_RIGHT_COLOR,
- CSS_PROP_BORDER_BOTTOM_COLOR,
- CSS_PROP_BORDER_LEFT_COLOR,
- CSS_PROP_BORDER_TOP_STYLE,
- CSS_PROP_BORDER_RIGHT_STYLE,
- CSS_PROP_BORDER_BOTTOM_STYLE,
- CSS_PROP_BORDER_LEFT_STYLE,
- CSS_PROP_BORDER_TOP_WIDTH,
- CSS_PROP_BORDER_RIGHT_WIDTH,
- CSS_PROP_BORDER_BOTTOM_WIDTH,
- CSS_PROP_BORDER_LEFT_WIDTH,
- CSS_PROP_BOTTOM,
- CSS_PROP_CAPTION_SIDE,
- CSS_PROP_CLEAR,
- CSS_PROP_COLOR,
- CSS_PROP_CURSOR,
- CSS_PROP_DIRECTION,
- CSS_PROP_DISPLAY,
- CSS_PROP_EMPTY_CELLS,
- CSS_PROP_FLOAT,
- CSS_PROP_FONT_FAMILY,
- CSS_PROP_FONT_SIZE,
- CSS_PROP_FONT_STYLE,
- CSS_PROP_FONT_VARIANT,
- CSS_PROP_FONT_WEIGHT,
- CSS_PROP_HEIGHT,
- CSS_PROP_LEFT,
- CSS_PROP_LETTER_SPACING,
- CSS_PROP_LINE_HEIGHT,
- CSS_PROP_LIST_STYLE_IMAGE,
- CSS_PROP_LIST_STYLE_POSITION,
- CSS_PROP_LIST_STYLE_TYPE,
- CSS_PROP_MARGIN_TOP,
- CSS_PROP_MARGIN_RIGHT,
- CSS_PROP_MARGIN_BOTTOM,
- CSS_PROP_MARGIN_LEFT,
- CSS_PROP__KHTML_MARQUEE_DIRECTION,
- CSS_PROP__KHTML_MARQUEE_INCREMENT,
- CSS_PROP__KHTML_MARQUEE_REPETITION,
- CSS_PROP__KHTML_MARQUEE_STYLE,
- CSS_PROP_MAX_HEIGHT,
- CSS_PROP_MAX_WIDTH,
- CSS_PROP_MIN_HEIGHT,
- CSS_PROP_MIN_WIDTH,
- CSS_PROP_OPACITY,
- CSS_PROP_ORPHANS,
- CSS_PROP_OUTLINE_STYLE,
- CSS_PROP_OVERFLOW,
- CSS_PROP_OVERFLOW_X,
- CSS_PROP_OVERFLOW_Y,
- CSS_PROP_PADDING_TOP,
- CSS_PROP_PADDING_RIGHT,
- CSS_PROP_PADDING_BOTTOM,
- CSS_PROP_PADDING_LEFT,
- CSS_PROP_PAGE_BREAK_AFTER,
- CSS_PROP_PAGE_BREAK_BEFORE,
- CSS_PROP_PAGE_BREAK_INSIDE,
- CSS_PROP_POSITION,
- CSS_PROP_RIGHT,
- CSS_PROP_TABLE_LAYOUT,
- CSS_PROP_TEXT_ALIGN,
- CSS_PROP_TEXT_DECORATION,
- CSS_PROP_TEXT_INDENT,
- CSS_PROP_TEXT_SHADOW,
- CSS_PROP_TEXT_TRANSFORM,
- CSS_PROP_TOP,
- CSS_PROP_UNICODE_BIDI,
- CSS_PROP_VERTICAL_ALIGN,
- CSS_PROP_VISIBILITY,
- CSS_PROP_WHITE_SPACE,
- CSS_PROP_WIDOWS,
- CSS_PROP_WIDTH,
- CSS_PROP_WORD_SPACING,
- CSS_PROP_Z_INDEX,
-};
-
-const unsigned numComputedProperties = sizeof(computedProperties) / sizeof(computedProperties[0]);
-
-
-static CSSValueImpl *valueForLength(const Length &length, int max)
-{
- if (length.isPercent()) {
- return new CSSPrimitiveValueImpl(length.value(), CSSPrimitiveValue::CSS_PERCENTAGE);
- }
- else {
- return new CSSPrimitiveValueImpl(length.minWidth(max), CSSPrimitiveValue::CSS_PX);
- }
-}
-
-static CSSValueImpl *valueForBorderStyle(EBorderStyle style)
-{
- switch (style) {
- case khtml::BNATIVE:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_NATIVE);
- case khtml::BNONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case khtml::BHIDDEN:
- return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
- case khtml::INSET:
- return new CSSPrimitiveValueImpl(CSS_VAL_INSET);
- case khtml::GROOVE:
- return new CSSPrimitiveValueImpl(CSS_VAL_GROOVE);
- case khtml::RIDGE:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIDGE);
- case khtml::OUTSET:
- return new CSSPrimitiveValueImpl(CSS_VAL_OUTSET);
- case khtml::DOTTED:
- return new CSSPrimitiveValueImpl(CSS_VAL_DOTTED);
- case khtml::DASHED:
- return new CSSPrimitiveValueImpl(CSS_VAL_DASHED);
- case khtml::SOLID:
- return new CSSPrimitiveValueImpl(CSS_VAL_SOLID);
- case khtml::DOUBLE:
- return new CSSPrimitiveValueImpl(CSS_VAL_DOUBLE);
- }
- Q_ASSERT( 0 );
- return 0;
-}
-
-static CSSValueImpl *valueForTextAlign(ETextAlign align)
-{
- switch (align) {
- case khtml::TAAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case khtml::LEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case khtml::RIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- case khtml::CENTER:
- return new CSSPrimitiveValueImpl(CSS_VAL_CENTER);
- case khtml::JUSTIFY:
- return new CSSPrimitiveValueImpl(CSS_VAL_JUSTIFY);
- case khtml::KHTML_LEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_LEFT);
- case khtml::KHTML_RIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_RIGHT);
- case khtml::KHTML_CENTER:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_CENTER);
- }
- Q_ASSERT( 0 );
- return 0;
-}
-
-DOMString khtml::stringForListStyleType(EListStyleType type)
-{
- switch (type) {
- case khtml::LDISC:
- return "disc";
- case khtml::LCIRCLE:
- return "circle";
- case khtml::LSQUARE:
- return "square";
- case khtml::LBOX:
- return "box";
- case khtml::LDIAMOND:
- return "-khtml-diamond";
- case khtml::LDECIMAL:
- return "decimal";
- case khtml::DECIMAL_LEADING_ZERO:
- return "decimal-leading-zero";
- case khtml::ARABIC_INDIC:
- return "-khtml-arabic-indic";
- case khtml::LAO:
- return "-khtml-lao";
- case khtml::PERSIAN:
- return "-khtml-persian";
- case khtml::URDU:
- return "-khtml-urdu";
- case khtml::THAI:
- return "-khtml-thai";
- case khtml::TIBETAN:
- return "-khtml-tibetan";
- case khtml::LOWER_ROMAN:
- return "lower-roman";
- case khtml::UPPER_ROMAN:
- return "upper-roman";
- case khtml::HEBREW:
- return "hebrew";
- case khtml::ARMENIAN:
- return "armenian";
- case khtml::GEORGIAN:
- return "georgian";
- case khtml::CJK_IDEOGRAPHIC:
- return "cjk-ideographic";
- case khtml::JAPANESE_FORMAL:
- return "-khtml-japanese-formal";
- case khtml::JAPANESE_INFORMAL:
- return "-khtml-japanese-informal";
- case khtml::SIMP_CHINESE_FORMAL:
- return "-khtml-simp-chinese-formal";
- case khtml::SIMP_CHINESE_INFORMAL:
- return "-khtml-simp-chinese-informal";
- case khtml::TRAD_CHINESE_FORMAL:
- return "-khtml-trad-chinese-formal";
- case khtml::TRAD_CHINESE_INFORMAL:
- return "-khtml-trad-chinese-informal";
- case khtml::LOWER_GREEK:
- return "lower-greek";
- case khtml::UPPER_GREEK:
- return "-khtml-upper-greek";
- case khtml::LOWER_ALPHA:
- return "lower-alpha";
- case khtml::UPPER_ALPHA:
- return "upper-alpha";
- case khtml::LOWER_LATIN:
- return "lower-latin";
- case khtml::UPPER_LATIN:
- return "upper-latin";
- case khtml::HIRAGANA:
- return "hiragana";
- case khtml::KATAKANA:
- return "katakana";
- case khtml::HIRAGANA_IROHA:
- return "hiragana-iroha";
- case khtml::KATAKANA_IROHA:
- return "katakana_iroha";
- case khtml::LNONE:
- return "none";
- }
- Q_ASSERT( 0 );
- return "";
-}
-
-static CSSPrimitiveValueImpl* valueForColor(TQColor color)
-{
- if (color.isValid())
- return new CSSPrimitiveValueImpl(color.rgb());//### KDE4: use rgba!
- else
- return new CSSPrimitiveValueImpl(khtml::transparentColor);
-}
-
-static CSSValueImpl* valueForShadow(const ShadowData *shadow)
-{
- if (!shadow)
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- CSSValueListImpl *list = new CSSValueListImpl;
- for (const ShadowData *s = shadow; s; s = s->next) {
- CSSPrimitiveValueImpl *x = new CSSPrimitiveValueImpl(s->x, CSSPrimitiveValue::CSS_PX);
- CSSPrimitiveValueImpl *y = new CSSPrimitiveValueImpl(s->y, CSSPrimitiveValue::CSS_PX);
- CSSPrimitiveValueImpl *blur = new CSSPrimitiveValueImpl(s->blur, CSSPrimitiveValue::CSS_PX);
- CSSPrimitiveValueImpl *color = valueForColor(s->color);
- list->append(new ShadowValueImpl(x, y, blur, color));
- }
- return list;
-}
-
-static CSSValueImpl *getPositionOffsetValue(RenderObject *renderer, int propertyID)
-{
- if (!renderer)
- return 0;
-
- RenderStyle *style = renderer->style();
- if (!style)
- return 0;
-
- Length l;
- switch (propertyID) {
- case CSS_PROP_LEFT:
- l = style->left();
- break;
- case CSS_PROP_RIGHT:
- l = style->right();
- break;
- case CSS_PROP_TOP:
- l = style->top();
- break;
- case CSS_PROP_BOTTOM:
- l = style->bottom();
- break;
- default:
- return 0;
- }
-
- if (renderer->isPositioned())
- return valueForLength(l, renderer->contentWidth());
-
- if (renderer->isRelPositioned())
- // FIXME: It's not enough to simply return "auto" values for one offset if the other side is defined.
- // In other words if left is auto and right is not auto, then left's computed value is negative right.
- // So we should get the opposite length unit and see if it is auto.
- return valueForLength(l, renderer->contentWidth());
-
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- }
-
-RenderStyleDeclarationImpl::RenderStyleDeclarationImpl( DOM::NodeImpl *node )
- : CSSStyleDeclarationImpl(0), m_node(node)
-{
- //kdDebug() << "Render Style Declaration created" << endl;
-}
-
-RenderStyleDeclarationImpl::~RenderStyleDeclarationImpl()
-{
- //kdDebug() << "Render Style Declaration destroyed" << endl;
-}
-
-DOM::DOMString RenderStyleDeclarationImpl::cssText() const
-{
- DOMString result;
-
- for (unsigned i = 0; i < numComputedProperties; i++) {
- if (i != 0)
- result += " ";
- result += getPropertyName(computedProperties[i]);
- result += ": ";
- result += getPropertyValue(computedProperties[i]);
- result += ";";
- }
-
- return result;
-}
-
-void RenderStyleDeclarationImpl::setCssText( DOM::DOMString )
-{
- // ### report that this sucka is read only
-}
-
-CSSValueImpl *RenderStyleDeclarationImpl::getPropertyCSSValue( int propertyID ) const
-{
- NodeImpl *node = m_node.get();
- if (!node)
- return 0;
-
- // Make sure our layout is up to date before we allow a query on these attributes.
- DocumentImpl* docimpl = node->getDocument();
- if (docimpl) {
- docimpl->updateLayout();
- }
-
- RenderObject *renderer = m_node->renderer();
- if (!renderer)
- return 0;
- RenderStyle *style = renderer->style();
- if (!style)
- return 0;
-
- switch(propertyID)
- {
- case CSS_PROP_BACKGROUND_COLOR:
- return valueForColor(style->backgroundColor());
- case CSS_PROP_BACKGROUND_IMAGE:
- if (style->backgroundImage())
- return new CSSPrimitiveValueImpl(style->backgroundImage()->url(),
- CSSPrimitiveValue::CSS_URI);
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case CSS_PROP_BACKGROUND_REPEAT:
- switch (style->backgroundRepeat()) {
- case khtml::REPEAT:
- return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT);
- case khtml::REPEAT_X:
- return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT_X);
- case khtml::REPEAT_Y:
- return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT_Y);
- case khtml::NO_REPEAT:
- return new CSSPrimitiveValueImpl(CSS_VAL_NO_REPEAT);
- default:
- Q_ASSERT( 0 );
- }
- case CSS_PROP_BACKGROUND_ATTACHMENT:
- if (style->backgroundAttachment())
- return new CSSPrimitiveValueImpl(CSS_VAL_SCROLL);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_FIXED);
- case CSS_PROP_BACKGROUND_POSITION:
- {
- DOMString string;
- Length length(style->backgroundXPosition());
- if (length.isPercent())
- string = TQString::number(length.value()) + "%";
- else
- string = TQString::number(length.minWidth(renderer->contentWidth()));
- string += " ";
- length = style->backgroundYPosition();
- if (length.isPercent())
- string += TQString::number(length.value()) + "%";
- else
- string += TQString::number(length.minWidth(renderer->contentWidth()));
- return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
- }
- case CSS_PROP_BACKGROUND_POSITION_X:
- return valueForLength(style->backgroundXPosition(), renderer->contentWidth());
- case CSS_PROP_BACKGROUND_POSITION_Y:
- return valueForLength(style->backgroundYPosition(), renderer->contentHeight());
- case CSS_PROP_BORDER_COLLAPSE:
- if (style->borderCollapse())
- return new CSSPrimitiveValueImpl(CSS_VAL_COLLAPSE);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_SEPARATE);
- case CSS_PROP_BORDER_SPACING:
- {
- TQString string(TQString::number(style->borderHorizontalSpacing()) +
- "px " +
- TQString::number(style->borderVerticalSpacing()) +
- "px");
- return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
- }
- case CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING:
- return new CSSPrimitiveValueImpl(style->borderHorizontalSpacing(),
- CSSPrimitiveValue::CSS_PX);
- case CSS_PROP__KHTML_BORDER_VERTICAL_SPACING:
- return new CSSPrimitiveValueImpl(style->borderVerticalSpacing(),
- CSSPrimitiveValue::CSS_PX);
- case CSS_PROP_BORDER_TOP_COLOR:
- return valueForColor(style->borderTopColor());
- case CSS_PROP_BORDER_RIGHT_COLOR:
- return valueForColor(style->borderRightColor());
- case CSS_PROP_BORDER_BOTTOM_COLOR:
- return valueForColor(style->borderBottomColor());
- case CSS_PROP_BORDER_LEFT_COLOR:
- return valueForColor(style->borderLeftColor());
- case CSS_PROP_BORDER_TOP_STYLE:
- return valueForBorderStyle(style->borderTopStyle());
- case CSS_PROP_BORDER_RIGHT_STYLE:
- return valueForBorderStyle(style->borderRightStyle());
- case CSS_PROP_BORDER_BOTTOM_STYLE:
- return valueForBorderStyle(style->borderBottomStyle());
- case CSS_PROP_BORDER_LEFT_STYLE:
- return valueForBorderStyle(style->borderLeftStyle());
- case CSS_PROP_BORDER_TOP_WIDTH:
- return new CSSPrimitiveValueImpl( style->borderTopWidth(), CSSPrimitiveValue::CSS_PX );
- case CSS_PROP_BORDER_RIGHT_WIDTH:
- return new CSSPrimitiveValueImpl( style->borderRightWidth(), CSSPrimitiveValue::CSS_PX );
- case CSS_PROP_BORDER_BOTTOM_WIDTH:
- return new CSSPrimitiveValueImpl( style->borderBottomWidth(), CSSPrimitiveValue::CSS_PX );
- case CSS_PROP_BORDER_LEFT_WIDTH:
- return new CSSPrimitiveValueImpl( style->borderLeftWidth(), CSSPrimitiveValue::CSS_PX );
- case CSS_PROP_BOTTOM:
- return getPositionOffsetValue(renderer, CSS_PROP_BOTTOM);
- case CSS_PROP_CAPTION_SIDE:
- switch (style->captionSide()) {
- case CAPLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case CAPRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- case CAPTOP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TOP);
- case CAPBOTTOM:
- return new CSSPrimitiveValueImpl(CSS_VAL_BOTTOM);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_CLEAR:
- switch (style->clear()) {
- case CNONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case CLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case CRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- case CBOTH:
- return new CSSPrimitiveValueImpl(CSS_VAL_BOTH);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_CLIP:
- break;
- case CSS_PROP_COLOR:
- return valueForColor(style->color());
- case CSS_PROP_CONTENT:
- break;
- case CSS_PROP_COUNTER_INCREMENT:
- break;
- case CSS_PROP_COUNTER_RESET:
- break;
- case CSS_PROP_CURSOR:
- switch (style->cursor()) {
- case CURSOR_AUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case CURSOR_CROSS:
- return new CSSPrimitiveValueImpl(CSS_VAL_CROSSHAIR);
- case CURSOR_DEFAULT:
- return new CSSPrimitiveValueImpl(CSS_VAL_DEFAULT);
- case CURSOR_POINTER:
- return new CSSPrimitiveValueImpl(CSS_VAL_POINTER);
- case CURSOR_MOVE:
- return new CSSPrimitiveValueImpl(CSS_VAL_MOVE);
- case CURSOR_PROGRESS:
- return new CSSPrimitiveValueImpl(CSS_VAL_PROGRESS);
- case CURSOR_E_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_E_RESIZE);
- case CURSOR_NE_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NE_RESIZE);
- case CURSOR_NW_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NW_RESIZE);
- case CURSOR_N_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_N_RESIZE);
- case CURSOR_SE_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_SE_RESIZE);
- case CURSOR_SW_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_SW_RESIZE);
- case CURSOR_S_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_S_RESIZE);
- case CURSOR_W_RESIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_W_RESIZE);
- case CURSOR_TEXT:
- return new CSSPrimitiveValueImpl(CSS_VAL_TEXT);
- case CURSOR_WAIT:
- return new CSSPrimitiveValueImpl(CSS_VAL_WAIT);
- case CURSOR_HELP:
- return new CSSPrimitiveValueImpl(CSS_VAL_HELP);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_DIRECTION:
- switch (style->direction()) {
- case LTR:
- return new CSSPrimitiveValueImpl(CSS_VAL_LTR);
- case RTL:
- return new CSSPrimitiveValueImpl(CSS_VAL_RTL);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_DISPLAY:
- switch (style->display()) {
- case INLINE:
- return new CSSPrimitiveValueImpl(CSS_VAL_INLINE);
- case BLOCK:
- return new CSSPrimitiveValueImpl(CSS_VAL_BLOCK);
- case LIST_ITEM:
- return new CSSPrimitiveValueImpl(CSS_VAL_LIST_ITEM);
- case RUN_IN:
- return new CSSPrimitiveValueImpl(CSS_VAL_RUN_IN);
- case COMPACT:
- return new CSSPrimitiveValueImpl(CSS_VAL_COMPACT);
- case INLINE_BLOCK:
- return new CSSPrimitiveValueImpl(CSS_VAL_INLINE_BLOCK);
- case TABLE:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE);
- case INLINE_TABLE:
- return new CSSPrimitiveValueImpl(CSS_VAL_INLINE_TABLE);
- case TABLE_ROW_GROUP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_ROW_GROUP);
- case TABLE_HEADER_GROUP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_HEADER_GROUP);
- case TABLE_FOOTER_GROUP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_FOOTER_GROUP);
- case TABLE_ROW:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_ROW);
- case TABLE_COLUMN_GROUP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_COLUMN_GROUP);
- case TABLE_COLUMN:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_COLUMN);
- case TABLE_CELL:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_CELL);
- case TABLE_CAPTION:
- return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_CAPTION);
- case NONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- }
- Q_ASSERT( 0 );
- break;
- case CSS_PROP_EMPTY_CELLS:
- switch (style->emptyCells()) {
- case SHOW:
- return new CSSPrimitiveValueImpl(CSS_VAL_SHOW);
- case HIDE:
- return new CSSPrimitiveValueImpl(CSS_VAL_HIDE);
- }
- Q_ASSERT( 0 );
- break;
- case CSS_PROP_FLOAT:
- {
- switch (style->floating()) {
- case FNONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case FLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case FRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- case FLEFT_ALIGN:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_LEFT);
- case FRIGHT_ALIGN:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_RIGHT);
- }
- }
- case CSS_PROP_FONT_FAMILY:
- {
- FontDef def = style->htmlFont().getFontDef();
- return new CSSPrimitiveValueImpl(def.family, CSSPrimitiveValue::CSS_STRING);
- }
- case CSS_PROP_FONT_SIZE:
- {
- FontDef def = style->htmlFont().getFontDef();
- return new CSSPrimitiveValueImpl(def.size, CSSPrimitiveValue::CSS_PX);
- }
- case CSS_PROP_FONT_STYLE:
- {
- // FIXME: handle oblique
- FontDef def = style->htmlFont().getFontDef();
- if (def.italic)
- return new CSSPrimitiveValueImpl(CSS_VAL_ITALIC);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- }
- case CSS_PROP_FONT_VARIANT:
- {
- FontDef def = style->htmlFont().getFontDef();
- if (def.smallCaps)
- return new CSSPrimitiveValueImpl(CSS_VAL_SMALL_CAPS);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- }
- case CSS_PROP_FONT_WEIGHT:
- {
- // FIXME: this does not reflect the full range of weights
- // that can be expressed with CSS
- FontDef def = style->htmlFont().getFontDef();
- if (def.weight == TQFont::Bold)
- return new CSSPrimitiveValueImpl(CSS_VAL_BOLD);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- }
- case CSS_PROP_HEIGHT:
- return new CSSPrimitiveValueImpl(renderer->contentHeight(), CSSPrimitiveValue::CSS_PX);
- case CSS_PROP_LEFT:
- return getPositionOffsetValue(renderer, CSS_PROP_LEFT);
- case CSS_PROP_LETTER_SPACING:
- if (style->letterSpacing() == 0)
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- return new CSSPrimitiveValueImpl(style->letterSpacing(), CSSPrimitiveValue::CSS_PX);
- case CSS_PROP_LINE_HEIGHT:
- {
- // Note: internally a specified <number> value gets encoded as a percentage,
- // so the isPercent() case corresponds to the <number> case;
- // values < 0 are used to mark "normal"; and specified %%
- // get computed down to px by the time they get to RenderStyle
- // already
- Length length(style->lineHeight());
- if (length.value() < 0)
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- if (length.isPercent()) {
- //XXX: merge from webcore the computedStyle/specifiedStyle distinction in rendering/font.h
- float computedSize = style->htmlFont().getFontDef().size;
- return new CSSPrimitiveValueImpl((int)(length.value() * computedSize) / 100, CSSPrimitiveValue::CSS_PX);
- }
- else {
- return new CSSPrimitiveValueImpl(length.value(), CSSPrimitiveValue::CSS_PX);
- }
- }
- case CSS_PROP_LIST_STYLE_IMAGE:
- if (style->listStyleImage())
- return new CSSPrimitiveValueImpl(style->listStyleImage()->url(), CSSPrimitiveValue::CSS_URI);
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case CSS_PROP_LIST_STYLE_POSITION:
- switch (style->listStylePosition()) {
- case OUTSIDE:
- return new CSSPrimitiveValueImpl(CSS_VAL_OUTSIDE);
- case INSIDE:
- return new CSSPrimitiveValueImpl(CSS_VAL_INSIDE);
- }
- Q_ASSERT( 0 );
- break;
- case CSS_PROP_LIST_STYLE_TYPE:
- return new CSSPrimitiveValueImpl(stringForListStyleType(style->listStyleType()), CSSPrimitiveValue::CSS_STRING);
- case CSS_PROP_MARGIN_TOP:
- return valueForLength(style->marginTop(), renderer->contentHeight());
- case CSS_PROP_MARGIN_RIGHT:
- return valueForLength(style->marginRight(), renderer->contentWidth());
- case CSS_PROP_MARGIN_BOTTOM:
- return valueForLength(style->marginBottom(), renderer->contentHeight());
- case CSS_PROP_MARGIN_LEFT:
- return valueForLength(style->marginLeft(), renderer->contentWidth());
- case CSS_PROP__KHTML_MARQUEE:
- // FIXME: unimplemented
- break;
- case CSS_PROP__KHTML_MARQUEE_DIRECTION:
- switch (style->marqueeDirection()) {
- case MFORWARD:
- return new CSSPrimitiveValueImpl(CSS_VAL_FORWARDS);
- case MBACKWARD:
- return new CSSPrimitiveValueImpl(CSS_VAL_BACKWARDS);
- case MAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case MUP:
- return new CSSPrimitiveValueImpl(CSS_VAL_UP);
- case MDOWN:
- return new CSSPrimitiveValueImpl(CSS_VAL_DOWN);
- case MLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case MRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- }
- Q_ASSERT(0);
- return 0;
- case CSS_PROP__KHTML_MARQUEE_INCREMENT:
- return valueForLength(style->marqueeIncrement(), renderer->contentWidth());
- case CSS_PROP__KHTML_MARQUEE_REPETITION:
- if (style->marqueeLoopCount() < 0)
- return new CSSPrimitiveValueImpl(CSS_VAL_INFINITE);
- return new CSSPrimitiveValueImpl(style->marqueeLoopCount(), CSSPrimitiveValue::CSS_NUMBER);
- case CSS_PROP__KHTML_MARQUEE_SPEED:
- // FIXME: unimplemented
- break;
- case CSS_PROP__KHTML_MARQUEE_STYLE:
- switch (style->marqueeBehavior()) {
- case MNONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- case MSCROLL:
- return new CSSPrimitiveValueImpl(CSS_VAL_SCROLL);
- case MSLIDE:
- return new CSSPrimitiveValueImpl(CSS_VAL_SLIDE);
- case MALTERNATE:
- return new CSSPrimitiveValueImpl(CSS_VAL_ALTERNATE);
- case MUNFURL:
- return new CSSPrimitiveValueImpl(CSS_VAL_UNFURL);
- }
- Q_ASSERT(0);
- return 0;
- case CSS_PROP_MAX_HEIGHT:
- return new CSSPrimitiveValueImpl( renderer->availableHeight(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_MAX_WIDTH:
- return new CSSPrimitiveValueImpl( renderer->maxWidth(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_MIN_HEIGHT:
- return new CSSPrimitiveValueImpl( renderer->contentHeight(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_MIN_WIDTH:
- return new CSSPrimitiveValueImpl( renderer->minWidth(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_OPACITY:
- return new CSSPrimitiveValueImpl(style->opacity(), CSSPrimitiveValue::CSS_NUMBER);
- case CSS_PROP_ORPHANS:
- return new CSSPrimitiveValueImpl(style->orphans(), CSSPrimitiveValue::CSS_NUMBER);
- case CSS_PROP_OUTLINE_COLOR:
- break;
- case CSS_PROP_OUTLINE_OFFSET:
- break;
- case CSS_PROP_OUTLINE_STYLE:
- if (style->outlineStyleIsAuto())
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- return valueForBorderStyle(style->outlineStyle());
- case CSS_PROP_OUTLINE_WIDTH:
- break;
- case CSS_PROP_OVERFLOW:
- case CSS_PROP_OVERFLOW_X:
- case CSS_PROP_OVERFLOW_Y: {
- EOverflow overflow;
- switch (propertyID) {
- case CSS_PROP_OVERFLOW_X:
- overflow = style->overflowX();
- break;
- case CSS_PROP_OVERFLOW_Y:
- overflow = style->overflowY();
- break;
- default:
- overflow = kMax(style->overflowX(), style->overflowY());
- }
- switch (overflow) {
- case OVISIBLE:
- return new CSSPrimitiveValueImpl(CSS_VAL_VISIBLE);
- case OHIDDEN:
- return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
- case OSCROLL:
- return new CSSPrimitiveValueImpl(CSS_VAL_SCROLL);
- case OAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case OMARQUEE:
- return new CSSPrimitiveValueImpl(CSS_VAL_MARQUEE);
- }
- Q_ASSERT(0);
- return 0;
- }
- case CSS_PROP_PADDING_TOP:
- return valueForLength(style->paddingTop(), renderer->contentHeight());
- case CSS_PROP_PADDING_RIGHT:
- return valueForLength(style->paddingRight(), renderer->contentWidth());
- case CSS_PROP_PADDING_BOTTOM:
- return valueForLength(style->paddingBottom(), renderer->contentHeight());
- case CSS_PROP_PADDING_LEFT:
- return valueForLength(style->paddingLeft(), renderer->contentWidth());
- case CSS_PROP_PAGE_BREAK_AFTER:
- switch (style->pageBreakAfter()) {
- case PBAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case PBALWAYS:
- return new CSSPrimitiveValueImpl(CSS_VAL_ALWAYS);
- case PBAVOID:
- return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
- case PBLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case PBRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_PAGE_BREAK_BEFORE:
- switch (style->pageBreakBefore()) {
- case PBAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case PBALWAYS:
- return new CSSPrimitiveValueImpl(CSS_VAL_ALWAYS);
- case PBAVOID:
- return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
- case PBLEFT:
- return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
- case PBRIGHT:
- return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_PAGE_BREAK_INSIDE:
- if (style->pageBreakInside())
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- else
- return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
- Q_ASSERT(0);
- break;
- case CSS_PROP_POSITION:
- switch (style->position()) {
- case STATIC:
- return new CSSPrimitiveValueImpl(CSS_VAL_STATIC);
- case RELATIVE:
- return new CSSPrimitiveValueImpl(CSS_VAL_RELATIVE);
- case ABSOLUTE:
- return new CSSPrimitiveValueImpl(CSS_VAL_ABSOLUTE);
- case FIXED:
- return new CSSPrimitiveValueImpl(CSS_VAL_FIXED);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_QUOTES:
- break;
- case CSS_PROP_RIGHT:
- return getPositionOffsetValue(renderer, CSS_PROP_RIGHT);
- case CSS_PROP_SIZE:
- break;
- case CSS_PROP_TABLE_LAYOUT:
- switch (style->tableLayout()) {
- case TAUTO:
- return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
- case TFIXED:
- return new CSSPrimitiveValueImpl(CSS_VAL_FIXED);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_TEXT_ALIGN:
- return valueForTextAlign(style->textAlign());
- case CSS_PROP_TEXT_DECORATION:
- {
- TQString string;
- if (style->textDecoration() & khtml::UNDERLINE)
- string += "underline";
- if (style->textDecoration() & khtml::OVERLINE) {
- if (string.length() > 0)
- string += " ";
- string += "overline";
- }
- if (style->textDecoration() & khtml::LINE_THROUGH) {
- if (string.length() > 0)
- string += " ";
- string += "line-through";
- }
- if (style->textDecoration() & khtml::BLINK) {
- if (string.length() > 0)
- string += " ";
- string += "blink";
- }
- if (string.length() == 0)
- string = "none";
- return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
- }
- case CSS_PROP_TEXT_INDENT:
- return valueForLength(style->textIndent(), renderer->contentWidth());
- case CSS_PROP_TEXT_SHADOW:
- return valueForShadow(style->textShadow());
- case CSS_PROP_TEXT_TRANSFORM:
- switch (style->textTransform()) {
- case CAPITALIZE:
- return new CSSPrimitiveValueImpl(CSS_VAL_CAPITALIZE);
- case UPPERCASE:
- return new CSSPrimitiveValueImpl(CSS_VAL_UPPERCASE);
- case LOWERCASE:
- return new CSSPrimitiveValueImpl(CSS_VAL_LOWERCASE);
- case TTNONE:
- return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_TOP:
- return getPositionOffsetValue(renderer, CSS_PROP_TOP);
- case CSS_PROP_UNICODE_BIDI:
- switch (style->unicodeBidi()) {
- case UBNormal:
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- case Embed:
- return new CSSPrimitiveValueImpl(CSS_VAL_EMBED);
- case Override:
- return new CSSPrimitiveValueImpl(CSS_VAL_BIDI_OVERRIDE);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_VERTICAL_ALIGN:
- {
- switch (style->verticalAlign()) {
- case BASELINE:
- return new CSSPrimitiveValueImpl(CSS_VAL_BASELINE);
- case MIDDLE:
- return new CSSPrimitiveValueImpl(CSS_VAL_MIDDLE);
- case SUB:
- return new CSSPrimitiveValueImpl(CSS_VAL_SUB);
- case SUPER:
- return new CSSPrimitiveValueImpl(CSS_VAL_SUPER);
- case TEXT_TOP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_TOP);
- case TEXT_BOTTOM:
- return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_BOTTOM);
- case TOP:
- return new CSSPrimitiveValueImpl(CSS_VAL_TOP);
- case BOTTOM:
- return new CSSPrimitiveValueImpl(CSS_VAL_BOTTOM);
- case BASELINE_MIDDLE:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_BASELINE_MIDDLE);
- case LENGTH:
- return valueForLength(style->verticalAlignLength(), renderer->contentWidth());
- }
- Q_ASSERT(0);
- break;
- }
- 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);
- }
- Q_ASSERT(0);
- break;
- case CSS_PROP_WHITE_SPACE:
- {
- switch (style->whiteSpace()) {
- case NORMAL:
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- case PRE:
- return new CSSPrimitiveValueImpl(CSS_VAL_PRE);
- case PRE_WRAP:
- return new CSSPrimitiveValueImpl(CSS_VAL_PRE_WRAP);
- case PRE_LINE:
- return new CSSPrimitiveValueImpl(CSS_VAL_PRE_LINE);
- case NOWRAP:
- return new CSSPrimitiveValueImpl(CSS_VAL_NOWRAP);
- case KHTML_NOWRAP:
- return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_NOWRAP);
- }
- Q_ASSERT(0);
- break;
- }
- 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_Z_INDEX:
- if (style->hasAutoZIndex())
- return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
- return new CSSPrimitiveValueImpl(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER);
- case CSS_PROP_BACKGROUND:
- break;
- case CSS_PROP_BORDER:
- break;
- case CSS_PROP_BORDER_COLOR:
- break;
- case CSS_PROP_BORDER_STYLE:
- break;
- case CSS_PROP_BORDER_TOP:
- return new CSSPrimitiveValueImpl( renderer->borderTop(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_BORDER_RIGHT:
- return new CSSPrimitiveValueImpl( renderer->borderRight(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_BORDER_BOTTOM:
- return new CSSPrimitiveValueImpl( renderer->borderBottom(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_BORDER_LEFT:
- return new CSSPrimitiveValueImpl( renderer->borderLeft(),
- CSSPrimitiveValue::CSS_PX );
- break;
- case CSS_PROP_BORDER_WIDTH:
- break;
- case CSS_PROP_FONT:
- break;
- case CSS_PROP_LIST_STYLE:
- break;
- case CSS_PROP_MARGIN:
- break;
- case CSS_PROP_OUTLINE:
- break;
- case CSS_PROP_PADDING:
- break;
- case CSS_PROP_SCROLLBAR_BASE_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_FACE_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_SHADOW_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_3DLIGHT_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_TRACK_COLOR:
- break;
- case CSS_PROP_SCROLLBAR_ARROW_COLOR:
- break;
- case CSS_PROP__KHTML_FLOW_MODE:
- break;
- case CSS_PROP__KHTML_USER_INPUT:
- break;
- default:
- Q_ASSERT( 0 );
- break;
- }
- return 0;
-}
-
-DOMString RenderStyleDeclarationImpl::getPropertyValue( int propertyID ) const
-{
- CSSValueImpl* value = getPropertyCSSValue(propertyID);
- if (value) {
- DOMString val = value->cssText();
- delete value;
- return val;
- }
- return "";
-}
-
-bool RenderStyleDeclarationImpl::getPropertyPriority( int ) const
-{
- // All computed styles have a priority of false (not "important").
- return false;
-}
-
-DOM::DOMString RenderStyleDeclarationImpl::removeProperty( int, bool )
-{
- // ### emit error since we're read-only
- return DOMString();
-}
-
-bool RenderStyleDeclarationImpl::setProperty ( int, const DOM::DOMString&, bool,
- bool )
-{
- // ### emit error since we're read-only
- return false;
-}
-
-void RenderStyleDeclarationImpl::setProperty ( int, int, bool,
- bool )
-{
- // ### emit error since we're read-only
-}
-
-void RenderStyleDeclarationImpl::setLengthProperty( int, const DOM::DOMString&, bool,
- bool, bool )
-{
- // ### emit error since we're read-only
-}
-
-void RenderStyleDeclarationImpl::setProperty( const DOMString& )
-{
- // ### emit error since we're read-only
-}
-
-unsigned long RenderStyleDeclarationImpl::length() const
-{
- return numComputedProperties;
-}
-
-DOM::DOMString RenderStyleDeclarationImpl::item( unsigned long i ) const
-{
- if (i >= numComputedProperties)
- return DOMString();
-
- return getPropertyName(computedProperties[i]);
-}
-
-CSSProperty RenderStyleDeclarationImpl::property( int id ) const
-{
- CSSProperty prop;
- prop.m_id = id;
- prop.m_important = false;
- prop.nonCSSHint = false;
-
- CSSValueImpl* v = getPropertyCSSValue( id );
- if ( !v )
- v = new CSSPrimitiveValueImpl;
- prop.setValue( v );
- return prop;
-}
-