亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? css_computedstyle.cpp

?? It is WEB browser core module with source code. Very good!
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
/**
 * css_computedstyle.cpp
 *
 * Copyright (C)  2004  Zack Rusin <zack@kde.org>
 * Copyright (C) 2004 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., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

#include "css_computedstyle.h"

#include "cssproperties.h"
#include "cssvalues.h"
#include "dom_atomicstring.h"
#include "dom_exception.h"
#include "dom_string.h"
#include "font.h"
#include "khtmllayout.h"
#include "loader.h"
#include "rendering/render_style.h"
#include "rendering/render_object.h"

#if APPLE_CHANGES
#include "KWQAssertions.h"
#include "KWQFontFamily.h"
#include "KWQLogging.h"
#endif

using khtml::EBorderStyle;
using khtml::ETextAlign;
using khtml::Font;
using khtml::FontDef;
using khtml::Length;
using khtml::LengthBox;
using khtml::RenderObject;
using khtml::RenderStyle;
using khtml::ShadowData;
using khtml::StyleDashboardRegion;

namespace DOM {

// 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__KHTML_BOX_ALIGN,
    CSS_PROP__KHTML_BOX_DIRECTION,
    CSS_PROP__KHTML_BOX_FLEX,
    CSS_PROP__KHTML_BOX_FLEX_GROUP,
    CSS_PROP__KHTML_BOX_LINES,
    CSS_PROP__KHTML_BOX_ORDINAL_GROUP,
    CSS_PROP__KHTML_BOX_ORIENT,
    CSS_PROP__KHTML_BOX_PACK,
    CSS_PROP_CAPTION_SIDE,
    CSS_PROP_CLEAR,
    CSS_PROP_COLOR,
    CSS_PROP_CURSOR,
    CSS_PROP__APPLE_DASHBOARD_REGION,
    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__KHTML_LINE_BREAK,
    CSS_PROP__APPLE_LINE_CLAMP,
    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__KHTML_NBSP_MODE,
    CSS_PROP_OPACITY,
    CSS_PROP_ORPHANS,
    CSS_PROP_OUTLINE_STYLE,
    CSS_PROP_OVERFLOW,
    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__KHTML_TEXT_DECORATIONS_IN_EFFECT,
    CSS_PROP_TEXT_INDENT,
    CSS_PROP_TEXT_SHADOW,
    CSS_PROP_TEXT_TRANSFORM,
    CSS_PROP_TOP,
    CSS_PROP_UNICODE_BIDI,
    CSS_PROP__KHTML_USER_MODIFY,
    CSS_PROP_VERTICAL_ALIGN,
    CSS_PROP_VISIBILITY,
    CSS_PROP_WHITE_SPACE,
    CSS_PROP_WIDOWS,
    CSS_PROP_WIDTH,
    CSS_PROP_WORD_SPACING,
    CSS_PROP_WORD_WRAP,
    CSS_PROP_Z_INDEX,
};

const unsigned numComputedProperties = sizeof(computedProperties) / sizeof(computedProperties[0]);

static CSSValueImpl* valueForLength(const Length &length)
{
    switch (length.type) {
        case khtml::Percent:
            return new CSSPrimitiveValueImpl(length.length(), CSSPrimitiveValue::CSS_PERCENTAGE);
        case khtml::Fixed:
            return new CSSPrimitiveValueImpl(length.length(), CSSPrimitiveValue::CSS_PX);
        default: // FIXME: Intrinsic and MinIntrinsic should probably return keywords.
            return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
    }
}

static CSSValueImpl *valueForBorderStyle(EBorderStyle style)
{
    switch (style) {
        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);
    }
    ASSERT_NOT_REACHED();
    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);
    }
    ASSERT_NOT_REACHED();
    return 0;
}

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 = new CSSPrimitiveValueImpl(s->color.rgb());
        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);
    
    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);
    
    return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
}

CSSComputedStyleDeclarationImpl::CSSComputedStyleDeclarationImpl(NodeImpl *n)
    : m_node(n)
{
}

CSSComputedStyleDeclarationImpl::~CSSComputedStyleDeclarationImpl()
{
}

DOMString CSSComputedStyleDeclarationImpl::cssText() const
{
    ERROR("unimplemented");
    return DOMString();
}

void CSSComputedStyleDeclarationImpl::setCssText(const DOMString &, int &exceptionCode)
{
    exceptionCode = DOMException::NO_MODIFICATION_ALLOWED_ERR;
}

// Display integers in integer format instead of "1.0".
static QString numberAsString(double n)
{
    long i = static_cast<long>(n);
    return i == n ? QString::number(i) : QString::number(n);
}

CSSValueImpl *CSSComputedStyleDeclarationImpl::getPropertyCSSValue(int propertyID) const
{
    return getPropertyCSSValue(propertyID, UpdateLayout);
}

CSSValueImpl *CSSComputedStyleDeclarationImpl::getPropertyCSSValue(int propertyID, EUpdateLayout updateLayout) const
{
    NodeImpl *node = m_node.handle();
    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 && updateLayout)
        docimpl->updateLayout();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品网站在线观看| 99久久亚洲一区二区三区青草| 美女一区二区视频| 成人免费观看av| 日韩一卡二卡三卡四卡| 亚洲精品亚洲人成人网| 国产麻豆精品theporn| 欧美美女激情18p| 亚洲美女免费视频| 国产成人激情av| 日韩欧美国产小视频| 一区二区成人在线视频| 国产a久久麻豆| 精品国产免费一区二区三区香蕉| 一区二区三区波多野结衣在线观看| 国产精品中文字幕一区二区三区| 欧美日韩免费高清一区色橹橹 | 色婷婷激情综合| 中文字幕免费观看一区| 久久99精品久久只有精品| 欧美日韩精品一区二区三区蜜桃| 亚洲女同女同女同女同女同69| 经典三级在线一区| 日韩美女一区二区三区| 亚洲成人精品一区| 在线观看视频一区二区| 中文字幕欧美一| 岛国一区二区三区| 久久色在线视频| 国产麻豆9l精品三级站| 欧美精品一区二区高清在线观看| 美女精品自拍一二三四| 日韩欧美久久久| 久久爱另类一区二区小说| 日韩精品一区二区三区三区免费| 日韩电影一区二区三区四区| 在线综合视频播放| 久久精品av麻豆的观看方式| 日韩欧美一级精品久久| 韩国女主播一区| 久久精品亚洲国产奇米99| 国产91清纯白嫩初高中在线观看| 久久久精品欧美丰满| 成人少妇影院yyyy| 亚洲女同一区二区| 欧美在线免费播放| 丝袜亚洲另类欧美| 精品国产91洋老外米糕| 在线观看国产日韩| 日韩高清一级片| 精品国内片67194| 成人污视频在线观看| 亚洲美女屁股眼交| 正在播放亚洲一区| 国产福利一区二区| 亚洲主播在线观看| 欧美一区二区三区色| 国产精品影视网| 亚洲影视在线播放| 精品国产三级电影在线观看| 99久久精品国产毛片| 丝袜亚洲另类欧美| 中文字幕 久热精品 视频在线| 色综合视频一区二区三区高清| 丝袜亚洲另类丝袜在线| 欧美国产一区二区在线观看| 欧美在线999| 国产美女主播视频一区| 亚洲自拍都市欧美小说| 久久久久久久性| 欧美丝袜自拍制服另类| 国产激情视频一区二区三区欧美 | 欧美日韩五月天| 国产黄色精品网站| 亚洲一区二区三区精品在线| 久久女同互慰一区二区三区| 欧美在线观看视频一区二区三区| 在线亚洲一区观看| 国产美女一区二区三区| 亚洲大尺度视频在线观看| 欧美国产一区二区| 日韩欧美国产wwwww| 91极品视觉盛宴| 国产精品一区二区不卡| 亚洲一二三四区不卡| 国产精品国产馆在线真实露脸| 日韩欧美亚洲国产精品字幕久久久| 91色在线porny| 国产福利精品一区| 日本欧美一区二区三区乱码| 一片黄亚洲嫩模| 亚洲欧洲99久久| 久久免费电影网| 欧美不卡激情三级在线观看| 欧美日韩一区高清| 白白色亚洲国产精品| 国产精品一区不卡| 久久精品国产秦先生| 日韩电影免费在线看| 午夜精品福利视频网站| 日韩毛片一二三区| 久久久久久亚洲综合| 日韩欧美黄色影院| 日韩一级精品视频在线观看| 欧美在线看片a免费观看| 菠萝蜜视频在线观看一区| 国产成a人亚洲| 国产精品一区二区免费不卡| 国产一区二区导航在线播放| 久久国产精品99久久人人澡| 久久精品国产99久久6| 久久aⅴ国产欧美74aaa| 久久精品国产一区二区| 青青草97国产精品免费观看| 亚洲第一久久影院| 亚洲午夜久久久久久久久电影网| 亚洲日本在线看| 一区二区三区中文在线| 夜夜揉揉日日人人青青一国产精品| 亚洲免费观看高清完整| 亚洲美女屁股眼交| 亚洲午夜羞羞片| 免费成人在线网站| 一本大道久久a久久精二百| 99精品视频中文字幕| 色天天综合久久久久综合片| 欧美在线免费视屏| 欧美一区二区三区免费大片| 日韩三级在线观看| 国产视频在线观看一区二区三区| 欧美激情在线观看视频免费| 亚洲欧美日韩一区二区三区在线观看 | 国产精品丝袜久久久久久app| 国产精品黄色在线观看| 亚洲一区二区综合| 另类小说视频一区二区| 国产suv精品一区二区6| 91日韩一区二区三区| 欧美精品成人一区二区三区四区| 欧美大片顶级少妇| 亚洲欧洲国产专区| 日韩黄色一级片| 国产一区二区日韩精品| 91丝袜高跟美女视频| 在线成人小视频| 国产精品天干天干在线综合| 亚洲综合激情另类小说区| 看片网站欧美日韩| 91美女福利视频| 欧美tk—视频vk| 亚洲精品成人精品456| 蜜桃在线一区二区三区| av电影在线观看不卡| 日韩三区在线观看| 亚洲视频中文字幕| 国产在线播放一区三区四| 色婷婷久久久亚洲一区二区三区| 日韩视频免费观看高清完整版在线观看 | 亚洲人吸女人奶水| 久久国产精品第一页| 一本久道久久综合中文字幕| 欧美一级一区二区| 亚洲精品五月天| 国产99久久久精品| 日韩欧美一区电影| 亚洲一区二区三区四区在线观看 | 午夜精品一区二区三区电影天堂 | 久久精品国产精品青草| 色综合久久久久久久久久久| 欧美大白屁股肥臀xxxxxx| 亚洲色图都市小说| 国产最新精品免费| 欧美精品v日韩精品v韩国精品v| 欧美激情一二三区| 精品一区二区三区免费观看| 欧美亚洲另类激情小说| 国产精品视频免费| 国产精品一区二区视频| 欧美mv日韩mv国产网站| 午夜电影一区二区| 欧美性色综合网| 亚洲女同女同女同女同女同69| 国产91富婆露脸刺激对白| 欧美一级艳片视频免费观看| 亚洲成人综合网站| 91福利在线看| 亚洲欧美日韩国产手机在线| 成人av在线资源| 国产日韩成人精品| 国产裸体歌舞团一区二区| 日韩三级精品电影久久久| 日韩高清不卡一区二区| 欧美午夜在线一二页| 亚洲综合色自拍一区| 在线亚洲人成电影网站色www| 国产精品欧美一级免费| av不卡免费在线观看| 国产精品久久久久桃色tv| 成人黄色国产精品网站大全在线免费观看 | 国产大片一区二区|