blob: 04541cc9c810f55ba6ad6b9bb9d9a61e709d8bc5 [file] [log] [blame]
/* Copyright (C) 2007-2008 The Android Open Source Project
**
** This software is licensed under the terms of the GNU General Public
** License version 2, as published by the Free Software Foundation, and
** may be copied, distributed, and modified under those terms.
**
** This program 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.
*/
#pragma once
// Window system related definitions.
#include "android/skin/rect.h"
#include <stdbool.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
// Init args.
void skin_winsys_init_args(int argc, char** argv);
// Return window handle of main UI.
void* skin_winsys_get_window_handle(void);
// Return rectangle of current monitor in pixels.
void skin_winsys_get_monitor_rect(SkinRect* rect);
// Returns the ratio between physical pixels and device-independent pixels for
// the window. Return 0 in case of success, -1 in case of failure.
int skin_winsys_get_device_pixel_ratio(double* dpr);
// Set main window position.
void skin_winsys_set_window_pos(int window_x, int window_y);
// Get main window position.
void skin_winsys_get_window_pos(int* window_x, int* window_y);
// Inform the main window of the subwindow geometry
void skin_winsys_set_device_geometry(const SkinRect* rect);
// Set window title.
void skin_winsys_set_window_title(const char* title);
// Return true iff the main window is fully visible
bool skin_winsys_is_window_fully_visible(void);
// Start main window support. |no_window| must be true to indicate that
// no window needs to be shown, but that the GUI backend still needs to be
// initialized.
void skin_winsys_start(bool no_window);
// Set the main window's icon.
// |icon_data| is the start of the icon in PNG format.
// |icon_data_size| is its size in bytes.
//
// Note: On Windows, the icon data is ignored, and the icon is directly
// extracted from the executable.
void skin_winsys_set_window_icon(const unsigned char* icon_data,
size_t icon_data_size);
// Stop main window and quit program. Must be called from inside event loop.
void skin_winsys_quit_request(void);
// Kill the skin-related objects
void skin_winsys_destroy(void);
typedef void (*StartFunction)(int argc, char** argv);
// Spawn a thread and run the given function in it.
void skin_winsys_spawn_thread(bool no_window,
StartFunction f,
int argc,
char** argv);
// Enter the main event handling loop for the UI subsystem.
void skin_winsys_enter_main_loop(bool no_window);
// Run some UI update in a way that UI subsystem needs
// E.g. for Qt UI, it makes sure the function runs on the main Qt UI thread,
// as Qt requires any UI interaction to come from there.
typedef void (*SkinGenericFunction)(void* data);
void skin_winsys_run_ui_update(SkinGenericFunction f, void* data);
// Show a blocking error dialog running on the UI thread.
void skin_winsys_error_dialog(const char* message, const char* title);
#ifdef __cplusplus
}
#endif