mirror of https://github.com/PCSX2/pcsx2.git
156 lines
3.5 KiB
C++
156 lines
3.5 KiB
C++
/* PCSX2 - PS2 Emulator for PCs
|
|
* Copyright (C) 2002-2010 PCSX2 Dev Team
|
|
*
|
|
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
|
* of the GNU Lesser General Public License as published by the Free Software Found-
|
|
* ation, either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* PCSX2 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with PCSX2.
|
|
* If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "PrecompiledHeader.h"
|
|
#include "wxGuiTools.h"
|
|
|
|
// --------------------------------------------------------------------------------------
|
|
// pxWindowTextWriter Implementations
|
|
// --------------------------------------------------------------------------------------
|
|
pxWindowTextWriter::pxWindowTextWriter( wxDC& dc )
|
|
: m_dc( dc )
|
|
{
|
|
m_curpos = wxPoint();
|
|
m_align = wxALIGN_CENTER;
|
|
m_leading = 0;
|
|
|
|
OnFontChanged();
|
|
}
|
|
|
|
void pxWindowTextWriter::OnFontChanged()
|
|
{
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::SetWeight( int weight )
|
|
{
|
|
wxFont curfont( m_dc.GetFont() );
|
|
curfont.SetWeight( weight );
|
|
m_dc.SetFont( curfont );
|
|
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::SetStyle( int style )
|
|
{
|
|
wxFont curfont( m_dc.GetFont() );
|
|
curfont.SetStyle( style );
|
|
m_dc.SetFont( curfont );
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::Normal()
|
|
{
|
|
wxFont curfont( m_dc.GetFont() );
|
|
curfont.SetStyle( wxNORMAL );
|
|
curfont.SetWeight( wxNORMAL );
|
|
m_dc.SetFont( curfont );
|
|
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::SetPos( const wxPoint& pos )
|
|
{
|
|
m_curpos = pos;
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::MovePos( const wxSize& delta )
|
|
{
|
|
m_curpos += delta;
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::SetY( int ypos )
|
|
{
|
|
m_curpos.y = ypos;
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::MoveY( int ydelta )
|
|
{
|
|
m_curpos.y += ydelta;
|
|
return *this;
|
|
}
|
|
|
|
void pxWindowTextWriter::_DoWriteLn( const wxChar* msg )
|
|
{
|
|
pxAssert( msg );
|
|
|
|
int tWidth, tHeight;
|
|
m_dc.GetMultiLineTextExtent( msg, &tWidth, &tHeight );
|
|
|
|
wxPoint dispos( m_curpos );
|
|
|
|
if( m_align & wxALIGN_CENTER_HORIZONTAL )
|
|
{
|
|
dispos.x = (m_dc.GetSize().GetWidth() - tWidth) / 2;
|
|
}
|
|
else if( m_align & wxALIGN_RIGHT )
|
|
{
|
|
dispos.x = m_dc.GetSize().GetWidth() - tWidth;
|
|
}
|
|
|
|
m_dc.DrawText( msg, dispos );
|
|
m_curpos.y += tHeight + m_leading;
|
|
}
|
|
|
|
// Splits incoming multi-line strings into pieces, and dispatches each line individually
|
|
// to the text writer.
|
|
void pxWindowTextWriter::_DoWrite( const wxChar* msg )
|
|
{
|
|
pxAssert( msg );
|
|
|
|
wxArrayString parts;
|
|
SplitString( parts, msg, L'\n' );
|
|
|
|
for( size_t i=0; i<parts.GetCount(); ++i )
|
|
_DoWriteLn( parts[i] );
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::SetFont( const wxFont& font )
|
|
{
|
|
m_dc.SetFont( font );
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::Align( const wxAlignment& align )
|
|
{
|
|
m_align = align;
|
|
m_curpos.x = 0;
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::WriteLn()
|
|
{
|
|
_DoWriteLn( L"" );
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::WriteLn( const wxChar* fmt )
|
|
{
|
|
_DoWrite( fmt );
|
|
return *this;
|
|
}
|
|
|
|
pxWindowTextWriter& pxWindowTextWriter::FormatLn( const wxChar* fmt, ... )
|
|
{
|
|
va_list args;
|
|
va_start(args,fmt);
|
|
_DoWrite( pxsFmtV(fmt, args) );
|
|
va_end(args);
|
|
return *this;
|
|
}
|
|
|