From a0bc2c1d27e7b72812dff69f0e0f5abc496c70fe Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 5 Jul 1999 20:58:52 +0000 Subject: [PATCH] CalcUnscrolledPosition takes int, not floats git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/scrolwin.h | 27 +++++++++++---------- src/generic/scrolwin.cpp | 44 ++++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/include/wx/generic/scrolwin.h b/include/wx/generic/scrolwin.h index 9a29985ec8..cc1f9c3249 100644 --- a/include/wx/generic/scrolwin.h +++ b/include/wx/generic/scrolwin.h @@ -21,7 +21,7 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr; -class WXDLLEXPORT wxScrolledWindow: public wxPanel +class WXDLLEXPORT wxScrolledWindow : public wxPanel { DECLARE_ABSTRACT_CLASS(wxScrolledWindow) @@ -36,7 +36,7 @@ public: Create(parent, id, pos, size, style, name); } - ~wxScrolledWindow() {} + ~wxScrolledWindow() { } bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, @@ -64,6 +64,7 @@ public: #if WXWIN_COMPATIBILITY virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const; + virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const ; #endif int GetScrollPageSize(int orient) const ; @@ -85,30 +86,28 @@ public: virtual void GetVirtualSize(int *x, int *y) const; // Set the scale factor, used in PrepareDC - inline void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; } - inline double GetScaleX() const { return m_scaleX; } - inline double GetScaleY() const { return m_scaleY; } + void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; } + double GetScaleX() const { return m_scaleX; } + double GetScaleY() const { return m_scaleY; } virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const ; - virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const ; + virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const ; // Adjust the scrollbars virtual void AdjustScrollbars(void); - void OnScroll(wxScrollWinEvent& event); - void OnSize(wxSizeEvent& event); - void OnPaint(wxPaintEvent& event); - - // Override this function to draw the graphic. + // Override this function to draw the graphic (or just process EVT_PAINT) virtual void OnDraw(wxDC& WXUNUSED(dc)) {}; // Override this function if you don't want to have wxScrolledWindow // automatically change the origin according to the scroll position. virtual void PrepareDC(wxDC& dc); -public: - // IMPLEMENTATION - + // implementation from now on + void OnScroll(wxScrollWinEvent& event); + void OnSize(wxSizeEvent& event); + void OnPaint(wxPaintEvent& event); + // Calculate scroll increment virtual int CalcScrollInc(wxScrollWinEvent& event); diff --git a/src/generic/scrolwin.cpp b/src/generic/scrolwin.cpp index 033b08913b..8078c767b4 100644 --- a/src/generic/scrolwin.cpp +++ b/src/generic/scrolwin.cpp @@ -390,12 +390,22 @@ void wxScrolledWindow::GetScrollUnitsPerPage (int *x_page, int *y_page) const *x_page = GetScrollPageSize(wxHORIZONTAL); *y_page = GetScrollPageSize(wxVERTICAL); } -#endif + +void wxScrolledWindow::CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const +{ + if ( xx ) + *xx = (float)(x + m_xScrollPosition * m_xScrollPixelsPerLine); + if ( yy ) + *yy = (float)(y + m_yScrollPosition * m_yScrollPixelsPerLine); +} +#endif // WXWIN_COMPATIBILITY void wxScrolledWindow::GetScrollPixelsPerUnit (int *x_unit, int *y_unit) const { - *x_unit = m_xScrollPixelsPerLine; - *y_unit = m_yScrollPixelsPerLine; + if ( x_unit ) + *x_unit = m_xScrollPixelsPerLine; + if ( y_unit ) + *y_unit = m_yScrollPixelsPerLine; } int wxScrolledWindow::GetScrollPageSize(int orient) const @@ -475,27 +485,33 @@ void wxScrolledWindow::EnableScrolling (bool x_scroll, bool y_scroll) void wxScrolledWindow::GetVirtualSize (int *x, int *y) const { - *x = m_xScrollPixelsPerLine * m_xScrollLines; - *y = m_yScrollPixelsPerLine * m_yScrollLines; + if ( x ) + *x = m_xScrollPixelsPerLine * m_xScrollLines; + if ( y ) + *y = m_yScrollPixelsPerLine * m_yScrollLines; } // Where the current view starts from void wxScrolledWindow::ViewStart (int *x, int *y) const { - *x = m_xScrollPosition; - *y = m_yScrollPosition; + if ( x ) + *x = m_xScrollPosition; + if ( y ) + *y = m_yScrollPosition; } void wxScrolledWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const { - *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine; - *yy = y - m_yScrollPosition * m_yScrollPixelsPerLine; + if ( xx ) + *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine; + if ( yy ) + *yy = y - m_yScrollPosition * m_yScrollPixelsPerLine; } -void wxScrolledWindow::CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const +void wxScrolledWindow::CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const { - *xx = (float)(x + m_xScrollPosition * m_xScrollPixelsPerLine); - *yy = (float)(y + m_yScrollPosition * m_yScrollPixelsPerLine); + if ( xx ) + *xx = x + m_xScrollPosition * m_xScrollPixelsPerLine; + if ( yy ) + *yy = y + m_yScrollPosition * m_yScrollPixelsPerLine; } - - -- 2.45.2