/*
 * @(#)PStyle.java
 *
 * Copyright 2001 by Intelligent Technology Inc. All rights reserved.
 */
package jp.co.iti.fagot.gob;

import jp.co.iti.fagot.fob.FobManager;
import jp.co.iti.fagot.fob.FColor;
import jp.co.iti.fagot.fob.FFloat;
import jp.co.iti.fagot.fob.FDouble;
import jp.co.iti.fagot.fob.FString;

/**
 * P系クラスは描画部品の描画属性(プロパティ)を格納する
 *
 * http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtdにおける
 * PresentationAttributes-FillStroke に対応
 *
 * Style
 *
 * @author  福島康治
 * @version 1.01 2001/01/07
 */
public class PStyle {
	/**
	 * コンストラクタ
	 */
	public PStyle() {
		//{{FAGOT_ATTR
		mFill             = new PFill();
		mStroke           = new PStroke();
		//}}FAGOT_ATTR
	}

	//## 値 ###########################################################
	/**
	 * 属性の設定
	 */
	public void set(PStyle src) {
		mFill.set(src.getFill());
		mStroke.set(src.getStroke());
	}

	/**
	 * 属性の追加
	 */
	public void add(PStyle src) {
		mFill.add(src.getFill());
		mStroke.add(src.getStroke());
	}

	/**
	 * 塗りつぶしの取得
	 */
	public PFill getFill() {
		return mFill ;
	}

	/**
	 * 線の取得
	 */
	public PStroke getStroke() {
		return mStroke ;
	}

	//## 子要素の値 : Fill ############################################
	// 単なるパススルーメソッド
	// 子要素を統合する必要があるか？
	/**
	 * 色の取得
	 */
	public FColor getFillColor() {
		return getFill().getColor();
	}

	/**
	 * 透過度の取得
	 */
	public FFloat getFillOpacity( ) {
		return getFill().getOpacity();
	}

	/**
	 * ルールの取得
	 */
	public FString getFillRule( ) {
		return getFill().getRule();
	}

	/**
	 * 色の設定
	 */

	public void setFillColor( FColor color ) {
		getFill().getColor().set( color );
	}

	/**
	 * 透過度の設定
	 */
	public void setFillOpacity( FFloat opacity ) {
		getFill().getOpacity().set( opacity );
	}

	/**
	 * ルールの設定
	 */
	public void setFillRule( FString rule ) {
		getFill().getRule().set( rule );
	}

	//## 子要素の値 : Stroke ##########################################
	/**
	 * 色の取得
	 */
	public FColor getStrokeColor() {
		return getStroke().getColor();
	}

	/**
	 * 色の設定
	 */

	public void setStrokeColor( FColor color ) {
		getStroke().getColor().set( color );
	}

	//## FAGOT ########################################################
	/**
	 * Fobマネージャの登録(ユーザデータはパススルー)
	 * @param mgr マネージャ
	 * @param usrData ユーザデータ
	 */
	public void setFobManager(FobManager mgr, Object usrData) {
		//{{FAGOT_ATTR
		mFill.setFobManager(mgr,usrData);
		mStroke.setFobManager(mgr,usrData);
		//}}FAGOT_ATTR
	}

	//## CLONE ########################################################
	/**
	 * 複製の作成
	 */
	public Object clone() {
	PStyle obj = new PStyle();
	obj.set(this);
	return obj;
	}

	//## アトリビュート ###############################################
	/**
	 * 塗りつぶし
	 */
	protected PFill   mFill;

	/**
	 * 線
	 */
	protected PStroke mStroke;

}
