117 lines
2.4 KiB
PHP
117 lines
2.4 KiB
PHP
<?php
|
|
|
|
require_once(HTML2PS_DIR.'value.generic.php');
|
|
|
|
class Value extends CSSValue {
|
|
/**
|
|
* Type of unit this value is measured with
|
|
*/
|
|
var $_unit;
|
|
var $_number;
|
|
var $_points;
|
|
|
|
function scale($scale) {
|
|
$this->_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;
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
?>
|