本文整理汇总了PHP中Frame::get_first_child方法的典型用法代码示例。如果您正苦于以下问题:PHP Frame::get_first_child方法的具体用法?PHP Frame::get_first_child怎么用?PHP Frame::get_first_child使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Frame
的用法示例。
在下文中一共展示了Frame::get_first_child方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
function get_min_max_width()
{
if (!is_null($this->_min_max_cache)) {
return $this->_min_max_cache;
}
$style = $this->_frame->get_style();
// Account for margins & padding
$dims = array($style->padding_left, $style->padding_right, $style->border_left_width, $style->border_right_width, $style->margin_left, $style->margin_right);
$cb_w = $this->_frame->get_containing_block("w");
$delta = $style->length_in_pt($dims, $cb_w);
// Handle degenerate case
if (!$this->_frame->get_first_child()) {
return $this->_min_max_cache = array($delta, $delta, "min" => $delta, "max" => $delta);
}
$low = array();
$high = array();
for ($iter = $this->_frame->get_children()->getIterator(); $iter->valid(); $iter->next()) {
$inline_min = 0;
$inline_max = 0;
// Add all adjacent inline widths together to calculate max width
while ($iter->valid() && in_array($iter->current()->get_style()->display, Style::$INLINE_TYPES)) {
$child = $iter->current();
$minmax = $child->get_min_max_width();
if (in_array($iter->current()->get_style()->white_space, array("pre", "nowrap"))) {
$inline_min += $minmax["min"];
} else {
$low[] = $minmax["min"];
}
$inline_max += $minmax["max"];
$iter->next();
}
if ($inline_max > 0) {
$high[] = $inline_max;
}
if ($inline_min > 0) {
$low[] = $inline_min;
}
if ($iter->valid()) {
list($low[], $high[]) = $iter->current()->get_min_max_width();
continue;
}
}
$min = count($low) ? max($low) : 0;
$max = count($high) ? max($high) : 0;
// Use specified width if it is greater than the minimum defined by the
// content. If the width is a percentage ignore it for now.
$width = $style->width;
if ($width !== "auto" && !is_percent($width)) {
$width = $style->length_in_pt($width, $cb_w);
if ($min < $width) {
$min = $width;
}
if ($max < $width) {
$max = $width;
}
}
$min += $delta;
$max += $delta;
return $this->_min_max_cache = array($min, $max, "min" => $min, "max" => $max);
}
示例2: while
function get_first_child()
{
$c = $this->_frame->get_first_child();
if ($c && ($deco = $c->get_decorator())) {
while ($tmp = $deco->get_decorator()) {
$deco = $tmp;
}
return $deco;
} else {
if ($c) {
return $c;
} else {
return null;
}
}
}
示例3: while
/**
* @return Frame_Decorator
*/
function find_positionned_parent()
{
// Find our nearest relative positionned parent
$p = $this->get_parent();
while ($p) {
if ($p->is_positionned()) {
break;
}
$p = $p->get_parent();
}
if (!$p) {
$p = $this->_root->get_first_child();
// <body>
}
return $this->_positionned_parent = $p;
}
示例4: render
/**
* Render all frames recursively
*
* @param Frame $root the root frame
*/
function render(Frame $root)
{
// count() doesn't work on iterated elements
// FIXME: look into the ArrayAccess interface - need 5.1 for SPL better
// support.
$count = 0;
foreach ($root->get_children() as $page) {
$count++;
}
$this->_canvas->set_page_count($count);
// Create pages
foreach ($root->get_children() as $page) {
if ($page !== $root->get_first_child()) {
$this->_canvas->new_page();
}
$this->_render_frame($page);
}
}
示例5: while
/**
*
* @return Frame_Decorator
*/
function find_positionned_parent()
{
/*
* if ( $this->_positionned_parent && !isset($this->_block_parent->_splitted) ) { return $this->_positionned_parent; }
*/
// Find our nearest relative positionned parent
$p = $this->get_parent();
while ($p) {
if ($p->is_positionned()) {
break;
}
$p = $p->get_parent();
}
if (!$p) {
$p = $this->_root->get_first_child();
// <body>
}
return $this->_positionned_parent = $p;
}
示例6: render
function render(Frame $frame)
{
$style = $frame->get_style();
if (!$frame->get_first_child()) {
return;
}
// No children, no service
// Draw the left border if applicable
$bp = $style->get_border_properties();
$widths = array($style->length_in_pt($bp["top"]["width"]), $style->length_in_pt($bp["right"]["width"]), $style->length_in_pt($bp["bottom"]["width"]), $style->length_in_pt($bp["left"]["width"]));
// Draw the background & border behind each child. To do this we need
// to figure out just how much space each child takes:
list($x, $y) = $frame->get_first_child()->get_position();
$w = null;
$h = 0;
// $x += $widths[3];
// $y += $widths[0];
$this->_set_opacity($frame->get_opacity($style->opacity));
$first_row = true;
foreach ($frame->get_children() as $child) {
list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box();
if (!is_null($w) && $child_x < $x + $w) {
//This branch seems to be supposed to being called on the first part
//of an inline html element, and the part after the if clause for the
//parts after a line break.
//But because $w initially mostly is 0, and gets updated only on the next
//round, this seem to be never executed and the common close always.
// The next child is on another line. Draw the background &
// borders on this line.
// Background:
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x, $y, $w, $h, $bg);
}
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x, $y, $w, $h, $style);
}
// If this is the first row, draw the left border
if ($first_row) {
if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $bp["left"]["width"] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left");
}
$first_row = false;
}
// Draw the top & bottom borders
if ($bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $bp["top"]["width"] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $bp["bottom"]["width"] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom");
}
// Handle anchors & links
$link_node = null;
if ($frame->get_node()->nodeName === "a") {
$link_node = $frame->get_node();
} else {
if ($frame->get_parent()->get_node()->nodeName === "a") {
$link_node = $frame->get_parent()->get_node();
}
}
if ($link_node && ($href = $link_node->getAttribute("href"))) {
$this->_canvas->add_link($href, $x, $y, $w, $h);
}
$x = $child_x;
$y = $child_y;
$w = $child_w;
$h = $child_h;
continue;
}
if (is_null($w)) {
$w = $child_w;
} else {
$w += $child_w;
}
$h = max($h, $child_h);
if (DEBUG_LAYOUT && DEBUG_LAYOUT_INLINE) {
$this->_debug_layout($child->get_border_box(), "blue");
if (DEBUG_LAYOUT_PADDINGBOX) {
$this->_debug_layout($child->get_padding_box(), "blue", array(0.5, 0.5));
}
}
}
// Handle the last child
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x + $widths[3], $y + $widths[0], $w, $h, $bg);
}
//On continuation lines (after line break) of inline elements, the style got copied.
//But a non repeatable background image should not be repeated on the next line.
//But removing the background image above has never an effect, and removing it below
//removes it always, even on the initial line.
//Need to handle it elsewhere, e.g. on certain ...clone()... usages.
// Repeat not given: default is Style::__construct
// ... && (!($repeat = $style->background_repeat) || $repeat === "repeat" ...
//different position? $this->_background_image($url, $x, $y, $w, $h, $style);
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style);
}
// Add the border widths
//.........这里部分代码省略.........
示例7:
function __construct(Frame $frame)
{
$this->_parent = $frame;
$this->_cur = $frame->get_first_child();
$this->_num = 0;
}
示例8: rewind
function rewind()
{
$this->_cur = $this->_parent->get_first_child();
$this->_num = 0;
}
示例9: while
/**
* Remove a row group from the cellmap.
*
* @param Frame $group The group to remove
*/
function remove_row_group(Frame $group)
{
$key = $group->get_id();
if (!isset($this->_frames[$key])) {
return;
}
// Presumably this row has alredy been removed
$iter = $group->get_first_child();
while ($iter) {
$this->remove_row($iter);
$iter = $iter->get_next_sibling();
}
unset($this->_frames[$key]);
}
示例10: render
function render(Frame $frame)
{
$style = $frame->get_style();
if (!$frame->get_first_child()) {
return;
}
// No children, no service
// Draw the left border if applicable
$bp = $style->get_border_properties();
$widths = array($style->length_in_pt($bp["top"]["width"]), $style->length_in_pt($bp["right"]["width"]), $style->length_in_pt($bp["bottom"]["width"]), $style->length_in_pt($bp["left"]["width"]));
// Draw the background & border behind each child. To do this we need
// to figure out just how much space each child takes:
list($x, $y) = $frame->get_first_child()->get_position();
$w = null;
$h = 0;
$x += $widths[3];
$y += $widths[0];
$first_row = true;
foreach ($frame->get_children() as $child) {
list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box();
$child_h += $widths[2];
if (!is_null($w) && $child_x < $x + $w) {
// The next child is on another line. Draw the background on this line.
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x, $y, $w, $h, $style->background_color);
}
// If this is the first row, draw the left border
if ($first_row) {
if ($bp["left"]["style"] != "none" && $bp["left"]["width"] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h, $bp["left"]["color"], $widths, "left");
}
$first_row = false;
}
// Draw the top & bottom borders
if ($bp["top"]["style"] != "none" && $bp["top"]["width"] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w, $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] != "none" && $bp["bottom"]["width"] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom");
}
$x = $child_x + $widths[3];
$y = $child_y + $widths[0];
$w = $child_w;
$h = $child_h;
continue;
}
if (is_null($w)) {
$w = $child_w;
} else {
$w += $child_w;
}
$h = max($h, $child_h);
}
// Handle the last child
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x, $y, $w, $h, $style->background_color);
}
// If this is the first row, draw the left border too
if ($first_row && $bp["left"]["style"] != "none" && $widths[3] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h, $bp["left"]["color"], $widths, "left");
}
// Draw the top & bottom borders
if ($bp["top"]["style"] != "none" && $widths[0] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w, $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] != "none" && $widths[2] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom");
}
// Draw the right border
if ($bp["right"]["style"] != "none" && $widths[1] > 0) {
$method = "_border_" . $bp["right"]["style"];
$this->{$method}($x + $w, $y, $h, $bp["right"]["color"], $widths, "right");
}
}
示例11: render
function render(Frame $frame)
{
$style = $frame->get_style();
if (!$frame->get_first_child()) {
return;
}
$bp = $style->get_border_properties();
$widths = array($style->length_in_pt($bp["top"]["width"]), $style->length_in_pt($bp["right"]["width"]), $style->length_in_pt($bp["bottom"]["width"]), $style->length_in_pt($bp["left"]["width"]));
list($x, $y) = $frame->get_first_child()->get_position();
$w = null;
$h = 0;
$this->_set_opacity($frame->get_opacity($style->opacity));
$first_row = true;
foreach ($frame->get_children() as $child) {
list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box();
if (!is_null($w) && $child_x < $x + $w) {
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x, $y, $w, $h, $bg);
}
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x, $y, $w, $h, $style);
}
if ($first_row) {
if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $bp["left"]["width"] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left");
}
$first_row = false;
}
if ($bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $bp["top"]["width"] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $bp["bottom"]["width"] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom");
}
$link_node = null;
if ($frame->get_node()->nodeName === "a") {
$link_node = $frame->get_node();
} else {
if ($frame->get_parent()->get_node()->nodeName === "a") {
$link_node = $frame->get_parent()->get_node();
}
}
if ($link_node && ($href = $link_node->getAttribute("href"))) {
$this->_canvas->add_link($href, $x, $y, $w, $h);
}
$x = $child_x;
$y = $child_y;
$w = $child_w;
$h = $child_h;
continue;
}
if (is_null($w)) {
$w = $child_w;
} else {
$w += $child_w;
}
$h = max($h, $child_h);
}
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x + $widths[3], $y + $widths[0], $w, $h, $bg);
}
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style);
}
$w += $widths[1] + $widths[3];
$h += $widths[0] + $widths[2];
$left_margin = $style->length_in_pt($style->margin_left);
$x += $left_margin;
if ($first_row && $bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h, $bp["left"]["color"], $widths, "left");
}
if ($bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $widths[0] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w, $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $widths[2] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom");
}
if ($bp["right"]["style"] !== "none" && $bp["right"]["color"] !== "transparent" && $widths[1] > 0) {
$method = "_border_" . $bp["right"]["style"];
$this->{$method}($x + $w, $y, $h, $bp["right"]["color"], $widths, "right");
}
$link_node = null;
if ($frame->get_node()->nodeName === "a") {
$link_node = $frame->get_node();
if (($name = $link_node->getAttribute("name")) || ($name = $link_node->getAttribute("id"))) {
$this->_canvas->add_named_dest($name);
}
}
if ($frame->get_parent() && $frame->get_parent()->get_node()->nodeName === "a") {
$link_node = $frame->get_parent()->get_node();
}
if ($link_node) {
if ($href = $link_node->getAttribute("href")) {
$this->_canvas->add_link($href, $x, $y, $w, $h);
//.........这里部分代码省略.........
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:101,代码来源:inline_renderer.cls.php
示例12: render
function render(Frame $frame)
{
$style = $frame->get_style();
if (!$frame->get_first_child()) {
return;
}
// No children, no service
// Draw the left border if applicable
$bp = $style->get_border_properties();
$widths = array($style->length_in_pt($bp["top"]["width"]), $style->length_in_pt($bp["right"]["width"]), $style->length_in_pt($bp["bottom"]["width"]), $style->length_in_pt($bp["left"]["width"]));
// Draw the background & border behind each child. To do this we need
// to figure out just how much space each child takes:
list($x, $y) = $frame->get_first_child()->get_position();
$w = null;
$h = 0;
// $x += $widths[3];
// $y += $widths[0];
$first_row = true;
foreach ($frame->get_children() as $child) {
list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box();
$child_h += $widths[2];
if (!is_null($w) && $child_x < $x + $w) {
// The next child is on another line. Draw the background &
// borders on this line.
// Background:
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x, $y, $w, $h, $style->background_color);
}
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x, $y, $w, $h, $style);
}
// If this is the first row, draw the left border
if ($first_row) {
if ($bp["left"]["style"] != "none" && $bp["left"]["width"] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left");
}
$first_row = false;
}
// Draw the top & bottom borders
if ($bp["top"]["style"] != "none" && $bp["top"]["width"] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] != "none" && $bp["bottom"]["width"] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom");
}
// Handle anchors & links
if ($frame->get_node()->nodeName == "a") {
if ($href = $frame->get_node()->getAttribute("href")) {
$this->_canvas->add_link($href, $x, $y, $w, $h);
}
}
$x = $child_x;
$y = $child_y;
$w = $child_w;
$h = $child_h;
continue;
}
if (is_null($w)) {
$w = $child_w;
} else {
$w += $child_w;
}
$h = max($h, $child_h);
}
// Handle the last child
if (($bg = $style->background_color) !== "transparent") {
$this->_canvas->filled_rectangle($x + $widths[3], $y + $widths[0], $w, $h, $style->background_color);
}
if (($url = $style->background_image) && $url !== "none") {
$this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style);
}
// Add the border widths
$w += $widths[1] + $widths[3];
$h += $widths[0] + $widths[2];
// make sure the border and background start inside the left margin
$left_margin = $style->length_in_pt($style->margin_left);
$x += $left_margin;
// If this is the first row, draw the left border too
if ($first_row && $bp["left"]["style"] != "none" && $widths[3] > 0) {
$method = "_border_" . $bp["left"]["style"];
$this->{$method}($x, $y, $h, $bp["left"]["color"], $widths, "left");
}
// Draw the top & bottom borders
if ($bp["top"]["style"] != "none" && $widths[0] > 0) {
$method = "_border_" . $bp["top"]["style"];
$this->{$method}($x, $y, $w, $bp["top"]["color"], $widths, "top");
}
if ($bp["bottom"]["style"] != "none" && $widths[2] > 0) {
$method = "_border_" . $bp["bottom"]["style"];
$this->{$method}($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom");
}
// pre_var_dump(get_class($frame->get_next_sibling()));
// $last_row = get_class($frame->get_next_sibling()) != 'Inline_Frame_Decorator';
// Draw the right border if this is the last row
if ($bp["right"]["style"] != "none" && $widths[1] > 0) {
$method = "_border_" . $bp["right"]["style"];
$this->{$method}($x + $w, $y, $h, $bp["right"]["color"], $widths, "right");
//.........这里部分代码省略.........
示例13: while
function remove_row_group(Frame $group)
{
$key = $group->get_id();
if (!isset($this->_frames[$key])) {
return;
}
$iter = $group->get_first_child();
while ($iter) {
$this->remove_row($iter);
$iter = $iter->get_next_sibling();
}
$this->_frames[$key] = null;
unset($this->_frames[$key]);
}
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:14,代码来源:cellmap.cls.php