/usr/include/KXL.h is in libkxl0-dev 1.1.7-16.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | #ifndef _KXLIB_H_
#define _KXLIB_H_
#include <stdio.h>
#include <stdint.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/XKBlib.h>
#ifdef __linux__
#include <linux/joystick.h>
#endif
//================================================================
// Global structures and variables
//================================================================
// Event mask
#define KXL_EVENT_NO_MASK 0L
#define KXL_EVENT_KEY_PRESS_MASK (1L<<0)
#define KXL_EVENT_KEY_RELEASE_MASK (1L<<1)
#define KXL_EVENT_BUTTON_PRESS_MASK (1L<<2)
#define KXL_EVENT_BUTTON_RELEASE_MASK (1L<<3)
#define KXL_EVENT_BUTTON_MOTION_MASK (1L<<13)
#define KXL_EVENT_EXPOSURE_MASK (1L<<15)
// Event
#define KXL_EVENT_KEY_PRESS 2
#define KXL_EVENT_KEY_RELEASE 3
#define KXL_EVENT_BUTTON_PRESS 4
#define KXL_EVENT_BUTTON_RELEASE 5
#define KXL_EVENT_BUTTON_MOTION 6
#define KXL_EVENT_EXPOSE 12
// Key code
#define KXL_KEY_BackSpace 0xff08
#define KXL_KEY_Tab 0xff09
#define KXL_KEY_Return 0xff0d
#define KXL_KEY_Escape 0xff1b
#define KXL_KEY_Delete 0xffff
#define KXL_KEY_Home 0xff50
#define KXL_KEY_Left 0xff51
#define KXL_KEY_Up 0xff52
#define KXL_KEY_Right 0xff53
#define KXL_KEY_Down 0xff54
#define KXL_KEY_F1 0xffbe
#define KXL_KEY_F2 0xffbf
#define KXL_KEY_F3 0xffc0
#define KXL_KEY_F4 0xffc1
#define KXL_KEY_F5 0xffc2
#define KXL_KEY_F6 0xffc3
#define KXL_KEY_F7 0xffc4
#define KXL_KEY_F8 0xffc5
#define KXL_KEY_F9 0xffc6
#define KXL_KEY_F10 0xffc7
#define KXL_KEY_F11 0xffc8
#define KXL_KEY_F12 0xffc9
#define KXL_KEY_Shift_L 0xffe1
#define KXL_KEY_Shift_R 0xffe2
#define KXL_KEY_Control_L 0xffe3
#define KXL_KEY_Control_R 0xffe4
#define KXL_KEY_Space 0x020
#define KXL_KEY_Exclam 0x021
#define KXL_KEY_Quotedbl 0x022
#define KXL_KEY_Numbersign 0x023
#define KXL_KEY_Dollar 0x024
#define KXL_KEY_Percent 0x025
#define KXL_KEY_Ampersand 0x026
#define KXL_KEY_Apostrophe 0x027
#define KXL_KEY_Quoteright 0x027
#define KXL_KEY_Parenleft 0x028
#define KXL_KEY_Parenright 0x029
#define KXL_KEY_Asterisk 0x02a
#define KXL_KEY_Plus 0x02b
#define KXL_KEY_Comma 0x02c
#define KXL_KEY_Minus 0x02d
#define KXL_KEY_Period 0x02e
#define KXL_KEY_Slash 0x02f
#define KXL_KEY_0 0x030
#define KXL_KEY_1 0x031
#define KXL_KEY_2 0x032
#define KXL_KEY_3 0x033
#define KXL_KEY_4 0x034
#define KXL_KEY_5 0x035
#define KXL_KEY_6 0x036
#define KXL_KEY_7 0x037
#define KXL_KEY_8 0x038
#define KXL_KEY_9 0x039
#define KXL_KEY_Colon 0x03a
#define KXL_KEY_Semicolon 0x03b
#define KXL_KEY_Less 0x03c
#define KXL_KEY_Equal 0x03d
#define KXL_KEY_Greater 0x03e
#define KXL_KEY_Question 0x03f
#define KXL_KEY_At 0x040
#define KXL_KEY_A 0x041
#define KXL_KEY_B 0x042
#define KXL_KEY_C 0x043
#define KXL_KEY_D 0x044
#define KXL_KEY_E 0x045
#define KXL_KEY_F 0x046
#define KXL_KEY_G 0x047
#define KXL_KEY_H 0x048
#define KXL_KEY_I 0x049
#define KXL_KEY_J 0x04a
#define KXL_KEY_K 0x04b
#define KXL_KEY_L 0x04c
#define KXL_KEY_M 0x04d
#define KXL_KEY_N 0x04e
#define KXL_KEY_O 0x04f
#define KXL_KEY_P 0x050
#define KXL_KEY_Q 0x051
#define KXL_KEY_R 0x052
#define KXL_KEY_S 0x053
#define KXL_KEY_T 0x054
#define KXL_KEY_U 0x055
#define KXL_KEY_V 0x056
#define KXL_KEY_W 0x057
#define KXL_KEY_X 0x058
#define KXL_KEY_Y 0x059
#define KXL_KEY_Z 0x05a
#define KXL_KEY_Bracketleft 0x05b
#define KXL_KEY_Backslash 0x05c
#define KXL_KEY_Bracketright 0x05d
#define KXL_KEY_Asciicircum 0x05e
#define KXL_KEY_Underscore 0x05f
#define KXL_KEY_Grave 0x060
#define KXL_KEY_Quoteleft 0x060
#define KXL_KEY_a 0x061
#define KXL_KEY_b 0x062
#define KXL_KEY_c 0x063
#define KXL_KEY_d 0x064
#define KXL_KEY_e 0x065
#define KXL_KEY_f 0x066
#define KXL_KEY_g 0x067
#define KXL_KEY_h 0x068
#define KXL_KEY_i 0x069
#define KXL_KEY_j 0x06a
#define KXL_KEY_k 0x06b
#define KXL_KEY_l 0x06c
#define KXL_KEY_m 0x06d
#define KXL_KEY_n 0x06e
#define KXL_KEY_o 0x06f
#define KXL_KEY_p 0x070
#define KXL_KEY_q 0x071
#define KXL_KEY_r 0x072
#define KXL_KEY_s 0x073
#define KXL_KEY_t 0x074
#define KXL_KEY_u 0x075
#define KXL_KEY_v 0x076
#define KXL_KEY_w 0x077
#define KXL_KEY_x 0x078
#define KXL_KEY_y 0x079
#define KXL_KEY_z 0x07a
#define KXL_KEY_Braceleft 0x07b
#define KXL_KEY_Bar 0x07c
#define KXL_KEY_Braceright 0x07d
#define KXL_KEY_Asciitilde 0x07e
// Type of variable
typedef int8_t Sint8;
typedef uint8_t Uint8;
typedef int16_t Sint16;
typedef uint16_t Uint16;
typedef int32_t Sint32;
typedef uint32_t Uint32;
// Image
typedef struct {
Pixmap Buffer; // Drawing image
Pixmap Mask; // Mask image
GC MaskGC; // GC of mask image
Uint16 Width; // Drawing width
Uint16 Height; // Drawing height
} KXL_Image;
// Rectangle
typedef struct {
Sint16 Left; // Left
Sint16 Top; // Top
Uint16 Width; // Width
Uint16 Height; // Height
} KXL_Rect;
// Polygon
typedef XPoint KXL_Polygon;
// Sound control
typedef enum {
KXL_SOUND_PLAY, // Play sound
KXL_SOUND_PLAY_LOOP, // Loop play sound
KXL_SOUND_STOP, // Stop sound
KXL_SOUND_STOP_ALL // Stop all sound
} KXL_Command;
typedef struct JS_DATA_TYPE KXL_Joystick;
//================================================================
// Internal structures
//================================================================
// Frame
typedef struct {
Pixmap Buffer; // Buffer
GC Gc; // GC
Uint16 Width; // Width
Uint16 Height; // Height
} KXL_Frame;
// Window
typedef struct {
Display *Display; // Pointer of display structure
Window Win; // window
Uint16 Scr; // Screen number
XEvent Event; // Event of X window
Uint16 Depth; // Bits per pixel of X window
Colormap Cmap; // Color map
Uint16 Width; // Width
Uint16 Height; // Height
KXL_Frame *Frame; // Pointer of frame structure
GC FontGC; // GC of font
XFontStruct *WinFont; // Pointer of font structrue
Bool DetectAutoRepeat; // Does the server have detectable auto repeat
} KXL_Window;
// RGBE palette
typedef struct {
Uint8 b, g, r, e; // Blue, Green, Red, ?
} KXL_RGBE;
// Bitmap header
typedef struct {
Uint8 magic[2]; // Bitmap magic
Uint32 file_size; // File size
Uint16 reserved1; // Reserved
Uint16 reserved2; // Reserved
Uint32 offset; // Offset of image
Uint32 hed_size; // Header size
Uint32 width; // Image width
Uint32 height; // Image height
Uint16 plane; // Plane
Uint16 depth; // Bits per pixel
Uint32 lzd; // Compression
Uint32 image_size; // Image size
Uint32 x_pixels; // Horizon resolution
Uint32 y_pixels; // Vertical resolution
Uint32 pals; // Palette
Uint32 pals2; // Palette
KXL_RGBE *rgb; // Palette data
Uint32 w; // Bytes per line
Uint8 *data; // Image data
} KXL_BitmapHeader;
//================================================================
// Internal function prototypes
//================================================================
void KXL_Up_Date(Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h);
void KXL_Clear_Frame(Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h);
KXL_Image *KXL_Copy_Image(KXL_Image *src, Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h);
KXL_Image *KXL_Copy_StretchImage(KXL_Image *src, Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h, Uint16 width, Uint16 height);
void KXL_Put_Image(KXL_Image *img, Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h, Sint16 x, Sint16 y);
void KXL_Put_StretchImage(KXL_Image *img, Uint16 src_l, Uint16 src_t, Uint16 src_w, Uint16 src_h, Uint16 w, Uint16 h, Sint16 x, Sint16 y);
void KXL_CreateBitmap8to16(Uint8 *from, XImage *to, KXL_RGBE *rgb, Uint8 blend);
void KXL_CreateBitmap8to24(Uint8 *from, XImage *to, KXL_RGBE *rgb, Uint8 blend);
void KXL_CreateBitmap8to1(Uint8 *from, XImage *to, Uint8 blend);
void KXL_ReadBitmapHeader(Uint8 *filename, KXL_BitmapHeader *hed);
Uint16 KXL_ReadU16(FILE *fp);
Uint32 KXL_ReadU32(FILE *fp);
#define KXL_ReadS16 (Sint16)KXL_ReadU16
#define KXL_ReadS32 (Sint32)KXL_ReadU16
//================================================================
// Global function prototypes
//================================================================
//================================================================
// Visual function prototypes
//================================================================
// Window functions
void KXL_DisplayName(Uint8 *name);
void KXL_CreateWindow(Uint16 w, Uint16 h, Uint8 *title, Uint32 event);
void KXL_DeleteWindow(void);
// Frame functions
void KXL_ReSizeFrame(Uint16 w, Uint16 h);
#define KXL_UpDateRect(rr) KXL_Up_Date(rr.Left, rr.Top, rr.Width, rr.Height)
#define KXL_UpDateImm KXL_Up_Date
#define KXL_UpDate KXL_UpDateRect // Downward compatibility
#define KXL_ClearFrameRect(rr) KXL_Clear_Frame(rr.Left, rr.Top, rr.Width, rr.Height)
#define KXL_ClearFrameImm KXL_Clear_Frame
#define KXL_ClearFrame KXL_ClearFrameRect // Downward compatibility
// Text functions
void KXL_Font(Uint8 *str, Uint8 r, Uint8 g, Uint8 b);
void KXL_PutText(Sint16 x, Sint16 y, Uint8 *str);
Uint16 KXL_TextWidth(Uint8 *str);
// Drawing functions
void KXL_SetDrawColor(Uint8 r, Uint8 g, Uint8 b);
void KXL_DrawPoint(Sint16 left, Sint16 top);
void KXL_DrawLine(Sint16 left, Sint16 top, Sint16 right, Sint16 bottom);
void KXL_DrawRectangle(Sint16 left, Sint16 top, Uint16 width, Uint16 height, Bool flag);
void KXL_DrawPolygon(KXL_Polygon *data, Uint16 max, Bool next, Bool flag);
// Image functions
KXL_Image *KXL_LoadBitmap(Uint8 *filename, Uint8 blend);
#define KXL_CopyImageRect(src, rr) KXL_Copy_Image(src, rr.Left, rr.Top, rr.Width, rr.Height)
#define KXL_CopyImageImm KXL_Copy_Image
#define KXL_CopyImage KXL_CopyImageRect // Downward compatibility
#define KXL_CopyStretchImageRect(src, rr, w, h) KXL_Copy_StretchImage(src, rr.Left, rr.Top, rr.Width, rr.Height, w, h)
#define KXL_CopyStretchImageImm KXL_Copy_StretchImage
#define KXL_CopyStretchImage(src, w, h) KXL_Copy_StretchImage(src, 0, 0, src->Width, src->Height, w, h)
#define KXL_StrechImage KXL_CopyStretchImage // Downward compatibility
void KXL_PutImage(KXL_Image *img, Sint16 x, Sint16 y);
#define KXL_PutImageRect(src, rr, x, y) KXL_Put_Image(src, rr.Left, rr.Top, rr.Width, rr.Height, x, y)
#define KXL_PutImageImm KXL_Put_Image
#define KXL_PutRectImage KXL_PutImageRect // Downward compatibility
#define KXL_PutStretchImage(src, w, h, x, y) KXL_Put_StretchImage(src, 0, 0, src->Width, src->Height, w, h, x, y)
#define KXL_PutStretchImageRect(src, rr, w, h, x, y) KXL_Put_StretchImage(src, rr.Left, rr.Top, rr.Width, rr.Height, w, h, x, y)
#define KXL_PutStretchImageImm KXL_Put_StretchImage
void KXL_DeleteImage(KXL_Image *img);
// Event functions
Bool KXL_CheckEvents(void);
Uint32 KXL_GetEvents(void);
Uint16 KXL_GetKey(void);
Uint16 KXL_GetButton(Uint16 *x, Uint16 *y);
//================================================================
// Sound function prototypes
//================================================================
void KXL_InitSound(Uint8 *path, Uint8 **fname);
void KXL_EndSound(void);
void KXL_PlaySound(Uint16 no, KXL_Command action);
//================================================================
// Etc. function prototypes
//================================================================
// Timer functions
void KXL_Timer(Uint16 time);
void KXL_ResetTimer(void);
Bool KXL_GetTimer(void);
// Memory functions
void *KXL_Malloc(Uint32 size);
void *KXL_Realloc(void *src, Uint32 size);
void KXL_Free(void *src);
// Game functions
Uint16 KXL_GetDirection(KXL_Rect src, KXL_Rect target);
void KXL_GetDirectionAdd(Sint16 , Sint16 *x, Sint16 *y);
#define KXL_DirectionAdd(dest, cnt, add) \
cnt += add;\
dest = cnt >> 8
#define KXL_RectIntersect(m, y)\
((m.Left < y.Left + y.Width - 1 &&\
m.Top < y.Top + y.Height - 1 &&\
y.Left < m.Left + m.Width - 1 &&\
y.Top < m.Top + m.Height - 1)\
? True : False)
//================================================================
// Joystick function prototypes
//================================================================
Bool KXL_OpenJoystick(Uint8 *devname);
void KXL_CloseJoystick(void);
Bool KXL_ReadJoystick(KXL_Joystick *my);
#endif
|