/var/www/hkosl.com/littleark/webadmin/libraies/dompdf/dompdf/src/FrameDecorator/TableCell.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
/**
 * @package dompdf
 * @link    http://dompdf.github.com/
 * @author  Benj Carson <benjcarson@digitaljunkies.ca>
 * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
 */
namespace Dompdf\FrameDecorator;

use 
Dompdf\Dompdf;
use 
Dompdf\Frame;
use 
Dompdf\FrameDecorator\Block as BlockFrameDecorator;

/**
 * Decorates table cells for layout
 *
 * @package dompdf
 */
class TableCell extends BlockFrameDecorator
{

    protected 
$_resolved_borders;
    protected 
$_content_height;

    
//........................................................................

    
function __construct(Frame $frameDompdf $dompdf)
    {
        
parent::__construct($frame$dompdf);
        
$this->_resolved_borders = array();
        
$this->_content_height 0;
    }

    
//........................................................................

    
function reset()
    {
        
parent::reset();
        
$this->_resolved_borders = array();
        
$this->_content_height 0;
        
$this->_frame->reset();
    }

    function 
get_content_height()
    {
        return 
$this->_content_height;
    }

    function 
set_content_height($height)
    {
        
$this->_content_height $height;
    }

    function 
set_cell_height($height)
    {
        
$style $this->get_style();
        
$v_space $style->length_in_pt(array($style->margin_top,
                
$style->padding_top,
                
$style->border_top_width,
                
$style->border_bottom_width,
                
$style->padding_bottom,
                
$style->margin_bottom),
            
$style->width);

        
$new_height $height $v_space;
        
$style->height $new_height;

        if (
$new_height $this->_content_height) {
            
$y_offset 0;

            
// Adjust our vertical alignment
            
switch ($style->vertical_align) {
                default:
                case 
"baseline":
                    
// FIXME: this isn't right

                
case "top":
                    
// Don't need to do anything
                    
return;

                case 
"middle":
                    
$y_offset = ($new_height $this->_content_height) / 2;
                    break;

                case 
"bottom":
                    
$y_offset $new_height $this->_content_height;
                    break;
            }

            if (
$y_offset) {
                
// Move our children
                
foreach ($this->get_line_boxes() as $line) {
                    foreach (
$line->get_frames() as $frame)
                        
$frame->move(0$y_offset);
                }
            }
        }

    }

    function 
set_resolved_border($side$border_spec)
    {
        
$this->_resolved_borders[$side] = $border_spec;
    }

    
//........................................................................

    
function get_resolved_border($side)
    {
        return 
$this->_resolved_borders[$side];
    }

    function 
get_resolved_borders()
    {
        return 
$this->_resolved_borders;
    }
}