From a8a6098f689a936307ca11cc922a8fc535654007 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 18 Aug 2016 21:07:04 +0100 Subject: move core window API into netsurf header path --- include/netsurf/core_window.h | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 include/netsurf/core_window.h (limited to 'include') diff --git a/include/netsurf/core_window.h b/include/netsurf/core_window.h new file mode 100644 index 000000000..274c757e3 --- /dev/null +++ b/include/netsurf/core_window.h @@ -0,0 +1,93 @@ +/* + * Copyright 2012 Michael Drake + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file + * Interface to core window handling. + * + * This provides a generallised API for frontends to implement which + * allows them to provide a single implementation for general window + * operations on their platform. + * + * General core implementations (cookie manager, global history, + * hotlist and ssl certificate viewer) use this API to perform + * operations like drawing and user input in a portable way. + */ + +#ifndef _NETSURF_CORE_WINDOW_H_ +#define _NETSURF_CORE_WINDOW_H_ + +struct core_window; +struct rect; + +typedef enum { + CORE_WINDOW_DRAG_NONE, + CORE_WINDOW_DRAG_SELECTION, + CORE_WINDOW_DRAG_TEXT_SELECTION, + CORE_WINDOW_DRAG_MOVE +} core_window_drag_status; + +/** Callbacks to achieve various core window functionality. */ +struct core_window_callback_table { + /** + * Request a redraw of the window + * + * \param cw the core window object + * \param r rectangle to redraw + */ + void (*redraw_request)(struct core_window *cw, const struct rect *r); + + /** + * Update the limits of the window + * + * \param cw the core window object + * \param width the width in px, or negative if don't care + * \param height the height in px, or negative if don't care + */ + void (*update_size)(struct core_window *cw, int width, int height); + + /** + * Scroll the window to make area visible + * + * \param cw the core window object + * \param r rectangle to make visible + */ + void (*scroll_visible)(struct core_window *cw, const struct rect *r); + + /** + * Get window viewport dimensions + * + * \param cw the core window object + * \param width to be set to viewport width in px, if non NULL + * \param height to be set to viewport height in px, if non NULL + */ + void (*get_window_dimensions)(struct core_window *cw, + int *width, int *height); + + /** + * Inform corewindow owner of drag status + * + * \param cw the core window object + * \param ds the current drag status + */ + void (*drag_status)(struct core_window *cw, + core_window_drag_status ds); +}; + + +#endif -- cgit v1.2.3