X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e6c2880bf92390006a09d4324d3ecae81f02b7b..2c6f14e1a7b5062fcf77eda40824d820d9ac288e:/docs/latex/wx/renderer.tex diff --git a/docs/latex/wx/renderer.tex b/docs/latex/wx/renderer.tex index 3e6d8fb5ac..9c668b4848 100644 --- a/docs/latex/wx/renderer.tex +++ b/docs/latex/wx/renderer.tex @@ -9,7 +9,7 @@ %% License: wxWindows license %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{\class{wxRenderer}}\label{wxrenderer} +\section{\class{wxRendererNative}}\label{wxrenderernative} First, a brief introduction into what is wxRenderer and why is it needed. @@ -36,4 +36,162 @@ which are used by the generic controls. There is always a default global renderer but it may be changed or extended by the user, see \helpref{Render sample}{samplerender}. +All drawing functions take some standard parameters: +\begin{itemize} + \item \arg{win} is the window being drawn. it is normally not used and when + it is it should only be used as a generic \helpref{wxWindow}{wxwindow} + (in order to get its low level handle, for example), but you should + \emph{not} assume that it is of some given type as the same renderer + function may be reused for drawing different kinds of control. + \item \arg{dc} is the \helpref{wxDC}{wxdc} to draw on, only this device + context should be used for drawing. It is not necessary to restore + pens and brushes for it on function exit but, on the other hand, you + shouldn't assume that it is in any specific state on function entry + neither: the rendering functions should always prepare it. + \item \arg{rect} the bounding rectangle for the element to be drawn + \item \arg{flags} the optional flags (none by default) which can be a + combination of the \texttt{wxCONTROL\_XXX} constants below +\end{itemize} + +\wxheading{Constants} + +The following rendering flags are defined: +\begin{verbatim} +enum +{ + wxCONTROL_DISABLED = 0x00000001, // control is disabled + wxCONTROL_FOCUSED = 0x00000002, // currently has keyboard focus + wxCONTROL_PRESSED = 0x00000004, // (button) is pressed + wxCONTROL_ISDEFAULT = 0x00000008, // only applies to the buttons + wxCONTROL_ISSUBMENU = wxCONTROL_ISDEFAULT, // only for menu items + wxCONTROL_EXPANDED = wxCONTROL_ISDEFAULT, // only for the tree items + wxCONTROL_CURRENT = 0x00000010, // mouse is currently over the control + wxCONTROL_SELECTED = 0x00000020, // selected item in e.g. listbox + wxCONTROL_CHECKED = 0x00000040, // (check/radio button) is checked + wxCONTROL_CHECKABLE = 0x00000080 // (menu) item can be checked +}; +\end{verbatim} + + +\wxheading{Derived from} + +No base class + +\wxheading{Include files} + + + + +\latexignore{\rtfignore{\wxheading{Members}}} + + +\membersection{wxRendererNative::\destruct{wxRendererNative}}\label{wxrenderernativedtor} + +\func{}{\destruct{wxRendererNative}}{\void} + +Virtual destructor as for any base class. + + +\membersection{wxRendererNative::DrawHeaderButton}\label{wxrenderernativedrawheaderbutton} + +\func{void}{DrawHeaderButton}{\param{wxWindow* }{win}, \param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{int }{flags = 0}} + +Draw the header control button (used by \helpref{wxListCtrl}{wxlistctrl}). + + +\membersection{wxRendererNative::DrawSplitterBorder}\label{wxrenderernativedrawsplitterborder} + +\func{void}{DrawSplitterBorder}{\param{wxWindow* }{win}, \param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{int }{flags = 0}} + +Draw the border for sash window: this border must be such that the sash +drawn by \helpref{DrawSash}{wxrenderernativedrawsplittersash} blends into it +well. + + +\membersection{wxRendererNative::DrawSplitterSash}\label{wxrenderernativedrawsplittersash} + +\func{void}{DrawSplitterSash}{\param{wxWindow* }{win}, \param{wxDC\& }{dc}, \param{const wxSize\& }{size}, \param{wxCoord }{position}, \param{wxOrientation }{orient}, \param{int }{flags = 0}} + +Draw a sash. The \arg{orient} parameter defines whether the sash should be +vertical or horizontal and how should the \arg{position} be interpreted. + + +\membersection{wxRendererNative::DrawTreeItemButton}\label{wxrenderernativedrawtreeitembutton} + +\func{void}{DrawTreeItemButton}{\param{wxWindow* }{win}, \param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{int }{flags = 0}} + +Draw the expanded/collapsed icon for a tree control item. To draw an expanded +button the \arg{flags} parameter must contain {\tt wxCONTROL\_EXPANDED} bit. + + +\membersection{wxRendererNative::Get}\label{wxrenderernativeget} + +\func{wxRendererNative\&}{Get}{\void} + +Return the currently used renderer. + + +\membersection{wxRendererNative::GetDefault}\label{wxrenderernativegetdefault} + +\func{wxRendererNative\&}{GetDefault}{\void} + +Return the default (native) implementation for this platform -- this is also +the one used by default but this may be changed by calling +\helpref{Set}{wxrenderernativeset} in which case the return value of this +method may be different from the return value of \helpref{Get}{wxrenderernativeget}. + + +\membersection{wxRendererNative::GetGeneric}\label{wxrenderernativegetgeneric} + +\func{wxRendererNative\&}{GetGeneric}{\void} + +Return the generic implementation of the renderer. Under some platforms, this +is the default renderer implementation, others have platform-specific default +renderer which can be retrieved by calling \helpref{GetDefault}{wxrenderernativegetdefault}. + + +\membersection{wxRendererNative::GetSplitterParams}\label{wxrenderernativegetsplitterparams} + +\func{wxSplitterRenderParams}{GetSplitterParams}{\param{const wxWindow* }{win}} + +Get the splitter parameters, see +\helpref{wxSplitterRenderParams}{wxsplitterrenderparams}. + + +\membersection{wxRendererNative::GetVersion}\label{wxrenderernativegetversion} + +\constfunc{wxRendererVersion}{GetVersion}{\void} + +This function is used for version checking: \helpref{Load}{wxrenderernativeload} +refuses to load any shared libraries implementing an older or incompatible +version. + +The implementation of this method is always the same in all renderers (simply +construct \helpref{wxRendererVersion}{wxrendererversion} using the +{\tt wxRendererVersion::Current\_XXX} values), but it has to be in the derived, +not base, class, to detect mismatches between the renderers versions and so you +have to implement it anew in all renderers. + + +\membersection{wxRendererNative::Load}\label{wxrenderernativeload} + +\func{wxRendererNative*}{Load}{\param{const wxString\& }{name}} + +Load the renderer from the specified DLL, the returned pointer must be +deleted by caller if not {\tt NULL} when it is not used any more. + +The \arg{name} should be just the base name of the renderer and not the full +name of the DLL file which is constructed differently (using +\helpref{wxDynamicLibrary::CanonicalizePluginName}{wxdynamiclibrarycanonicalizepluginname}) +on different systems. + + +\membersection{wxRendererNative::Set}\label{wxrenderernativeset} + +\func{wxRendererNative*}{Set}{\param{wxRendererNative* }{renderer}} + +Set the renderer to use, passing {\tt NULL} reverts to using the default +renderer (the global renderer must always exist). + +Return the previous renderer used with Set() or {\tt NULL} if none.