X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/499b2ed82caa62ec19b400c31aa26be33b1c02d4..965b4f87d9d59c7c6d58da6567dca176d9131296:/contrib/docs/latex/fl/cbgcupdatesmgr.tex diff --git a/contrib/docs/latex/fl/cbgcupdatesmgr.tex b/contrib/docs/latex/fl/cbgcupdatesmgr.tex index 6450e54fc4..482d271a60 100644 --- a/contrib/docs/latex/fl/cbgcupdatesmgr.tex +++ b/contrib/docs/latex/fl/cbgcupdatesmgr.tex @@ -1,83 +1,90 @@ % % automatically generated by HelpGen $Revision$ from -% gcupdatesmgr.h at 05/Jan/02 22:50:57 +% gcupdatesmgr.h at 21/Jan/02 21:14:19 % \section{\class{cbGCUpdatesMgr}}\label{cbgcupdatesmgr} -class implements optimized logic for refreshing - areas of frame layout - which actually need to be updated. - Is used as default updates-manager by wxFrameLayout. - - it is called "Garbage Collecting" u.mgr for it's implementation - tries to find out dependencies between bars, and to order - them ito "hierarchy", this hierarchical sorting resembles - implemenation of heap-garbage collectors, which resolve - dependencies between references. - - Example: there are situations where the order of moving - the windows does matter: - - case 1) - ------ --- - | A | |B| - ------ ---> | | - --- --- ------ - |B| | A | - | | ------ - --- - (future) - (past) - - past/future positions of A and B windows completely overlapp, i.e. - depend on each other, and there is not solution for - moving the windows witout refreshing both of them, - -- we have cyclic dependency here. The gc. alg will - find this cyclic dependecy and will force "refresh" - after movement. - - case 2) - - ------ - | A | - ------ ---> - --- - |B| ------ - | | | A | - --- ------ - --- - |B| - | | - --- - - (future) - (past) - - in this case past/future positions do not overlapp, thus - it's enough only to move windows, without refreshing them. - GC will "notice" it. - - there is also third case, when overlapping is partial - in this case the refershing can be also avoided by - moving windows in the order of "most-dependant" towards the - "least-dependent". GC handles this automatically, by - sorting windows by their dependency-level (or "hierarchy") - - See garbagec.h for more details of this method, garbagec.h/cpp - implement sorting of generic-dependencies (does not deal - with graphical objects directly) - - Summary: improves performance when complex/large windows are - moved around, by reducing number of repaints. Also helps - to avoid dirty non-client areas of moved windows - in some special cases of "overlapping anomalies" - +This class implements optimized logic for refreshing +the areas of frame layout that actually need to be updated. +It is used as the default updates manager by wxFrameLayout. + +It is called 'Garbage Collecting' updates manager because +its implementation tries to find out dependencies between bars, +and to order them into a 'hierarchy'. This hierarchical sorting resembles +the implementation of heap-garbage collectors, which resolve +dependencies between references. + +Example: there are situations where the order in which the user +moves windows does matter. + +\begin{verbatim} + case 1) + ------ --- + | A | |B| + ------ ---> | | + --- --- ------ + |B| | A | + | | ------ + --- + (future) + (past) +\end{verbatim} + +Past/future positions of A and B windows completely overlap, i.e. +depend on each other, and there is no solution for +moving the windows without refreshing both of them +-- we have a cyclic dependency here. The garbage collection algorithm will +find this cyclic dependecy and will force refresh after movement. + +\begin{verbatim} + case 2) + + ------ + | A | + ------ ---> + --- + |B| ------ + | | | A | + --- ------ + --- + |B| + | | + --- + + (future) + (past) +\end{verbatim} + +In this case past/future positions do not overlap, so +it is enough only to move windows without refreshing them. +Garbage collection will 'notice' this. + +There is also a third case, when overlapping is partial. +In this case the refreshing can also be avoided by +moving windows in the order of 'most-dependant' towards the +'least-dependent'. GC handles this automatically, by +sorting windows by their dependency-level (or 'hierarchy'). + +See garbagec.h for more details of this method; garbagec.h/cpp +implement sorting of generic dependencies and does not deal +with graphical objects directly. + +Summary: garbage collection improves performance when complex or large +windows are moved around, by reducing the number of repaints. It also helps +to avoid dirty non-client areas of moved windows +in some special cases of 'overlapping anomalies'. + \wxheading{Derived from} \helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr} +\wxheading{Include files} + + + \wxheading{Data structures} \latexignore{\rtfignore{\wxheading{Members}}} @@ -87,30 +94,38 @@ class implements optimized logic for refreshing \func{}{cbGCUpdatesMgr}{\void} +Default constructor. + \func{}{cbGCUpdatesMgr}{\param{wxFrameLayout* }{pPanel}} +Constructor, taking a frame layout. + \membersection{cbGCUpdatesMgr::AddItem}\label{cbgcupdatesmgradditem} \func{void}{AddItem}{\param{wxList\& }{itemList}, \param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}, \param{wxRect\& }{curBounds}, \param{wxRect\& }{prevBounds}} +Internal function for repositioning items. + \membersection{cbGCUpdatesMgr::DoRepositionItems}\label{cbgcupdatesmgrdorepositionitems} \func{void}{DoRepositionItems}{\param{wxList\& }{items}} +Internal function for repositioning items. + \membersection{cbGCUpdatesMgr::OnStartChanges}\label{cbgcupdatesmgronstartchanges} \func{void}{OnStartChanges}{\void} -notificiactions received from Frame Layout : +Receives notifications from the frame layout. \membersection{cbGCUpdatesMgr::UpdateNow}\label{cbgcupdatesmgrupdatenow} \func{void}{UpdateNow}{\void} -refreshes parts of the frame layout, which need an update +Refreshes the parts of the frame layout which need an update.