_number *= $scale; $this->_points *= $scale; } function ©() { $value =& new Value; $value->_unit = $this->_unit; $value->_number = $this->_number; $value->_points = $this->_points; return $value; } function getPoints() { return $this->_points; } function Value() { $this->_unit = UNIT_PT; $this->_number = 0; $this->_points = 0; } function &fromData($number, $unit) { $value =& new Value; $value->_unit = $unit; $value->_number = $number; $value->_points = 0; return $value; } /** * Create new object using data contained in string CSS value * representation */ function &fromString($string_value) { $value =& new Value; $value->_unit = $value->unit_from_string($string_value); $value->_number = (double)$string_value; $value->_points = 0; return $value; } /** * @static */ function unit_from_string($value) { $unit = substr($value, strlen($value)-2, 2); switch ($unit) { case 'pt': return UNIT_PT; case 'px': return UNIT_PX; case 'mm': return UNIT_MM; case 'cm': return UNIT_CM; case 'ex': return UNIT_EX; case 'em': return UNIT_EM; case 'in': return UNIT_IN; case 'pc': return UNIT_PC; default: return UNIT_NONE; } } function units2pt($font_size) { $this->_points = $this->toPt($font_size); } function toPt($font_size) { switch ($this->_unit) { case UNIT_PT: return pt2pt($this->_number); case UNIT_PX: return px2pt($this->_number); case UNIT_MM: return pt2pt(mm2pt($this->_number)); case UNIT_CM: return pt2pt(mm2pt($this->_number*10)); case UNIT_EM: return em2pt($this->_number, $font_size); case UNIT_EX: return ex2pt($this->_number, $font_size); case UNIT_IN: return pt2pt($this->_number * 72); // points used by CSS 2.1 are equal to 1/72nd of an inch. case UNIT_PC: return pt2pt($this->_number * 12); // 1 pica equals to 12 points. default: global $g_config; if ($g_config['mode'] === 'quirks') { return px2pt($this->_number); } else { return 0; }; }; } } ?>