X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5f8525bf227e95765540cc8d37999ce5f8f428db..878711c01c1b9ad5b97d35f379a048b8ce1bfb49:/src/common/fs_mem.cpp diff --git a/src/common/fs_mem.cpp b/src/common/fs_mem.cpp index 1881dce9a8..29c730164c 100644 --- a/src/common/fs_mem.cpp +++ b/src/common/fs_mem.cpp @@ -8,54 +8,67 @@ #ifdef __GNUG__ -#pragma implementation +#pragma implementation "fs_mem.h" #endif #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif -#if (wxUSE_HTML || wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS +#if wxUSE_FILESYSTEM && wxUSE_STREAMS #ifndef WXPRECOMP -#include "wx/wx.h" + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/hash.h" #endif #include "wx/filesys.h" #include "wx/fs_mem.h" #include "wx/mstream.h" - class MemFSHashObj : public wxObject { public: - + MemFSHashObj(const void *data, size_t len) { m_Data = new char[len]; memcpy(m_Data, data, len); m_Len = len; - m_Time = wxDateTime::Now(); + InitTime(); } - + MemFSHashObj(wxMemoryOutputStream& stream) { m_Len = stream.GetSize(); m_Data = new char[m_Len]; stream.CopyTo(m_Data, m_Len); - m_Time = wxDateTime::Now(); + InitTime(); } - + ~MemFSHashObj() { delete[] m_Data; } - + char *m_Data; size_t m_Len; +#if wxUSE_DATETIME wxDateTime m_Time; +#endif // wxUSE_DATETIME + + DECLARE_NO_COPY_CLASS(MemFSHashObj) + + private: + void InitTime() + { +#if wxUSE_DATETIME + m_Time = wxDateTime::Now(); +#endif // wxUSE_DATETIME + } }; @@ -69,7 +82,6 @@ wxHashTable *wxMemoryFSHandler::m_Hash = NULL; wxMemoryFSHandler::wxMemoryFSHandler() : wxFileSystemHandler() { - m_Hash = NULL; } @@ -79,8 +91,8 @@ wxMemoryFSHandler::~wxMemoryFSHandler() // as only one copy of FS handler is supposed to exist, we may silently // delete static data here. (There is no way how to remove FS handler from // wxFileSystem other than releasing _all_ handlers.) - - if (m_Hash) delete m_Hash; + + if (m_Hash) delete m_Hash; m_Hash = NULL; } @@ -104,17 +116,22 @@ wxFSFile* wxMemoryFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString else return new wxFSFile(new wxMemoryInputStream(obj -> m_Data, obj -> m_Len), location, GetMimeTypeFromExt(location), - GetAnchor(location), - obj -> m_Time); + GetAnchor(location) +#if wxUSE_DATETIME + , obj -> m_Time +#endif // wxUSE_DATETIME + ); } else return NULL; } -wxString wxMemoryFSHandler::FindFirst(const wxString& spec, int flags) +wxString wxMemoryFSHandler::FindFirst(const wxString& WXUNUSED(spec), + int WXUNUSED(flags)) { - wxLogWarning(wxT("wxMemoryFSHandler::FindFirst not implemented")); + wxFAIL_MSG(wxT("wxMemoryFSHandler::FindFirst not implemented")); + return wxEmptyString; } @@ -122,20 +139,20 @@ wxString wxMemoryFSHandler::FindFirst(const wxString& spec, int flags) wxString wxMemoryFSHandler::FindNext() { - wxLogWarning(wxT("wxMemoryFSHandler::FindNext not implemented")); + wxFAIL_MSG(wxT("wxMemoryFSHandler::FindNext not implemented")); + return wxEmptyString; } - bool wxMemoryFSHandler::CheckHash(const wxString& filename) { - if (m_Hash == NULL) + if (m_Hash == NULL) { m_Hash = new wxHashTable(wxKEY_STRING); m_Hash -> DeleteContents(TRUE); } - + if (m_Hash -> Get(filename) != NULL) { wxString s; @@ -149,19 +166,21 @@ bool wxMemoryFSHandler::CheckHash(const wxString& filename) +#if wxUSE_GUI + /*static*/ void wxMemoryFSHandler::AddFile(const wxString& filename, wxImage& image, long type) { if (!CheckHash(filename)) return; - + wxMemoryOutputStream mems; - if (image.Ok() && image.SaveFile(mems, type)) + if (image.Ok() && image.SaveFile(mems, (int)type)) m_Hash -> Put(filename, new MemFSHashObj(mems)); else { wxString s; s.Printf(_("Failed to store image '%s' to memory VFS!"), filename.c_str()); - printf("'%s'\n", s.c_str()); + wxPrintf(wxT("'%s'\n"), s.c_str()); wxLogError(s); } } @@ -169,10 +188,11 @@ bool wxMemoryFSHandler::CheckHash(const wxString& filename) /*static*/ void wxMemoryFSHandler::AddFile(const wxString& filename, const wxBitmap& bitmap, long type) { - wxImage img(bitmap); + wxImage img = bitmap.ConvertToImage(); AddFile(filename, img, type); } +#endif /*static*/ void wxMemoryFSHandler::AddFile(const wxString& filename, const wxString& textdata) { @@ -204,4 +224,4 @@ bool wxMemoryFSHandler::CheckHash(const wxString& filename) -#endif // wxUSE_FS_ZIP +#endif // wxUSE_FILESYSTEM && wxUSE_FS_ZIP