/*
 * @(#)PFill.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.FString;

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

	//## 値 ###########################################################
	/**
	 * 属性の設定
	 */
	public void set(PFill src) {
		mColor.set( src.getColor() );
		mOpacity.set( src.getOpacity() );
		mRule.set( src.getRule() );
	}

	/**
	 * 属性の追加
	 */
	public void add(PFill src) {
		if ( !src.getColor().isNull() ) {
			mColor.set( src.getColor() );
		}
		if ( !src.getOpacity().isNull() ) {
			mOpacity.set( src.getOpacity() );
		}
		if ( !src.getRule().isNull() ) {
			mRule.set( src.getRule() );
		}
	}

	/**
	 * 色の取得
	 */
	public FColor getColor() {
		return mColor;
	}
	/**
	 * 透過度の取得
	 */
	public FFloat getOpacity( ) {
		return mOpacity;
	}
	/**
	 * ルールの取得
	 */
	public FString getRule( ) {
		return mRule;
	}

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

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

	//## アトリビュート ###############################################
	/**
	 * 色
	 */
	protected FColor mColor;
	/**
	 * 透過度
	 */
	protected FFloat mOpacity;
	/**
	 * ルール
	 */
	protected FString mRule;

}
