当前位置: 首页>>代码示例>>PHP>>正文


PHP Renderer::stacking_first_pass方法代码示例

本文整理汇总了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);
     }
 }
开发者ID:bukastudio,项目名称:themes-2016,代码行数:78,代码来源:page_frame_reflower.cls.php


注:本文中的Renderer::stacking_first_pass方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。