| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: fs_mem.h
- // Purpose: interface of wxMemoryFSHandler
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxMemoryFSHandler
- This wxFileSystem handler can store arbitrary data in memory stream and make
- them accessible via an URL.
- It is particularly suitable for storing bitmaps from resources or included XPM
- files so that they can be used with wxHTML or wxWebView.
- Filenames are prefixed with @c "memory:", e.g. @c "memory:myfile.html".
- Example:
- @code
- #ifndef __WXMSW__
- #include "logo.xpm"
- #endif
- void MyFrame::OnAbout(wxCommandEvent&)
- {
- wxFileSystem::AddHandler(new wxMemoryFSHandler);
- wxMemoryFSHandler::AddFile("logo.png", wxBITMAP(logo), wxBITMAP_TYPE_PNG);
- wxMemoryFSHandler::AddFile("about.htm",
- "<html><body>About: "
- "<img src=\"memory:logo.png\"></body></html>");
- wxDialog dlg(this, -1, wxString(_("About")));
- wxBoxSizer *topsizer;
- topsizer = new wxBoxSizer(wxVERTICAL);
- #ifdef USE_WEBVIEW
- wxWebView* browser = wxWebView::New(&dlg, wxID_ANY, wxWebViewDefaultURLStr,
- wxDefaultPosition, wxSize(380, 160));
- browser->RegisterHandler(wxSharedPtr<wxWebViewHandler>(new wxWebViewFSHandler("memory")));
- browser->LoadURL("memory:about.htm");
- #else // Use wxHtml
- wxHtmlWindow *browser;
- browser = new wxHtmlWindow(&dlg, -1, wxDefaultPosition,
- wxSize(380, 160), wxHW_SCROLLBAR_NEVER);
- browser->SetBorders(0);
- browser->LoadPage("memory:about.htm");
- browser->SetSize(browser->GetInternalRepresentation()->GetWidth(),
- browser->GetInternalRepresentation()->GetHeight());
- #endif
- topsizer->Add(browser, 1, wxALL, 10);
- topsizer->Add(new wxStaticLine(&dlg, -1), 0, wxEXPAND | wxLEFT | wxRIGHT, 10);
- topsizer->Add(new wxButton(&dlg, wxID_OK, "Ok"),
- 0, wxALL | wxALIGN_RIGHT, 15);
- dlg.SetAutoLayout(true);
- dlg.SetSizer(topsizer);
- topsizer->Fit(&dlg);
- dlg.Centre();
- dlg.ShowModal();
- wxMemoryFSHandler::RemoveFile("logo.png");
- wxMemoryFSHandler::RemoveFile("about.htm");
- }
- @endcode
- @library{wxbase}
- @category{vfs}
- @see wxMemoryFSHandler::AddFileWithMimeType
- */
- class wxMemoryFSHandler : public wxFileSystemHandler
- {
- public:
- /**
- Constructor.
- */
- wxMemoryFSHandler();
- //@{
- /**
- Adds a file to the list of the files stored in memory.
- Stored data (bitmap, text or raw data) will be copied into private memory
- stream and available under name @c "memory:" + @e filename.
- @note you must use a @a type value (aka image format) that wxWidgets
- can save (e.g. JPG, PNG, see wxImage documentation)!
- @see AddFileWithMimeType()
- */
- static void AddFile(const wxString& filename, wxImage& image, wxBitmapType type);
- static void AddFile(const wxString& filename, const wxBitmap& bitmap, wxBitmapType type);
- //@}
- //@{
- /**
- Like AddFile(), but lets you explicitly specify added file's MIME type.
- This version should be used whenever you know the MIME type, because it
- makes accessing the files faster.
- @since 2.8.5
- @see AddFile()
- */
- static void AddFileWithMimeType(const wxString& filename,
- const wxString& textdata,
- const wxString& mimetype);
- static void AddFileWithMimeType(const wxString& filename,
- const void* binarydata,
- size_t size,
- const wxString& mimetype);
- //@}
- /**
- Removes a file from memory FS and frees the occupied memory.
- */
- static void RemoveFile(const wxString& filename);
- };
|