git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27945
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Set layout's text
#if wxUSE_UNICODE
const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
// Set layout's text
#if wxUSE_UNICODE
const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
- pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data ));
+ const char *dataUTF8 = (const char *)data;
#else
const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string );
#else
const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string );
+ if ( !wdata )
+ return;
const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
- pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data ));
+ const char *dataUTF8 = (const char *)data;
+
+ if ( !dataUTF8 )
+ {
+ // hardly ideal, but what else can we do if conversion failed?
+ return;
+ }
+
+ pango_layout_set_text( m_layout, dataUTF8, strlen(dataUTF8) );
int w,h;
pango_layout_get_pixel_size( m_layout, &w, &h );
int w,h;
pango_layout_get_pixel_size( m_layout, &w, &h );
- if (width) (*width) = (wxCoord) w;
- if (height) (*height) = (wxCoord) h;
+ if (width)
+ *width = (wxCoord) w;
+ if (height)
+ *height = (wxCoord) h;
if (descent)
{
// Do something about metrics here. TODO.
if (descent)
{
// Do something about metrics here. TODO.
- if (externalLeading) (*externalLeading) = 0; // ??
+ if (externalLeading)
+ *externalLeading = 0; // ??
// Reset old font description
if (theFont)
pango_layout_set_font_description( m_layout, m_fontdesc );
// Reset old font description
if (theFont)
pango_layout_set_font_description( m_layout, m_fontdesc );
wxFont fontToUse = m_font;
if (theFont) fontToUse = *theFont;
wxFont fontToUse = m_font;
if (theFont) fontToUse = *theFont;
if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY);
if (descent) (*descent) = wxCoord(font->descent / m_scaleY);
if (externalLeading) (*externalLeading) = 0; // ??
if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY);
if (descent) (*descent) = wxCoord(font->descent / m_scaleY);
if (externalLeading) (*externalLeading) = 0; // ??
}
wxCoord wxWindowDC::GetCharWidth() const
}
wxCoord wxWindowDC::GetCharWidth() const
// Set layout's text
#if wxUSE_UNICODE
const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
// Set layout's text
#if wxUSE_UNICODE
const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
- pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data ));
+ const char *dataUTF8 = (const char *)data;
#else
const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string );
#else
const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string );
+ if ( !wdata )
+ return;
const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
- pango_layout_set_text( m_layout, (const char*) data, strlen( (const char*) data ));
+ const char *dataUTF8 = (const char *)data;
+
+ if ( !dataUTF8 )
+ {
+ // hardly ideal, but what else can we do if conversion failed?
+ return;
+ }
+
+ pango_layout_set_text( m_layout, dataUTF8, strlen(dataUTF8) );
int w,h;
pango_layout_get_pixel_size( m_layout, &w, &h );
int w,h;
pango_layout_get_pixel_size( m_layout, &w, &h );
- if (width) (*width) = (wxCoord) w;
- if (height) (*height) = (wxCoord) h;
+ if (width)
+ *width = (wxCoord) w;
+ if (height)
+ *height = (wxCoord) h;
if (descent)
{
// Do something about metrics here. TODO.
if (descent)
{
// Do something about metrics here. TODO.
- if (externalLeading) (*externalLeading) = 0; // ??
+ if (externalLeading)
+ *externalLeading = 0; // ??
// Reset old font description
if (theFont)
pango_layout_set_font_description( m_layout, m_fontdesc );
// Reset old font description
if (theFont)
pango_layout_set_font_description( m_layout, m_fontdesc );
wxFont fontToUse = m_font;
if (theFont) fontToUse = *theFont;
wxFont fontToUse = m_font;
if (theFont) fontToUse = *theFont;
if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY);
if (descent) (*descent) = wxCoord(font->descent / m_scaleY);
if (externalLeading) (*externalLeading) = 0; // ??
if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY);
if (descent) (*descent) = wxCoord(font->descent / m_scaleY);
if (externalLeading) (*externalLeading) = 0; // ??
}
wxCoord wxWindowDC::GetCharWidth() const
}
wxCoord wxWindowDC::GetCharWidth() const