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

import java.awt.Color;
import java.awt.Font;

import java.awt.font.LineBreakMeasurer;

import java.awt.geom.AffineTransform;

import jp.co.iti.fagot.geom.ZDimension;

import jp.co.iti.fagot.util.ZGraphicUtil;
import jp.co.iti.fagot.util.ZResource;
/**
 * アプリケーションの管理クラス
 *
 * @author  福島康治
 * @version 1.01 2001/01/21
 */
public class ZApp {

	/**
	 * アプリケーションの取得
	 */
	static public void setTheApp(IZApp app) {
	mApp = app;
	}

	/**
	 * アプリケーションの取得
	 */
	static public IZApp getTheApp() {
	return mApp;
	}

	//## デフォルトフォント ###########################################
	/**
	 * LineBreakMeasurerの作成
	 * @param szText     表示文字列
	 * @param font       フォント
	 * @param bgColor    背景色
	 * @param fgColor    文字色
	 * @param at         座標変換
	 */
	static public LineBreakMeasurer createLineBreakMeasurer(
		String szText, Font font, Color bgColor, Color fgColor, AffineTransform at) {
	// フォントのデフォルト値を取得
	if ( font == null ) {
		ZResource res = getTheApp().getResource();
		font = new Font(res.getString("app.font.name"), 0, res.getInt("app.font.size",10));
	 }
	return ZGraphicUtil.createLineBreakMeasurer(szText,font,bgColor,fgColor,at);
	}
	
	/**
	 * LineBreakMeasurerの作成
	 * @param szText     表示文字列
	 * @param font       フォント
	 * @param bgColor    背景色
	 * @param fgColor    文字色
	 * @param at         座標変換
	 */
	static public ZDimension getTextPreferredSize(String szText,AffineTransform at,double dWidth) {
	ZResource res = getTheApp().getResource();
	Font font = new Font(res.getString("app.font.name"), 0, res.getInt("app.font.size",10));
	LineBreakMeasurer lbm = createLineBreakMeasurer( szText,font,null,null,at);
	return ZGraphicUtil.getTextPreferredSize(lbm,at,szText.length(),0);
	}

	//## アトリビュート ###############################################
	/**
	 * アプリケーション
	 */
	static protected IZApp mApp = null;

	/**
	 * 識別子
	 */
	final static public String FAGOT = "fagot";
}
