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

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

?? render_style.h

?? It is WEB browser core module with source code. Very good!
?? H
?? 第 1 頁 / 共 5 頁
字號:
/*
 * This file is part of the DOM implementation for KDE.
 *
 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
 *           (C) 2000 Antti Koivisto (koivisto@kde.org)
 *           (C) 2000 Dirk Mueller (mueller@kde.org)
 * Copyright (C) 2003 Apple Computer, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 */
#ifndef RENDERSTYLE_H
#define RENDERSTYLE_H

/*
 * WARNING:
 * --------
 *
 * The order of the values in the enums have to agree with the order specified
 * in cssvalues.in, otherwise some optimizations in the parser will fail,
 * and produce invaliud results.
 */

#include <qcolor.h>
#include <qfont.h>
#include <qfontmetrics.h>
#include <qlist.h>
#include <qpalette.h>
#include <qapplication.h>

#include "dom/dom_misc.h"
#include "misc/khtmllayout.h"
#include "misc/shared.h"
#include "rendering/font.h"

#include <assert.h>

#ifdef __WINSCW__
#pragma enumsalwaysint off
#endif

#define SET_VAR(group,variable,value) \
    if (!(group->variable == value)) \
        group.access()->variable = value;

class RenderArena;

namespace DOM {
    class DOMStringImpl;
    class ShadowValueImpl;
}

namespace khtml {

    class CachedImage;
    class CachedObject;

template <class DATA>
class DataRef
OOM_MODIFIED
{
public:

    DataRef()
    {
	data=0;
    }
    DataRef( const DataRef<DATA> &d )
    {
    	data = d.data;
	data->ref();
    }

    ~DataRef()
    {
    	if(data) data->deref();
    }

    const DATA* operator->() const
    {
    	return data;
    }

    const DATA* get() const
    {
    	return data;
    }


    DATA* access()
    {
    	if (!data->hasOneRef())
	{
	    data->deref();
	    data = new DATA(*data);
	    data->ref();
	}
	return data;
    }

    void init()
    {
    	data = new DATA;
	data->ref();
    }

    DataRef<DATA>& operator=(const DataRef<DATA>& d)
    {
    	if (data==d.data)
	    return *this;
    	if (data)
    	    data->deref();
    	data = d.data;

	data->ref();

	return *this;
    }

    bool operator == ( const DataRef<DATA> &o ) const {
	return (*data == *(o.data) );
    }
    bool operator != ( const DataRef<DATA> &o ) const {
	return (*data != *(o.data) );
    }

private:
    DATA* data;
};

enum PseudoState { PseudoUnknown, PseudoNone, PseudoAnyLink, PseudoLink, PseudoVisited};

//------------------------------------------------

//------------------------------------------------
// Box model attributes. Not inherited.

struct LengthBox
{
    LengthBox()
    {
    }
    LengthBox( LengthType t )
	: left( t ), right ( t ), top( t ), bottom( t ) {}

    Length left;
    Length right;
    Length top;
    Length bottom;
    Length& operator=(Length& len)
    {
    	left=len;
	right=len;
	top=len;
	bottom=len;
	return len;
    }

    bool operator==(const LengthBox& o) const
    {
    	return left==o.left && right==o.right && top==o.top && bottom==o.bottom;
    }


    bool nonZero() const { return left.value!=0 || right.value!=0 || top.value!=0 || bottom.value!=0; }
};



enum EPosition {
    STATIC, RELATIVE, ABSOLUTE, FIXED
};

enum EFloat {
    FNONE = 0, FLEFT, FRIGHT
};


//------------------------------------------------
// Border attributes. Not inherited.

// These have been defined in the order of their precedence for border-collapsing. Do
// not change this order!
enum EBorderStyle {
    BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE
};

class BorderValue
OOM_MODIFIED
{
public:
    BorderValue()
    {
	width = 3; // medium is default value
        style = BNONE;
    }
    QColor color;
    unsigned short width : 12;
    EBorderStyle style : 4;

    bool nonZero() const
    {
      // rikkus: workaround for gcc 2.95.3
      return width!=0 && !(style==BNONE);
    }

    bool isTransparent() const {
        return color.isValid() && qAlpha(color.rgb()) == 0;
    }
    
    bool operator==(const BorderValue& o) const
    {
    	return width==o.width && style==o.style && color==o.color;
    }

    bool operator!=(const BorderValue& o) const
    {
        return !(*this == o);
    }
};

class OutlineValue : public BorderValue
{
public:
    OutlineValue()
    {
        _offset = 0;
        _auto = false;
    }
    
