]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/renderer.tex
define NO_GCC_PRAGMA in wx-config output on Darwin
[wxWidgets.git] / docs / latex / wx / renderer.tex
index 3e6d8fb5acb474054accbd239111a3685e3eaee4..9c668b48486e85dd4812a8540980bcac7b836029 100644 (file)
@@ -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}
+
+<wx/renderer.h>
+
+
+\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.