From 091fddbdf4ea795b0b65b93cbea250fef6f86c76 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 20 Nov 2012 08:57:01 +0100 Subject: expose GUIRenderingControl to addongui lib --- lib/addons/library.xbmc.gui/libXBMC_gui.cpp | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) (limited to 'lib') diff --git a/lib/addons/library.xbmc.gui/libXBMC_gui.cpp b/lib/addons/library.xbmc.gui/libXBMC_gui.cpp index c9765a3a04..7da98dbdef 100644 --- a/lib/addons/library.xbmc.gui/libXBMC_gui.cpp +++ b/lib/addons/library.xbmc.gui/libXBMC_gui.cpp @@ -300,6 +300,11 @@ void CAddonGUIWindow::SetControlLabel(int controlId, const char *label) ((CB_GUILib*)m_cb)->Window_SetControlLabel(((AddonCB*)m_Handle)->addonData, m_WindowHandle, controlId, label); } +void CAddonGUIWindow::MarkDirtyRegion() +{ + ((CB_GUILib*)m_cb)->Window_MarkDirtyRegion(((AddonCB*)m_Handle)->addonData, m_WindowHandle); +} + ///------------------------------------- /// cGUISpinControl @@ -555,5 +560,91 @@ void CAddonListItem::SetPath(const char *Path) ((CB_GUILib*)m_cb)->ListItem_SetPath(((AddonCB*)m_Handle)->addonData, m_ListItemHandle, Path); } +///------------------------------------- +/// cGUIRenderingControl + +DLLEXPORT CAddonGUIRenderingControl* GUI_control_get_rendering(void *hdl, void *cb, CAddonGUIWindow *window, int controlId) +{ + return new CAddonGUIRenderingControl(hdl, cb, window, controlId); +} + +DLLEXPORT void GUI_control_release_rendering(CAddonGUIRenderingControl* p) +{ + delete p; +} + +DLLEXPORT bool GUI_control_rendering_create(GUIHANDLE handle, int x, int y, int w, int h, void *device) +{ + CAddonGUIRenderingControl *pControl = (CAddonGUIRenderingControl*) handle; + return pControl->Create(x,y,w,h,device); +} + +DLLEXPORT void GUI_control_rendering_render(GUIHANDLE handle) +{ + CAddonGUIRenderingControl *pControl = (CAddonGUIRenderingControl*) handle; + pControl->Render(); +} + +DLLEXPORT void GUI_control_rendering_stop(GUIHANDLE handle) +{ + CAddonGUIRenderingControl *pControl = (CAddonGUIRenderingControl*) handle; + pControl->Stop(); +} + +DLLEXPORT bool GUI_control_rendering_dirty(GUIHANDLE handle) +{ + CAddonGUIRenderingControl *pControl = (CAddonGUIRenderingControl*) handle; + return pControl->Dirty(); +} + +CAddonGUIRenderingControl::CAddonGUIRenderingControl(void *hdl, void *cb, CAddonGUIWindow *window, int controlId) + : m_Window(window) + , m_ControlId(controlId) + , m_Handle(hdl) + , m_cb(cb) +{ + m_RenderingHandle = ((CB_GUILib*)m_cb)->Window_GetControl_RenderAddon(((AddonCB*)m_Handle)->addonData, m_Window->m_WindowHandle, controlId); +} + +CAddonGUIRenderingControl::~CAddonGUIRenderingControl() +{ + ((CB_GUILib*)m_cb)->RenderAddon_Delete(((AddonCB*)m_Handle)->addonData, m_RenderingHandle); +} + +void CAddonGUIRenderingControl::Init() +{ + ((CB_GUILib*)m_cb)->RenderAddon_SetCallbacks(((AddonCB*)m_Handle)->addonData, m_RenderingHandle, this, GUI_control_rendering_create, GUI_control_rendering_render, GUI_control_rendering_stop, GUI_control_rendering_dirty); +} + +bool CAddonGUIRenderingControl::Create(int x, int y, int w, int h, void *device) +{ + if (!CBCreate) + return false; + + return CBCreate(m_cbhdl, x, y, w, h, device); +} + +void CAddonGUIRenderingControl::Render() +{ + if (!CBRender) + return; + CBRender(m_cbhdl); +} + +void CAddonGUIRenderingControl::Stop() +{ + if (!CBStop) + return; + + CBStop(m_cbhdl); +} + +bool CAddonGUIRenderingControl::Dirty() +{ + if (!CBDirty) + return true; + + return CBDirty(m_cbhdl); +} }; -- cgit v1.2.3