]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/font.cpp
no message
[wxWidgets.git] / src / gtk1 / font.cpp
index 2152854752a24da066716e1d87d51cafb713cf87..ef95c79be8d2a92c0335292ef56c1e2714b9469a 100644 (file)
 // local data
 //-----------------------------------------------------------------------------
 
-static char *wx_font_family [] = {
-    "wxDEFAULT", "wxDECORATIVE", "wxROMAN", "wxSCRIPT",
-    "wxSWISS", "wxMODERN", "wxTELETYPE",
-};
-
-/*
-static char *wx_font_style [] = {
-    "wxDEFAULT", "wxNORMAL", "wxSLANT", "wxITALIC",
-};
-
-static char *wx_font_weight [] = {
-    "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT",
-};
-*/
-
 extern wxFontNameDirectory *wxTheFontNameDirectory;
 
 //-----------------------------------------------------------------------------
@@ -64,10 +49,10 @@ class wxFontRefData: public wxObjectRefData
 wxFontRefData::wxFontRefData(void) : m_scaled_xfonts(wxKEY_INTEGER)
 {
   m_byXFontName = FALSE;
-  m_pointSize = -1;
-  m_family = -1;
-  m_style = -1;
-  m_weight = -1;
+  m_pointSize = 12;
+  m_family = wxSWISS;
+  m_style = wxNORMAL;
+  m_weight = wxNORMAL;
   m_underlined = FALSE;
   m_fontId = 0;
   m_faceName = (char *) NULL;
@@ -128,8 +113,11 @@ wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight,
     M_FONTDATA->m_fontId = FontIdOrFamily;
     M_FONTDATA->m_family  = wxTheFontNameDirectory->GetFamily( FontIdOrFamily );
   }
+  if (Style == wxDEFAULT) Style = wxSWISS;
   M_FONTDATA->m_style = Style;
+  if (Weight == wxDEFAULT) Weight = wxNORMAL;
   M_FONTDATA->m_weight = Weight;
+  if (PointSize == wxDEFAULT) PointSize = 10;
   M_FONTDATA->m_pointSize = PointSize;
   M_FONTDATA->m_underlined = Underlined;
 
@@ -189,106 +177,158 @@ bool wxFont::operator != ( const wxFont& font )
   return m_refData != font.m_refData; 
 }
 
-bool wxFont::Ok()
+bool wxFont::Ok() const
 {
   return (m_refData != NULL);
 }
 
 int wxFont::GetPointSize(void) const
 {
+  if (!Ok()) 
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
+  
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
 }
 
 wxString wxFont::GetFaceName(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
 }
 
 int wxFont::GetFamily(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return 0;
+  }
+  
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
-  wxString s = wx_font_family[M_FONTDATA->m_family - wxDEFAULT];
-  return s;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
+  
+  switch (M_FONTDATA->m_family)
+  {
+    case wxDECORATIVE:   return wxString("wxDECORATIVE");
+    case wxROMAN:        return wxString("wxROMAN");
+    case wxSCRIPT:       return wxString("wxSCRIPT");
+    case wxSWISS:        return wxString("wxSWISS");
+    case wxMODERN:       return wxString("wxMODERN");
+    case wxTELETYPE:     return wxString("wxTELETYPE");
+    default:             return "wxDEFAULT";
+  }
+
+  return "wxDEFAULT";
 }
 
 int wxFont::GetFontId(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
+  
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
+  
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
-    switch (M_FONTDATA->m_style)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxSLANT:
-        {
-            return wxString("wxSLANT");
-        }
-        case wxITALIC:
-        {
-            return wxString("wxITALIC");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
+  
+  switch (M_FONTDATA->m_style)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxSLANT:    return wxString("wxSLANT");
+    case wxITALIC:   return wxString("wxITALIC");
+    default:         return wxString("wxDEFAULT");
+  }
+    
+  return wxString("wxDEFAULT");
 }
 
 int wxFont::GetWeight(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
+
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
-    switch (M_FONTDATA->m_weight)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxBOLD:
-        {
-            return wxString("wxBOLD");
-        }
-        case wxLIGHT:
-        {
-            return wxString("wxLIGHT");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
+
+  switch (M_FONTDATA->m_weight)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxBOLD:     return wxString("wxBOLD");
+    case wxLIGHT:    return wxString("wxLIGHT");
+    default:         return wxString("wxDEFAULT");
+  }
+  
+  return wxString("wxDEFAULT");
 }
 
 bool wxFont::GetUnderlined(void) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return FALSE;
+  }
+  
   return M_FONTDATA->m_underlined;
 }
 
@@ -303,6 +343,12 @@ static GdkFont *wxLoadQueryNearestFont(int point_size, int fontid,
 
 GdkFont *wxFont::GetInternalFont(float scale) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return (GdkFont*) NULL;
+  }
+  
   if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font;
    
   long int_scale = long(scale * 100.0 + 0.5); // key for fontlist