
/***************************************************************************

                                 ChessV

                   COPYRIGHT (C) 2005 BY GREGORY STRONG

This file is part of ChessV.  ChessV is free software; you can redistribute
it and/or modify it under the terms of the GNU General Public License as 
published by the Free Software Foundation; either version 2 of the License, 
or (at your option) any later version.

ChessV 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 General Public License for 
more details; the file 'COPYING' contains the License text, but if for
some reason you need a copy, please write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

****************************************************************************/

#include "StdAfx.h"
#include "Pen.h"


// *** DEBUG MEMORY ALLOCATION *** //
#ifdef _DEBUG
#define new SAFE_NEW
#endif


// *** Construction *** //

Pen::Pen()
{
}

Pen::Pen
	( Pen const &other ):
		GDIObject(other)
{
}

Pen::Pen
	( HPEN hPen, 
	  bool destroyPen ):
		GDIObject(hPen, destroyPen)
{
}

Pen::Pen
	( COLORREF penColor, 
	  int penWidth /* default value = 1 */ )
{
	handle = ::CreatePen( PS_SOLID, penWidth, penColor );
	destroyHandle = true;
}


// *** Destruction *** //

Pen::~Pen()
{
}


// *** Operations *** //

void Pen::CreateSolidPen
	( COLORREF penColor, 
	  int penWidth )
{
	if( handle != NULL && destroyHandle )
		DestroyObject();
	handle = ::CreatePen( PS_SOLID, penWidth, penColor );
	destroyHandle = true;
}

void Pen::GetNullPen()
{
	if( handle != NULL && destroyHandle )
		DestroyObject();
	handle = ::GetStockObject( NULL_PEN );
	destroyHandle = false;
}
