something
This commit is contained in:
55
util/util.c
Normal file
55
util/util.c
Normal file
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// Created by bruno on 4/24/25.
|
||||
//
|
||||
|
||||
#include "util.h"
|
||||
SDL_Texture* createFlippedTexture(SDL_Renderer* renderer, SDL_Texture* src, SDL_RendererFlip flip) {
|
||||
int w, h;
|
||||
SDL_QueryTexture(src, NULL, NULL, &w, &h);
|
||||
|
||||
SDL_Texture* target = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h);
|
||||
SDL_SetRenderTarget(renderer, target);
|
||||
SDL_RenderCopyEx(renderer, src, NULL, NULL, 0, NULL, flip);
|
||||
SDL_SetRenderTarget(renderer, NULL);
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
SDL_Texture* createRotatedTexture(SDL_Renderer* renderer, SDL_Texture* src, double angle) {
|
||||
int w, h;
|
||||
SDL_QueryTexture(src, NULL, NULL, &w, &h);
|
||||
|
||||
SDL_Texture* target = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h);
|
||||
SDL_SetRenderTarget(renderer, target);
|
||||
SDL_RenderCopyEx(renderer, src, NULL, NULL, angle, NULL, SDL_FLIP_NONE);
|
||||
SDL_SetRenderTarget(renderer, NULL);
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
SDL_Texture* ScaleTexture(SDL_Renderer* renderer, SDL_Texture* src, int newWidth, int newHeight) {
|
||||
SDL_Texture* scaledTex = SDL_CreateTexture(renderer,
|
||||
SDL_PIXELFORMAT_RGBA8888,
|
||||
SDL_TEXTUREACCESS_TARGET,
|
||||
newWidth,
|
||||
newHeight);
|
||||
|
||||
if (!scaledTex) {
|
||||
SDL_Log("Failed to create target texture: %s", SDL_GetError());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Save current render target
|
||||
SDL_Texture* oldTarget = SDL_GetRenderTarget(renderer);
|
||||
|
||||
SDL_SetRenderTarget(renderer, scaledTex);
|
||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
SDL_Rect dst = { 0, 0, newWidth, newHeight };
|
||||
SDL_RenderCopy(renderer, src, NULL, &dst);
|
||||
|
||||
SDL_SetRenderTarget(renderer, oldTarget); // Restore
|
||||
|
||||
return scaledTex;
|
||||
}
|
28
util/util.h
Normal file
28
util/util.h
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// Created by bruno on 4/24/25.
|
||||
//
|
||||
|
||||
#ifndef FACTORYGAME_UTIL_H
|
||||
#define FACTORYGAME_UTIL_H
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
typedef enum {
|
||||
ORIENT_LEFT_DOWN,
|
||||
ORIENT_LEFT,
|
||||
ORIENT_LEFT_UP,
|
||||
ORIENT_UP,
|
||||
ORIENT_RIGHT_UP,
|
||||
ORIENT_RIGHT,
|
||||
ORIENT_RIGHT_DOWN,
|
||||
ORIENT_DOWN,
|
||||
ORIENT_DIRECTION_COUNT
|
||||
} OrientDirection;
|
||||
|
||||
SDL_Texture *createRotatedTexture(SDL_Renderer *renderer, SDL_Texture *src, double angle);
|
||||
|
||||
SDL_Texture *createFlippedTexture(SDL_Renderer *renderer, SDL_Texture *src, SDL_RendererFlip flip);
|
||||
|
||||
SDL_Texture* ScaleTexture(SDL_Renderer* renderer, SDL_Texture* src, int newWidth, int newHeight);
|
||||
|
||||
#endif //FACTORYGAME_UTIL_H
|
Reference in New Issue
Block a user