添加一条属性,它能够绘制一个矩形框。它可以指定矩形边的颜色,边的宽度,边的样式,以及矩形区域。如:
picl:blue solid 2px rect(100px 300px 300px 100px);
picl为属性名称,blue为边的颜色,solid为边 的样式,2px为边的宽度,rect(100px 300px 200px 50px)为矩形区域。
步骤:
(1).通过在 css/CSSPropertyNames.in文件中增加一个属性名的关键字;
(2).使用perl命令(#perl makeprop.pl),生成对应的.cpp和.h文件,这两个文件包含了属性名和属性ID,以及属性名的查找规则;
(3).将(2)中生成 的两个文件拷贝到generated/ 目录下;
(4).在CSSStyleSelector.cpp, CSSParser.cpp两个文件中提供了属性ID对应的接口:(中间一些具体处理不详细阐述,这里只说明总体步骤)
a.在 CSSParser.cpp中的“bool CSSParser::parseValue(int propId, bool important)”函数中增加“case CSSPropertyPicl: ”以及对应的处理代码,它是网页上css样式中我们自定义属性“picl”的解析的入口;
说明:以此函数为起点,将picl中各种值进行解析,判 断值是否合法。如果合法,将其进行保存,保存后会更新css样式。我们所关心的是如何取出picl属性的各个值,以及怎样进行保存,我们不必去修改与样式 更新有关的代码,当解析完后,浏览器会更新css样式,丢弃无效的样式,只保留合法(有效)的样式。由于picl属性是复合属性,添加本条属性只需调用这 个文件中的“bool CSSParser::parseShorthand(int propId, const int *properties, int numProperties, bool important)”函数,它就会完成它里面对应的各种单一属性的解析。
b.如果属性是单一 属性,必须在CSSStyleSelector.cpp中的“void CSSStyleSelector::applyProperty(int id, CSSValue *value)”函数中添加对应的case语句,它是css样式执行的入口。由于我们添加的属性是一条复合属性,它在执行时会通过它里面的单一属性进行执 行。因此,在CSSStyleSelector.cpp中的“void CSSStyleSelector::applyProperty(int id, CSSValue *value)”函数中不必添加本条属性对应的case语句。
说明:我借助了border属性的方法来保存“边的颜 色,边的宽度,边的样式”,我们主要需要做的是对矩形值的处理,以及设置一个执行我们的“picl”属性的标志。我添加了一个单一属性:hic,它主要保 存矩形的四个值。在CSSStyleSelector.cpp中,“边的颜色,边的宽度,边的样式”这三个值由类似border属性处理方式进行了传递, 矩形的值通过“ case CSSPropertyHic: ”来传递,当“picl”属性的标志被激活时,则取出picl属性的各个值,做如下处理:
paintInfo.context->setStrokeColor(); 设置边的颜色;
paintInfo.context->setStrokeThickness(); 设置边的宽度;
paintInfo.context->setStrokeStyle(); 设置边边的样式;
paintInfo.context->drawLine() 画矩形的一条边,需要画四次。
修改的文件:
(1).webkit/WebCore/css/CSSPropertyNames.in 中,在文件末尾增加如下两行:
hic;
picl;
(2).webkit/WebCore/css/CSSParser.cpp 中,CSSParser::parseValue()函数中增加“case CSSPropertyPicl: ”以及对应的处理代码。如下:
case CSSPropertyPicl: {
const int properties4 = { CSSPropertyBorderWidth, CSSPropertyBorderStyle,
CSSPropertyBorderColor, CSSPropertyHic};
return parseShorthand(propId, properties, 4, important);
}
(3).webkit/WebCore /css/CSSStyleSelector.cpp中,CSSStyleSelector::applyProperty()函数中添加对应的 “case CSSPropertyHic: ”,这里取出矩形的四条边的值,并传送到下面。
(4).webkit/WebCore /rendering/RenderObject.h中添加hasHic(),getHicRect()两个函数的定义。
(5).webkit/WebCore /rendering/style/RenderStyle.h中添加如下几个函数:
Length hicLeft() const { return visual->hic.left(); }
Length hicRight() const { return visual->hic.right(); }
Length hicTop() const { return visual->hic.top(); }
Length hicBottom() const { return visual->hic.bottom(); }
LengthBox hic() const { return visual->hic; }
bool hasHic() const { return visual->hasHic; }
void setHasHic(bool b =true) { SET_VAR(visual, hasHic, b) }
void setHic(Length top, Length right, Length bottom, Length left);
(6).webkit/WebCore /rendering/style/RenderStyle.cpp中添加setHic()函数的实现;
(7).webkit/WebCore /rendering/style/StyleVisualData.h中添加:
LengthBox hic;
bool hasHic : 1; //hasHic
(8).webkit/WebCore/rendering/RendBox.h中添加:
virtual IntRect getHicRect(int tx, int ty);
(9).webkit/WebCore/rendering /RendBox.cpp中,RenderBox::paintBoxDecorations()函数中添加画矩形的实现,以及getHicRect() 函数的实现
picl:blue solid 2px rect(100px 300px 300px 100px);
picl为属性名称,blue为边的颜色,solid为边 的样式,2px为边的宽度,rect(100px 300px 200px 50px)为矩形区域。
步骤:
(1).通过在 css/CSSPropertyNames.in文件中增加一个属性名的关键字;
(2).使用perl命令(#perl makeprop.pl),生成对应的.cpp和.h文件,这两个文件包含了属性名和属性ID,以及属性名的查找规则;
(3).将(2)中生成 的两个文件拷贝到generated/ 目录下;
(4).在CSSStyleSelector.cpp, CSSParser.cpp两个文件中提供了属性ID对应的接口:(中间一些具体处理不详细阐述,这里只说明总体步骤)
a.在 CSSParser.cpp中的“bool CSSParser::parseValue(int propId, bool important)”函数中增加“case CSSPropertyPicl: ”以及对应的处理代码,它是网页上css样式中我们自定义属性“picl”的解析的入口;
说明:以此函数为起点,将picl中各种值进行解析,判 断值是否合法。如果合法,将其进行保存,保存后会更新css样式。我们所关心的是如何取出picl属性的各个值,以及怎样进行保存,我们不必去修改与样式 更新有关的代码,当解析完后,浏览器会更新css样式,丢弃无效的样式,只保留合法(有效)的样式。由于picl属性是复合属性,添加本条属性只需调用这 个文件中的“bool CSSParser::parseShorthand(int propId, const int *properties, int numProperties, bool important)”函数,它就会完成它里面对应的各种单一属性的解析。
b.如果属性是单一 属性,必须在CSSStyleSelector.cpp中的“void CSSStyleSelector::applyProperty(int id, CSSValue *value)”函数中添加对应的case语句,它是css样式执行的入口。由于我们添加的属性是一条复合属性,它在执行时会通过它里面的单一属性进行执 行。因此,在CSSStyleSelector.cpp中的“void CSSStyleSelector::applyProperty(int id, CSSValue *value)”函数中不必添加本条属性对应的case语句。
说明:我借助了border属性的方法来保存“边的颜 色,边的宽度,边的样式”,我们主要需要做的是对矩形值的处理,以及设置一个执行我们的“picl”属性的标志。我添加了一个单一属性:hic,它主要保 存矩形的四个值。在CSSStyleSelector.cpp中,“边的颜色,边的宽度,边的样式”这三个值由类似border属性处理方式进行了传递, 矩形的值通过“ case CSSPropertyHic: ”来传递,当“picl”属性的标志被激活时,则取出picl属性的各个值,做如下处理:
paintInfo.context->setStrokeColor(); 设置边的颜色;
paintInfo.context->setStrokeThickness(); 设置边的宽度;
paintInfo.context->setStrokeStyle(); 设置边边的样式;
paintInfo.context->drawLine() 画矩形的一条边,需要画四次。
修改的文件:
(1).webkit/WebCore/css/CSSPropertyNames.in 中,在文件末尾增加如下两行:
hic;
picl;
(2).webkit/WebCore/css/CSSParser.cpp 中,CSSParser::parseValue()函数中增加“case CSSPropertyPicl: ”以及对应的处理代码。如下:
case CSSPropertyPicl: {
const int properties4 = { CSSPropertyBorderWidth, CSSPropertyBorderStyle,
CSSPropertyBorderColor, CSSPropertyHic};
return parseShorthand(propId, properties, 4, important);
}
(3).webkit/WebCore /css/CSSStyleSelector.cpp中,CSSStyleSelector::applyProperty()函数中添加对应的 “case CSSPropertyHic: ”,这里取出矩形的四条边的值,并传送到下面。
(4).webkit/WebCore /rendering/RenderObject.h中添加hasHic(),getHicRect()两个函数的定义。
(5).webkit/WebCore /rendering/style/RenderStyle.h中添加如下几个函数:
Length hicLeft() const { return visual->hic.left(); }
Length hicRight() const { return visual->hic.right(); }
Length hicTop() const { return visual->hic.top(); }
Length hicBottom() const { return visual->hic.bottom(); }
LengthBox hic() const { return visual->hic; }
bool hasHic() const { return visual->hasHic; }
void setHasHic(bool b =true) { SET_VAR(visual, hasHic, b) }
void setHic(Length top, Length right, Length bottom, Length left);
(6).webkit/WebCore /rendering/style/RenderStyle.cpp中添加setHic()函数的实现;
(7).webkit/WebCore /rendering/style/StyleVisualData.h中添加:
LengthBox hic;
bool hasHic : 1; //hasHic
(8).webkit/WebCore/rendering/RendBox.h中添加:
virtual IntRect getHicRect(int tx, int ty);
(9).webkit/WebCore/rendering /RendBox.cpp中,RenderBox::paintBoxDecorations()函数中添加画矩形的实现,以及getHicRect() 函数的实现
标签:
css,添加属性,矩形框
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“css添加一条属性能够绘制一个矩形框”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]