<ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <linklocation="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
<summary>An object for rendering a single cell on a <seecref="T:Gdk.Drawable"/></summary>
<remarks>
<para>
The <seecref="T:Gtk.CellRenderer"/> is a base class of a set of objects used for rendering a cell to a <seecref="T:Gdk.Drawable"/>.
These objects are used primarily by the <seecref="T:Gtk.TreeView"/> widget, though they are not tied to them in any specific way.
It is worth noting that <seecref="T:Gtk.CellRenderer"/> is not a <seecref="T:Gtk.Widget"/> and cannot be treated as such.
</para>
<para>
The primary use of a <seecref="T:Gtk.CellRenderer"/> is for drawing a certain graphical elements on a <seecref="T:Gdk.Drawable"/>.
Typically, one <seecref="T:Gtk.CellRenderer"/> is used to draw many cells on the screen.
To this extent, it is not expected that a <seecref="T:Gtk.CellRenderer"/> keep any permanent state around.
Instead, any state is set just prior to use.
Then, the cell is measured using <seecref="M:Gtk.CellRendererGetSize(Gtk.Widget,Gdk.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32)"/>.
Finally, the cell is rendered in the correct location using <seecref="M:Gtk.CellRendererRender(Gdk.Window,Gtk.Widget,Gdk.Rectangle,Gdk.Rectangle,Gdk.Rectangle,Gtk.CellRendererState)"/>.
</para>
<para>
There are a number of rules that must be followed when writing a new <seecref="T:Gtk.CellRenderer"/>.
First and foremost, it is important that a certain set of properties will always yield a <seecref="T:Gtk.CellRenderer"/> of the same size, barring a <seecref="T:Gtk.Style"/> change.
The <seecref="T:Gtk.CellRenderer"/> also has a number of generic properties that are expected to be honored by all children.
<summary>Invokes the virtual render function of the <seecref="T:Gtk.CellRenderer"/>.</summary>
<paramname="window">an object of type <seecref="T:Gdk.Window"/></param>
<paramname="widget">an object of type <seecref="T:Gtk.Widget"/></param>
<paramname="background_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="cell_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="expose_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="flags">an object of type <seecref="T:Gtk.CellRendererState"/></param>
<remarks>
The three passed-in rectangles are areas of <paramrefname="window"/>.
Most renderers will draw within <paramrefname="cell_area"/>;
<paramrefname="background_area"/> includes the blank space around the cell, and also the area containing the tree expander; so the <paramrefname="background_area"/> rectangles for all cells tile to cover the entire window.
<paramrefname="expose_area"/> is a clip rectangle.
<MemberSignatureLanguage="C#"Value="public void GetSize (Gtk.Widget widget, Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height);"/>
<summary>Obtains the <paramrefname="width"/> and <paramrefname="height"/> needed to render the cell.</summary>
<paramname="widget">an object of type <seecref="T:Gtk.Widget"/></param>
<paramname="cell_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="x_offset">an object of type <seecref="T:System.Int32"/></param>
<paramname="y_offset">an object of type <seecref="T:System.Int32"/></param>
<paramname="width">an object of type <seecref="T:System.Int32"/></param>
<paramname="height">an object of type <seecref="T:System.Int32"/></param>
<remarks>
Used by view widgets to determine the appropriate size for the <paramrefname="cell_area"/> passed to gtk_cell_renderer_render().
If <paramrefname="cell_area"/> is not <seelangword="null"/>, fills in the x and y offsets (if set) of the cell relative to this location.
Please note that the values set in <paramrefname="width"/> and <paramrefname="height"/>, as well as those in <paramrefname="x_offset"/> and <paramrefname="y_offset"/> are inclusive of the xpad and ypad properties.
<summary>Passes an activate event to the <seecref="T:Gtk.CellRenderer"/> for possible processing.</summary>
<paramname="evnt">an object of type <seecref="T:Gdk.Event"/></param>
<paramname="widget">an object of type <seecref="T:Gtk.Widget"/></param>
<paramname="path">an object of type <seecref="T:System.String"/></param>
<paramname="background_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="cell_area">an object of type <seecref="T:Gdk.Rectangle"/></param>
<paramname="flags">an object of type <seecref="T:Gtk.CellRendererState"/></param>
<returns>an object of type <seecref="T:System.Boolean"/></returns>
<remarks>Some <seecref="T:Gtk.CellRenderer"/>s may use events; for example, <seecref="T:Gtk.CellRendererToggle"/> toggles when it gets a mouse click.</remarks>
<returns>Creates a new instance of CellRenderer, using the GLib-provided type</returns>
<remarks>
<para>This is a constructor used by derivative types of <seecref="T:Gtk.CellRenderer"/> that would have their own GLib type assigned to it. This is not typically used by C# code.</para>