/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2001 - 2013 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved.
*/
package org.pentaho.reporting.libraries.pixie.wmf;
import java.awt.*;
import java.awt.geom.AffineTransform;
/**
* A Windows metafile logical font object.
*/
public class MfLogFont implements WmfObject {
private String face;
private int size;
private int style;
private boolean strikeout;
private boolean underline;
private double rotation;
/**
* Construct from a metafile record.
*/
public MfLogFont() {
}
public void setFace( final String face ) {
this.face = face;
}
/**
* The name of the font face.
*/
public String getFace() {
return face;
}
public void setSize( final int size ) {
this.size = size;
}
/**
* The size, in logical units.
*/
public int getSize() {
return size;
}
/**
* The font style.
*/
public int getStyle() {
return style;
}
public void setStyle( final int style ) {
this.style = style;
}
/**
* True if this is an underlined font.
*/
public boolean isUnderline() {
return underline;
}
public void setUnderline( final boolean underline ) {
this.underline = underline;
}
public boolean isStrikeOut() {
return strikeout;
}
public void setStrikeOut( final boolean b ) {
this.strikeout = b;
}
public Font createFont() {
final Font retfont = new Font( getFace(), getStyle(), getSize() );
final double rot = StrictMath.sin( Math.toRadians( -rotation ) );
return retfont.deriveFont( AffineTransform.getRotateInstance( rot ) );
}
public int getType() {
return OBJ_FONT;
}
public double getRotation() {
return rotation;
}
public void setRotation( final double d ) {
this.rotation = d;
}
}