fix: fixed warnings

This commit is contained in:
anjingyu 2025-07-09 00:45:51 +08:00
parent 08b47fed6c
commit 4b39cc6094
1 changed files with 50 additions and 43 deletions

View File

@ -13,64 +13,71 @@
#include "sww/window.h"
#define TITLE "SWW Clay"
#define MAX_SCENE 1
typedef void (*SceneFunc)(swwWindow*);
typedef struct {
int w;
int h;
int scene;
swwRenderer *renderer;
SceneFunc fs[MAX_SCENE];
typedef struct
{
int w;
int h;
int scene;
swwRenderer* renderer;
SceneFunc fs[MAX_SCENE];
} UserData;
void OnKey(swwWindow *o, swwKeycode key, int pressed) {
if (key == swwKeycode_ESCAPE && pressed) {
swwApp_PostQuitEvent();
}
void OnKey(swwWindow* o, swwKeycode key, int pressed)
{
if (key == swwKeycode_ESCAPE && pressed) {
swwApp_PostQuitEvent();
}
}
void OnButton(swwWindow *o, swwButton btn, int pressed) {
if (btn == swwButton_L && pressed) {
UserData *ud = swwWindow_GetUserData(o);
ud->need_render = !ud->need_render;
} else if (btn == swwButton_R && pressed) {
// Save to png file
UserData *ud = swwWindow_GetUserData(o);
uint32_t buf_size = swwUtil_PngBufferSize(ud->w, ud->h, 1);
uint8_t *buf = (uint8_t *)malloc(buf_size);
uint8_t *wbuf = swwRenderer_LockBuffer(ud->renderer);
FILE *fp = NULL;
swwUtil_SaveBufferToPngBuffer(buf, buf_size, wbuf, ud->w, ud->h, 1);
fp = fopen("output.png", "wb+");
fwrite(buf, 1, buf_size, fp);
fclose(fp);
free(buf);
}
void OnButton(swwWindow* o, swwButton btn, int pressed)
{
if (btn == swwButton_L && pressed) {
UserData* ud = swwWindow_GetUserData(o);
ud->scene = (ud->scene + 1) % MAX_SCENE;
} else if (btn == swwButton_R && pressed) {
// Save to png file
UserData* ud = swwWindow_GetUserData(o);
uint32_t buf_size = swwUtil_PngBufferSize(ud->w, ud->h, 1);
uint8_t* buf = (uint8_t*)malloc(buf_size);
uint8_t* wbuf = swwRenderer_LockBuffer(ud->renderer);
FILE* fp = NULL;
swwUtil_SaveBufferToPngBuffer(buf, buf_size, wbuf, ud->w, ud->h, 1);
fp = fopen("output.png", "wb+");
fwrite(buf, 1, buf_size, fp);
fclose(fp);
free(buf);
}
}
void OnScroll(swwWindow *o, float offset) {}
void OnScroll(swwWindow* o, float offset)
{}
int main() {
swwWindowCallback callback = {OnKey, OnButton, OnScroll};
swwApp_Initialize();
int main()
{
swwWindowCallback callback = {OnKey, OnButton, OnScroll};
swwApp_Initialize();
UserData ud = {500, 500, 0, NULL, {}};
UserData ud = {500, 500, 0, NULL, {NULL}};
swwWindow *window = swwWindow_Create(TITLE, 500, 500);
ud.renderer = swwRenderer_CreateAttachWindow(window, kSoftwareRenderer);
swwWindow_SetUserData(window, &ud);
swwWindow* window = swwWindow_Create(TITLE, ud.w, ud.h);
ud.renderer = swwRenderer_CreateAttachWindow(window, kSoftwareRenderer);
swwWindow_SetUserData(window, &ud);
swwWindow_SetCallback(window, &callback);
swwWindow_SetCallback(window, &callback);
swwRateHelper rh;
swwFpsHelper fps;
swwRenderer_EnablePerfMonitor(ud.renderer, 1);
swwFpsHelper_Construct(&fps, 1.f);
swwRateHelper_Construct(&rh, 30.f);
while (!swwApp_ShouldExit()) {
swwRenderer_ClearBlack(ud.renderer);
while (!swwApp_ShouldExit()) {
swwRenderer_ClearBlack(ud.renderer);
if (swwFpsHelper_Update(&fps, ud.renderer)) {
swwFpsHelper_SetTitleWithFps(&fps, window, TITLE);
@ -80,11 +87,11 @@ int main() {
swwApp_PollEvent();
swwRateHelper_Sleep(&rh);
}
}
swwRenderer_Destroy(ud.renderer);
swwWindow_Destroy(window);
swwApp_Cleanup();
swwRenderer_Destroy(ud.renderer);
swwWindow_Destroy(window);
swwApp_Cleanup();
return 0;
return 0;
}