35 #include "os/main_loop.h" 50 bool low_processor_usage_mode;
53 uint64_t frames_drawn;
54 uint32_t _frame_delay;
55 uint64_t _msec_splash;
67 enum RenderThreadMode {
71 RENDER_SEPARATE_THREAD
78 float get_aspect()
const {
return (
float)width/(float)height; }
79 VideoMode(
int p_width=1024,
int p_height=600,
bool p_fullscreen=
false,
bool p_resizable =
true) {width=p_width; height=p_height; fullscreen=p_fullscreen; resizable = p_resizable; }
84 RenderThreadMode _render_thread_mode;
87 virtual int get_video_driver_count()
const=0;
88 virtual const char * get_video_driver_name(
int p_driver)
const=0;
90 virtual VideoMode get_default_video_mode()
const=0;
92 virtual int get_audio_driver_count()
const=0;
93 virtual const char * get_audio_driver_name(
int p_driver)
const=0;
95 virtual void initialize_core()=0;
96 virtual void initialize(
const VideoMode& p_desired,
int p_video_driver,
int p_audio_driver)=0;
98 virtual void set_main_loop(
MainLoop * p_main_loop )=0;
99 virtual void delete_main_loop()=0;
101 virtual void finalize()=0;
102 virtual void finalize_core()=0;
104 virtual void set_cmdline(
const char* p_execpath,
const List<String>& p_args);
106 void _ensure_data_dir();
110 typedef int64_t ProcessID;
112 static OS* get_singleton();
120 virtual void print_error(
const char* p_function,
const char* p_file,
int p_line,
const char *p_code,
const char*p_rationale,ErrorType p_type=ERR_ERROR);
122 virtual void print(
const char *p_format, ... );
123 virtual void printerr(
const char *p_format, ... );
124 virtual void vprint(
const char* p_format, va_list p_list,
bool p_stderr=
false)=0;
125 virtual void alert(
const String& p_alert,
const String& p_title=
"ALERT!")=0;
126 virtual String get_stdin_string(
bool p_block =
true)=0;
128 virtual void set_last_error(
const char* p_error);
129 virtual const char *get_last_error()
const;
130 virtual void clear_last_error();
140 virtual void set_mouse_mode(MouseMode p_mode);
141 virtual MouseMode get_mouse_mode()
const;
144 virtual void warp_mouse_pos(
const Point2& p_to) {}
145 virtual Point2 get_mouse_pos()
const=0;
146 virtual int get_mouse_button_state()
const=0;
147 virtual void set_window_title(
const String& p_title)=0;
149 virtual void set_clipboard(
const String& p_text);
150 virtual String get_clipboard()
const;
152 virtual void set_video_mode(
const VideoMode& p_video_mode,
int p_screen=0)=0;
153 virtual VideoMode get_video_mode(
int p_screen=0)
const=0;
154 virtual void get_fullscreen_mode_list(
List<VideoMode> *p_list,
int p_screen=0)
const=0;
157 virtual int get_screen_count()
const{
return 1; }
158 virtual int get_current_screen()
const {
return 0; }
159 virtual void set_current_screen(
int p_screen) { }
160 virtual Point2 get_screen_position(
int p_screen=0)
const {
return Point2(); }
161 virtual Size2 get_screen_size(
int p_screen=0)
const {
return get_window_size(); }
162 virtual Point2 get_window_position()
const {
return Vector2(); }
163 virtual void set_window_position(
const Point2& p_position) {}
164 virtual Size2 get_window_size()
const=0;
165 virtual void set_window_size(
const Size2 p_size){}
166 virtual void set_window_fullscreen(
bool p_enabled) {}
167 virtual bool is_window_fullscreen()
const {
return true; }
168 virtual void set_window_resizable(
bool p_enabled) {}
169 virtual bool is_window_resizable()
const {
return false; }
170 virtual void set_window_minimized(
bool p_enabled) {}
171 virtual bool is_window_minimized()
const {
return false; }
172 virtual void set_window_maximized(
bool p_enabled) {}
173 virtual bool is_window_maximized()
const {
return true; }
178 virtual void set_iterations_per_second(
int p_ips);
179 virtual int get_iterations_per_second()
const;
181 virtual void set_target_fps(
int p_fps);
182 virtual float get_target_fps()
const;
184 virtual float get_frames_per_second()
const {
return _fps; };
186 virtual void set_keep_screen_on(
bool p_enabled);
187 virtual bool is_keep_screen_on()
const;
188 virtual void set_low_processor_usage_mode(
bool p_enabled);
189 virtual bool is_in_low_processor_usage_mode()
const;
191 virtual String get_installed_templates_path()
const {
return ""; };
192 virtual String get_executable_path()
const;
193 virtual Error execute(
const String& p_path,
const List<String>& p_arguments,
bool p_blocking,ProcessID *r_child_id=NULL,
String* r_pipe=NULL,
int *r_exitcode=NULL)=0;
194 virtual Error kill(
const ProcessID& p_pid)=0;
195 virtual int get_process_ID()
const;
197 virtual Error shell_open(
String p_uri);
198 virtual Error set_cwd(
const String& p_cwd);
200 virtual bool has_environment(
const String& p_var)
const=0;
201 virtual String get_environment(
const String& p_var)
const=0;
203 virtual String get_name()=0;
204 virtual List<String> get_cmdline_args()
const {
return _cmdline; }
205 virtual String get_model_name()
const;
207 virtual MainLoop *get_main_loop()
const=0;
209 String get_custom_level()
const {
return _custom_level; }
211 virtual void yield();
259 virtual Date get_date(
bool local=
false)
const=0;
260 virtual Time get_time(
bool local=
false)
const=0;
262 virtual uint64_t get_unix_time()
const;
263 virtual uint64_t get_system_time_secs()
const;
265 virtual void delay_usec(uint32_t p_usec)
const=0;
266 virtual uint64_t get_ticks_usec()
const=0;
267 uint32_t get_ticks_msec()
const;
268 uint64_t get_splash_tick_msec()
const;
270 void set_frame_delay(uint32_t p_msec);
271 uint32_t get_frame_delay()
const;
273 virtual bool can_draw()
const = 0;
275 uint64_t get_frames_drawn();
277 bool is_stdout_verbose()
const;
282 CURSOR_POINTING_HAND,
301 virtual bool has_virtual_keyboard()
const;
302 virtual void show_virtual_keyboard(
const String& p_existing_text,
const Rect2& p_screen_rect=
Rect2());
303 virtual void hide_virtual_keyboard();
305 virtual void set_cursor_shape(CursorShape p_shape)=0;
307 virtual bool get_swap_ok_cancel() {
return false; }
308 virtual void dump_memory_to_file(
const char* p_file);
309 virtual void dump_resources_to_file(
const char* p_file);
310 virtual void print_resources_in_use(
bool p_short=
false);
311 virtual void print_all_resources(
String p_to_file=
"");
313 virtual int get_static_memory_usage()
const;
314 virtual int get_static_memory_peak_usage()
const;
315 virtual int get_dynamic_memory_usage()
const;
316 virtual int get_free_static_memory()
const;
318 RenderThreadMode get_render_thread_mode()
const {
return _render_thread_mode; }
320 virtual String get_locale()
const;
322 String get_safe_application_name()
const;
323 virtual String get_data_dir()
const;
324 virtual String get_resource_dir()
const;
329 SYSTEM_DIR_DOCUMENTS,
330 SYSTEM_DIR_DOWNLOADS,
334 SYSTEM_DIR_RINGTONES,
337 virtual String get_system_dir(SystemDir p_dir)
const;
340 virtual void set_no_window_mode(
bool p_enable);
341 virtual bool is_no_window_mode_enabled()
const;
343 virtual bool has_touchscreen_ui_hint()
const;
345 enum ScreenOrientation {
349 SCREEN_REVERSE_LANDSCAPE,
350 SCREEN_REVERSE_PORTRAIT,
351 SCREEN_SENSOR_LANDSCAPE,
352 SCREEN_SENSOR_PORTRAIT,
356 virtual void set_screen_orientation(ScreenOrientation p_orientation);
357 ScreenOrientation get_screen_orientation()
const;
359 virtual void move_window_to_foreground() {};
361 virtual void debug_break();
363 virtual void release_rendering_thread();
364 virtual void make_rendering_thread();
365 virtual void swap_buffers();
368 virtual void set_icon(
const Image& p_icon);
370 virtual int get_exit_code()
const;
371 virtual void set_exit_code(
int p_code);
373 virtual int get_processor_count()
const;
375 virtual String get_unique_ID()
const;
377 virtual Error native_video_play(
String p_path,
float p_volume,
String p_audio_track,
String p_subtitle_track);
378 virtual bool native_video_is_playing()
const;
379 virtual void native_video_pause();
380 virtual void native_video_unpause();
381 virtual void native_video_stop();
383 virtual bool can_use_threads()
const;
389 enum LatinKeyboardVariant {
390 LATIN_KEYBOARD_QWERTY,
391 LATIN_KEYBOARD_QWERTZ,
392 LATIN_KEYBOARD_AZERTY,
393 LATIN_KEYBOARD_QZERTY,
394 LATIN_KEYBOARD_DVORAK,
399 virtual LatinKeyboardVariant get_latin_keyboard_variant()
const;
401 void set_time_scale(
float p_scale);
402 float get_time_scale()
const;
404 _FORCE_INLINE_
bool get_use_pixel_snap()
const {
return _pixel_snap; }
406 virtual bool is_joy_known(
int p_device);
407 virtual String get_joy_guid(
int p_device)
const;
414 virtual void set_context(
int p_context);
Definition: main_loop.h:38
Definition: math_2d.h:204