[API categories](API-categories.md) | [API index](API-index.md) # RenderHandler (interface) Implement this interface to handle events when window rendering is disabled (off-screen rendering). The methods of this class will be called on the UI thread. In order to create windowless browsers the [windowless_rendering_enabled](ApplicationSettings.md#windowless_rendering_enabled) setting must be set to true. Table of contents: * [Examples](#examples) * [Notes](#notes) * [Callbacks](#callbacks) * [GetRootScreenRect](#getrootscreenrect) * [GetViewRect](#getviewrect) * [GetScreenRect](#getscreenrect) * [GetScreenPoint](#getscreenpoint) * [OnPopupShow](#onpopupshow) * [OnPopupSize](#onpopupsize) * [OnPaint](#onpaint) * [OnCursorChange](#oncursorchange) * [OnScrollOffsetChanged](#onscrolloffsetchanged) * [StartDragging](#startdragging) * [UpdateDragCursor](#updatedragcursor) ## Examples Off-screen rendering examples: * [Kivy](https://github.com/cztomczak/cefpython/wiki/Kivy) * [Panda3D](https://github.com/cztomczak/cefpython/wiki/Panda3D) \- tested with v31 * [pygame + PyOpenGL](https://gist.github.com/AnishN/aa3bb27fc9d69319955ed9a8973cd40f) \- tested with v31, more info on this example on the Forum in [this post](https://groups.google.com/d/topic/cefpython/mwSa7He90xA/discussion) * [cefpython_offscreen_no_UI_framework.py](https://gist.github.com/stefanbacon/7b1571d57aee54aa9f8e9021b4848d06) \- most basic usage of OSR to take a screenshot of a page ## Notes Callbacks available in upstream CEF, but not yet exposed in CEF Python (see src/include/cef_render_handler.h): * GetScreenInfo * OnImeCompositionRangeChanged ## Callbacks ### GetRootScreenRect | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | rect_out | list[x,y,width,height] | | __Return__ | bool | Called to retrieve the root window rectangle in screen coordinates. Return true if the rectangle was provided. ### GetViewRect | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | rect_out | list[x,y,width,height] | | __Return__ | bool | Called to retrieve the view rectangle which is relative to screen coordinates. Return true if the rectangle was provided. ### GetScreenRect | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | rect_out | list[x,y,width,height] | | __Return__ | bool | Called to retrieve the simulated screen rectangle. Return true if the rectangle was provided. ### GetScreenPoint | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | view_x | int | | view_y | int | | screen_coordinates_out | list[x,y] | | __Return__ | bool | Called to retrieve the translation from view coordinates to actual screen coordinates. Return true if the screen coordinates were provided. ### OnPopupShow | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | show | bool | | __Return__ | void | Called when the browser wants to show or hide the popup widget. The popup should be shown if |show| is true and hidden if|show| is false. ### OnPopupSize | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | rect_out | list[x,y,width,height] | | __Return__ | void | Called when the browser wants to move or resize the popup widget. |rect_out| contains the new location and size. ### OnPaint | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | element_type | PaintElementType | | dirty_rects | list[[x,y,width,height],[..]] | | paint_buffer | [PaintBuffer](PaintBuffer.md) | | width | int | | height | int | | __Return__ | void | Called when an element should be painted. Pixel values passed to this method are scaled relative to view coordinates based on the value of CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type| indicates whether the element is the view or the popup widget. |buffer| contains the pixel data for the whole image. |dirty_rects| contains the set of rectangles in pixel coordinates that need to be repainted. |buffer| will be |width|*|height|*4 bytes in size and represents a BGRA image with an upper-left origin. **Important:** Do not keep reference to |paint_buffer| after this method returns. `PaintElementType` enum: * cef.PET_VIEW * cef.PET_POPUP ### OnCursorChange | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | cursor | CursorHandle | | __Return__ | void | Called when the browser's cursor has changed. If |type| is CT_CUSTOM then |custom_cursor_info| will be populated with the custom cursor information. `CursorHandle` is an int pointer. ### OnScrollOffsetChanged | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | __Return__ | void | Called when the scroll offset has changed. ### StartDragging | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | drag_data | [DragData](DragData.md) | | allowed_ops | int | | x | int | | y | int | | __Return__ | void | Description from upstream CEF: > Called when the user starts dragging content in the web view. Contextual > information about the dragged content is supplied by |drag_data|. > (|x|, |y|) is the drag start location in screen coordinates. > OS APIs that run a system message loop may be used within the > StartDragging call. > > Return false to abort the drag operation. Don't call any of > CefBrowserHost::DragSource*Ended* methods after returning false. > > Return true to handle the drag operation. Call > CefBrowserHost::DragSourceEndedAt and DragSourceSystemDragEnded either > synchronously or asynchronously to inform the web view that the drag > operation has ended. ### UpdateDragCursor | Parameter | Type | | --- | --- | | browser | [Browser](Browser.md) | | operation | int | | __Return__ | void | Description from upstream CEF: > Called when the web view wants to update the mouse cursor during a > drag & drop operation. |operation| describes the allowed operation > (none, move, copy, link). See Browser.[DragSourceEndedAt](Browser.md#dragsourceendedat) for a list of values for the operation enum.