⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 style.cls.php

📁 国外很不错的一个开源OA系统Group-Office
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** * DOMPDF - PHP5 HTML to PDF renderer * * File: $RCSfile: style.cls.php,v $ * Created on: 2004-06-01 * * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library in the file LICENSE.LGPL; if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * * Alternatively, you may distribute this software under the terms of the * PHP License, version 3.0 or later.  A copy of this license should have * been distributed with this file in the file LICENSE.PHP .  If this is not * the case, you can obtain a copy at http://www.php.net/license/3_0.txt. * * The latest version of DOMPDF might be available at: * http://www.digitaljunkies.ca/dompdf * * @link http://www.digitaljunkies.ca/dompdf * @copyright 2004 Benj Carson * @author Benj Carson <benjcarson@digitaljunkies.ca> * @package dompdf * @version 0.5.1 *//* $Id: style.cls.php,v 1.2 2006/07/21 10:46:20 mschering Exp $ *//** * Represents CSS properties. * * The Style class is responsible for handling and storing CSS properties. * It includes methods to resolve colours and lengths, as well as getters & * setters for many CSS properites. * * Actual CSS parsing is performed in the {@link Stylesheet} class. * * @package dompdf */class Style {  /**   * Default font size, in points.   *   * @var float   */  static $default_font_size = 12;  /**   * Default line height, as a fraction of the font size.   *   * @var float   */  static $default_line_height = 1.2;  /**   * List of all inline types.  Should really be a constant.   *   * @var array   */  static $INLINE_TYPES = array("inline");  /**   * List of all block types.  Should really be a constant.   *   * @var array   */  static $BLOCK_TYPES = array("block","inline-block", "table-cell", "list-item");  /**   * List of all table types.  Should really be a constant.   *   * @var array;   */  static $TABLE_TYPES = array("table", "inline-table");  /**   * List of valid border styles.  Should also really be a constant.   *   * @var array   */  static $BORDER_STYLES = array("none", "hidden", "dotted", "dashed", "solid",                                "double", "groove", "ridge", "inset", "outset");  /**   * Default style values.   *   * @link http://www.w3.org/TR/CSS21/propidx.html   *   * @var array   */  static protected $_defaults = null;  /**   * List of inherited properties   *   * @link http://www.w3.org/TR/CSS21/propidx.html   *   * @var array   */  static protected $_inherited = null;  /**   * The stylesheet this style belongs to   *   * @see Stylesheet   * @var Stylesheet   */  protected $_stylesheet; // stylesheet this style is attached to  /**   * Main array of all CSS properties & values   *   * @var array   */  protected $_props;  /**   * Cached property values   *   * @var array   */  protected $_prop_cache;    /**   * Font size of parent element in document tree.  Used for relative font   * size resolution.   *   * @var float   */  protected $_parent_font_size; // Font size of parent element    // private members  /**   * True once the font size is resolved absolutely   *   * @var bool   */  private $__font_size_calculated; // Cache flag    /**   * Class constructor   *   * @param Stylesheet $stylesheet the stylesheet this Style is associated with.   */  function __construct(Stylesheet $stylesheet) {    $this->_props = array();    $this->_stylesheet = $stylesheet;    $this->_parent_font_size = null;    $this->__font_size_calculated = false;        if ( !isset(self::$_defaults) ) {          // Shorthand      $d =& self::$_defaults;          // All CSS 2.1 properties, and their default values      $d["azimuth"] = "center";      $d["background_attachment"] = "scroll";      $d["background_color"] = "transparent";      $d["background_image"] = "none";      $d["background_position"] = "0% 0%";      $d["background_repeat"] = "repeat";      $d["background"] = "";      $d["border_collapse"] = "separate";      $d["border_color"] = "";      $d["border_spacing"] = "0";      $d["border_style"] = "";      $d["border_top"] = "";      $d["border_right"] = "";      $d["border_bottom"] = "";      $d["border_left"] = "";      $d["border_top_color"] = "";      $d["border_right_color"] = "";      $d["border_bottom_color"] = "";      $d["border_left_color"] = "";      $d["border_top_style"] = "none";      $d["border_right_style"] = "none";      $d["border_bottom_style"] = "none";      $d["border_left_style"] = "none";      $d["border_top_width"] = "medium";      $d["border_right_width"] = "medium";      $d["border_bottom_width"] = "medium";      $d["border_left_width"] = "medium";      $d["border_width"] = "medium";      $d["border"] = "";      $d["bottom"] = "auto";      $d["caption_side"] = "top";      $d["clear"] = "none";      $d["clip"] = "auto";      $d["color"] = "#000000";      $d["content"] = "normal";      $d["counter_increment"] = "none";      $d["counter_reset"] = "none";      $d["cue_after"] = "none";      $d["cue_before"] = "none";      $d["cue"] = "";      $d["cursor"] = "auto";      $d["direction"] = "ltr";      $d["display"] = "inline";      $d["elevation"] = "level";      $d["empty_cells"] = "show";      $d["float"] = "none";      $d["font_family"] = "serif";      $d["font_size"] = "medium";      $d["font_style"] = "normal";      $d["font_variant"] = "normal";      $d["font_weight"] = "normal";      $d["font"] = "";      $d["height"] = "auto";      $d["left"] = "auto";      $d["letter_spacing"] = "normal";      $d["line_height"] = "normal";      $d["list_style_image"] = "none";      $d["list_style_position"] = "outside";      $d["list_style_type"] = "disc";      $d["list_style"] = "";      $d["margin_right"] = "0";      $d["margin_left"] = "0";      $d["margin_top"] = "0";      $d["margin_bottom"] = "0";      $d["margin"] = "";      $d["max_height"] = "none";      $d["max_width"] = "none";      $d["min_height"] = "0";      $d["min_width"] = "0";      $d["orphans"] = "2";      $d["outline_color"] = "invert";      $d["outline_style"] = "none";      $d["outline_width"] = "medium";      $d["outline"] = "";      $d["overflow"] = "visible";      $d["padding_top"] = "0";      $d["padding_right"] = "0";      $d["padding_bottom"] = "0";      $d["padding_left"] = "0";      $d["padding"] = "";      $d["page_break_after"] = "auto";      $d["page_break_before"] = "auto";      $d["page_break_inside"] = "auto";      $d["pause_after"] = "0";      $d["pause_before"] = "0";      $d["pause"] = "";      $d["pitch_range"] = "50";      $d["pitch"] = "medium";      $d["play_during"] = "auto";      $d["position"] = "static";      $d["quotes"] = "";      $d["richness"] = "50";      $d["right"] = "auto";      $d["speak_header"] = "once";      $d["speak_numeral"] = "continuous";      $d["speak_punctuation"] = "none";      $d["speak"] = "normal";      $d["speech_rate"] = "medium";      $d["stress"] = "50";      $d["table_layout"] = "auto";      $d["text_align"] = "left";      $d["text_decoration"] = "none";      $d["text_indent"] = "0";      $d["text_transform"] = "none";      $d["top"] = "auto";      $d["unicode_bidi"] = "normal";      $d["vertical_align"] = "baseline";      $d["visibility"] = "visible";      $d["voice_family"] = "";      $d["volume"] = "medium";      $d["white_space"] = "normal";      $d["widows"] = "2";      $d["width"] = "auto";      $d["word_spacing"] = "normal";      $d["z_index"] = "auto";      // Properties that inherit by default      self::$_inherited = array("azimuth",                                 "border_collapse",                                 "border_spacing",                                 "caption_side",                                 "color",                                 "cursor",                                 "direction",                                 "elevation",                                 "empty_cells",                                 "font_family",                                 "font_size",                                 "font_style",                                 "font_variant",                                 "font_weight",                                 "font",                                 "letter_spacing",                                 "line_height",                                 "list_style_image",                                 "list_style_position",                                 "list_style_type",                                 "list_style",                                 "orphans",                                 "page_break_inside",                                 "pitch_range",                                 "pitch",                                 "quotes",                                 "richness",                                 "speak_header",                                 "speak_numeral",                                 "speak_punctuation",                                 "speak",                                 "speech_rate",                                 "stress",                                 "text_align",                                 "text_indent",                                 "text_transform",                                 "visibility",                                 "voice_family",                                 "volume",                                 "white_space",                                 "widows",                                 "word_spacing");    }  }  /**   * "Destructor": forcibly free all references held by this object   */  function dispose() {    unset($this->_stylesheet);  }    /**   * returns the {@link Stylesheet} this Style is associated with.   *   * @return Stylesheet   */  function get_stylesheet() { return $this->_stylesheet; }    /**   * Converts any CSS length value into an absolute length in points.   *   * length_in_pt() takes a single length (e.g. '1em') or an array of   * lengths and returns an absolute length.  If an array is passed, then   * the return value is the sum of all elements.   *   * If a reference size is not provided, the default font size is used   * ({@link Style::$default_font_size}).   *   * @param float|array $length   the length or array of lengths to resolve   * @param float       $ref_size  an absolute reference size to resolve percentage lengths   * @return float   */  function length_in_pt($length, $ref_size = null) {    if ( !is_array($length) )      $length = array($length);    if ( !isset($ref_size) )      $ref_size = self::$default_font_size;    $ret = 0;    foreach ($length as $l) {      if ( $l === "auto" )         return "auto";            if ( $l === "none" )        return "none";      // Assume numeric values are already in points      if ( is_numeric($l) ) {        $ret += $l;        continue;      }              if ( $l === "normal" ) {        $ret += $ref_size;        continue;      }      // Border lengths      if ( $l === "thin" ) {        $ret += 0.5;        continue;      }            if ( $l === "medium" ) {        $ret += 1.5;        continue;      }          if ( $l === "thick" ) {        $ret += 2.5;        continue;      }            if ( ($i = mb_strpos($l, "pt"))  !== false ) {        $ret += mb_substr($l, 0, $i);        continue;      }      if ( ($i = mb_strpos($l, "px"))  !== false ) {        $ret += mb_substr($l, 0, $i);        continue;      }      if ( ($i = mb_strpos($l, "em"))  !== false ) {        $ret += mb_substr($l, 0, $i) * $this->__get("font_size");        continue;      }            // FIXME: em:ex ratio?      if ( ($i = mb_strpos($l, "ex"))  !== false ) {        $ret += mb_substr($l, 0, $i) * $this->__get("font_size");        continue;      }            if ( ($i = mb_strpos($l, "%"))  !== false ) {        $ret += mb_substr($l, 0, $i)/100 * $ref_size;        continue;      }            if ( ($i = mb_strpos($l, "in")) !== false ) {        $ret += mb_substr($l, 0, $i) * 72;        continue;      }                if ( ($i = mb_strpos($l, "cm")) !== false ) {        $ret += mb_substr($l, 0, $i) * 72 / 2.54;        continue;      }      if ( ($i = mb_strpos($l, "mm")) !== false ) {        $ret += mb_substr($l, 0, $i) * 72 / 25.4;        continue;      }                if ( ($i = mb_strpos($l, "pc")) !== false ) {        $ret += mb_substr($l, 0, $i) / 12;        continue;      }                // Bogus value      $ret += $ref_size;    }    return $ret;  }    /**   * Set inherited properties in this style using values in $parent   *   * @param Style $parent   */  function inherit(Style $parent) {    // Set parent font size    $this->_parent_font_size = $parent->get_font_size();        foreach (self::$_inherited as $prop) {      if ( !isset($this->_props[$prop]) && isset($parent->_props[$prop]) )         $this->_props[$prop] = $parent->_props[$prop];    }          foreach (array_keys($this->_props) as $prop) {      if ( $this->_props[$prop] == "inherit" )        $this->$prop = $parent->$prop;    }              return $this;  }    /**   * Override properties in this style with those in $style   *   * @param Style $style   */  function merge(Style $style) {    $this->_props = array_merge($this->_props, $style->_props);    if ( isset($style->_props["font_size"]) )      $this->__font_size_calculated = false;      }    /**   * Returns an array(r, g, b, "r"=> r, "g"=>g, "b"=>b, "hex"=>"#rrggbb")   * based on the provided CSS colour value.   *   * @param string $colour   * @return array   */  function munge_colour($colour) {    if ( is_array($colour) )      // Assume the array has the right format...      // FIXME: should/could verify this.      return $colour;        $r = 0;    $g = 0;    $b = 0;    // Handle colour names    switch ($colour) {    case "maroon":      $r = 0x80;      break;    case "red":      $r = 0xff;      break;    case "orange":      $r = 0xff;      $g = 0xa5;      break;    case "yellow":      $r = 0xff;      $g = 0xff;      break;    case "olive":      $r = 0x80;      $g = 0x80;      break;    case "purple":      $r = 0x80;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -