package Image::WMF::Font;

use strict;
use Image::WMF::Colour;
use Image::WMF::Constants;

sub new {
  my ($class,$height,$width,$esc,$ori,$weight,$italic,$underline,
  	  $strikeout,$charset,$outprecision,$clipprecision,$quality,
	  $pitchandfamily,$facename) = @_;
  my $obj = bless {
                _height             =>  -12,
                _width	            =>  0,
                _esc              	=>  0,
                _ori	         	=>  0,
                _weigth          	=>  0,
                _italic             =>  0,
                _underline	        =>  0,
                _strikeout          =>  0,
                _charset	        =>  0,
                _outprecision       =>  0,
                _clipprecision      =>  0,
                _quality	        =>  0,
                _pitchandfamily     =>  0,
                _facename	        =>  "Arial",
                _font          		=>  undef,	# packed font structure
                }, $class;
	$obj->_initialise($height,$width,$esc,$ori,$weight,$italic,$underline,
  	  				  $strikeout,$charset,$outprecision,$clipprecision,$quality,
	  				  $pitchandfamily,$facename);
	return $obj;
}

sub setFont {
    my ($self,$height,$width,$esc,$ori,$weight,$italic,$underline,
  	  	$strikeout,$charset,$outprecision,$clipprecision,$quality,
	  	$pitchandfamily,$facename) = @_;
	$self->{'_height'} 			= $height;
	$self->{'_width'} 			= $width;
	$self->{'_esc'} 			= $esc;
	$self->{'_ori'} 			= $ori;
	$self->{'_weight'} 			= $weight;
	$self->{'_italic'} 			= $italic;
	$self->{'_underline'} 		= $underline;
	$self->{'_strikeout'} 		= $strikeout;
	$self->{'_charset'} 		= $charset;				#byte
	$self->{'_outprecision'} 	= $outprecision;		#byte
	$self->{'_clipprecision'} 	= $clipprecision;		#byte
	$self->{'_quality'} 		= $quality;				#byte
	$self->{'_pitchandfamily'} 	= $pitchandfamily;		#byte
	$self->{'_facename'} 		= $facename;
}

sub isItalic {
	my ($self) = @_;
	return($self->{'_italic'});
}

sub isBold {
	my ($self) = @_;
	if ($self->{'_weight'} >=700){
		return(1);
	} else {
		return(0)
	}
}

sub getFace {
	my ($self) = @_;
	return($self->{'_facename'});
}

sub getSize {
	my ($self) = @_;
	return($self->{'_height'});
}

sub height {
	my ($self) = @_;
	return($self->getSize());
}

sub width {
	my ($self) = @_;
	return($self->{'_width'});
}

sub getWeight {
	my ($self) = @_;
	return($self->{'_weight'});
}

sub toByte {
	my ($self, $byte) = @_;
	$b = unpack("C*", $byte);
	return($byte);
}

sub _initialise {
    my ($self) = shift;
	if (scalar(@_) != 14){
		die("Error: parameter mismatch while creating font!\n");
	}
	$self->setFont(@_);
}

1;