Files
luos/thirdparty/html2ps_pdf/box.radiobutton.php

148 lines
3.9 KiB
PHP
Raw Normal View History

2010-12-02 23:34:41 +00:00
<?php
// $Header: /cvsroot/html2ps/box.radiobutton.php,v 1.20 2006/11/11 13:43:51 Konstantin Exp $
require_once(HTML2PS_DIR.'box.inline.simple.php');
class RadioBox extends SimpleInlineBox {
var $_checked;
/**
* @var String name of radio button group
* @access private
*/
var $_group_name;
/**
* @var String value to be posted as this radio button value
* @access private
*/
var $_value;
function &create(&$root, &$pipeline) {
2017-08-02 16:06:56 -04:00
if(!class_exists('G')){
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
$docuroot = explode( '/', $realdocuroot );
array_pop( $docuroot );
$pathhome = implode( '/', $docuroot ) . '/';
array_pop( $docuroot );
$pathTrunk = implode( '/', $docuroot ) . '/';
require_once($pathTrunk.'gulliver/system/class.g.php');
}
2010-12-02 23:34:41 +00:00
$checked = $root->has_attribute('checked');
$value = $root->get_attribute('value');
if (trim($value) == "") {
error_log("Radiobutton with empty 'value' attribute");
$value = sprintf("___Value%s",G::encryptOld(time().rand()));
2010-12-02 23:34:41 +00:00
};
$css_state = $pipeline->getCurrentCSSState();
$box =& new RadioBox($checked, $value,
$css_state->getProperty(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;
}
}
?>