]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/vscroll.tex
[ 1504474 ] Small hyperlink doc fix.
[wxWidgets.git] / docs / latex / wx / vscroll.tex
index 9e18cb2f917f300bfe28eea7079e6ca8725a2739..b965f1fd1508affb96a2bccc6848595443662927 100644 (file)
@@ -19,7 +19,7 @@ this class only supports scrolling in one direction currently (this could
 and probably will change in the future however).
 
 In any case, this is a generalization of the 
-\helpref{wxScrolledWindow}{wxScrolledWindow} class which can be only used when
+\helpref{wxScrolledWindow}{wxscrolledwindow} class which can be only used when
 all lines have the same height. It lacks some other wxScrolledWindow features
 however, notably there is currently no support for horizontal scrolling; it
 can't scroll another window nor only a rectangle of the window and not its
@@ -33,7 +33,7 @@ moment on the scrolling is handled entirely by wxVScrolledWindow, you only
 need to draw the visible part of contents in your {\tt OnPaint()} method as
 usual. You should use \helpref{GetFirstVisibleLine()}{wxvscrolledwindowgetfirstvisibleline} 
 and \helpref{GetLastVisibleLine()}{wxvscrolledwindowgetlastvisibleline} to
-select the lines to display. ote that the device context origin is not shifted
+select the lines to display. Note that the device context origin is not shifted
 so the first visible line always appears at the point $(0, 0)$ in physical as
 well as logical coordinates.
 
@@ -90,18 +90,47 @@ Just as with the ctor above, {\tt wxVSCROLL} style is always used, there is no
 need to specify it explicitly.
 
 
+\membersection{wxVScrolledWindow::EstimateTotalHeight}\label{wxvscrolledwindowestimatetotalheight}
+
+\constfunc{virtual wxCoord}{EstimateTotalHeight}{\void}
+
+This protected function is used internally by wxVScrolledWindow to estimate the
+total height of the window when \helpref{SetLineCount}{wxvscrolledwindowsetlinecount} 
+is called. The default implementation uses the brute force approach if the
+number of the items in the control is small enough. Otherwise, it tries to find
+the average line height using some lines in the beginning, middle and the end.
+
+If it is undesirable to access all these lines (some of which might be never
+shown) just for the total height calculation, you may override the function and
+provide your own guess better and/or faster.
+
+Note that although returning a totally wrong value would still work, it risks
+to result in very strange scrollbar behaviour so this function should really
+try to make the best guess possible.
+
+
 \membersection{wxVScrolledWindow::GetFirstVisibleLine}\label{wxvscrolledwindowgetfirstvisibleline}
 
 \constfunc{size\_t}{GetFirstVisibleLine}{\void}
 
 Returns the index of the first currently visible line.
 
+This is same as \helpref{GetVisibleBegin}{wxvscrolledwindowgetvisiblebegin} and
+exists only for symmetry with \helpref{GetLastVisibleLine}{wxvscrolledwindowgetlastvisibleline}.
+
 
 \membersection{wxVScrolledWindow::GetLastVisibleLine}\label{wxvscrolledwindowgetlastvisibleline}
 
 \constfunc{size\_t}{GetLastVisibleLine}{\void}
 
-Returns the index of the last currently visible line.
+Returns the index of the last currently visible line. Note that this method
+returns \texttt{(size\_t)-1} (i.e. a huge positive number) if the control is
+empty so if this is possible you should use \helpref{GetVisibleEnd}{wxvscrolledwindowgetvisibleend} 
+instead.
+
+\wxheading{See also}
+
+\helpref{GetFirstVisibleLine}{wxvscrolledwindowgetfirstvisibleline}
 
 
 \membersection{wxVScrolledWindow::GetLineCount}\label{wxvscrolledwindowgetlinecount}
@@ -112,9 +141,52 @@ Get the number of lines this window contains (previously set by
 \helpref{SetLineCount()}{wxvscrolledwindowsetlinecount})
 
 
