Skip to content

Commit 09f9469

Browse files
committed
update changes to sdl3; formatting
1 parent 661b21c commit 09f9469

File tree

1 file changed

+32
-33
lines changed

1 file changed

+32
-33
lines changed

Source/Managers/FrameMan.cpp

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "FrameMan.h"
22

3+
#include "SDL3/SDL_surface.h"
34
#include "WindowMan.h"
45
#include "PostProcessMan.h"
56
#include "PresetMan.h"
@@ -34,7 +35,7 @@
3435
using namespace RTE;
3536

3637
void BitmapDeleter::operator()(BITMAP* bitmap) const { destroy_bitmap(bitmap); }
37-
void SurfaceDeleter::operator()(SDL_Surface* surface) const { SDL_FreeSurface(surface); }
38+
void SurfaceDeleter::operator()(SDL_Surface* surface) const { SDL_DestroySurface(surface); }
3839

3940
const std::array<std::function<void(int r, int g, int b, int a)>, DrawBlendMode::BlendModeCount> FrameMan::c_BlenderSetterFunctions = {
4041
nullptr, // NoBlend obviously has no blender, but we want to keep the indices matching with the enum.
@@ -157,17 +158,15 @@ int FrameMan::CreateBackBuffers() {
157158
m_PlayerScreen = m_BackBuffer;
158159
}
159160

160-
m_ScreenDumpBuffer = std::unique_ptr<SDL_Surface, SurfaceDeleter>(
161-
SDL_CreateRGBSurfaceWithFormat(0, m_BackBuffer8->w, m_BackBuffer8->h, 24, SDL_PIXELFORMAT_RGB24)
162-
);
161+
m_ScreenDumpBuffer = std::unique_ptr<SDL_Surface, SurfaceDeleter>(SDL_CreateSurface(m_BackBuffer8->w, m_BackBuffer8->h, SDL_PIXELFORMAT_RGB24));
163162

164163
return 0;
165164
}
166165

