No changes, just cleanup the image part of the docview sample.

Remove unnecessary, never used methods.

Don't use pointers when objects or references can be used more safely.

Don't name classes which are not part of wx with "wx" prefix to avoid
confusing people.

Don't define empty unnecessary event tables.

Prefer wxScrolledWindow::SetVirtualSize() to SetScrollbars().

Stop using "protected" when "private" should be used.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-05-13 14:37:06 +00:00
parent 2954883593
commit 2d4a03f8a7
5 changed files with 47 additions and 107 deletions

View File

@@ -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);
}

View File

@@ -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_

View File

@@ -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

View File

@@ -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;

View File

@@ -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_