wef 0.6.0

Wef is a Rust library for embedding WebView functionality using Chromium Embedded Framework (CEF3) with offscreen rendering support.
#pragma once

#include "include/cef_client.h"
#include "include/cef_frame.h"
#include "include/wrapper/cef_message_router.h"

struct _ContextMenuParams {
  int x_crood;
  int y_crood;
  int type_flags;
  const char* link_url;
  const char* unfiltered_link_url;
  const char* source_url;
  bool has_image_contents;
  const char* title_text;
  const char* page_url;
  const char* frame_url;
  int media_type;
  int media_state_flags;
  const char* selection_text;
  bool is_editable;
  int edit_state_flags;
};

struct BrowserCallbacks {
  void (*on_created)(void* userdata);
  void (*on_popup_show)(void* userdata, bool show);
  void (*on_popup_position)(void* userdata, const CefRect* rect);
  void (*on_paint)(void* userdata, int type, const void* dirty_rects,
                   const void* buffer, unsigned int width, unsigned int height);
  void (*on_address_changed)(void* userdata, void* frame, const char* url);
  void (*on_title_changed)(void* userdata, const char* title);
  void (*on_favicon_url_change)(void* userdata, const char** urls, int);
  void (*on_tooltip)(void* userdata, const char* text);
  void (*on_status_message)(void* userdata, const char* text);
  void (*on_console_message)(void* userdata, const char* message, int level,
                             const char* source, int line);
  bool (*on_cursor_changed)(void* userdata, int cursor_type,
                            const void* custom_cursor_info);
  void (*on_before_popup)(void* userdata, const char* url);
  void (*on_loading_progress_changed)(void* userdata, float progress);
  void (*on_loading_state_changed)(void* userdata, bool is_loading,
                                   bool can_go_back, bool can_go_forward);
  void (*on_load_start)(void* userdata, void* frame);
  void (*on_load_end)(void* userdata, void* frame);
  void (*on_load_error)(void* userdata, void* frame, const char* error_text,
                        const char* failed_url);
  void (*on_ime_composition_range_changed)(void* userdata, const CefRect* rect);
  bool (*on_file_dialog)(void* userdata, int mode, const char* title,
                         const char* default_file_path,
                         const char* accept_filters,
                         const char* accept_extensions,
                         const char* accept_descriptions,
                         CefRefPtr<CefFileDialogCallback>* callback);
  void (*on_context_menu)(void* userdata, void* frame,
                          const _ContextMenuParams* params);
  void (*on_find_result)(void* userdata, int identifier, int count,
                         const CefRect* selection_rect,
                         int active_match_ordinal, bool final_update);
  bool (*on_js_dialog)(void* userdata, int type, const char* message_text,
                       const char* default_prompt_text,
                       CefRefPtr<CefJSDialogCallback>* callback);
  void (*on_query)(
      void* userdata, void* frame, const char* payload,
      CefRefPtr<CefMessageRouterBrowserSide::Handler::Callback>* callback);
};