From b7e5e2aa3517fe737dfcf41170fe78a1183d612e Mon Sep 17 00:00:00 2001 From: bruno Date: Thu, 30 Jan 2025 15:22:02 +0100 Subject: [PATCH] Init --- .gitignore | 1 + .idea/.gitignore | 8 +++ .idea/misc.xml | 7 +++ .idea/modules.xml | 8 +++ .idea/sdlzasedaco.iml | 2 + .idea/vcs.xml | 6 +++ CMakeLists.txt | 11 ++++ main.c | 120 ++++++++++++++++++++++++++++++++++++++++++ rasterthingy.ttf | Bin 0 -> 26936 bytes 9 files changed, 163 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/sdlzasedaco.iml create mode 100644 .idea/vcs.xml create mode 100644 CMakeLists.txt create mode 100644 main.c create mode 100644 rasterthingy.ttf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf797c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +cmake-build-debug \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0b76fe5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9957783 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sdlzasedaco.iml b/.idea/sdlzasedaco.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/sdlzasedaco.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..efca100 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.31) +project(sdlzasedaco C) + +set(CMAKE_C_STANDARD 23) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(SDL2 REQUIRED sdl2) + +add_executable(sdlzasedaco main.c) # Ensure the target is defined before linking + +target_link_libraries(sdlzasedaco SDL2 SDL2_ttf) diff --git a/main.c b/main.c new file mode 100644 index 0000000..3ec13a6 --- /dev/null +++ b/main.c @@ -0,0 +1,120 @@ +#include +#include +#include +#include + +//Screen dimension constants +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +void renderText(SDL_Renderer *renderer, TTF_Font *font, char *string, uint16_t x, uint16_t y, uint8_t r, uint8_t g, + uint8_t b, uint8_t a) { + SDL_Texture *fontTempTex; + SDL_Surface *fontTempSurf; + SDL_Color color = {r, g, b, a}; + fontTempSurf = TTF_RenderText_Blended(font, string, color); + fontTempTex = SDL_CreateTextureFromSurface(renderer, fontTempSurf); + + int iW, iH; + SDL_QueryTexture(fontTempTex, NULL, NULL, &iW, &iH); + + SDL_Rect srcRect; + srcRect.x = 0; + srcRect.y = 0; + srcRect.w = iW; + srcRect.h = iH; + + SDL_Rect dstRect; + dstRect.x = x; + dstRect.y = y; + dstRect.w = iW; + dstRect.h = iH; + + SDL_RenderCopy(renderer, fontTempTex, &srcRect, &dstRect); + + SDL_FreeSurface(fontTempSurf); + SDL_DestroyTexture(fontTempTex); +} + +int main(int argc, char *args[]) { + //The window we'll be rendering to + SDL_Window *window = NULL; + + //The surface contained by the window + SDL_Renderer *renderer = NULL; + + SDL_Rect rect1; + + TTF_Font *gFont; + + + //Initialize SDL + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); + return 1; + } + + //Initialize SDL_ttf + if (TTF_Init() == -1) { + printf("SDL_ttf could not initialize! SDL_ttf Error: %s\n", TTF_GetError()); + return 1; + } + + gFont = TTF_OpenFont("../rasterthingy.ttf", 50); + if (gFont == NULL) { + printf("Failed to load lazy font! SDL_ttf Error: %s\n", TTF_GetError()); + return 1; + } + + //Create window + window = SDL_CreateWindow("SDLko", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, + SCREEN_HEIGHT, SDL_WINDOW_SHOWN); + if (window == NULL) { + printf("Window could not be created! SDL_Error: %s\n", SDL_GetError()); + return 1; + } + //Get window surface + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + //Hack to get window to stay up + SDL_Event e; + bool quit = false; + Uint64 start; + Uint64 end; + while (!quit) { + start = SDL_GetTicks64(); + while (SDL_PollEvent(&e)) { + if (e.type == SDL_QUIT) quit = true; + } + + + SDL_SetRenderDrawColor(renderer, 128, 0, 0, 255); + SDL_RenderClear(renderer); + + SDL_SetRenderDrawColor(renderer, 0, 128, 0, 255); + rect1.x = (rect1.x + 1) % 400; + rect1.y = 10; + rect1.w = 50; + rect1.h = 10; + SDL_RenderFillRect(renderer, &rect1); + + char textTemp[12]; + sprintf(textTemp, "%d", rect1.x); + + renderText(renderer, gFont, textTemp, 100, 100, 255, 255, 255, 255); + + SDL_RenderPresent(renderer); + end = SDL_GetTicks64(); + SDL_Delay((1000 / 60) - (end - start)); + } + + TTF_CloseFont(gFont); + + //Destroy window + SDL_DestroyWindow(window); + + //Quit SDL subsystems + SDL_Quit(); + + return 0; +} \ No newline at end of file diff --git a/rasterthingy.ttf b/rasterthingy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8d809828d433c14ec12f9a6c9e9632ee1b89cdc5 GIT binary patch literal 26936 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 Q0jj_eJSYov7ZHRB0Fbf}NdN!< literal 0 HcmV?d00001