diff --git a/samples/docview/doc.cpp b/samples/docview/doc.cpp index cf53892ea2..05c92d588f 100644 --- a/samples/docview/doc.cpp +++ b/samples/docview/doc.cpp @@ -250,56 +250,13 @@ wxTextCtrl* TextEditDocument::GetTextCtrl() const } // ---------------------------------------------------------------------------- -// wxImageDocument implementation +// ImageDocument and wxImageDetailsDocument implementation // ---------------------------------------------------------------------------- -///////////////////////////////////////////////////////////////////////////// -// wxImageDocument +IMPLEMENT_DYNAMIC_CLASS(ImageDocument, wxDocument) -IMPLEMENT_DYNAMIC_CLASS(wxImageDocument, wxDocument) - -wxImageDocument::wxImageDocument() : wxDocument() +bool ImageDocument::DoOpenDocument(const wxString& file) { -} - -wxImageDocument::~wxImageDocument() -{ -} - -bool wxImageDocument::DeleteContents() -{ - bool ok = wxDocument::DeleteContents(); - if (ok && m_image.IsOk()) - { - m_image.Destroy(); - } - return ok; -} - -bool wxImageDocument::SaveFile(wxOutputStream* stream, wxBitmapType type) const -{ - return m_image.IsOk() && m_image.SaveFile(*stream, type); -} - -bool wxImageDocument::DoOpenDocument(const wxString& file) -{ - wxFileInputStream stream(file); - return stream.IsOk() && DoOpenDocument(&stream); -} - -bool wxImageDocument::DoSaveDocument(const wxString& file) -{ - wxFileOutputStream stream(file); - return stream.IsOk() && DoSaveDocument(&stream); -} - -bool wxImageDocument::DoOpenDocument(wxInputStream* stream) -{ - return m_image.LoadFile(*stream); -} - -bool wxImageDocument::DoSaveDocument(wxOutputStream* stream) const -{ - return m_image.IsOk() && SaveFile(stream, m_image.GetType()); + return m_image.LoadFile(file); } diff --git a/samples/docview/doc.h b/samples/docview/doc.h index ecc1453a38..fbe0101a79 100644 --- a/samples/docview/doc.h +++ b/samples/docview/doc.h @@ -198,33 +198,24 @@ public: }; // ---------------------------------------------------------------------------- -// A basic image document class +// A document class representing an image // ---------------------------------------------------------------------------- -class wxImageDocument : public wxDocument +class ImageDocument : public wxDocument { +public: + ImageDocument() : wxDocument() { } + + wxImage GetImage() const { return m_image; } + protected: - wxImage m_image; -public: - wxImageDocument(); - - wxImage* GetImage() { return &m_image; } - const wxImage& GetImage() const { return m_image; } - - bool SaveFile(wxOutputStream*, wxBitmapType) const; - -public: - virtual ~wxImageDocument(); - virtual bool DeleteContents(); - virtual bool DoOpenDocument(const wxString& file); - virtual bool DoSaveDocument(const wxString& file); - virtual bool DoOpenDocument(wxInputStream*); - virtual bool DoSaveDocument(wxOutputStream*) const; +private: + wxImage m_image; - wxDECLARE_NO_COPY_CLASS(wxImageDocument); - DECLARE_DYNAMIC_CLASS(wxImageDocument) + wxDECLARE_NO_COPY_CLASS(ImageDocument); + DECLARE_DYNAMIC_CLASS(ImageDocument) }; #endif // _WX_SAMPLES_DOCVIEW_DOC_H_ diff --git a/samples/docview/docview.cpp b/samples/docview/docview.cpp index e0ee83cbd2..f8f2a8f98b 100644 --- a/samples/docview/docview.cpp +++ b/samples/docview/docview.cpp @@ -181,7 +181,7 @@ bool MyApp::OnInit() // Create a template relating image documents to their views new wxDocTemplate(docManager, "Image", "*.png;*.jpg", "", "png;jpg", "Image Doc", "Image View", - CLASSINFO(wxImageDocument), CLASSINFO(wxImageView)); + CLASSINFO(ImageDocument), CLASSINFO(ImageView)); } // create the main frame window diff --git a/samples/docview/view.cpp b/samples/docview/view.cpp index d454e56554..ff24096c08 100644 --- a/samples/docview/view.cpp +++ b/samples/docview/view.cpp @@ -284,70 +284,66 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) } // ---------------------------------------------------------------------------- -// wxImageCanvas implementation +// ImageCanvas implementation // ---------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(wxImageCanvas, wxScrolledWindow) -END_EVENT_TABLE() - // Define a constructor for my canvas -wxImageCanvas::wxImageCanvas(wxView* view, wxWindow* parent) +ImageCanvas::ImageCanvas(wxView* view, wxWindow* parent) : wxScrolledWindow(parent, wxID_ANY, wxPoint(0, 0), parent->GetClientSize()) { + SetScrollRate( 10, 10 ); + m_view = view; } // Define the repainting behaviour -void wxImageCanvas::OnDraw(wxDC& dc) +void ImageCanvas::OnDraw(wxDC& dc) { if ( m_view ) m_view->OnDraw(& dc); } // ---------------------------------------------------------------------------- -// wxImageView implementation +// ImageView implementation // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxImageView, wxView) +IMPLEMENT_DYNAMIC_CLASS(ImageView, wxView) -BEGIN_EVENT_TABLE(wxImageView, wxView) -END_EVENT_TABLE() - -wxImageDocument* wxImageView::GetDocument() +ImageDocument* ImageView::GetDocument() { - return wxStaticCast(wxView::GetDocument(), wxImageDocument); + return wxStaticCast(wxView::GetDocument(), ImageDocument); } -bool wxImageView::OnCreate(wxDocument* doc, long WXUNUSED(flags)) +bool ImageView::OnCreate(wxDocument* doc, long WXUNUSED(flags)) { m_frame = wxGetApp().CreateChildFrame(doc, this, false); m_frame->SetTitle("Image View"); - m_canvas = new wxImageCanvas(this, m_frame); + m_canvas = new ImageCanvas(this, m_frame); m_frame->Show(true); Activate(true); return true; } -void wxImageView::OnUpdate(wxView* sender, wxObject* hint) +void ImageView::OnUpdate(wxView* sender, wxObject* hint) { wxView::OnUpdate(sender, hint); - const wxImage* image = GetDocument()->GetImage(); - if (image->IsOk()) + wxImage image = GetDocument()->GetImage(); + if ( image.IsOk() ) { - m_canvas->SetScrollbars( 1, 1, image->GetWidth(), image->GetHeight() ); + m_canvas->SetVirtualSize(image.GetWidth(), image.GetHeight()); } } -void wxImageView::OnDraw(wxDC* dc) +void ImageView::OnDraw(wxDC* dc) { - const wxImage* image = GetDocument()->GetImage(); - if (image->IsOk()) + wxImage image = GetDocument()->GetImage(); + if ( image.IsOk() ) { - dc->DrawBitmap(wxBitmap(*image), 0, 0); + dc->DrawBitmap(wxBitmap(image), 0, 0); } } -bool wxImageView::OnClose(bool deleteWindow) +bool ImageView::OnClose(bool deleteWindow) { if ( !GetDocument()->Close() ) return false; diff --git a/samples/docview/view.h b/samples/docview/view.h index f2df562f7f..cb05b2ebcb 100644 --- a/samples/docview/view.h +++ b/samples/docview/view.h @@ -115,13 +115,13 @@ private: }; // ---------------------------------------------------------------------------- -// wxImageCanvas +// ImageCanvas // ---------------------------------------------------------------------------- -class wxImageCanvas : public wxScrolledWindow +class ImageCanvas : public wxScrolledWindow { public: - wxImageCanvas(wxView*, wxWindow* parent); + ImageCanvas(wxView*, wxWindow* parent); virtual void OnDraw(wxDC& dc); @@ -144,35 +144,31 @@ public: m_view = NULL; } -protected: +private: wxView *m_view; - - DECLARE_EVENT_TABLE() }; // ---------------------------------------------------------------------------- -// wxImageView +// ImageView // ---------------------------------------------------------------------------- -class wxImageDocument; -class wxImageView : public wxView +class ImageView : public wxView { public: - wxImageView() : wxView(), m_frame(NULL) {} + ImageView() : wxView(), m_frame(NULL) {} virtual bool OnCreate(wxDocument*, long flags); virtual void OnDraw(wxDC*); virtual bool OnClose(bool deleteWindow = true); virtual void OnUpdate(wxView *sender, wxObject *hint = NULL); - wxImageDocument* GetDocument(); + ImageDocument* GetDocument(); -protected: +private: wxFrame* m_frame; - wxImageCanvas* m_canvas; + ImageCanvas* m_canvas; - DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxImageView) + DECLARE_DYNAMIC_CLASS(ImageView) }; #endif // _WX_SAMPLES_DOCVIEW_VIEW_H_