/******************************************************************************
 * Copyright (c) 2003, 2006 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    IBM Corporation - initial API and implementation 
 ****************************************************************************/

package org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.metafile;

import java.awt.Font;

/**
 * Represents a font on the system.  There may be multiple fonts created in the system at
 * any one time.  The currently selected font can be retrieved from the DeviceContext.  
 * @author dhabib
 */
public class GdiFont 
{
	private int		m_height		= 12;
	private boolean	m_bItalic		= false;
	private boolean	m_bUnderlined	= false;
	private	boolean	m_bBold			= false;
	private boolean	m_bStrikeout	= false;
	private String	m_faceName		= "SanSerif";	//$NON-NLS-1$
	
	private int 	m_escapement	= 0;

	/**
	 * Creates a default font.
	 */
	public GdiFont()
	{
	    // Nothing to initialize.
	}
	
	/**
	 * Copy constructor
	 * @param font
	 */
	GdiFont( GdiFont font )
	{
		m_height 		= font.m_height;
		m_bItalic 		= font.m_bItalic;
		m_bBold 		= font.m_bBold;
		m_faceName 		= font.m_faceName;
		m_bUnderlined	= font.m_bUnderlined;
		m_escapement	= font.m_escapement;
		m_bStrikeout	= font.m_bStrikeout;
	}

	/**
	 * Creates a font with the specified parameters.
	 * @param height Height of the font
	 * @param bItalic Whether or not the font is italic
	 * @param bUnderlined Whether or not the font is underlined
	 * @param bStrikeout Whether or not the font is a strikout font
	 * @param bBold Whether or not the font is bold
	 * @param faceName Name of the font
	 * @param escapement Font escapement (angle) of the text to be drawn.
	 */
	public GdiFont( int 	height, 
					boolean	bItalic,
					boolean bUnderlined,
					boolean bStrikeout, 
					boolean bBold, 
					String 	faceName,
					int 	escapement )
	{
		m_height 		= height;
		m_bItalic 		= bItalic;
		m_bBold 		= bBold;
		m_faceName 		= faceName;
		m_bUnderlined	= bUnderlined;
		m_escapement	= escapement;
		m_bStrikeout	= bStrikeout;
	}
	
	/**
	 * @return The Java font object that represents most of the attributes for drawing the font.
	 */
	public Font getFont()
	{
		int style = Font.PLAIN;
		
		if( m_bItalic ) {
			style = Font.ITALIC;
		}
		
		if( m_bBold ) {
			style = Font.BOLD;
		}
		
		if( m_bItalic && m_bBold ) {
			style = Font.ITALIC + Font.BOLD;
		}

		return new Font( m_faceName, style, m_height );
	}

	/**
	 * @return The angle at which to draw the font.
	 */
	public int getEscapement() 
	{
		return m_escapement;
	}
}
