本文整理汇总了PHP中Renderer::stacking_first_pass方法的典型用法代码示例。如果您正苦于以下问题:PHP Renderer::stacking_first_pass方法的具体用法?PHP Renderer::stacking_first_pass怎么用?PHP Renderer::stacking_first_pass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Renderer
的用法示例。
在下文中一共展示了Renderer::stacking_first_pass方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: reflow
function reflow(Frame_Decorator $block = null)
{
$fixed_children = array();
$prev_child = null;
$child = $this->_frame->get_first_child();
$current_page = 0;
while ($child) {
$this->apply_page_style($this->_frame, $current_page + 1);
$style = $this->_frame->get_style();
$cb = $this->_frame->get_containing_block();
$left = $style->length_in_pt($style->margin_left, $cb["w"]);
$right = $style->length_in_pt($style->margin_right, $cb["w"]);
$top = $style->length_in_pt($style->margin_top, $cb["h"]);
$bottom = $style->length_in_pt($style->margin_bottom, $cb["h"]);
$content_x = $cb["x"] + $left;
$content_y = $cb["y"] + $top;
$content_width = $cb["w"] - $left - $right;
$content_height = $cb["h"] - $top - $bottom;
if ($current_page == 0) {
$children = $child->get_children();
foreach ($children as $onechild) {
if ($onechild->get_style()->position === "fixed") {
$fixed_children[] = $onechild->deep_copy();
}
}
$fixed_children = array_reverse($fixed_children);
}
$child->set_containing_block($content_x, $content_y, $content_width, $content_height);
$this->_check_callbacks("begin_page_reflow", $child);
if ($current_page >= 1) {
foreach ($fixed_children as $fixed_child) {
$child->insert_child_before($fixed_child->deep_copy(), $child->get_first_child());
}
}
$child->reflow();
$next_child = $child->get_next_sibling();
$this->_check_callbacks("begin_page_render", $child);
$renderer = $this->_frame->get_renderer();
$renderer->render($child);
Renderer::$stacking_first_pass = false;
ksort($this->_stacking_context);
foreach ($this->_stacking_context as $_frames) {
foreach ($_frames as $_frame) {
$renderer->render($_frame);
}
}
Renderer::$stacking_first_pass = true;
$this->_stacking_context = array();
$this->_check_callbacks("end_page_render", $child);
if ($next_child) {
$this->_frame->next_page();
}
if ($prev_child) {
$prev_child->dispose(true);
}
$prev_child = $child;
$child = $next_child;
$current_page++;
}
if ($prev_child) {
$prev_child->dispose(true);
}
}
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:63,代码来源:page_frame_reflower.cls.php
示例2: reflow
/**
* Paged layout:
* http://www.w3.org/TR/CSS21/page.html
*/
function reflow(Frame_Decorator $block = null)
{
$fixed_children = array();
$prev_child = null;
$child = $this->_frame->get_first_child();
$current_page = 0;
while ($child) {
$this->apply_page_style($this->_frame, $current_page + 1);
$style = $this->_frame->get_style();
// Pages are only concerned with margins
$cb = $this->_frame->get_containing_block();
$left = $style->length_in_pt($style->margin_left, $cb["w"]);
$right = $style->length_in_pt($style->margin_right, $cb["w"]);
$top = $style->length_in_pt($style->margin_top, $cb["h"]);
$bottom = $style->length_in_pt($style->margin_bottom, $cb["h"]);
$content_x = $cb["x"] + $left;
$content_y = $cb["y"] + $top;
$content_width = $cb["w"] - $left - $right;
$content_height = $cb["h"] - $top - $bottom;
// Only if it's the first page, we save the nodes with a fixed position
if ($current_page == 0) {
$children = $child->get_children();
foreach ($children as $onechild) {
if ($onechild->get_style()->position === "fixed") {
$fixed_children[] = $onechild->deep_copy();
}
}
$fixed_children = array_reverse($fixed_children);
}
$child->set_containing_block($content_x, $content_y, $content_width, $content_height);
// Check for begin reflow callback
$this->_check_callbacks("begin_page_reflow", $child);
//Insert a copy of each node which have a fixed position
if ($current_page >= 1) {
foreach ($fixed_children as $fixed_child) {
$child->insert_child_before($fixed_child->deep_copy(), $child->get_first_child());
}
}
$child->reflow();
$next_child = $child->get_next_sibling();
// Check for begin render callback
$this->_check_callbacks("begin_page_render", $child);
$renderer = $this->_frame->get_renderer();
// Render the page
$renderer->render($child);
Renderer::$stacking_first_pass = false;
// http://www.w3.org/TR/CSS21/visuren.html#z-index
ksort($this->_stacking_context);
foreach ($this->_stacking_context as $_frames) {
foreach ($_frames as $_frame) {
$renderer->render($_frame);
}
}
Renderer::$stacking_first_pass = true;
$this->_stacking_context = array();
// Check for end render callback
$this->_check_callbacks("end_page_render", $child);
if ($next_child) {
$this->_frame->next_page();
}
// Wait to dispose of all frames on the previous page
// so callback will have access to them
if ($prev_child) {
$prev_child->dispose(true);
}
$prev_child = $child;
$child = $next_child;
$current_page++;
}
// Dispose of previous page if it still exists
if ($prev_child) {
$prev_child->dispose(true);
}
}