summaryrefslogtreecommitdiff
path: root/lzr.h
diff options
context:
space:
mode:
Diffstat (limited to 'lzr.h')
-rw-r--r--lzr.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/lzr.h b/lzr.h
new file mode 100644
index 0000000..497bd52
--- /dev/null
+++ b/lzr.h
@@ -0,0 +1,129 @@
+/* Licensing informations can be found at the end of the file. */
+#pragma once
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#ifndef LZR_DISABLE_IMAGE
+# define LZR_ENABLE_IMAGE
+#endif
+#ifndef LZR_DISABLE_MIXER
+# define LZR_ENABLE_MIXER
+#endif
+#ifndef LZR_DISABLE_GFX
+# define LZR_ENABLE_GFX
+#endif
+
+/* devmode tracks and autoreloads ressources on change */
+#ifndef LZR_DISABLE_DEVMODE
+# define LZR_ENABLE_DEVMODE
+#endif
+
+#define LZR_MAX_IMAGES 64
+#define LZR_MAX_SOUNDS 64
+#define LZR_BUTTON(btn) LZR_ButtonDown(LZR_BUTTON_##btn)
+#define LZR_IMAGE(img) LZR_ImageLoad(img)
+
+typedef struct LZR_Config {
+ unsigned int display_width;
+ unsigned int display_height;
+ unsigned int target_fps;
+ unsigned int tile_size;
+ const char *title;
+ double ratio;
+ bool disable_bind_menu;
+ bool hide_cursor;
+} LZR_Config;
+
+typedef enum LZR_EventType {
+ LZR_EVENT_QUIT,
+ LZR_EVENT_BUTTON_DOWN,
+ LZR_EVENT_BUTTON_UP,
+ LZR_EVENT_MOUSE_MOVE
+} LZR_EventType;
+
+typedef enum LZR_Button {
+ LZR_BUTTON_LEFT,
+ LZR_BUTTON_RIGHT,
+ LZR_BUTTON_UP,
+ LZR_BUTTON_DOWN,
+ LZR_BUTTON_O,
+ LZR_BUTTON_X,
+ LZR_BUTTON_MOUSE_L,
+ LZR_BUTTON_MOUSE_M,
+ LZR_BUTTON_MOUSE_R,
+ LZR_BUTTON_COUNT
+} LZR_Button;
+
+typedef struct LZR_Event {
+ LZR_EventType type;
+ LZR_Button button;
+ int x, y;
+} LZR_Event;
+
+typedef struct LZR_ImageDrawSettings {
+ int ix, iy, width, height;
+ double scale_x, scale_y, angle;
+ bool center, flip_h, flip_v;
+} LZR_ImageDrawSettings;
+
+int LZR_Init(LZR_Config cfg);
+void LZR_Quit(void);
+bool LZR_ShouldQuit(void);
+bool LZR_PollEvent(LZR_Event *e);
+void LZR_CycleEvents(void);
+bool LZR_ButtonDown(LZR_Button btn);
+void LZR_ButtonBind(LZR_Button btn, unsigned int code);
+char *LZR_PathPrefix(const char *path);
+int LZR_ImageLoad(const char *path);
+int LZR_SoundLoad(const char *path, float volume);
+int LZR_DrawBegin(void);
+int LZR_DrawEnd(void);
+int LZR_DrawSetColor(float r, float g, float b, float a);
+int LZR_DrawClear(void);
+int LZR_DrawPoint(int x, int y);
+int LZR_DrawPoints(int *x, int *y, int n);
+int LZR_DrawLine(int x0, int y0, int x1, int y1);
+int LZR_DrawRectangle(bool fill, int x, int y, int w, int h);
+int LZR_DrawCircle(bool fill, int x, int y, int radius);
+int LZR_DrawPolygon(bool fill, int *vx, int *vy, int n);
+int LZR_DrawImage(int id, int x, int y);
+int LZR_DrawImageEx(int id, int x, int y, LZR_ImageDrawSettings stg);
+int LZR_DrawTile(int id, int tile, int x, int y, double rot, int flip);
+int LZR_PlaySound(int id);
+int LZR_SetMusicVolume(float volume);
+int LZR_PlayMusic(const char *path, int loops);
+void LZR_StopMusic(void);
+void LZR_ToggleFullscreen(void);
+uint64_t LZR_GetTick(void);
+void LZR_ScreenTransform(int *x, int *y);
+void LZR_MousePosition(int *x, int *y);
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+** Copyright (c) 2022, 2023 kdx
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and associated documentation files (the "Software"), to
+** deal in the Software without restriction, including without limitation the
+** rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+** sell copies of the Software, and to permit persons to whom the Software is
+** furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+** IN THE SOFTWARE.
+*/