home *** CD-ROM | disk | FTP | other *** search
- /////////////////////////////////////////////////////////////////////////////
- //
- // File : OutputLine.cpp
- // Project : MsgTrace
- // Component : MsgTracer
- //---------------------------------------------------------------------------
- // Description : output-line
- //
- /////////////////////////////////////////////////////////////////////////////
- //
- // SourceSafe Strings. Do not change.
- //---------------------------------------------------------------------------
- // $Author: jeskes $
- // $Date: $
- // $Revision: $
- //
- /////////////////////////////////////////////////////////////////////////////
-
- #include "stdafx.h"
- #include "OutputLine.h"
-
- /////////////////////////////////////////////////////////////////////////////
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- //
- // COutputLine
- //
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLineFormat COutputLine::m_aDefaultFormat;
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLine: construction
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine::COutputLine() : m_pFormat( NULL )
- {
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine::COutputLine( const CString& sText ) : CString( sText ), m_pFormat( NULL )
- {
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine::COutputLine( LPCSTR pszText ) : CString( pszText ), m_pFormat( NULL )
- {
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine::COutputLine( const COutputLine& aToCopy ) : CString( aToCopy )
- {
- if( NULL == aToCopy.m_pFormat )
- {
- m_pFormat = NULL;
- }
- else
- {
- m_pFormat = new COutputLineFormat( *aToCopy.m_pFormat );
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine::~COutputLine()
- {
- delete m_pFormat;
- m_pFormat = NULL;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLine: operators
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine& COutputLine::operator=( const COutputLine& aToCopy )
- {
- if( this != &aToCopy )
- {
- CString::operator=( aToCopy );
- SetFormat( aToCopy.GetFormat() );
- }
-
- return( *this );
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine& COutputLine::operator=( const CString& sToCopy )
- {
- CString::operator=( sToCopy );
-
- return( *this );
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLine& COutputLine::operator=( LPCSTR lpszToCopy )
- {
- CString::operator=( lpszToCopy );
-
- return( *this );
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLine: format
- /////////////////////////////////////////////////////////////////////////////
-
- void COutputLine::SetFormat( const COutputLineFormat& aFormatToSet )
- {
- delete m_pFormat;
- m_pFormat = NULL;
-
- if( &m_aDefaultFormat != &aFormatToSet )
- {
- m_pFormat = new COutputLineFormat( aFormatToSet );
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- const COutputLineFormat& COutputLine::GetFormat() const
- {
- if( NULL == m_pFormat )
- {
- return( m_aDefaultFormat );
- }
- else
- {
- return( *m_pFormat );
- }
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- //
- // COutputLineFormat
- //
- /////////////////////////////////////////////////////////////////////////////
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLineFormat: construction
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLineFormat::COutputLineFormat() :
-
- m_nTabStops( 0 ),
- m_pnTabStopPositions( NULL )
-
- {
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLineFormat::COutputLineFormat( const COutputLineFormat& aToCopy ) :
-
- m_nTabStops( 0 ),
- m_pnTabStopPositions( NULL )
-
- {
- InitTabStops( aToCopy.GetTabStops(), aToCopy.GetTabStopPositions() );
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLineFormat::~COutputLineFormat()
- {
- delete [] m_pnTabStopPositions;
- m_pnTabStopPositions = NULL;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLineFormat: operators
- /////////////////////////////////////////////////////////////////////////////
-
- COutputLineFormat& COutputLineFormat::operator=( const COutputLineFormat& aToCopy )
- {
- InitTabStops( aToCopy.GetTabStops(), aToCopy.GetTabStopPositions() );
- return( *this );
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // COutputLineFormat: tab-stops
- /////////////////////////////////////////////////////////////////////////////
-
- void COutputLineFormat::InitTabStops( int nTabStops, const int* pnTabStopPositions )
- {
- delete [] m_pnTabStopPositions;
- m_pnTabStopPositions = NULL;
-
- m_nTabStops = nTabStops;
-
- if( 0 < m_nTabStops )
- {
- m_pnTabStopPositions = new int[ m_nTabStops ];
-
- if( NULL != pnTabStopPositions )
- {
- ::CopyMemory( m_pnTabStopPositions,
- pnTabStopPositions,
- m_nTabStops * sizeof( int ) );
- }
- else
- {
- ::ZeroMemory( m_pnTabStopPositions,
- m_nTabStops * sizeof( int ) );
- }
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- void COutputLineFormat::SetTabStop( int nIndex, int nTabPos )
- {
- if( ( nIndex < 0 ) || ( nIndex >= m_nTabStops ) )
- {
- return;
- }
-
- m_pnTabStopPositions[ nIndex ] = nTabPos;
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- int COutputLineFormat::GetTabStops() const
- {
- return( m_nTabStops );
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- const int* COutputLineFormat::GetTabStopPositions() const
- {
- return( m_pnTabStopPositions );
- }
-
- /////////////////////////////////////////////////////////////////////////////
-
- const int* COutputLineFormat::GetTabStopPositionsPixel( const CDC& dc ) const
- {
- static int* pnTemp = NULL;
-
- delete [] pnTemp;
- pnTemp = NULL;
-
- if( 0 < m_nTabStops )
- {
- pnTemp = new int[ m_nTabStops ];
- ::CopyMemory( pnTemp, m_pnTabStopPositions, m_nTabStops * sizeof( int ) );
-
- TEXTMETRIC tm;
- dc.GetTextMetrics( &tm );
-
- for( int nIndex = 0; nIndex < m_nTabStops; nIndex++ )
- {
- pnTemp[ nIndex ] *= tm.tmAveCharWidth;
- }
- }
-
- return( pnTemp );
- }
-