_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;
};
};
}
}
?>