has_attribute('checked');
$value = $root->get_attribute('value');
if (trim($value) == "") {
error_log("Radiobutton with empty 'value' attribute");
$value = sprintf("___Value%s",md5(time().rand()));
};
$css_state = $pipeline->get_current_css_state();
$box =& new RadioBox($checked, $value,
$css_state->get_property(CSS_HTML2PS_FORM_RADIOGROUP));
$box->readCSS($css_state);
return $box;
}
function RadioBox($checked, $value, $group_name) {
// Call parent constructor
$this->GenericBox();
// Check the box state
$this->_checked = $checked;
/**
* Store the form value for this radio button
*/
$this->_value = trim($value);
$this->_group_name = $group_name;
// Setup box size:
$this->default_baseline = units2pt(RADIOBUTTON_SIZE);
$this->height = units2pt(RADIOBUTTON_SIZE);
$this->width = units2pt(RADIOBUTTON_SIZE);
$this->setCSSProperty(CSS_DISPLAY,'-radio');
}
// Inherited from GenericFormattedBox
function get_min_width(&$context) {
return $this->get_full_width($context);
}
function get_max_width(&$context) {
return $this->get_full_width($context);
}
function get_max_width_natural(&$context) {
return $this->get_full_width($context);
}
function reflow(&$parent, &$context) {
GenericFormattedBox::reflow($parent, $context);
// set default baseline
$this->baseline = $this->default_baseline;
// append to parent line box
$parent->append_line($this);
// Determine coordinates of upper-left _margin_ corner
$this->guess_corner($parent);
// Offset parent current X coordinate
$parent->_current_x += $this->get_full_width();
// Extends parents height
$parent->extend_height($this->get_bottom_margin());
}
function show(&$driver) {
// Cet check center
$x = ($this->get_left() + $this->get_right()) / 2;
$y = ($this->get_top() + $this->get_bottom()) / 2;
// Calculate checkbox size
$size = $this->get_width() / 3;
// Draw checkbox
$driver->setlinewidth(0.25);
$driver->circle($x, $y, $size);
$driver->stroke();
/**
* Render the interactive button (if requested and possible)
* Also, if no value were specified, then this radio button should not be interactive
*/
global $g_config;
if ($g_config['renderforms'] && $this->_value != "") {
$driver->field_radio($x - $size,
$y + $size,
2*$size,
2*$size,
$this->_group_name,
$this->_value,
$this->_checked);
} else {
// Draw checkmark if needed
if ($this->_checked) {
$check_size = $this->get_width() / 6;
$driver->circle($x, $y, $check_size);
$driver->fill();
}
};
return true;
}
function get_ascender() {
return $this->get_height();
}
function get_descender() {
return 0;
}
}
?>