HtmlTemplateFramework
[ class tree: HtmlTemplateFramework ] [ index: HtmlTemplateFramework ] [ all elements ]

Source for file htf_css_style.phl

Documentation is available at htf_css_style.phl

  1. <?php
  2. /**
  3.  * htf_css_styleクラス
  4.  *
  5.  * CSSスタイル情報を保有・生成するクラス
  6.  *
  7.  * @package   HtmlTemplateFramework
  8.  * @subpackage css
  9.  * @access     public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version   $Id: htf_css_style.phl ,v 1.0 $;
  12.  ***/
  13. require_once("htf_com_define.inc");    //共通定数群
  14. require_once("htf_com_func.inc");        //共通関数群
  15. require_once("htf_css_property.phl");    //CSSプロパティクラス
  16.  
  17. /**
  18.  * CSSスタイル情報を保有・生成するクラス
  19.  * 
  20.  * 生成するCSSスタイル情報を保持し、CSSスタイル記述を生成します。
  21.  * 次のタイプのセレクタが生成可能です。<br>
  22.  * (1)要素名<br>
  23.  * (2)要素名,要素名,要素名・・・<br>
  24.  * (3)要素名.クラス名<br>
  25.  * (4)クラス名<br>
  26.  * (5)要素名#ID<br>
  27.  * (6)#ID<br>
  28.  * (7)要素名 要素名 要素名・・・<br>
  29.  * (8)A:****(link,visited,hover等)<br>
  30.  *
  31.  * @access   public
  32.  * @author    Yamauchi Shogo <htf@as-prj.com>
  33.  ***/
  34. class htf_css_style {
  35.  
  36.    /**
  37.     * セレクタに使用するクラス名
  38.     * 
  39.     * @access public
  40.     * @var string 
  41.     */
  42.     var $class_name;
  43.    /**
  44.     * セレクタに使用するID名
  45.     * 
  46.     * @access public
  47.     * @var string 
  48.     */
  49.     var $id_name;
  50.    /**
  51.     * セレクタに使用するアンカータグ名('link','visited'等を指定)
  52.     * 
  53.     * @access public
  54.     * @var string 
  55.     */
  56.     var $anchor_name;
  57.    /**
  58.     * セレクタに使用するエレメント名配列
  59.     * 
  60.     * @access private
  61.     * @var array 
  62.     */
  63.     var $arr_element_name;
  64.    /**
  65.     * プロパティオブジェクト配列
  66.     * 
  67.     * @access private
  68.     * @var array 
  69.     */
  70.     var $arr_property;
  71.  
  72.     /**
  73.      * コンストラクタ
  74.      *
  75.      * CSSスタイル情報を保有・生成するクラスを生成します。
  76.      *
  77.      * @access     public
  78.      * @return    void 
  79.      ***/
  80.     function htf_css_style({
  81.         //各項目初期化
  82.         $this->arr_element_name array();
  83.         $this->class_name = "";
  84.         $this->id_name="";
  85.         $this->anchor_name="";
  86.         $this->arr_property array();
  87.         
  88.         return;
  89.     }
  90.  
  91.     /**
  92.      * セレクタに表示するエレメント名を追加します。
  93.      *
  94.      * @access     public
  95.      * @param     string    $strelement    追加するエレメント名
  96.      * @return    int       成功時:追加後のarr_attribute要素数 失敗時:-1
  97.      ***/
  98.     function add_element_name($strelement{
  99.         if(htf_is_existsval($strelement)) {
  100.             array_push($this->arr_element_name$strelement);
  101.             return count($this->arr_element_name);
  102.         else {
  103.             return -1;
  104.         }
  105.     }
  106.  
  107.     /**
  108.      * CSSプロパティを追加します。
  109.      *
  110.      * @access     public
  111.      * @param     string    $strprop    プロパティ名
  112.      * @param     string    $strvalue   プロパティ値
  113.      * @return    int       成功時:追加後のarr_element_name要素数 失敗時:-1
  114.      ***/
  115.     function add_property($strprop$strvalue{
  116.         if(htf_is_existsval($strprop&& htf_is_existsval($strvalue)) {
  117.             $objattrnew htf_css_property($strprop$strvalue);
  118.             array_push($this->arr_property$objattr);
  119.             return count($this->arr_property);
  120.         else {
  121.             return -1;
  122.         }
  123.     }
  124.  
  125.     /**
  126.      * CSSスタイル記述を取得します。
  127.      * 
  128.      * 引数の$typeには次のうち該当する作成方法をサマリした値を指定します。<br>
  129.      * (1)HTF_CSS_STYLE_USE_CLASS(クラス名使用)<br>
  130.      * (2)HTF_CSS_STYLE_USE_ID(IDを使用)<br>
  131.      * (3)HTF_CSS_STYLE_USE_ANCNAME(アンカー使用)<br>
  132.      * (4)HTF_CSS_STYLE_USE_ELEMENT_FST(先頭のエレメントのみを使用)<br>
  133.      * (5)HTF_CSS_STYLE_USE_ELEMENT_ARR(配列全てを使用)<br>
  134.      * <br>
  135.      * $hierにtrueを指定した場合には、指定エレメント名を配列上位から
  136.      * スペース区切りで結合してセレクタを作成します。
  137.      *
  138.      * @access     public
  139.      * @param     int     $type   セレクタ作成方法
  140.      * @param     bool    $hier   要素を階層的に指定する(デフォルトはfalse)
  141.      * @return    string  CSSスタイル記述
  142.      ***/
  143.     function get_css_style($type$hier=FALSE{
  144.         //引数チェック
  145.         $inttype=(int)(htf_nz($type0));
  146.         $blhier=htf_nz($hierFALSE);
  147.         
  148.         //セレクタ文字列の生成
  149.         $strselecter="";
  150.         if ($this->judge_use_selecter($inttypeHTF_CSS_STYLE_USE_ELEMENT_ARR)) {
  151.             //エレメント配列を全て使用する場合
  152.             if ($blhier{
  153.                 $strseldelim ' ';
  154.             else {
  155.                 $strseldelim ',';
  156.             }
  157.             $strselecter $this->get_css_selecter_elemarr($strseldelim);
  158.         else {
  159.             //それ以外の場合
  160.             $strselecter $this->get_css_selecter($inttype);
  161.         }
  162.         
  163.         //プロパティ文字列の生成
  164.         $strprop=$this->get_css_property();
  165.  
  166.         //スタイル記述生成
  167.         if ($strselecter=="" || $strprop=="" {
  168.             //セレクタ・プロパティどちらかの値がない場合には空文字を返す
  169.             $strret "";
  170.         else {
  171.             //通常のスタイル生成
  172.             $strret $strselecter.'{'.$strprop.'}';
  173.         }
  174.         return $strret;
  175.     }
  176.  
  177.     /**
  178.      * CSSスタイル記述のセレクタを取得します(エレメントは先頭のみ)。
  179.      *
  180.      * @access     private
  181.      * @param     int     $type   セレクタ作成方法
  182.      * @return    String  CSSセレクタ記述
  183.      ***/
  184.     function get_css_selecter($type{
  185.         //エレメント使用方法
  186.         $inttype=(int)(htf_nz($type,0));
  187.         $strret "";
  188.         if ($this->judge_use_selecter($inttypeHTF_CSS_STYLE_USE_ELEMENT_FST)) {
  189.             if (count($this->arr_element_name0{
  190.                 $strret $this->arr_element_name[0];
  191.             }
  192.         }
  193.         //クラス使用
  194.         if ($this->judge_use_selecter($inttypeHTF_CSS_STYLE_USE_CLASS)) {
  195.             $strret.= $this->connect_prefix('.'$this->class_name);
  196.         }
  197.         //ID使用
  198.         if ($this->judge_use_selecter($inttypeHTF_CSS_STYLE_USE_ID)) {
  199.             $strret.= $this->connect_prefix('#'$this->id_name);
  200.         }
  201.         //アンカー使用
  202.         if ($this->judge_use_selecter($inttypeHTF_CSS_STYLE_USE_ANCNAME)) {
  203.             $strret$this->connect_element($strret$this->connect_prefix('A:'$this->anchor_name),' ');
  204.         }
  205.         
  206.         return $strret;    
  207.     }
  208.     
  209.     /**
  210.      * CSSスタイル記述のセレクタをエレメント配列を全て使用して取得します。
  211.      *
  212.      * @access     private
  213.      * @param     String  $strdelim   結合時のデリミタ文字
  214.      * @return    String  CSSセレクタ記述
  215.      ***/
  216.     function get_css_selecter_elemarr($strdelim=","{
  217.         $strusedelim htf_nz($strdelim,",");
  218.         $strret="";
  219.         for ($i=0;$i<count($this->arr_element_name);$i++{
  220.             $strret $this->connect_element($strret$this->arr_element_name[$i]$strusedelim);
  221.         }
  222.         return $strret;
  223.     }
  224.  
  225.     /**
  226.      * CSSスタイル記述のプロパティ記述を取得します。
  227.      *
  228.      * @access     private
  229.      * @return    String  CSSプロパティスタイル記述
  230.      ***/
  231.     function get_css_property({
  232.         //エレメント使用方法
  233.         $strret "";
  234.         for ($i=0;$i<count($this->arr_property);$i++{
  235.             $strret $this->connect_element($strret$this->arr_property[$i]->get_css_desc()';');
  236.         }
  237.         
  238.         return $strret;
  239.     }
  240.     
  241.     /**
  242.      * 作成に使用するセレクタを判別します。
  243.      *
  244.      * @access     private
  245.      * @param     int     $inttype      セレクタ作成方法
  246.      * @param     int     $intusetype   判別する作成方法
  247.      * @return    bool    TRUE:使用する FALSE:使用しない
  248.      ***/
  249.     function judge_use_selecter($inttype$intusetype{
  250.         if (($inttype&$intusetype== $intusetype{
  251.             return TRUE;
  252.         else {
  253.             return FALSE;
  254.         }
  255.     }
  256.  
  257.     /**
  258.      * 要素を結合します。
  259.      *
  260.      * @access     private
  261.      * @param     String  $strorg       結合元の文字列
  262.      * @param     String  $strcon       結合する文字列
  263.      * @param     String  $strdelim     デリミタ文字
  264.      * @return    String  結合後の文字列
  265.      ***/
  266.     function connect_element($strorg$strcon$strdelim{
  267.         $strret "";
  268.         if (!htf_is_existsval($strorg)) {
  269.             //結合元の文字がおかしい場合は結合文字列を返す
  270.             if (htf_is_existsval($strcon)) {
  271.                 $strret $strcon;
  272.             }
  273.         else if (!htf_is_existsval($strcon)) {
  274.             //結合文字がおかしい場合は結合元文字列を返す
  275.             $strret $strorg;
  276.         else if (!htf_is_existsval($strdelim)) {
  277.             //デリミタがおかしい場合はデリミタ無しで結合して返す
  278.             $strret $strorg.$strcon;
  279.         else {
  280.             //通常はデリミタをはさんで結合して返す
  281.             $strret $strorg.$strdelim.$strcon;
  282.         }
  283.         return $strret;
  284.     }
  285.  
  286.     /**
  287.      * プレフィックス文字を結合します。
  288.      *
  289.      * @access     private
  290.      * @param     String  $strpre       プレフィックス文字
  291.      * @param     String  $strcon       結合する文字列
  292.      * @return    String  結合後の文字列
  293.      ***/
  294.     function connect_prefix($strpre$strcon{
  295.         if (!htf_is_existsval($strpre|| !htf_is_existsval($strcon)) {
  296.             //引数指定がおかしい場合
  297.             $strret "";
  298.         else if(!strcasecmp(substr($strcon,0,strlen($strpre)),$strpre)) {
  299.             //先頭がプレフィックスと同値の場合
  300.             $strret $strcon;
  301.         else {
  302.             //通常はプレフィックスと結合文字列を結合して返す
  303.             $strret $strpre.$strcon;
  304.         }
  305.         return $strret;
  306.     }
  307. }
  308.  
  309. ?>

Documentation generated on Tue, 19 Sep 2006 06:20:41 +0900 by phpDocumentor 1.3.0