    bool operator==(const OutlineValue& o) const
    {
    	return width==o.width && style==o.style && color==o.color && _offset == o._offset && _auto == o._auto;
    }
    
    bool operator!=(const OutlineValue& o) const
    {
        return !(*this == o);
    }
    
    int _offset;
    bool _auto;
};

enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };

struct CollapsedBorderValue
{
    CollapsedBorderValue() :border(0), precedence(BOFF) {}
    CollapsedBorderValue(const BorderValue* b, EBorderPrecedence p) :border(b), precedence(p) {}
    
    int width() const { return border && border->nonZero() ? border->width : 0; }
    EBorderStyle style() const { return border ? border->style : BHIDDEN; }
    bool exists() const { return border; }
    QColor color() const { return border ? border->color : QColor(); }
    bool isTransparent() const { return border ? border->isTransparent() : true; }
    
    bool operator==(const CollapsedBorderValue& o) const
    {
        if (!border) return !o.border;
        if (!o.border) return false;
        return *border == *o.border && precedence == o.precedence;
    }
    
    const BorderValue* border;
    EBorderPrecedence precedence;    
};

class BorderData
OOM_MODIFIED
{
public:
    BorderValue left;
    BorderValue right;
    BorderValue top;
    BorderValue bottom;

    bool hasBorder() const
    {
    	return left.nonZero() || right.nonZero() || top.nonZero() || bottom.nonZero();
    }

    bool operator==(const BorderData& o) const
    {
    	return left==o.left && right==o.right && top==o.top && bottom==o.bottom;
    }

};

enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };

class StyleSurroundData : public Shared<StyleSurroundData>
{
public:
    StyleSurroundData();

    StyleSurroundData(const StyleSurroundData& o );
    bool operator==(const StyleSurroundData& o) const;
    bool operator!=(const StyleSurroundData& o) const {
        return !(*this == o);
    }

    LengthBox offset;
    LengthBox margin;
    LengthBox padding;
    BorderData border;
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线电影| 26uuuu精品一区二区| 日韩免费高清视频| 亚洲天堂精品视频| 久久综合综合久久综合| 91啪亚洲精品| 久久精品一区八戒影视| 五月天久久比比资源色| www.亚洲激情.com| 欧美电视剧在线看免费| 亚洲一区二区偷拍精品| 成人av中文字幕| 久久久亚洲精品石原莉奈| 亚洲成国产人片在线观看| 99久久亚洲一区二区三区青草| 日韩欧美一级精品久久| 亚洲综合在线视频| 99国产欧美久久久精品| 久久久国产精品不卡| 日本不卡高清视频| 91精品久久久久久蜜臀| 亚洲五码中文字幕| 在线观看日韩av先锋影音电影院| 国产精品素人视频| 高清成人在线观看| 久久久美女毛片| 国产福利不卡视频| 亚洲精品一区二区三区99 | 欧美日韩激情一区二区三区| 国产精品三级视频| 成人午夜激情视频| 国产欧美日韩综合精品一区二区| 国内一区二区在线| 久久久精品黄色| 国产91高潮流白浆在线麻豆| 欧美精品一区二区三区蜜臀| 精品影院一区二区久久久| 2022国产精品视频| 成人小视频在线观看| 国产精品视频第一区| 成人性生交大片免费看视频在线| 久久久欧美精品sm网站| 成人av电影观看| 亚洲黄色在线视频| 欧美日韩中字一区| 蜜臀av一区二区在线观看 | 韩国精品主播一区二区在线观看| 日韩一区和二区| 精品亚洲成a人在线观看| 久久精品亚洲一区二区三区浴池| 高清日韩电视剧大全免费| 亚洲丝袜美腿综合| 欧美日韩一级黄| 蜜臀av亚洲一区中文字幕| 久久精品男人天堂av| 91视频观看视频| 日本亚洲三级在线| 久久久久久一二三区| 91小视频在线观看| 午夜精品一区二区三区三上悠亚 | 91久久精品一区二区| 亚洲国产综合视频在线观看| 日韩欧美的一区| 成人在线综合网站| 午夜精品一区在线观看| 国产日韩在线不卡| 欧美日韩一二区| 国产一区不卡在线| 亚洲一区二区三区在线播放| 日韩你懂的在线观看| 91视视频在线直接观看在线看网页在线看| 五月综合激情网| 久久先锋影音av| 在线观看亚洲精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲日本va午夜在线影院| 日韩一本二本av| 91丨porny丨户外露出| 久久99国产精品久久| 一级做a爱片久久| 精品国产凹凸成av人导航| 在线观看不卡一区| 丁香婷婷综合网| 蜜桃一区二区三区在线| 一区二区三区 在线观看视频| 精品99久久久久久| 在线电影一区二区三区| 色综合欧美在线| 国产精品一品二品| 三级久久三级久久| 亚洲最色的网站| 国产午夜亚洲精品午夜鲁丝片| 91精品国产色综合久久不卡蜜臀| 91亚洲永久精品| av中文字幕亚洲| 国产成人av一区二区| 久久精品72免费观看| 午夜精品久久久久久久久久| 亚洲欧美电影一区二区| 国产欧美精品国产国产专区| 日韩欧美一区电影| 欧美一区二区三区播放老司机| 99国产精品国产精品毛片| 国产精品中文字幕一区二区三区| 免费观看日韩电影| 亚洲1区2区3区4区| 亚洲福中文字幕伊人影院| 亚洲人成伊人成综合网小说| 中文字幕一区二区三区四区 | 午夜欧美2019年伦理| 亚洲福利一区二区| 亚洲综合在线免费观看| 亚洲国产精品麻豆| 亚洲五码中文字幕| 午夜精品福利久久久| 日本美女一区二区| 毛片基地黄久久久久久天堂| 美国毛片一区二区| 国产乱码精品一区二区三区忘忧草| 精品在线亚洲视频| 国产一区二区三区视频在线播放| 国产一区二区三区在线观看免费 | 激情小说欧美图片| 精品无码三级在线观看视频| 黑人精品欧美一区二区蜜桃| 国产精品一区二区三区四区| 成人免费视频一区二区| 99麻豆久久久国产精品免费| 色婷婷综合久久久中文一区二区 | 国产专区欧美精品| 国产成人在线电影| 成人综合在线观看| 日本久久电影网| 欧美日韩一区小说| 日韩三级电影网址| 久久久精品tv| 夜夜夜精品看看| 日韩成人免费电影| 国产成人av一区二区三区在线 | 粉嫩av亚洲一区二区图片| 成人小视频在线观看| 欧美在线你懂得| 欧美一区二区播放| 国产欧美日韩精品a在线观看| 亚洲欧美日韩国产手机在线| 亚洲成人动漫在线免费观看| 精品一区精品二区高清| 北岛玲一区二区三区四区| 欧美日本一道本| 久久免费视频色| 亚洲永久免费视频| 国产麻豆精品在线观看| 色噜噜夜夜夜综合网| 日韩精品影音先锋| 亚洲女人的天堂| 国产在线播放一区三区四| 日本韩国一区二区三区| 欧美一区二区免费观在线| 日本一区二区三区久久久久久久久不 | 久久国产精品99精品国产| 成人午夜又粗又硬又大| 欧美高清视频一二三区| 国产精品情趣视频| 奇米一区二区三区| 97aⅴ精品视频一二三区| 欧美一区二区三区播放老司机| 日韩毛片一二三区| 国产精品一区二区在线观看不卡| 国产亚洲美州欧州综合国 | 国产精品理论片| 日本不卡不码高清免费观看| 成人午夜在线视频| 日韩精品中文字幕一区二区三区 | 中文字幕成人av| 久久99久国产精品黄毛片色诱| 91浏览器入口在线观看| 国产欧美一二三区| 国内精品嫩模私拍在线| 欧美精品久久99| 亚洲综合av网| 91污片在线观看| 中文av字幕一区| 国产一区二区三区四| 欧美mv日韩mv国产| 强制捆绑调教一区二区| 欧美日韩一区久久| 亚洲一二三四在线观看| 91社区在线播放| 亚洲欧美二区三区| 91色在线porny| 亚洲色图制服丝袜| 豆国产96在线|亚洲| 久久精品欧美日韩精品| 国产精品456露脸| 久久嫩草精品久久久精品一| 韩国精品久久久| 久久综合狠狠综合久久综合88| 久久99久久99| 国产偷国产偷精品高清尤物| 国产精品影视在线观看|