mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
- Add off-screen rendering support on Windows. This involves a number of new CefBrowser and CefHandler methods. See the "Off-Screen Rendering Example" in cefclient for example usage.
- Add CefRunMessageLoop() for efficient message loop usage and modify cefclient to use it. - Add CefHandler::HandleNavStateChange() for back/forward state notifications and modify cefclient to use it. git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@208 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -285,6 +285,142 @@ void CEF_CALLBACK browser_close_dev_tools(struct _cef_browser_t* self)
|
||||
CefBrowserCppToC::Get(self)->CloseDevTools();
|
||||
}
|
||||
|
||||
int CEF_CALLBACK browser_is_window_rendering_disabled(
|
||||
struct _cef_browser_t* self)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return 0;
|
||||
|
||||
return CefBrowserCppToC::Get(self)->IsWindowRenderingDisabled();
|
||||
}
|
||||
|
||||
int CEF_CALLBACK browser_get_size(struct _cef_browser_t* self,
|
||||
enum cef_paint_element_type_t type, int* width, int* height)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(width);
|
||||
DCHECK(height);
|
||||
if(!self || !width || !height)
|
||||
return 0;
|
||||
|
||||
return CefBrowserCppToC::Get(self)->GetSize(type, *width, *height);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_set_size(struct _cef_browser_t* self,
|
||||
enum cef_paint_element_type_t type, int width, int height)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
return CefBrowserCppToC::Get(self)->SetSize(type, width, height);
|
||||
}
|
||||
|
||||
int CEF_CALLBACK browser_is_popup_visible(struct _cef_browser_t* self)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return 0;
|
||||
|
||||
return CefBrowserCppToC::Get(self)->IsPopupVisible();
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_hide_popup(struct _cef_browser_t* self)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->HidePopup();
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_invalidate(struct _cef_browser_t* self,
|
||||
const cef_rect_t* dirtyRect)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(dirtyRect);
|
||||
if(!self || !dirtyRect)
|
||||
return;
|
||||
|
||||
CefRect rect(*dirtyRect);
|
||||
CefBrowserCppToC::Get(self)->Invalidate(rect);
|
||||
}
|
||||
|
||||
int CEF_CALLBACK browser_get_image(struct _cef_browser_t* self,
|
||||
enum cef_paint_element_type_t type, int width, int height, void* buffer)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(buffer);
|
||||
if(!self || !buffer)
|
||||
return 0;
|
||||
|
||||
return CefBrowserCppToC::Get(self)->GetImage(type, width, height, buffer);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_key_event(struct _cef_browser_t* self,
|
||||
enum cef_key_type_t type, int key, int modifiers, int sysChar,
|
||||
int imeChar)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendKeyEvent(type, key, modifiers,
|
||||
sysChar?true:false, imeChar?true:false);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_mouse_click_event(struct _cef_browser_t* self,
|
||||
int x, int y, enum cef_mouse_button_type_t type, int mouseUp,
|
||||
int clickCount)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendMouseClickEvent(x, y, type,
|
||||
mouseUp?true:false, clickCount);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_mouse_move_event(struct _cef_browser_t* self,
|
||||
int x, int y, int mouseLeave)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendMouseMoveEvent(x, y, mouseLeave?true:false);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_mouse_wheel_event(struct _cef_browser_t* self,
|
||||
int x, int y, int delta)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendMouseWheelEvent(x, y, delta);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_focus_event(struct _cef_browser_t* self,
|
||||
int setFocus)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendFocusEvent(setFocus?true:false);
|
||||
}
|
||||
|
||||
void CEF_CALLBACK browser_send_capture_lost_event(struct _cef_browser_t* self)
|
||||
{
|
||||
DCHECK(self);
|
||||
if(!self)
|
||||
return;
|
||||
|
||||
CefBrowserCppToC::Get(self)->SendCaptureLostEvent();
|
||||
}
|
||||
|
||||
|
||||
// CONSTRUCTOR - Do not edit by hand.
|
||||
|
||||
@@ -313,6 +449,20 @@ CefBrowserCppToC::CefBrowserCppToC(CefBrowser* cls)
|
||||
struct_.struct_.set_zoom_level = browser_set_zoom_level;
|
||||
struct_.struct_.show_dev_tools = browser_show_dev_tools;
|
||||
struct_.struct_.close_dev_tools = browser_close_dev_tools;
|
||||
struct_.struct_.is_window_rendering_disabled =
|
||||
browser_is_window_rendering_disabled;
|
||||
struct_.struct_.get_size = browser_get_size;
|
||||
struct_.struct_.set_size = browser_set_size;
|
||||
struct_.struct_.is_popup_visible = browser_is_popup_visible;
|
||||
struct_.struct_.hide_popup = browser_hide_popup;
|
||||
struct_.struct_.invalidate = browser_invalidate;
|
||||
struct_.struct_.get_image = browser_get_image;
|
||||
struct_.struct_.send_key_event = browser_send_key_event;
|
||||
struct_.struct_.send_mouse_click_event = browser_send_mouse_click_event;
|
||||
struct_.struct_.send_mouse_move_event = browser_send_mouse_move_event;
|
||||
struct_.struct_.send_mouse_wheel_event = browser_send_mouse_wheel_event;
|
||||
struct_.struct_.send_focus_event = browser_send_focus_event;
|
||||
struct_.struct_.send_capture_lost_event = browser_send_capture_lost_event;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
@@ -117,6 +117,20 @@ enum cef_retval_t CEF_CALLBACK handler_handle_title_change(
|
||||
CefBrowserCToCpp::Wrap(browser), CefString(title));
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_nav_state_change(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser, int canGoBack,
|
||||
int canGoForward)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
if(!self || !browser)
|
||||
return RV_CONTINUE;
|
||||
|
||||
return CefHandlerCppToC::Get(self)->HandleNavStateChange(
|
||||
CefBrowserCToCpp::Wrap(browser), (canGoBack?true:false),
|
||||
(canGoForward?true:false));
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_before_browse(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser, cef_frame_t* frame,
|
||||
struct _cef_request_t* request, enum cef_handler_navtype_t navType,
|
||||
@@ -545,6 +559,81 @@ enum cef_retval_t CEF_CALLBACK handler_handle_find_result(
|
||||
activeMatchOrdinal, finalUpdate?true:false);
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_get_rect(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser, int screen,
|
||||
cef_rect_t* rect)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
DCHECK(rect);
|
||||
if(!self || !browser || !rect)
|
||||
return RV_CONTINUE;
|
||||
|
||||
CefRect changeRect(*rect);
|
||||
cef_retval_t rv = CefHandlerCppToC::Get(self)->HandleGetRect(
|
||||
CefBrowserCToCpp::Wrap(browser), screen?true:false, changeRect);
|
||||
*rect = changeRect;
|
||||
return rv;
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_get_screen_point(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser, int viewX, int viewY,
|
||||
int* screenX, int* screenY)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
DCHECK(screenX);
|
||||
DCHECK(screenY);
|
||||
if(!self || !browser || !screenX || !screenY)
|
||||
return RV_CONTINUE;
|
||||
|
||||
return CefHandlerCppToC::Get(self)->HandleGetScreenPoint(
|
||||
CefBrowserCToCpp::Wrap(browser), viewX, viewY, *screenX, *screenY);
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_popup_change(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser, int show,
|
||||
const cef_rect_t* rect)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
DCHECK(rect);
|
||||
if(!self || !browser || !rect)
|
||||
return RV_CONTINUE;
|
||||
|
||||
CefRect changeRect(*rect);
|
||||
return CefHandlerCppToC::Get(self)->HandlePopupChange(
|
||||
CefBrowserCToCpp::Wrap(browser), show?true:false, changeRect);
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_paint(struct _cef_handler_t* self,
|
||||
cef_browser_t* browser, enum cef_paint_element_type_t type,
|
||||
const cef_rect_t* dirtyRect, const void* buffer)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
DCHECK(dirtyRect);
|
||||
if(!self || !browser || !dirtyRect)
|
||||
return RV_CONTINUE;
|
||||
|
||||
CefRect rect(*dirtyRect);
|
||||
return CefHandlerCppToC::Get(self)->HandlePaint(
|
||||
CefBrowserCToCpp::Wrap(browser), type, rect, buffer);
|
||||
}
|
||||
|
||||
enum cef_retval_t CEF_CALLBACK handler_handle_cursor_change(
|
||||
struct _cef_handler_t* self, cef_browser_t* browser,
|
||||
cef_cursor_handle_t cursor)
|
||||
{
|
||||
DCHECK(self);
|
||||
DCHECK(browser);
|
||||
if(!self || !browser)
|
||||
return RV_CONTINUE;
|
||||
|
||||
return CefHandlerCppToC::Get(self)->HandleCursorChange(
|
||||
CefBrowserCToCpp::Wrap(browser), cursor);
|
||||
}
|
||||
|
||||
|
||||
// CONSTRUCTOR - Do not edit by hand.
|
||||
|
||||
@@ -555,6 +644,7 @@ CefHandlerCppToC::CefHandlerCppToC(CefHandler* cls)
|
||||
struct_.struct_.handle_after_created = handler_handle_after_created;
|
||||
struct_.struct_.handle_address_change = handler_handle_address_change;
|
||||
struct_.struct_.handle_title_change = handler_handle_title_change;
|
||||
struct_.struct_.handle_nav_state_change = handler_handle_nav_state_change;
|
||||
struct_.struct_.handle_before_browse = handler_handle_before_browse;
|
||||
struct_.struct_.handle_load_start = handler_handle_load_start;
|
||||
struct_.struct_.handle_load_end = handler_handle_load_end;
|
||||
@@ -584,6 +674,11 @@ CefHandlerCppToC::CefHandlerCppToC(CefHandler* cls)
|
||||
struct_.struct_.handle_status = handler_handle_status;
|
||||
struct_.struct_.handle_console_message = handler_handle_console_message;
|
||||
struct_.struct_.handle_find_result = handler_handle_find_result;
|
||||
struct_.struct_.handle_get_rect = handler_handle_get_rect;
|
||||
struct_.struct_.handle_get_screen_point = handler_handle_get_screen_point;
|
||||
struct_.struct_.handle_popup_change = handler_handle_popup_change;
|
||||
struct_.struct_.handle_paint = handler_handle_paint;
|
||||
struct_.struct_.handle_cursor_change = handler_handle_cursor_change;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
Reference in New Issue
Block a user