WebKit源码解析之WebCore::Length

来源:互联网 发布:淘宝装修的图片哪里找 编辑:程序博客网 时间:2024/04/28 13:17

转载,请注明出处!

     这是一个struct结构体,用来表示长度类型。在分析这个类之前,有必要叙述一下长度的相关概念。

     一般来说,长度的样式就是”digit unitType”。CSS规范中将长度分为了多种类型:1)auto类型、2)相对类型、3)绝对类型、4)百分数、5)内置类型最大数值、6)内置类型最小数值、7)Undefined类型。
     相对类型是指em和ex两个单位。如果长度形如”xx em”或”xx ex”,那么此时长度就是相对类型长度。ex就是字符”x”的高度。如果是1ex,那么长度值等于1 * height(‘x’)。如果是2ex,那么长度等于2 * height(‘x’)。em就是字体的大小。如果是1em,那么长度就是1 * font-size。如果是2em,那么长度等于2 * font-size。注:如果ex用于font-size属性,那么ex是指父节点的字体大小。
     绝对类型是指如下6种类型:1)in, 表示英寸,等于2.54厘米;2)cm, 表示厘米;3)mm, 表示毫米;4)pt, 表示点,等于1/72英寸;5)pc, 等于12pt;6)px,表示像素,等于0.75pt。
     百分数形如”xx%”。一般情况下百分数会对应着一个基准值。

     此结构体具有的属性有四个:1)union空间,既可以存储整型数值,也可以存储浮点型数值;2)布尔类型变量m_quirk,如果此变量为true,说明按照“怪异模式”布局;3)表示长度类型的成员变量m_type;4)布尔类型m_isFloat,如果union空间存储的是浮点型数值,那么此成员变量为true。
     本结构体具有如下几种类型的方法。

  • 构造函数。本类型具有多个构造函数,具有默认构造函数,可以只传递长度类型创建Length对象,可以传递数值以及长度类型创建Length对象,还可以传递数值、长度类型、怪异模式标志创建Length对象。
  • 重载操作符。重载了3个操作符,具体为:相等操作符、不等操作符、乘赋值操作符。
  • 查询函数。可以查询union空间存储的数值、可以查询Length对象的类型、也可以查询布局方式是否为“怪异模式”。
  • 修改Length对象。可以重新修改Length对象的布局方式,也可以修改Length对象union空间存储的数值。
  • 根据指定的基准值,解析百分数、auto两种类型的Length对象。

原创粉丝点击