167166
void FrameMan::CreatePresetColorTables() {
168167
// Create RGB lookup table that supposedly speeds up calculation of other color tables.
169-
//create_rgb_table(&m_RGBTable, m_DefaultPalette, nullptr);
170-
//rgb_map = &m_RGBTable;
168+
// create_rgb_table(&m_RGBTable, m_DefaultPalette, nullptr);
169+
// rgb_map = &m_RGBTable;
171170

172171
// Create transparency color tables. Tables for other blend modes will be created on demand.
173172
int transparencyPresetCount = BlendAmountLimits::MaxBlend / c_BlendAmountStep;
@@ -410,7 +409,7 @@ void FrameMan::SetBlendMode(DrawBlendMode blendMode) {
410409
rlSetBlendMode(RL_BLEND_ALPHA);
411410
const Shader* dissolve = dynamic_cast<const Shader*>(g_PresetMan.GetEntityPreset("Shader", "Dissolve"));
412411
dissolve->Begin();
413-
GLint paletteLoc = dissolve->GetUniformLocation("rtePalette");
412+
GLint paletteLoc = dissolve->GetUniformLocation("rtePalette");
414413
rlSetUniformSampler(paletteLoc, g_PostProcessMan.GetPaletteTexture());
415414
break;
416415
}
@@ -491,11 +490,10 @@ bool FrameMan::LoadPalette(const std::string& palettePath) {
491490
SDL_Palette* palette = SDL_GetSurfacePalette(paletteImage);
492491
for (size_t i = 0; i < 256; i++) {
493492
m_Palette[i] = {
494-
palette->colors[i].r,
495-
palette->colors[i].g,
496-
palette->colors[i].b,
497-
0
498-
};
493+
palette->colors[i].r,
494+
palette->colors[i].g,
495+
palette->colors[i].b,
496+
0};
499497
}
500498
SDL_DestroySurface(paletteImage);
501499

@@ -518,7 +516,7 @@ int FrameMan::SaveBitmap(SaveBitmapMode modeToSave, const std::string& nameBase,
518516
set_palette(m_DefaultPalette);
519517

520518
// TODO: Remove this once GCC13 is released and switched to. std::format and std::chrono::time_zone are not part of latest libstdc++.
521-
#if defined(__GNUC__) && (__GNUC__ < 13 || defined(__APPLE__)) //FIXME: macOS for some reason builds with incorrect iconv in CI which breaks format, could not debug.
519+
#if defined(__GNUC__) && (__GNUC__ < 13 || defined(__APPLE__)) // FIXME: macOS for some reason builds with incorrect iconv in CI which breaks format, could not debug.
522520
std::chrono::time_point now = std::chrono::system_clock::now();
523521
time_t currentTime = std::chrono::system_clock::to_time_t(now);
524522
tm* localCurrentTime = std::localtime(&currentTime);
@@ -548,15 +546,15 @@ int FrameMan::SaveBitmap(SaveBitmapMode modeToSave, const std::string& nameBase,
548546
SaveScreenToBitmap();
549547

550548
// Make a copy of the buffer because it may be overwritten mid thread and everything will be on fire.
551-
SDL_Surface* saveSurface = SDL_ConvertSurfaceFormat(m_ScreenDumpBuffer.get(), m_ScreenDumpBuffer->format->format, 0);
549+
SDL_Surface* saveSurface = SDL_ConvertSurface(m_ScreenDumpBuffer.get(), m_ScreenDumpBuffer->format);
552550
auto saveScreenDump = [fullFileName](SDL_Surface* bitmapToSaveCopy) {
553551
// nullptr for the PALETTE parameter here because we're saving a 24bpp file and it's irrelevant.
554552
if (IMG_SavePNG(bitmapToSaveCopy, fullFileName.c_str()) == 0) {
555553
g_ConsoleMan.PrintString("SYSTEM: Screen was dumped to: " + fullFileName);
556554
} else {
557555
g_ConsoleMan.PrintString("ERROR: Unable to save bitmap to: " + fullFileName);
558556
}
559-
//SDL_FreeSurface(bitmapToSaveCopy);
557+
// SDL_FreeSurface(bitmapToSaveCopy);
560558
};
561559
std::thread saveThread(saveScreenDump, saveSurface);
562560
saveThread.detach();
@@ -586,21 +584,19 @@ int FrameMan::SaveBitmap(SaveBitmapMode modeToSave, const std::string& nameBase,
586584

587585
BITMAP* depthConvertBitmap = create_bitmap_ex(24, m_WorldDumpBuffer->w, m_WorldDumpBuffer->h);
588586
blit(m_WorldDumpBuffer.get(), depthConvertBitmap, 0, 0, 0, 0, m_WorldDumpBuffer->w, m_WorldDumpBuffer->h);
589-
SDL_Surface* saveSurface = SDL_CreateRGBSurfaceWithFormatFrom(
590-
depthConvertBitmap->dat,
591-
depthConvertBitmap->w,
592-
depthConvertBitmap->h,
593-
24,
594-
3,
595-
SDL_PIXELFORMAT_RGB24
596-
);
587+
SDL_Surface* saveSurface = SDL_CreateSurfaceFrom(
588+
depthConvertBitmap->w,
589+
depthConvertBitmap->h,
590+
SDL_PIXELFORMAT_RGB24,
591+
depthConvertBitmap->dat,
592+
3);
597593

598594
if (IMG_SavePNG(saveSurface, fullFileName.c_str()) == 0) {
599595
g_ConsoleMan.PrintString("SYSTEM: World was dumped to: " + fullFileName);
600596
saveSuccess = true;
601597
}
602598
destroy_bitmap(depthConvertBitmap);
603-
//SDL_FreeSurface(saveSurface);
599+
SDL_DestroySurface(saveSurface);
604600
}
605601
break;
606602
default:
@@ -635,12 +631,16 @@ void FrameMan::SaveScreenToBitmap() {
635631

636632
int FrameMan::SaveIndexedPNG(const char* fileName, BITMAP* bitmapToSave) const {
637633
set_palette(m_DefaultPalette);
638-
SDL_Surface* surface = SDL_CreateRGBSurfaceWithFormatFrom(bitmapToSave->dat, bitmapToSave->w, bitmapToSave->h, bitmap_color_depth(bitmapToSave), bitmap_color_depth(bitmapToSave)/8, SDL_PIXELFORMAT_INDEX8);
634+
SDL_Surface* surface = SDL_CreateSurfaceFrom(bitmapToSave->w,
635+
bitmapToSave->h,
636+
SDL_PIXELFORMAT_INDEX8,
637+
bitmapToSave->dat,
638+
bitmap_color_depth(bitmapToSave) / 8);
639639
SDL_Palette* pal = ContentFile::DefaultPaletteToSDL();
640640
SDL_SetSurfacePalette(surface, pal);
641641
int saveResult = IMG_SavePNG(surface, fileName);
642-
SDL_FreePalette(pal);
643-
SDL_FreeSurface(surface);
642+
SDL_DestroyPalette(pal);
643+
SDL_DestroySurface(surface);
644644

645645
return saveResult;
646646
}
@@ -809,7 +809,7 @@ void FrameMan::Draw() {
809809
ZoneScopedN("Draw");
810810
TracyGpuZone("FrameMan::Draw");
811811

812-
//rlSetShader(rlGetShaderIdDefault(), rlGetShaderLocsDefault());
812+
// rlSetShader(rlGetShaderIdDefault(), rlGetShaderLocsDefault());
813813
Shader backgroundShader;
814814
g_PresetMan.GetEntityPreset("Shader", "Background")->Clone(&backgroundShader);
815815
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
@@ -841,7 +841,7 @@ void FrameMan::Draw() {
841841
rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
842842
backgroundShader.SetInt("drawMasked", 1);
843843

844-
//rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
844+
// rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
845845
BITMAP* drawScreen = (screenCount == 1) ? m_BackBuffer8.get() : m_PlayerScreen8.get();
846846
BITMAP* drawScreenGUI = (screenCount == 1) ? m_BackBuffer8.get() : m_PlayerScreen8.get();
847847
// Need to clear the backbuffers because Scene background layers can be too small to fill the whole backbuffer or drawn masked resulting in artifacts from the previous frame.
@@ -868,7 +868,6 @@ void FrameMan::Draw() {
868868
// Draw the scene
869869
g_SceneMan.Draw(drawScreen, drawScreenGUI, targetPos);
870870

871-
872871
g_PrimitiveMan.DrawPrimitives(playerScreen, drawScreenGUI, targetPos);
873872

874873
// Get only the scene-relative post effects that affect this player's screen
@@ -919,7 +918,7 @@ void FrameMan::Draw() {
919918
}
920919

921920
rlEnableDepthTest();
922-
rlZDepth(c_GuiDepth-1.0f);
921+
rlZDepth(c_GuiDepth - 1.0f);
923922
g_GLResourceMan.UpdateDynamicBitmap(m_BackBuffer8.get(), true);
924923
backgroundShader.Begin();
925924
backgroundShader.Enable();
@@ -1001,14 +1000,14 @@ void FrameMan::DrawScreenFlash(int playerScreen, BITMAP* playerGUIBitmap) {
10011000

10021001
rlColor4ub(m_FlashScreenColor[playerScreen], 0, 0, 50);
10031002
rlVertex2f(playerGUIBitmap->w * .25f, playerGUIBitmap->h * .25f);
1004-
rlVertex2f(playerGUIBitmap->w - playerGUIBitmap->w * .25f, playerGUIBitmap->h *0.25f);
1003+
rlVertex2f(playerGUIBitmap->w - playerGUIBitmap->w * .25f, playerGUIBitmap->h * 0.25f);
10051004
rlColor4ub(m_FlashScreenColor[playerScreen], 0, 0, 255);
10061005
rlVertex2f(playerGUIBitmap->w, 0.0f);
10071006
rlVertex2f(0.0f, 0.0f);
10081007

10091008
rlColor4ub(m_FlashScreenColor[playerScreen], 0, 0, 50);
10101009
rlVertex2f(playerGUIBitmap->w * .25f, playerGUIBitmap->h - playerGUIBitmap->h * .25f);
1011-
rlVertex2f(playerGUIBitmap->w * .25f, playerGUIBitmap->h *0.25f);
1010+
rlVertex2f(playerGUIBitmap->w * .25f, playerGUIBitmap->h * 0.25f);
10121011
rlColor4ub(m_FlashScreenColor[playerScreen], 0, 0, 255);
10131012
rlVertex2f(0.0f, 0.0f);
10141013
rlVertex2f(0.0f, playerGUIBitmap->h);

0 commit comments

Comments
 (0)