1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
/*
* definitions for the system dependent part of simutrans
*
* This file is part of the Simutrans project under the artistic license.
*/
#ifndef simsys_h
#define simsys_h
#include <stddef.h>
#include "simtypes.h"
// Provide chdir().
#ifdef _WIN32
# include <direct.h>
#else
# include <unistd.h>
#endif
/* Variablen zur Messageverarbeitung */
/* Klassen */
#define SIM_NOEVENT 0
#define SIM_MOUSE_BUTTONS 1
#define SIM_KEYBOARD 2
#define SIM_MOUSE_MOVE 3
#define SIM_SYSTEM 254
#define SIM_IGNORE_EVENT 255
/* Aktionen */ /* added RIGHTUP and MIDUP */
#define SIM_MOUSE_LEFTUP 1
#define SIM_MOUSE_RIGHTUP 2
#define SIM_MOUSE_MIDUP 3
#define SIM_MOUSE_LEFTBUTTON 4
#define SIM_MOUSE_RIGHTBUTTON 5
#define SIM_MOUSE_MIDBUTTON 6
#define SIM_MOUSE_MOVED 7
#define SIM_MOUSE_WHEELUP 8 //2003-11-04 hsiegeln added
#define SIM_MOUSE_WHEELDOWN 9 //2003-11-04 hsiegeln added
#define SIM_SYSTEM_QUIT 1
#define SIM_SYSTEM_RESIZE 2
#define SIM_SYSTEM_UPDATE 3
/* Globale Variablen zur Messagebearbeitung */
struct sys_event
{
unsigned long type;
unsigned long code;
int mx; /* es sind negative Koodinaten mgl */
int my;
int mb;
unsigned int key_mod; /* key mod, like ALT, STRG, SHIFT */
};
extern struct sys_event sys_event;
bool dr_os_init(int const* parameter);
/* maximum size possible (if there) */
struct resolution
{
int w;
int h;
};
resolution dr_query_screen_resolution();
int dr_os_open(int w, int h, int fullscreen);
void dr_os_close();
// returns the locale; NULL if unknown
const char *dr_get_locale_string();
void dr_mkdir(char const* path);
/* query home directory */
char const* dr_query_homedir();
unsigned short* dr_textur_init(void);
void dr_textur(int xp, int yp, int w, int h);
/* returns the actual width (might be larger than requested! */
int dr_textur_resize(unsigned short** textur, int w, int h);
// needed for screen update
void dr_prepare_flush(); // waits, if previous update not yet finished
void dr_flush(void); // copy to screen (eventuall multithreaded)
/**
* Transform a 24 bit RGB color into the system format.
* @return converted color value
* @author Hj. Malthaner
*/
unsigned int get_system_color(unsigned int r, unsigned int g, unsigned int b);
void show_pointer(int yesno);
void set_pointer(int loading);
void move_pointer(int x, int y);
void ex_ord_update_mx_my(void);
void GetEvents(void);
void GetEventsNoWait(void);
unsigned long dr_time(void);
void dr_sleep(uint32 millisec);
// error message in case of fatal events
void dr_fatal_notify(char const* msg);
/**
* Some wrappers can save screenshots.
* @return 1 on success, 0 if not implemented for a particular wrapper and -1
* in case of error.
* @author Hj. Malthaner
*/
int dr_screenshot(const char *filename);
/**
* Copy text to the clipboard
* @param source : pointer to the start of the source text
* @param length : number of character bytes to copy
* @author Knightly
*/
void dr_copy(const char *source, size_t length);
/**
* Paste text from the clipboard
* @param target : pointer to the insertion position in the target text
* @param max_length : maximum number of character bytes which could be inserted
* @return number of character bytes actually inserted -> for cursor advancing
* @author Knightly
*/
size_t dr_paste(char *target, size_t max_length);
int sysmain(int argc, char** argv);
#endif
|