2023-03-29 16:53:28 +00:00
|
|
|
/*
|
|
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2021-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
|
|
|
*
|
|
|
|
* This program 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 3 of the License, or (at your
|
|
|
|
* option) any later version.
|
|
|
|
*
|
|
|
|
* 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
|
|
|
|
* General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <font/text_attributes.h>
|
|
|
|
#include <font/outline_font.h>
|
|
|
|
|
|
|
|
|
|
|
|
TEXT_ATTRIBUTES::TEXT_ATTRIBUTES( KIFONT::FONT* aFont ) :
|
|
|
|
m_Font( aFont ),
|
|
|
|
m_Halign( GR_TEXT_H_ALIGN_CENTER ),
|
|
|
|
m_Valign( GR_TEXT_V_ALIGN_CENTER ),
|
|
|
|
m_Angle( ANGLE_0 ),
|
|
|
|
m_LineSpacing( 1.0 ),
|
|
|
|
m_StrokeWidth( 0 ),
|
|
|
|
m_Italic( false ),
|
|
|
|
m_Bold( false ),
|
|
|
|
m_Underlined( false ),
|
|
|
|
m_Color( KIGFX::COLOR4D::UNSPECIFIED ),
|
|
|
|
m_Visible( true ),
|
|
|
|
m_Mirrored( false ),
|
|
|
|
m_Multiline( true ),
|
|
|
|
m_KeepUpright( false )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int TEXT_ATTRIBUTES::Compare( const TEXT_ATTRIBUTES& aRhs ) const
|
|
|
|
{
|
|
|
|
wxString fontName;
|
|
|
|
|
|
|
|
if( m_Font )
|
|
|
|
fontName = m_Font->GetName();
|
|
|
|
|
|
|
|
wxString rhsFontName;
|
|
|
|
|
|
|
|
if( aRhs.m_Font )
|
|
|
|
rhsFontName = aRhs.m_Font->GetName();
|
|
|
|
|
|
|
|
int retv = fontName.Cmp( rhsFontName );
|
|
|
|
|
|
|
|
if( retv )
|
|
|
|
return retv;
|
|
|
|
|
|
|
|
if( m_Size.x != aRhs.m_Size.x )
|
|
|
|
return m_Size.x - aRhs.m_Size.x;
|
|
|
|
|
|
|
|
if( m_Size.y != aRhs.m_Size.y )
|
|
|
|
return m_Size.y - aRhs.m_Size.y;
|
|
|
|
|
|
|
|
if( m_StrokeWidth != aRhs.m_StrokeWidth )
|
|
|
|
return m_StrokeWidth - aRhs.m_StrokeWidth;
|
|
|
|
|
|
|
|
if( m_Angle.AsDegrees() != aRhs.m_Angle.AsDegrees() )
|
2023-08-06 19:20:53 +00:00
|
|
|
return m_Angle.AsDegrees() < aRhs.m_Angle.AsDegrees() ? -1 : 1;
|
2023-03-29 16:53:28 +00:00
|
|
|
|
|
|
|
if( m_LineSpacing != aRhs.m_LineSpacing )
|
2023-08-06 19:20:53 +00:00
|
|
|
return m_LineSpacing < aRhs.m_LineSpacing ? -1 : 1;
|
2023-03-29 16:53:28 +00:00
|
|
|
|
|
|
|
if( m_Halign != aRhs.m_Halign )
|
|
|
|
return m_Halign - aRhs.m_Halign;
|
|
|
|
|
|
|
|
if( m_Valign != aRhs.m_Valign )
|
|
|
|
return m_Valign - aRhs.m_Valign;
|
|
|
|
|
|
|
|
if( m_Italic != aRhs.m_Italic )
|
|
|
|
return m_Italic - aRhs.m_Italic;
|
|
|
|
|
|
|
|
if( m_Bold != aRhs.m_Bold )
|
|
|
|
return m_Bold - aRhs.m_Bold;
|
|
|
|
|
|
|
|
if( m_Underlined != aRhs.m_Underlined )
|
|
|
|
return m_Underlined - aRhs.m_Underlined;
|
|
|
|
|
|
|
|
retv = m_Color.Compare( aRhs.m_Color );
|
|
|
|
|
|
|
|
if( retv )
|
|
|
|
return retv;
|
|
|
|
|
|
|
|
if( m_Visible != aRhs.m_Visible )
|
|
|
|
return m_Visible - aRhs.m_Visible;
|
|
|
|
|
|
|
|
if( m_Mirrored != aRhs.m_Mirrored )
|
|
|
|
return m_Mirrored - aRhs.m_Mirrored;
|
|
|
|
|
|
|
|
if( m_Multiline != aRhs.m_Multiline )
|
|
|
|
return m_Multiline - aRhs.m_Multiline;
|
|
|
|
|
|
|
|
return m_KeepUpright - aRhs.m_KeepUpright;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::ostream& operator<<( std::ostream& aStream, const TEXT_ATTRIBUTES& aAttributes )
|
|
|
|
{
|
|
|
|
aStream << "Font: \"";
|
|
|
|
|
|
|
|
if ( aAttributes.m_Font )
|
|
|
|
aStream << *aAttributes.m_Font;
|
|
|
|
else
|
|
|
|
aStream << "UNDEFINED";
|
|
|
|
|
|
|
|
aStream << "\"\n";
|
|
|
|
aStream << "Horizontal Alignment: " << aAttributes.m_Halign << std::endl
|
|
|
|
<< "Vertical Alignment: " << aAttributes.m_Valign << std::endl
|
|
|
|
<< "Angle: " << aAttributes.m_Angle << std::endl
|
|
|
|
<< "Line Spacing: " << aAttributes.m_LineSpacing << std::endl
|
|
|
|
<< "Stroke Width: " << aAttributes.m_StrokeWidth << std::endl
|
|
|
|
<< "Italic: " << aAttributes.m_Italic << std::endl
|
|
|
|
<< "Bold: " << aAttributes.m_Bold << std::endl
|
|
|
|
<< "Underline: " << aAttributes.m_Underlined << std::endl
|
|
|
|
<< "Color: " << aAttributes.m_Color << std::endl
|
|
|
|
<< "Visible " << aAttributes.m_Visible << std::endl
|
|
|
|
<< "Mirrored " << aAttributes.m_Mirrored << std::endl
|
|
|
|
<< "Multilined: " << aAttributes.m_Multiline << std::endl
|
|
|
|
<< "Size: " << aAttributes.m_Size << std::endl
|
|
|
|
<< "Keep Upright: " << aAttributes.m_KeepUpright << std::endl;
|
|
|
|
|
|
|
|
return aStream;
|
|
|
|
}
|