source: sourcecode/application/libraries/PHPExcel/Writer/Excel5/Font.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 3.9 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category   PHPExcel
22 * @package    PHPExcel_Writer_Excel5
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_Writer_Excel5_Font
31 *
32 * @category   PHPExcel
33 * @package    PHPExcel_Writer_Excel5
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_Writer_Excel5_Font
37{
38        /**
39         * Color index
40         *
41         * @var int
42         */
43        private $_colorIndex;
44
45        /**
46         * Font
47         *
48         * @var PHPExcel_Style_Font
49         */
50        private $_font;
51
52        /**
53         * Constructor
54         *
55         * @param PHPExcel_Style_Font $font
56         */
57        public function __construct(PHPExcel_Style_Font $font = null)
58        {
59                $this->_colorIndex = 0x7FFF;
60                $this->_font = $font;
61        }
62
63        /**
64         * Set the color index
65         *
66         * @param int $colorIndex
67         */
68        public function setColorIndex($colorIndex)
69        {
70                $this->_colorIndex = $colorIndex;
71        }
72
73        /**
74         * Get font record data
75         *
76         * @return string
77         */
78        public function writeFont()
79        {
80                $font_outline = 0;
81                $font_shadow = 0;
82
83                $icv = $this->_colorIndex; // Index to color palette
84                if ($this->_font->getSuperScript()) {
85                        $sss = 1;
86                } else if ($this->_font->getSubScript()) {
87                        $sss = 2;
88                } else {
89                        $sss = 0;
90                }
91                $bFamily = 0; // Font family
92                $bCharSet = PHPExcel_Shared_Font::getCharsetFromFontName($this->_font->getName()); // Character set
93
94                $record = 0x31;         // Record identifier
95                $reserved = 0x00;       // Reserved
96                $grbit = 0x00;          // Font attributes
97                if ($this->_font->getItalic()) {
98                        $grbit |= 0x02;
99                }
100                if ($this->_font->getStrikethrough()) {
101                        $grbit |= 0x08;
102                }
103                if ($font_outline) {
104                        $grbit |= 0x10;
105                }
106                if ($font_shadow) {
107                        $grbit |= 0x20;
108                }
109
110                $data = pack("vvvvvCCCC",
111                        $this->_font->getSize() * 20,                                           //      Fontsize (in twips)
112                        $grbit,
113                        $icv,                                                                                           //      Colour
114                        self::_mapBold($this->_font->getBold()),                        //      Font weight
115                        $sss,                                                                                           //      Superscript/Subscript
116                        self::_mapUnderline($this->_font->getUnderline()),
117                        $bFamily,
118                        $bCharSet,
119                        $reserved
120                );
121                $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($this->_font->getName());
122
123                $length = strlen($data);
124                $header = pack("vv", $record, $length);
125
126                return($header . $data);
127        }
128
129        /**
130         * Map to BIFF5-BIFF8 codes for bold
131         *
132         * @param boolean $bold
133         * @return int
134         */
135        private static function _mapBold($bold) {
136                if ($bold) {
137                        return 0x2BC;   //      700 = Bold font weight
138                }
139                return 0x190;           //      400 = Normal font weight
140        }
141
142        /**
143         * Map of BIFF2-BIFF8 codes for underline styles
144         * @static      array of int
145         *
146         */
147        private static $_mapUnderline = array(  PHPExcel_Style_Font::UNDERLINE_NONE                                     => 0x00,
148                                                                                        PHPExcel_Style_Font::UNDERLINE_SINGLE                           => 0x01,
149                                                                                        PHPExcel_Style_Font::UNDERLINE_DOUBLE                           => 0x02,
150                                                                                        PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING         => 0x21,
151                                                                                        PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING         => 0x22,
152                                                                                 );
153        /**
154         * Map underline
155         *
156         * @param string
157         * @return int
158         */
159        private static function _mapUnderline($underline) {
160                if (isset(self::$_mapUnderline[$underline]))
161                        return self::$_mapUnderline[$underline];
162                return 0x00;
163        }
164
165}
Note: See TracBrowser for help on using the repository browser.