+\membersection{wxVScrolledWindow::GetVisibleBegin}\label{wxvscrolledwindowgetvisiblebegin}
+
+\constfunc{size\_t}{GetVisibleBegin}{\void}
+
+Returns the index of the first currently visible line.
+
+\wxheading{See also}
+
+\helpref{GetVisibleEnd}{wxvscrolledwindowgetvisibleend}
+
+
+\membersection{wxVScrolledWindow::GetVisibleEnd}\label{wxvscrolledwindowgetvisibleend}
+
+\constfunc{size\_t}{GetVisibleEnd}{\void}
+
+Returns the index of the first line after the currently visible one. If the
+return value is $0$ it means that no lines are currently shown (which only
+happens if the control is empty). Note that the index returned by this method
+is not always a valid index as it may be equal to \helpref{GetLineCount}{wxvscrolledwindowgetlinecount}.
+
+\wxheading{See also}
+
+\helpref{GetVisibleBegin}{wxvscrolledwindowgetvisiblebegin}
+
+
+\membersection{wxVScrolledWindow::HitTest}\label{wxvscrolledwindowhittest}
+
+\constfunc{int}{HitTest}{\param{wxCoord }{x}, \param{wxCoord }{y}}
+
+\constfunc{int}{HitTest}{\param{const wxPoint\& }{pt}}
+
+Return the item at the specified (in physical coordinates) position or
+{\tt wxNOT\_FOUND} if none, i.e. if it is below the last item.
+
+
+\membersection{wxVScrolledWindow::IsVisible}\label{wxvscrolledwindowisvisible}
+
+\constfunc{bool}{IsVisible}{\param{size\_t }{line}}
+
+Returns {\tt true} if the given line is (at least partially) visible or 
+{\tt false} otherwise.
+
+
 \membersection{wxVScrolledWindow::OnGetLineHeight}\label{wxvscrolledwindowongetlineheight}
 
-\constfunc{wxCoord}{OnGetLineHeight}{\param{size\_t }{n}}
+\constfunc{virtual wxCoord}{OnGetLineHeight}{\param{size\_t }{n}}
 
 This protected virtual function must be overridden in the derived class and it
 should return the height of the given line in pixels.
@@ -126,7 +198,7 @@ should return the height of the given line in pixels.
 
 \membersection{wxVScrolledWindow::OnGetLinesHint}\label{wxvscrolledwindowongetlineshint}
 
-\constfunc{void}{OnGetLinesHint}{\param{size\_t }{lineMin}, \param{size\_t }{lineMax}}
+\constfunc{virtual void}{OnGetLinesHint}{\param{size\_t }{lineMin}, \param{size\_t }{lineMax}}
 
 This function doesn't have to be overridden but it may be useful to do
 it if calculating the lines heights is a relatively expensive operation
@@ -144,6 +216,40 @@ Finally note that {\it lineMin} is inclusive, while {\it lineMax} is exclusive,
 as usual.
 
 
+\membersection{wxVScrolledWindow::RefreshLine}\label{wxvscrolledwindowrefreshline}
+
+\func{void}{RefreshLine}{\param{size\_t }{line}}
+
+Refreshes the specified line -- it will be redrawn during the next main loop
+iteration.
+
+\wxheading{See also}
+
+\helpref{RefreshLines}{wxvscrolledwindowrefreshlines}
+
+
+\membersection{wxVScrolledWindow::RefreshLines}\label{wxvscrolledwindowrefreshlines}
+
+\func{void}{RefreshLines}{\param{size\_t }{from}, \param{size\_t }{to}}
+
+Refreshes all lines between {\it from} and {\it to}, inclusive. {\it from}
+should be less than or equal to {\it to}.
+
+\wxheading{See also}
+
+\helpref{RefreshLine}{wxvscrolledwindowrefreshline}
+
+
+\membersection{wxVScrolledWindow::RefreshAll}\label{wxvscrolledwindowrefreshall}
+
+\func{void}{RefreshAll}{\void}
+
+This function completely refreshes the control, recalculating the number of
+items shown on screen and repainting them. It should be called when the values
+returned by \helpref{OnGetLineHeight}{wxvscrolledwindowongetlineheight} change
+for some reason and the window must be updated to reflect this.
+
+
 \membersection{wxVScrolledWindow::ScrollLines}\label{wxvscrolledwindowscrolllines}
 
 \func{bool}{ScrollLines}{\param{int }{lines}}