]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/xti.cpp
added version checking to the renderers
[wxWidgets.git] / src / common / xti.cpp
index 52eb0a771527526bdef624cc1526b2b44ca623ff..992dc46bef6349e0a5cab2751d7350027b3cde26 100644 (file)
@@ -10,7 +10,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "xti.h"
 #endif
 
@@ -166,81 +166,87 @@ template<> const wxTypeInfo* wxGetTypeInfo( wxString * )
 
 // this are compiler induced specialization which are never used anywhere
 
-// char const *
+WX_ILLEGAL_TYPE_SPECIALIZATION( char const * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( char * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( unsigned char * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( int * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( bool * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( long * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( wxString * )
 
-template<> const wxTypeInfo* wxGetTypeInfo( char const ** )
+// ----------------------------------------------------------------------------
+// value streaming
+// ----------------------------------------------------------------------------
+
+// streamer specializations
+// for all built-in types
+
+// bool
+
+template<> void wxStringReadValue(const wxString &s , bool &data )
 {
-       assert(0) ;
-       static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ;
-       return &s_typeInfo ;
+       int intdata ;
+       wxSscanf(s, _T("%d"), &intdata ) ;
+       data = bool(intdata) ;
 }
 
-template<> void wxStringReadValue(const wxString & , const char* & )
+template<> void wxStringWriteValue(wxString &s , const bool &data )
 {
-       assert(0) ;
+       s = wxString::Format("%d", data ) ;
 }
 
-template<> void wxStringWriteValue(wxString & , char const * const & )
+// char
+
+template<> void wxStringReadValue(const wxString &s , char &data )
 {
-       assert(0) ;
+       int intdata ;
+       wxSscanf(s, _T("%d"), &intdata ) ;
+       data = char(intdata) ;
 }
 
-// char *
-
-template<> const wxTypeInfo* wxGetTypeInfo( char ** )
+template<> void wxStringWriteValue(wxString &s , const char &data )
 {
-        assert(0) ;
-        static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ;
-        return &s_typeInfo ;
+       s = wxString::Format("%d", data ) ;
 }
 
-template<> void wxStringReadValue(const wxString & , char* & )
+// unsigned char
+
+template<> void wxStringReadValue(const wxString &s , unsigned char &data )
 {
-        assert(0) ;
+       int intdata ;
+       wxSscanf(s, _T("%d"), &intdata ) ;
+       data = (unsigned char)(intdata) ;
 }
 
-template<> void wxStringWriteValue(wxString & , char * const & )
+template<> void wxStringWriteValue(wxString &s , const unsigned char &data )
 {
-        assert(0) ;
+       s = wxString::Format("%d", data ) ;
 }
 
-// const wxPoint
-/*
-template<> const wxTypeInfo* wxGetTypeInfo( const wxPoint * )
+// int
+
+template<> void wxStringReadValue(const wxString &s , int &data )
 {
-        assert(0) ;
-        static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ;
-        return &s_typeInfo ;
+       wxSscanf(s, _T("%d"), &data ) ;
 }
 
-template<> void wxStringReadValue(const wxString & , const wxPoint & )
+template<> void wxStringWriteValue(wxString &s , const int &data )
 {
-        assert(0) ;
+       s = wxString::Format("%d", data ) ;
 }
-*/
-// ----------------------------------------------------------------------------
-// value streaming
-// ----------------------------------------------------------------------------
 
-// convenience function (avoids including xml headers in users code)
+// unsigned int
 
-void wxXmlAddContentToNode( wxXmlNode* node , const wxString& data )
+template<> void wxStringReadValue(const wxString &s , unsigned int &data )
 {
-       node->AddChild(new wxXmlNode(wxXML_TEXT_NODE, "value", data ) );
+       wxSscanf(s, _T("%d"), &data ) ;
 }
 
-wxString wxXmlGetContentFromNode( wxXmlNode *node )
+template<> void wxStringWriteValue(wxString &s , const unsigned int &data )
 {
-       if ( node->GetChildren() )
-               return node->GetChildren()->GetContent() ;
-       else
-               return wxEmptyString ;
+       s = wxString::Format("%d", data ) ;
 }
 
-// streamer specializations
-
-// TODO for all built-in types
-
 // long
 
 template<> void wxStringReadValue(const wxString &s , long &data )
@@ -253,16 +259,40 @@ template<> void wxStringWriteValue(wxString &s , const long &data )
        s = wxString::Format("%ld", data ) ;
 }
 
-// int
+// unsigned long
 
-template<> void wxStringReadValue(const wxString &s , int &data )
+template<> void wxStringReadValue(const wxString &s , unsigned long &data )
 {
-       wxSscanf(s, _T("%d"), &data ) ;
+       wxSscanf(s, _T("%ld"), &data ) ;
 }
 
-template<> void wxStringWriteValue(wxString &s , const int &data )
+template<> void wxStringWriteValue(wxString &s , const unsigned long &data )
 {
-       s = wxString::Format("%d", data ) ;
+       s = wxString::Format("%ld", data ) ;
+}
+
+// float
+
+template<> void wxStringReadValue(const wxString &s , float &data )
+{
+       wxSscanf(s, _T("%f"), &data ) ;
+}
+
+template<> void wxStringWriteValue(wxString &s , const float &data )
+{
+       s = wxString::Format("%f", data ) ;
+}
+
+// double
+
+template<> void wxStringReadValue(const wxString &s , double &data )
+{
+       wxSscanf(s, _T("%lf"), &data ) ;
+}
+
+template<> void wxStringWriteValue(wxString &s , const double &data )
+{
+       s = wxString::Format("%lf", data ) ;
 }
 
 // wxString
@@ -295,6 +325,16 @@ template<> void wxStringWriteValue(wxString &s , const wxPoint &data )
        s = wxString::Format("%d,%d", data.x , data.y ) ;
 }
 
+template<> void wxStringReadValue(const wxString & , wxPoint* & )
+{
+    assert(0) ;
+}
+
+template<> void wxStringWriteValue(wxString & , wxPoint* const & )
+{
+    assert(0) ;
+}
+
 WX_CUSTOM_TYPE_INFO(wxPoint)
 
 template<> void wxStringReadValue(const wxString &s , wxSize &data )
@@ -307,8 +347,49 @@ template<> void wxStringWriteValue(wxString &s , const wxSize &data )
        s = wxString::Format("%d,%d", data.x , data.y ) ;
 }
 
+template<> void wxStringReadValue(const wxString & , wxSize* & )
+{
+    assert(0) ;
+}
+
+template<> void wxStringWriteValue(wxString & , wxSize * const & )
+{
+    assert(0) ;
+}
+
 WX_CUSTOM_TYPE_INFO(wxSize)
 
+/*
+
+template<> void wxStringReadValue(const wxString &s , wxColour &data )
+{
+       // copied from VS xrc
+       unsigned long tmp = 0;
+
+    if (s.Length() != 7 || s[0u] != wxT('#') ||
+        wxSscanf(s.c_str(), wxT("#%lX"), &tmp) != 1)
+    {
+               wxLogError(_("String To Colour : Incorrect colour specification : %s"),
+                   s.c_str() );
+        data = wxNullColour;
+    }
+       else
+       {
+               data = wxColour((unsigned char) ((tmp & 0xFF0000) >> 16) ,
+                    (unsigned char) ((tmp & 0x00FF00) >> 8),
+                    (unsigned char) ((tmp & 0x0000FF)));
+       }
+}
+
+template<> void wxStringWriteValue(wxString &s , const wxColour &data )
+{
+       s = wxString::Format("#%2X%2X%2X", data.Red() , data.Green() , data.Blue() ) ;
+}
+
+WX_CUSTOM_TYPE_INFO(wxColour)
+
+*/
+
 // removing header dependancy on string tokenizer
 
 void wxSetStringToArray( const wxString &s , wxArrayString &array )
@@ -326,24 +407,6 @@ void wxSetStringToArray( const wxString &s , wxArrayString &array )
 // wxClassInfo
 // ----------------------------------------------------------------------------
 
-
-void wxClassInfo::Register(const char *WXUNUSED(name), wxClassInfo *WXUNUSED(info))
-{
-       /*
-    if (!ExtendedTypeMap)
-       ExtendedTypeMap = new ClassMap;
-    (*ExtendedTypeMap)[string(Name)] = Info;
-       */
-}
-
-void wxClassInfo::Unregister(const char *WXUNUSED(name))
-{
-       /*
-    assert(ExtendedTypeMap);
-    ExtendedTypeMap->erase(Name);
-       */
-}
-
 const wxPropertyAccessor *wxClassInfo::FindAccessor(const char *PropertyName)
 {
     const wxPropertyInfo* info = FindPropertyInfo( PropertyName ) ;
@@ -419,7 +482,7 @@ wxxVariant wxClassInfo::GetProperty(wxObject *object, const char *propertyName)
 VARIANT TO OBJECT
 */
 
-wxObject* wxxVariant::GetAsObject() const
+wxObject* wxxVariant::GetAsObject()
 {
        const wxClassTypeInfo *ti = dynamic_cast<const wxClassTypeInfo*>( m_data->GetTypeInfo() ) ;
        if ( ti )