- int x = 0 ;
- int y = 0 ;
- int i = 0 ;
- long width, height ;
- bool linedrawn = true;
- while( paragraph.Length() > 0 )
- {
- dc.GetTextExtent( paragraph , &width , &height ) ;
-
- if ( width > m_width )
- {
- for ( int 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="";
- y += height ;
- }
- }
+ long width, height ;
+
+ if (paragraph.Length() == 0)
+ {
+ // empty line
+ dc.GetTextExtent( "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="";
+ y += height ;
+ }
+ }