added image type, and integer types

This commit is contained in:
DaniTheSkunk 2022-12-22 04:52:59 +00:00
parent 1fa6361401
commit cfb2fb2ea1
12 changed files with 92 additions and 19 deletions

8
include/color32.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef GUARD_99E25E7F8183EF0D8D27390EBC173C04
#define GUARD_99E25E7F8183EF0D8D27390EBC173C04
#include "types.h"
typedef u32 color32;
#endif /* GUARD_99E25E7F8183EF0D8D27390EBC173C04 */

6
include/image32.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef GUARD_413D576D943A16C984254F2FA4BB5B91
#define GUARD_413D576D943A16C984254F2FA4BB5B91
struct image32 {};
#endif /* GUARD_413D576D943A16C984254F2FA4BB5B91 */

6
include/skunkworks.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef GUARD_9C1995B9551EFCCDC93F439C46AEF061
#define GUARD_9C1995B9551EFCCDC93F439C46AEF061
void sw_init();
#endif /* GUARD_9C1995B9551EFCCDC93F439C46AEF061 */

15
include/types.h Normal file
View File

@ -0,0 +1,15 @@
#ifndef GUARD_649E63003BEAE79ECA2B813C4E131C9A
#define GUARD_649E63003BEAE79ECA2B813C4E131C9A
typedef signed char i8;
typedef unsigned char u8;
typedef signed short i16;
typedef unsigned short u16;
typedef signed int i32;
typedef unsigned int u32;
typedef signed long long i64;
typedef unsigned long long u64;
typedef float f32;
typedef double f64;
#endif /* GUARD_649E63003BEAE79ECA2B813C4E131C9A */

View File

@ -13,4 +13,6 @@ struct window {
struct window *sw_window_create(struct vec2i size, char *title); struct window *sw_window_create(struct vec2i size, char *title);
void sw_window_run(struct window *window);
#endif /* GUARD_F247452E0BF1EC9CD9131C2A6FD281CA */ #endif /* GUARD_F247452E0BF1EC9CD9131C2A6FD281CA */

View File

@ -40,6 +40,8 @@ else
endif endif
skunk_sources = [ skunk_sources = [
'src/color32.c',
'src/image32.c',
'src/skunkworks.c', 'src/skunkworks.c',
'src/test.c', 'src/test.c',
'src/vec2i.c', 'src/vec2i.c',

0
src/color32.c Normal file
View File

0
src/image32.c Normal file
View File

View File

@ -1,5 +1,26 @@
#include "skunkworks.h" #include "skunkworks.h"
int aaa(void) { #include <assert.h>
return 0;
#include "types.h"
void assert_types();
void sw_init() {
assert_types();
}
/* private */
void assert_types() {
assert(sizeof(i8) == 1);
assert(sizeof(u8) == 1);
assert(sizeof(i16) == 2);
assert(sizeof(u16) == 2);
assert(sizeof(i32) == 4);
assert(sizeof(u32) == 4);
assert(sizeof(i64) == 8);
assert(sizeof(u64) == 8);
assert(sizeof(f32) == 4);
assert(sizeof(f64) == 8);
} }

View File

@ -0,0 +1,4 @@
#ifndef GUARD_BAEE408B8F416CA55711305ABAF9CE6C
#define GUARD_BAEE408B8F416CA55711305ABAF9CE6C
#endif /* GUARD_BAEE408B8F416CA55711305ABAF9CE6C */

View File

@ -3,32 +3,18 @@
#include "window.h" #include "window.h"
#include <png.h> #include <png.h>
#include "gl.h" #include <skunkworks.h>
struct window *win; struct window *win;
void tick(); void tick();
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
sw_init();
printf("hello world\n"); printf("hello world\n");
win = sw_window_create(sw_vec2i(640, 480), "Skunkworks"); win = sw_window_create(sw_vec2i(640, 480), "Skunkworks");
png_sig_cmp(0, 0, 0); png_sig_cmp(0, 0, 0);
glClearColor(0.1f, 0.2f, 0.3f, 1.f);
#ifdef __EMSCRIPTEN__
emscripten_set_main_loop(tick, 0, 1);
#else
while (!glfwWindowShouldClose(win->_window)) {
tick();
}
#endif
sw_window_run(win);
return 0; return 0;
} }
void tick() {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(win->_window);
glfwPollEvents();
}

View File

@ -4,6 +4,9 @@
#include "gl.h" #include "gl.h"
void tick();
struct window *tick_window;
struct window *sw_window_create(struct vec2i size, char *title) { struct window *sw_window_create(struct vec2i size, char *title) {
struct window *win; struct window *win;
@ -22,5 +25,25 @@ struct window *sw_window_create(struct vec2i size, char *title) {
glEnable(GL_BLEND); glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
glClearColor(0.1f, 0.2f, 0.3f, 1.f);
return win; return win;
} }
void sw_window_run(struct window *window) {
tick_window = window;
#ifdef __EMSCRIPTEN__
emscripten_set_main_loop(tick, 60, 1);
#else
while (!glfwWindowShouldClose(window->_window)) {
tick();
}
#endif
}
/* private functions */
void tick() {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(tick_window->_window);
glfwPollEvents();
}