[ Index ] |
PHP Cross Reference of phpwcms V1.5.0 _r431 (28.01.12) |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> 4 * 5 * The majority of this is _NOT_ my code. I simply ported it from the 6 * PERL Spreadsheet::WriteExcel module. 7 * 8 * The author of the Spreadsheet::WriteExcel module is John McNamara 9 * <jmcnamara@cpan.org> 10 * 11 * I _DO_ maintain this code, and John McNamara has nothing to do with the 12 * porting of this code to PHP. Any questions directly related to this 13 * class library should be directed to me. 14 * 15 * License Information: 16 * 17 * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets 18 * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com 19 * 20 * This library is free software; you can redistribute it and/or 21 * modify it under the terms of the GNU Lesser General Public 22 * License as published by the Free Software Foundation; either 23 * version 2.1 of the License, or (at your option) any later version. 24 * 25 * This library is distributed in the hope that it will be useful, 26 * but WITHOUT ANY WARRANTY; without even the implied warranty of 27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 28 * Lesser General Public License for more details. 29 * 30 * You should have received a copy of the GNU Lesser General Public 31 * License along with this library; if not, write to the Free Software 32 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 33 */ 34 35 require_once 'PEAR.php'; 36 37 /** 38 * Class for generating Excel XF records (formats) 39 * 40 * @author Xavier Noguer <xnoguer@rezebra.com> 41 * @category FileFormats 42 * @package Spreadsheet_Excel_Writer 43 */ 44 45 class Spreadsheet_Excel_Writer_Format extends PEAR 46 { 47 /** 48 * The index given by the workbook when creating a new format. 49 * @var integer 50 */ 51 var $_xf_index; 52 53 /** 54 * Index to the FONT record. 55 * @var integer 56 */ 57 var $font_index; 58 59 /** 60 * The font name (ASCII). 61 * @var string 62 */ 63 var $_font_name; 64 65 /** 66 * Height of font (1/20 of a point) 67 * @var integer 68 */ 69 var $_size; 70 71 /** 72 * Bold style 73 * @var integer 74 */ 75 var $_bold; 76 77 /** 78 * Bit specifiying if the font is italic. 79 * @var integer 80 */ 81 var $_italic; 82 83 /** 84 * Index to the cell's color 85 * @var integer 86 */ 87 var $_color; 88 89 /** 90 * The text underline property 91 * @var integer 92 */ 93 var $_underline; 94 95 /** 96 * Bit specifiying if the font has strikeout. 97 * @var integer 98 */ 99 var $_font_strikeout; 100 101 /** 102 * Bit specifiying if the font has outline. 103 * @var integer 104 */ 105 var $_font_outline; 106 107 /** 108 * Bit specifiying if the font has shadow. 109 * @var integer 110 */ 111 var $_font_shadow; 112 113 /** 114 * 2 bytes specifiying the script type for the font. 115 * @var integer 116 */ 117 var $_font_script; 118 119 /** 120 * Byte specifiying the font family. 121 * @var integer 122 */ 123 var $_font_family; 124 125 /** 126 * Byte specifiying the font charset. 127 * @var integer 128 */ 129 var $_font_charset; 130 131 /** 132 * An index (2 bytes) to a FORMAT record (number format). 133 * @var integer 134 */ 135 var $_num_format; 136 137 /** 138 * Bit specifying if formulas are hidden. 139 * @var integer 140 */ 141 var $_hidden; 142 143 /** 144 * Bit specifying if the cell is locked. 145 * @var integer 146 */ 147 var $_locked; 148 149 /** 150 * The three bits specifying the text horizontal alignment. 151 * @var integer 152 */ 153 var $_text_h_align; 154 155 /** 156 * Bit specifying if the text is wrapped at the right border. 157 * @var integer 158 */ 159 var $_text_wrap; 160 161 /** 162 * The three bits specifying the text vertical alignment. 163 * @var integer 164 */ 165 var $_text_v_align; 166 167 /** 168 * 1 bit, apparently not used. 169 * @var integer 170 */ 171 var $_text_justlast; 172 173 /** 174 * The two bits specifying the text rotation. 175 * @var integer 176 */ 177 var $_rotation; 178 179 /** 180 * The cell's foreground color. 181 * @var integer 182 */ 183 var $_fg_color; 184 185 /** 186 * The cell's background color. 187 * @var integer 188 */ 189 var $_bg_color; 190 191 /** 192 * The cell's background fill pattern. 193 * @var integer 194 */ 195 var $_pattern; 196 197 /** 198 * Style of the bottom border of the cell 199 * @var integer 200 */ 201 var $_bottom; 202 203 /** 204 * Color of the bottom border of the cell. 205 * @var integer 206 */ 207 var $_bottom_color; 208 209 /** 210 * Style of the top border of the cell 211 * @var integer 212 */ 213 var $_top; 214 215 /** 216 * Color of the top border of the cell. 217 * @var integer 218 */ 219 var $_top_color; 220 221 /** 222 * Style of the left border of the cell 223 * @var integer 224 */ 225 var $_left; 226 227 /** 228 * Color of the left border of the cell. 229 * @var integer 230 */ 231 var $_left_color; 232 233 /** 234 * Style of the right border of the cell 235 * @var integer 236 */ 237 var $_right; 238 239 /** 240 * Color of the right border of the cell. 241 * @var integer 242 */ 243 var $_right_color; 244 245 /** 246 * Constructor 247 * 248 * @access private 249 * @param integer $index the XF index for the format. 250 * @param array $properties array with properties to be set on initialization. 251 */ 252 function Spreadsheet_Excel_Writer_Format($BIFF_version, $index = 0, $properties = array()) 253 { 254 $this->_xf_index = $index; 255 $this->_BIFF_version = $BIFF_version; 256 $this->font_index = 0; 257 $this->_font_name = 'Arial'; 258 $this->_size = 10; 259 $this->_bold = 0x0190; 260 $this->_italic = 0; 261 $this->_color = 0x7FFF; 262 $this->_underline = 0; 263 $this->_font_strikeout = 0; 264 $this->_font_outline = 0; 265 $this->_font_shadow = 0; 266 $this->_font_script = 0; 267 $this->_font_family = 0; 268 $this->_font_charset = 0; 269 270 $this->_num_format = 0; 271 272 $this->_hidden = 0; 273 $this->_locked = 0; 274 275 $this->_text_h_align = 0; 276 $this->_text_wrap = 0; 277 $this->_text_v_align = 2; 278 $this->_text_justlast = 0; 279 $this->_rotation = 0; 280 281 $this->_fg_color = 0x40; 282 $this->_bg_color = 0x41; 283 284 $this->_pattern = 0; 285 286 $this->_bottom = 0; 287 $this->_top = 0; 288 $this->_left = 0; 289 $this->_right = 0; 290 $this->_diag = 0; 291 292 $this->_bottom_color = 0x40; 293 $this->_top_color = 0x40; 294 $this->_left_color = 0x40; 295 $this->_right_color = 0x40; 296 $this->_diag_color = 0x40; 297 298 // Set properties passed to Spreadsheet_Excel_Writer_Workbook::addFormat() 299 foreach ($properties as $property => $value) 300 { 301 if (method_exists($this, 'set'.ucwords($property))) { 302 $method_name = 'set'.ucwords($property); 303 $this->$method_name($value); 304 } 305 } 306 } 307 308 309 /** 310 * Generate an Excel BIFF XF record (style or cell). 311 * 312 * @param string $style The type of the XF record ('style' or 'cell'). 313 * @return string The XF record 314 */ 315 function getXf($style) 316 { 317 // Set the type of the XF record and some of the attributes. 318 if ($style == 'style') { 319 $style = 0xFFF5; 320 } else { 321 $style = $this->_locked; 322 $style |= $this->_hidden << 1; 323 } 324 325 // Flags to indicate if attributes have been set. 326 $atr_num = ($this->_num_format != 0)?1:0; 327 $atr_fnt = ($this->font_index != 0)?1:0; 328 $atr_alc = ($this->_text_wrap)?1:0; 329 $atr_bdr = ($this->_bottom || 330 $this->_top || 331 $this->_left || 332 $this->_right)?1:0; 333 $atr_pat = (($this->_fg_color != 0x40) || 334 ($this->_bg_color != 0x41) || 335 $this->_pattern)?1:0; 336 $atr_prot = $this->_locked | $this->_hidden; 337 338 // Zero the default border colour if the border has not been set. 339 if ($this->_bottom == 0) { 340 $this->_bottom_color = 0; 341 } 342 if ($this->_top == 0) { 343 $this->_top_color = 0; 344 } 345 if ($this->_right == 0) { 346 $this->_right_color = 0; 347 } 348 if ($this->_left == 0) { 349 $this->_left_color = 0; 350 } 351 if ($this->_diag == 0) { 352 $this->_diag_color = 0; 353 } 354 355 $record = 0x00E0; // Record identifier 356 if ($this->_BIFF_version == 0x0500) { 357 $length = 0x0010; // Number of bytes to follow 358 } 359 if ($this->_BIFF_version == 0x0600) { 360 $length = 0x0014; 361 } 362 363 $ifnt = $this->font_index; // Index to FONT record 364 $ifmt = $this->_num_format; // Index to FORMAT record 365 if ($this->_BIFF_version == 0x0500) { 366 $align = $this->_text_h_align; // Alignment 367 $align |= $this->_text_wrap << 3; 368 $align |= $this->_text_v_align << 4; 369 $align |= $this->_text_justlast << 7; 370 $align |= $this->_rotation << 8; 371 $align |= $atr_num << 10; 372 $align |= $atr_fnt << 11; 373 $align |= $atr_alc << 12; 374 $align |= $atr_bdr << 13; 375 $align |= $atr_pat << 14; 376 $align |= $atr_prot << 15; 377 378 $icv = $this->_fg_color; // fg and bg pattern colors 379 $icv |= $this->_bg_color << 7; 380 381 $fill = $this->_pattern; // Fill and border line style 382 $fill |= $this->_bottom << 6; 383 $fill |= $this->_bottom_color << 9; 384 385 $border1 = $this->_top; // Border line style and color 386 $border1 |= $this->_left << 3; 387 $border1 |= $this->_right << 6; 388 $border1 |= $this->_top_color << 9; 389 390 $border2 = $this->_left_color; // Border color 391 $border2 |= $this->_right_color << 7; 392 393 $header = pack("vv", $record, $length); 394 $data = pack("vvvvvvvv", $ifnt, $ifmt, $style, $align, 395 $icv, $fill, 396 $border1, $border2); 397 } elseif ($this->_BIFF_version == 0x0600) { 398 $align = $this->_text_h_align; // Alignment 399 $align |= $this->_text_wrap << 3; 400 $align |= $this->_text_v_align << 4; 401 $align |= $this->_text_justlast << 7; 402 403 $used_attrib = $atr_num << 2; 404 $used_attrib |= $atr_fnt << 3; 405 $used_attrib |= $atr_alc << 4; 406 $used_attrib |= $atr_bdr << 5; 407 $used_attrib |= $atr_pat << 6; 408 $used_attrib |= $atr_prot << 7; 409 410 $icv = $this->_fg_color; // fg and bg pattern colors 411 $icv |= $this->_bg_color << 7; 412 413 $border1 = $this->_left; // Border line style and color 414 $border1 |= $this->_right << 4; 415 $border1 |= $this->_top << 8; 416 $border1 |= $this->_bottom << 12; 417 $border1 |= $this->_left_color << 16; 418 $border1 |= $this->_right_color << 23; 419 $diag_tl_to_rb = 0; // FIXME: add method 420 $diag_tr_to_lb = 0; // FIXME: add method 421 $border1 |= $diag_tl_to_rb << 30; 422 $border1 |= $diag_tr_to_lb << 31; 423 424 $border2 = $this->_top_color; // Border color 425 $border2 |= $this->_bottom_color << 7; 426 $border2 |= $this->_diag_color << 14; 427 $border2 |= $this->_diag << 21; 428 $border2 |= $this->_pattern << 26; 429 430 $header = pack("vv", $record, $length); 431 432 $rotation = 0x00; 433 $biff8_options = 0x00; 434 $data = pack("vvvC", $ifnt, $ifmt, $style, $align); 435 $data .= pack("CCC", $rotation, $biff8_options, $used_attrib); 436 $data .= pack("VVv", $border1, $border2, $icv); 437 } 438 439 return($header . $data); 440 } 441 442 /** 443 * Generate an Excel BIFF FONT record. 444 * 445 * @return string The FONT record 446 */ 447 function getFont() 448 { 449 $dyHeight = $this->_size * 20; // Height of font (1/20 of a point) 450 $icv = $this->_color; // Index to color palette 451 $bls = $this->_bold; // Bold style 452 $sss = $this->_font_script; // Superscript/subscript 453 $uls = $this->_underline; // Underline 454 $bFamily = $this->_font_family; // Font family 455 $bCharSet = $this->_font_charset; // Character set 456 $encoding = 0; // TODO: Unicode support 457 458 $cch = strlen($this->_font_name); // Length of font name 459 $record = 0x31; // Record identifier 460 if ($this->_BIFF_version == 0x0500) { 461 $length = 0x0F + $cch; // Record length 462 } elseif ($this->_BIFF_version == 0x0600) { 463 $length = 0x10 + $cch; 464 } 465 $reserved = 0x00; // Reserved 466 $grbit = 0x00; // Font attributes 467 if ($this->_italic) { 468 $grbit |= 0x02; 469 } 470 if ($this->_font_strikeout) { 471 $grbit |= 0x08; 472 } 473 if ($this->_font_outline) { 474 $grbit |= 0x10; 475 } 476 if ($this->_font_shadow) { 477 $grbit |= 0x20; 478 } 479 480 $header = pack("vv", $record, $length); 481 if ($this->_BIFF_version == 0x0500) { 482 $data = pack("vvvvvCCCCC", $dyHeight, $grbit, $icv, $bls, 483 $sss, $uls, $bFamily, 484 $bCharSet, $reserved, $cch); 485 } elseif ($this->_BIFF_version == 0x0600) { 486 $data = pack("vvvvvCCCCCC", $dyHeight, $grbit, $icv, $bls, 487 $sss, $uls, $bFamily, 488 $bCharSet, $reserved, $cch, $encoding); 489 } 490 return($header . $data . $this->_font_name); 491 } 492 493 /** 494 * Returns a unique hash key for a font. 495 * Used by Spreadsheet_Excel_Writer_Workbook::_storeAllFonts() 496 * 497 * The elements that form the key are arranged to increase the probability of 498 * generating a unique key. Elements that hold a large range of numbers 499 * (eg. _color) are placed between two binary elements such as _italic 500 * 501 * @return string A key for this font 502 */ 503 function getFontKey() 504 { 505 $key = "$this->_font_name$this->_size"; 506 $key .= "$this->_font_script$this->_underline"; 507 $key .= "$this->_font_strikeout$this->_bold$this->_font_outline"; 508 $key .= "$this->_font_family$this->_font_charset"; 509 $key .= "$this->_font_shadow$this->_color$this->_italic"; 510 $key = str_replace(' ', '_', $key); 511 return ($key); 512 } 513 514 /** 515 * Returns the index used by Spreadsheet_Excel_Writer_Worksheet::_XF() 516 * 517 * @return integer The index for the XF record 518 */ 519 function getXfIndex() 520 { 521 return($this->_xf_index); 522 } 523 524 /** 525 * Used in conjunction with the set_xxx_color methods to convert a color 526 * string into a number. Color range is 0..63 but we will restrict it 527 * to 8..63 to comply with Gnumeric. Colors 0..7 are repeated in 8..15. 528 * 529 * @access private 530 * @param string $name_color name of the color (i.e.: 'blue', 'red', etc..). Optional. 531 * @return integer The color index 532 */ 533 function _getColor($name_color = '') 534 { 535 $colors = array( 536 'aqua' => 0x0F, 537 'cyan' => 0x0F, 538 'black' => 0x08, 539 'blue' => 0x0C, 540 'brown' => 0x10, 541 'magenta' => 0x0E, 542 'fuchsia' => 0x0E, 543 'gray' => 0x17, 544 'grey' => 0x17, 545 'green' => 0x11, 546 'lime' => 0x0B, 547 'navy' => 0x12, 548 'orange' => 0x35, 549 'purple' => 0x14, 550 'red' => 0x0A, 551 'silver' => 0x16, 552 'white' => 0x09, 553 'yellow' => 0x0D 554 ); 555 556 // Return the default color, 0x7FFF, if undef, 557 if ($name_color == '') { 558 return(0x7FFF); 559 } 560 561 // or the color string converted to an integer, 562 if (isset($colors[$name_color])) { 563 return($colors[$name_color]); 564 } 565 566 // or the default color if string is unrecognised, 567 if (preg_match("/\D/",$name_color)) { 568 return(0x7FFF); 569 } 570 571 // or an index < 8 mapped into the correct range, 572 if ($name_color < 8) { 573 return($name_color + 8); 574 } 575 576 // or the default color if arg is outside range, 577 if ($name_color > 63) { 578 return(0x7FFF); 579 } 580 581 // or an integer in the valid range 582 return($name_color); 583 } 584 585 /** 586 * Set cell alignment. 587 * 588 * @access public 589 * @param string $location alignment for the cell ('left', 'right', etc...). 590 */ 591 function setAlign($location) 592 { 593 if (preg_match("/\d/",$location)) { 594 return; // Ignore numbers 595 } 596 597 $location = strtolower($location); 598 599 if ($location == 'left') { 600 $this->_text_h_align = 1; 601 } 602 if ($location == 'centre') { 603 $this->_text_h_align = 2; 604 } 605 if ($location == 'center') { 606 $this->_text_h_align = 2; 607 } 608 if ($location == 'right') { 609 $this->_text_h_align = 3; 610 } 611 if ($location == 'fill') { 612 $this->_text_h_align = 4; 613 } 614 if ($location == 'justify') { 615 $this->_text_h_align = 5; 616 } 617 if ($location == 'merge') { 618 $this->_text_h_align = 6; 619 } 620 if ($location == 'equal_space') { // For T.K. 621 $this->_text_h_align = 7; 622 } 623 if ($location == 'top') { 624 $this->_text_v_align = 0; 625 } 626 if ($location == 'vcentre') { 627 $this->_text_v_align = 1; 628 } 629 if ($location == 'vcenter') { 630 $this->_text_v_align = 1; 631 } 632 if ($location == 'bottom') { 633 $this->_text_v_align = 2; 634 } 635 if ($location == 'vjustify') { 636 $this->_text_v_align = 3; 637 } 638 if ($location == 'vequal_space') { // For T.K. 639 $this->_text_v_align = 4; 640 } 641 } 642 643 /** 644 * Set cell horizontal alignment. 645 * 646 * @access public 647 * @param string $location alignment for the cell ('left', 'right', etc...). 648 */ 649 function setHAlign($location) 650 { 651 if (preg_match("/\d/",$location)) { 652 return; // Ignore numbers 653 } 654 655 $location = strtolower($location); 656 657 if ($location == 'left') { 658 $this->_text_h_align = 1; 659 } 660 if ($location == 'centre') { 661 $this->_text_h_align = 2; 662 } 663 if ($location == 'center') { 664 $this->_text_h_align = 2; 665 } 666 if ($location == 'right') { 667 $this->_text_h_align = 3; 668 } 669 if ($location == 'fill') { 670 $this->_text_h_align = 4; 671 } 672 if ($location == 'justify') { 673 $this->_text_h_align = 5; 674 } 675 if ($location == 'merge') { 676 $this->_text_h_align = 6; 677 } 678 if ($location == 'equal_space') { // For T.K. 679 $this->_text_h_align = 7; 680 } 681 } 682 683 /** 684 * Set cell vertical alignment. 685 * 686 * @access public 687 * @param string $location alignment for the cell ('top', 'vleft', 'vright', etc...). 688 */ 689 function setVAlign($location) 690 { 691 if (preg_match("/\d/",$location)) { 692 return; // Ignore numbers 693 } 694 695 $location = strtolower($location); 696 697 if ($location == 'top') { 698 $this->_text_v_align = 0; 699 } 700 if ($location == 'vcentre') { 701 $this->_text_v_align = 1; 702 } 703 if ($location == 'vcenter') { 704 $this->_text_v_align = 1; 705 } 706 if ($location == 'bottom') { 707 $this->_text_v_align = 2; 708 } 709 if ($location == 'vjustify') { 710 $this->_text_v_align = 3; 711 } 712 if ($location == 'vequal_space') { // For T.K. 713 $this->_text_v_align = 4; 714 } 715 } 716 717 /** 718 * This is an alias for the unintuitive setAlign('merge') 719 * 720 * @access public 721 */ 722 function setMerge() 723 { 724 $this->setAlign('merge'); 725 } 726 727 /** 728 * Sets the boldness of the text. 729 * Bold has a range 100..1000. 730 * 0 (400) is normal. 1 (700) is bold. 731 * 732 * @access public 733 * @param integer $weight Weight for the text, 0 maps to 400 (normal text), 734 1 maps to 700 (bold text). Valid range is: 100-1000. 735 It's Optional, default is 1 (bold). 736 */ 737 function setBold($weight = 1) 738 { 739 if ($weight == 1) { 740 $weight = 0x2BC; // Bold text 741 } 742 if ($weight == 0) { 743 $weight = 0x190; // Normal text 744 } 745 if ($weight < 0x064) { 746 $weight = 0x190; // Lower bound 747 } 748 if ($weight > 0x3E8) { 749 $weight = 0x190; // Upper bound 750 } 751 $this->_bold = $weight; 752 } 753 754 755 /************************************ 756 * FUNCTIONS FOR SETTING CELLS BORDERS 757 */ 758 759 /** 760 * Sets the width for the bottom border of the cell 761 * 762 * @access public 763 * @param integer $style style of the cell border. 1 => thin, 2 => thick. 764 */ 765 function setBottom($style) 766 { 767 $this->_bottom = $style; 768 } 769 770 /** 771 * Sets the width for the top border of the cell 772 * 773 * @access public 774 * @param integer $style style of the cell top border. 1 => thin, 2 => thick. 775 */ 776 function setTop($style) 777 { 778 $this->_top = $style; 779 } 780 781 /** 782 * Sets the width for the left border of the cell 783 * 784 * @access public 785 * @param integer $style style of the cell left border. 1 => thin, 2 => thick. 786 */ 787 function setLeft($style) 788 { 789 $this->_left = $style; 790 } 791 792 /** 793 * Sets the width for the right border of the cell 794 * 795 * @access public 796 * @param integer $style style of the cell right border. 1 => thin, 2 => thick. 797 */ 798 function setRight($style) 799 { 800 $this->_right = $style; 801 } 802 803 804 /** 805 * Set cells borders to the same style 806 * 807 * @access public 808 * @param integer $style style to apply for all cell borders. 1 => thin, 2 => thick. 809 */ 810 function setBorder($style) 811 { 812 $this->setBottom($style); 813 $this->setTop($style); 814 $this->setLeft($style); 815 $this->setRight($style); 816 } 817 818 819 /******************************************* 820 * FUNCTIONS FOR SETTING CELLS BORDERS COLORS 821 */ 822 823 /** 824 * Sets all the cell's borders to the same color 825 * 826 * @access public 827 * @param mixed $color The color we are setting. Either a string (like 'blue'), 828 * or an integer (range is [8...63]). 829 */ 830 function setBorderColor($color) 831 { 832 $this->setBottomColor($color); 833 $this->setTopColor($color); 834 $this->setLeftColor($color); 835 $this->setRightColor($color); 836 } 837 838 /** 839 * Sets the cell's bottom border color 840 * 841 * @access public 842 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 843 */ 844 function setBottomColor($color) 845 { 846 $value = $this->_getColor($color); 847 $this->_bottom_color = $value; 848 } 849 850 /** 851 * Sets the cell's top border color 852 * 853 * @access public 854 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 855 */ 856 function setTopColor($color) 857 { 858 $value = $this->_getColor($color); 859 $this->_top_color = $value; 860 } 861 862 /** 863 * Sets the cell's left border color 864 * 865 * @access public 866 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 867 */ 868 function setLeftColor($color) 869 { 870 $value = $this->_getColor($color); 871 $this->_left_color = $value; 872 } 873 874 /** 875 * Sets the cell's right border color 876 * 877 * @access public 878 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 879 */ 880 function setRightColor($color) 881 { 882 $value = $this->_getColor($color); 883 $this->_right_color = $value; 884 } 885 886 887 /** 888 * Sets the cell's foreground color 889 * 890 * @access public 891 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 892 */ 893 function setFgColor($color) 894 { 895 $value = $this->_getColor($color); 896 $this->_fg_color = $value; 897 if ($this->_pattern == 0) { // force color to be seen 898 $this->_pattern = 1; 899 } 900 } 901 902 /** 903 * Sets the cell's background color 904 * 905 * @access public 906 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 907 */ 908 function setBgColor($color) 909 { 910 $value = $this->_getColor($color); 911 $this->_bg_color = $value; 912 if ($this->_pattern == 0) { // force color to be seen 913 $this->_pattern = 1; 914 } 915 } 916 917 /** 918 * Sets the cell's color 919 * 920 * @access public 921 * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]). 922 */ 923 function setColor($color) 924 { 925 $value = $this->_getColor($color); 926 $this->_color = $value; 927 } 928 929 /** 930 * Sets the fill pattern attribute of a cell 931 * 932 * @access public 933 * @param integer $arg Optional. Defaults to 1. Meaningful values are: 0-18, 934 * 0 meaning no background. 935 */ 936 function setPattern($arg = 1) 937 { 938 $this->_pattern = $arg; 939 } 940 941 /** 942 * Sets the underline of the text 943 * 944 * @access public 945 * @param integer $underline The value for underline. Possible values are: 946 * 1 => underline, 2 => double underline. 947 */ 948 function setUnderline($underline) 949 { 950 $this->_underline = $underline; 951 } 952 953 /** 954 * Sets the font style as italic 955 * 956 * @access public 957 */ 958 function setItalic() 959 { 960 $this->_italic = 1; 961 } 962 963 /** 964 * Sets the font size 965 * 966 * @access public 967 * @param integer $size The font size (in pixels I think). 968 */ 969 function setSize($size) 970 { 971 $this->_size = $size; 972 } 973 974 /** 975 * Sets text wrapping 976 * 977 * @access public 978 */ 979 function setTextWrap() 980 { 981 $this->_text_wrap = 1; 982 } 983 984 /** 985 * Sets the orientation of the text 986 * 987 * @access public 988 * @param integer $angle The rotation angle for the text (clockwise). Possible 989 values are: 0, 90, 270 and -1 for stacking top-to-bottom. 990 */ 991 function setTextRotation($angle) 992 { 993 switch ($angle) 994 { 995 case 0: 996 $this->_rotation = 0; 997 break; 998 case 90: 999 $this->_rotation = 3; 1000 break; 1001 case 270: 1002 $this->_rotation = 2; 1003 break; 1004 case -1: 1005 $this->_rotation = 1; 1006 break; 1007 default : 1008 return $this->raiseError("Invalid value for angle.". 1009 " Possible values are: 0, 90, 270 and -1 ". 1010 "for stacking top-to-bottom."); 1011 $this->_rotation = 0; 1012 break; 1013 } 1014 } 1015 1016 /** 1017 * Sets the numeric format. 1018 * It can be date, time, currency, etc... 1019 * 1020 * @access public 1021 * @param integer $num_format The numeric format. 1022 */ 1023 function setNumFormat($num_format) 1024 { 1025 $this->_num_format = $num_format; 1026 } 1027 1028 /** 1029 * Sets font as strikeout. 1030 * 1031 * @access public 1032 */ 1033 function setStrikeOut() 1034 { 1035 $this->_font_strikeout = 1; 1036 } 1037 1038 /** 1039 * Sets outlining for a font. 1040 * 1041 * @access public 1042 */ 1043 function setOutLine() 1044 { 1045 $this->_font_outline = 1; 1046 } 1047 1048 /** 1049 * Sets font as shadow. 1050 * 1051 * @access public 1052 */ 1053 function setShadow() 1054 { 1055 $this->_font_shadow = 1; 1056 } 1057 1058 /** 1059 * Sets the script type of the text 1060 * 1061 * @access public 1062 * @param integer $script The value for script type. Possible values are: 1063 * 1 => superscript, 2 => subscript. 1064 */ 1065 function setScript($script) 1066 { 1067 $this->_font_script = $script; 1068 } 1069 1070 /** 1071 * Locks a cell. 1072 * 1073 * @access public 1074 */ 1075 function setLocked() 1076 { 1077 $this->_locked = 1; 1078 } 1079 1080 /** 1081 * Unlocks a cell. Useful for unprotecting particular cells of a protected sheet. 1082 * 1083 * @access public 1084 */ 1085 function setUnLocked() 1086 { 1087 $this->_locked = 0; 1088 } 1089 1090 /** 1091 * Sets the font family name. 1092 * 1093 * @access public 1094 * @param string $fontfamily The font family name. Possible values are: 1095 * 'Times New Roman', 'Arial', 'Courier'. 1096 */ 1097 function setFontFamily($font_family) 1098 { 1099 $this->_font_name = $font_family; 1100 } 1101 } 1102 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Jan 29 16:31:14 2012 | Cross-referenced by PHPXref 0.7.1 |