-void wxStaticText::DrawParagraph(wxDC &dc, wxString paragraph, int &y)
-{
- long width, height ;
-
- if (paragraph.Length() == 0)
- {
- // empty line
- dc.GetTextExtent( wxT("H"), &width, &height );
- y += height;
-
- return;
- }
-
- int x = 0 ;
-
- bool linedrawn = true;
- while( paragraph.Length() > 0 )
- {
- dc.GetTextExtent( paragraph , &width , &height ) ;
-
- if ( width > m_width )
- {
- for ( size_t p = paragraph.Length() - 1 ; p > 0 ; --p )
- {
- if ((punct.Find(paragraph[p]) != wxNOT_FOUND) || !linedrawn)
- {
- int blank = (paragraph[p] == ' ') ? 0 : 1;
-
- dc.GetTextExtent( paragraph.Left(p + blank) , &width , &height ) ;
-
- if ( width <= m_width )
- {
- int pos = x ;
- if ( HasFlag( wxALIGN_CENTER ) )
- {
- pos += ( m_width - width ) / 2 ;
- }
- else if ( HasFlag( wxALIGN_RIGHT ) )
- {
- pos += ( m_width - width ) ;
- }
-
- dc.DrawText( paragraph.Left(p + blank), pos , y) ;
- y += height ;
- paragraph = paragraph.Mid(p+1) ;
- linedrawn = true;
- break ;
- }
- }
- }
-
- linedrawn = false;
- }
- else
- {
- int pos = x ;
- if ( HasFlag( wxALIGN_CENTER ) )
- {
- pos += ( m_width - width ) / 2 ;
- }
- else if ( HasFlag( wxALIGN_RIGHT ) )
- {
- pos += ( m_width - width ) ;
- }
-
- dc.DrawText( paragraph, pos , y) ;
- paragraph=wxEmptyString;
- y += height ;
- }
- }