mirror of https://github.com/encounter/SDL.git
test: Add some common code to load test resources
As well as reducing duplication, this lets the tests load their resources from the SDL_GetBasePath() on platforms that support it, which is useful if the tests are compiled along with the rest of SDL and installed below /usr as manual tests, similar to GNOME's installed-tests convention. Thanks to Ozkan Sezer for the OS/2 build glue. Co-authored-by: Ozkan Sezer <sezeroz@gmail.com> Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
ecf1e15fec
commit
76a7b629bf
|
@ -271,6 +271,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\controllermap.c" />
|
<ClCompile Include="..\..\..\test\controllermap.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -203,6 +203,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\Test\loopwave.c" />
|
<ClCompile Include="..\..\..\Test\loopwave.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="..\..\..\test\sample.wav">
|
<CustomBuild Include="..\..\..\test\sample.wav">
|
||||||
|
@ -227,4 +228,4 @@
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -271,6 +271,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\testgamecontroller.c" />
|
<ClCompile Include="..\..\..\test\testgamecontroller.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -217,6 +217,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\testoverlay2.c" />
|
<ClCompile Include="..\..\..\test\testoverlay2.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
<ClCompile Include="..\..\..\test\testyuv_cvt.c" />
|
<ClCompile Include="..\..\..\test\testyuv_cvt.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
|
|
@ -241,8 +241,9 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\testrendertarget.c" />
|
<ClCompile Include="..\..\..\test\testrendertarget.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -241,8 +241,9 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\testscale.c" />
|
<ClCompile Include="..\..\..\test\testscale.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -223,8 +223,9 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\test\testsprite2.c" />
|
<ClCompile Include="..\..\..\test\testsprite2.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testutils.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -49,8 +49,8 @@ endif()
|
||||||
|
|
||||||
add_executable(checkkeys checkkeys.c)
|
add_executable(checkkeys checkkeys.c)
|
||||||
add_executable(checkkeysthreads checkkeysthreads.c)
|
add_executable(checkkeysthreads checkkeysthreads.c)
|
||||||
add_executable(loopwave loopwave.c)
|
add_executable(loopwave loopwave.c testutils.c)
|
||||||
add_executable(loopwavequeue loopwavequeue.c)
|
add_executable(loopwavequeue loopwavequeue.c testutils.c)
|
||||||
add_executable(testsurround testsurround.c)
|
add_executable(testsurround testsurround.c)
|
||||||
add_executable(testresample testresample.c)
|
add_executable(testresample testresample.c)
|
||||||
add_executable(testaudioinfo testaudioinfo.c)
|
add_executable(testaudioinfo testaudioinfo.c)
|
||||||
|
@ -58,8 +58,8 @@ add_executable(testaudioinfo testaudioinfo.c)
|
||||||
file(GLOB TESTAUTOMATION_SOURCE_FILES testautomation*.c)
|
file(GLOB TESTAUTOMATION_SOURCE_FILES testautomation*.c)
|
||||||
add_executable(testautomation ${TESTAUTOMATION_SOURCE_FILES})
|
add_executable(testautomation ${TESTAUTOMATION_SOURCE_FILES})
|
||||||
|
|
||||||
add_executable(testmultiaudio testmultiaudio.c)
|
add_executable(testmultiaudio testmultiaudio.c testutils.c)
|
||||||
add_executable(testaudiohotplug testaudiohotplug.c)
|
add_executable(testaudiohotplug testaudiohotplug.c testutils.c)
|
||||||
add_executable(testaudiocapture testaudiocapture.c)
|
add_executable(testaudiocapture testaudiocapture.c)
|
||||||
add_executable(testatomic testatomic.c)
|
add_executable(testatomic testatomic.c)
|
||||||
add_executable(testintersections testintersections.c)
|
add_executable(testintersections testintersections.c)
|
||||||
|
@ -75,8 +75,8 @@ if(LINUX)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(testfile testfile.c)
|
add_executable(testfile testfile.c)
|
||||||
add_executable(testgamecontroller testgamecontroller.c)
|
add_executable(testgamecontroller testgamecontroller.c testutils.c)
|
||||||
add_executable(testgeometry testgeometry.c)
|
add_executable(testgeometry testgeometry.c testutils.c)
|
||||||
add_executable(testgesture testgesture.c)
|
add_executable(testgesture testgesture.c)
|
||||||
add_executable(testgl2 testgl2.c)
|
add_executable(testgl2 testgl2.c)
|
||||||
add_executable(testgles testgles.c)
|
add_executable(testgles testgles.c)
|
||||||
|
@ -85,8 +85,8 @@ add_executable(testhaptic testhaptic.c)
|
||||||
add_executable(testhotplug testhotplug.c)
|
add_executable(testhotplug testhotplug.c)
|
||||||
add_executable(testrumble testrumble.c)
|
add_executable(testrumble testrumble.c)
|
||||||
add_executable(testthread testthread.c)
|
add_executable(testthread testthread.c)
|
||||||
add_executable(testiconv testiconv.c)
|
add_executable(testiconv testiconv.c testutils.c)
|
||||||
add_executable(testime testime.c)
|
add_executable(testime testime.c testutils.c)
|
||||||
add_executable(testjoystick testjoystick.c)
|
add_executable(testjoystick testjoystick.c)
|
||||||
add_executable(testkeys testkeys.c)
|
add_executable(testkeys testkeys.c)
|
||||||
add_executable(testloadso testloadso.c)
|
add_executable(testloadso testloadso.c)
|
||||||
|
@ -97,40 +97,42 @@ add_executable(testmouse testmouse.c)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
add_executable(testnative testnative.c
|
add_executable(testnative testnative.c
|
||||||
testnativecocoa.m
|
testnativecocoa.m
|
||||||
testnativex11.c)
|
testnativex11.c
|
||||||
|
testutils.c)
|
||||||
elseif(WINDOWS)
|
elseif(WINDOWS)
|
||||||
add_executable(testnative testnative.c testnativew32.c)
|
add_executable(testnative testnative.c testnativew32.c testutils.c)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
add_executable(testnative testnative.c testnativex11.c)
|
add_executable(testnative testnative.c testnativex11.c testutils.c)
|
||||||
|
target_link_libraries(testnative X11)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(testoverlay2 testoverlay2.c testyuv_cvt.c)
|
add_executable(testoverlay2 testoverlay2.c testyuv_cvt.c testutils.c)
|
||||||
add_executable(testplatform testplatform.c)
|
add_executable(testplatform testplatform.c)
|
||||||
add_executable(testpower testpower.c)
|
add_executable(testpower testpower.c)
|
||||||
add_executable(testfilesystem testfilesystem.c)
|
add_executable(testfilesystem testfilesystem.c)
|
||||||
add_executable(testrendertarget testrendertarget.c)
|
add_executable(testrendertarget testrendertarget.c testutils.c)
|
||||||
add_executable(testscale testscale.c)
|
add_executable(testscale testscale.c testutils.c)
|
||||||
add_executable(testsem testsem.c)
|
add_executable(testsem testsem.c)
|
||||||
add_executable(testsensor testsensor.c)
|
add_executable(testsensor testsensor.c)
|
||||||
add_executable(testshader testshader.c)
|
add_executable(testshader testshader.c)
|
||||||
add_executable(testshape testshape.c)
|
add_executable(testshape testshape.c)
|
||||||
add_executable(testsprite2 testsprite2.c)
|
add_executable(testsprite2 testsprite2.c testutils.c)
|
||||||
add_executable(testspriteminimal testspriteminimal.c)
|
add_executable(testspriteminimal testspriteminimal.c testutils.c)
|
||||||
add_executable(teststreaming teststreaming.c)
|
add_executable(teststreaming teststreaming.c testutils.c)
|
||||||
add_executable(testtimer testtimer.c)
|
add_executable(testtimer testtimer.c)
|
||||||
add_executable(testurl testurl.c)
|
add_executable(testurl testurl.c)
|
||||||
add_executable(testver testver.c)
|
add_executable(testver testver.c)
|
||||||
add_executable(testviewport testviewport.c)
|
add_executable(testviewport testviewport.c testutils.c)
|
||||||
add_executable(testwm2 testwm2.c)
|
add_executable(testwm2 testwm2.c)
|
||||||
add_executable(testyuv testyuv.c testyuv_cvt.c)
|
add_executable(testyuv testyuv.c testyuv_cvt.c)
|
||||||
add_executable(torturethread torturethread.c)
|
add_executable(torturethread torturethread.c)
|
||||||
add_executable(testrendercopyex testrendercopyex.c)
|
add_executable(testrendercopyex testrendercopyex.c testutils.c)
|
||||||
add_executable(testmessage testmessage.c)
|
add_executable(testmessage testmessage.c)
|
||||||
add_executable(testdisplayinfo testdisplayinfo.c)
|
add_executable(testdisplayinfo testdisplayinfo.c)
|
||||||
add_executable(testqsort testqsort.c)
|
add_executable(testqsort testqsort.c)
|
||||||
add_executable(testbounds testbounds.c)
|
add_executable(testbounds testbounds.c)
|
||||||
add_executable(testcustomcursor testcustomcursor.c)
|
add_executable(testcustomcursor testcustomcursor.c)
|
||||||
add_executable(controllermap controllermap.c)
|
add_executable(controllermap controllermap.c testutils.c)
|
||||||
add_executable(testvulkan testvulkan.c)
|
add_executable(testvulkan testvulkan.c)
|
||||||
add_executable(testoffscreen testoffscreen.c)
|
add_executable(testoffscreen testoffscreen.c)
|
||||||
|
|
||||||
|
|
|
@ -90,10 +90,10 @@ checkkeys$(EXE): $(srcdir)/checkkeys.c
|
||||||
checkkeysthreads$(EXE): $(srcdir)/checkkeysthreads.c
|
checkkeysthreads$(EXE): $(srcdir)/checkkeysthreads.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
loopwave$(EXE): $(srcdir)/loopwave.c
|
loopwave$(EXE): $(srcdir)/loopwave.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
loopwavequeue$(EXE): $(srcdir)/loopwavequeue.c
|
loopwavequeue$(EXE): $(srcdir)/loopwavequeue.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testsurround$(EXE): $(srcdir)/testsurround.c
|
testsurround$(EXE): $(srcdir)/testsurround.c
|
||||||
|
@ -126,10 +126,10 @@ testautomation$(EXE): $(srcdir)/testautomation.c \
|
||||||
$(srcdir)/testautomation_hints.c
|
$(srcdir)/testautomation_hints.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testmultiaudio$(EXE): $(srcdir)/testmultiaudio.c
|
testmultiaudio$(EXE): $(srcdir)/testmultiaudio.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testaudiohotplug$(EXE): $(srcdir)/testaudiohotplug.c
|
testaudiohotplug$(EXE): $(srcdir)/testaudiohotplug.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testaudiocapture$(EXE): $(srcdir)/testaudiocapture.c
|
testaudiocapture$(EXE): $(srcdir)/testaudiocapture.c
|
||||||
|
@ -165,10 +165,10 @@ testevdev$(EXE): $(srcdir)/testevdev.c
|
||||||
testfile$(EXE): $(srcdir)/testfile.c
|
testfile$(EXE): $(srcdir)/testfile.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testgamecontroller$(EXE): $(srcdir)/testgamecontroller.c
|
testgamecontroller$(EXE): $(srcdir)/testgamecontroller.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testgeometry$(EXE): $(srcdir)/testgeometry.c
|
testgeometry$(EXE): $(srcdir)/testgeometry.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testgesture$(EXE): $(srcdir)/testgesture.c
|
testgesture$(EXE): $(srcdir)/testgesture.c
|
||||||
|
@ -183,7 +183,7 @@ testgles$(EXE): $(srcdir)/testgles.c
|
||||||
testgles2$(EXE): $(srcdir)/testgles2.c
|
testgles2$(EXE): $(srcdir)/testgles2.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
||||||
|
|
||||||
testgles2_sdf$(EXE): $(srcdir)/testgles2_sdf.c
|
testgles2_sdf$(EXE): $(srcdir)/testgles2_sdf.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
||||||
|
|
||||||
testhaptic$(EXE): $(srcdir)/testhaptic.c
|
testhaptic$(EXE): $(srcdir)/testhaptic.c
|
||||||
|
@ -198,10 +198,10 @@ testrumble$(EXE): $(srcdir)/testrumble.c
|
||||||
testthread$(EXE): $(srcdir)/testthread.c
|
testthread$(EXE): $(srcdir)/testthread.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testiconv$(EXE): $(srcdir)/testiconv.c
|
testiconv$(EXE): $(srcdir)/testiconv.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testime$(EXE): $(srcdir)/testime.c
|
testime$(EXE): $(srcdir)/testime.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @SDL_TTF_LIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @SDL_TTF_LIB@
|
||||||
|
|
||||||
testjoystick$(EXE): $(srcdir)/testjoystick.c
|
testjoystick$(EXE): $(srcdir)/testjoystick.c
|
||||||
|
@ -219,18 +219,21 @@ testlock$(EXE): $(srcdir)/testlock.c
|
||||||
ifeq (@ISMACOSX@,true)
|
ifeq (@ISMACOSX@,true)
|
||||||
testnative$(EXE): $(srcdir)/testnative.c \
|
testnative$(EXE): $(srcdir)/testnative.c \
|
||||||
$(srcdir)/testnativecocoa.m \
|
$(srcdir)/testnativecocoa.m \
|
||||||
|
$(srcdir)/testutils.c \
|
||||||
$(srcdir)/testnativex11.c
|
$(srcdir)/testnativex11.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) -framework Cocoa @XLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) -framework Cocoa @XLIB@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (@ISWINDOWS@,true)
|
ifeq (@ISWINDOWS@,true)
|
||||||
testnative$(EXE): $(srcdir)/testnative.c \
|
testnative$(EXE): $(srcdir)/testnative.c \
|
||||||
|
$(srcdir)/testutils.c \
|
||||||
$(srcdir)/testnativew32.c
|
$(srcdir)/testnativew32.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (@ISUNIX@,true)
|
ifeq (@ISUNIX@,true)
|
||||||
testnative$(EXE): $(srcdir)/testnative.c \
|
testnative$(EXE): $(srcdir)/testnative.c \
|
||||||
|
$(srcdir)/testutils.c \
|
||||||
$(srcdir)/testnativex11.c
|
$(srcdir)/testnativex11.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @XLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @XLIB@
|
||||||
endif
|
endif
|
||||||
|
@ -252,7 +255,7 @@ endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
testoverlay2$(EXE): $(srcdir)/testoverlay2.c $(srcdir)/testyuv_cvt.c
|
testoverlay2$(EXE): $(srcdir)/testoverlay2.c $(srcdir)/testyuv_cvt.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testplatform$(EXE): $(srcdir)/testplatform.c
|
testplatform$(EXE): $(srcdir)/testplatform.c
|
||||||
|
@ -264,10 +267,10 @@ testpower$(EXE): $(srcdir)/testpower.c
|
||||||
testfilesystem$(EXE): $(srcdir)/testfilesystem.c
|
testfilesystem$(EXE): $(srcdir)/testfilesystem.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testrendertarget$(EXE): $(srcdir)/testrendertarget.c
|
testrendertarget$(EXE): $(srcdir)/testrendertarget.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testscale$(EXE): $(srcdir)/testscale.c
|
testscale$(EXE): $(srcdir)/testscale.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testsem$(EXE): $(srcdir)/testsem.c
|
testsem$(EXE): $(srcdir)/testsem.c
|
||||||
|
@ -282,13 +285,13 @@ testshader$(EXE): $(srcdir)/testshader.c
|
||||||
testshape$(EXE): $(srcdir)/testshape.c
|
testshape$(EXE): $(srcdir)/testshape.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testsprite2$(EXE): $(srcdir)/testsprite2.c
|
testsprite2$(EXE): $(srcdir)/testsprite2.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c
|
testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
||||||
|
|
||||||
teststreaming$(EXE): $(srcdir)/teststreaming.c
|
teststreaming$(EXE): $(srcdir)/teststreaming.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
||||||
|
|
||||||
testtimer$(EXE): $(srcdir)/testtimer.c
|
testtimer$(EXE): $(srcdir)/testtimer.c
|
||||||
|
@ -300,7 +303,7 @@ testurl$(EXE): $(srcdir)/testurl.c
|
||||||
testver$(EXE): $(srcdir)/testver.c
|
testver$(EXE): $(srcdir)/testver.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testviewport$(EXE): $(srcdir)/testviewport.c
|
testviewport$(EXE): $(srcdir)/testviewport.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testwm2$(EXE): $(srcdir)/testwm2.c
|
testwm2$(EXE): $(srcdir)/testwm2.c
|
||||||
|
@ -312,7 +315,7 @@ testyuv$(EXE): $(srcdir)/testyuv.c $(srcdir)/testyuv_cvt.c
|
||||||
torturethread$(EXE): $(srcdir)/torturethread.c
|
torturethread$(EXE): $(srcdir)/torturethread.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c
|
testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
|
||||||
|
|
||||||
testmessage$(EXE): $(srcdir)/testmessage.c
|
testmessage$(EXE): $(srcdir)/testmessage.c
|
||||||
|
@ -330,7 +333,7 @@ testbounds$(EXE): $(srcdir)/testbounds.c
|
||||||
testcustomcursor$(EXE): $(srcdir)/testcustomcursor.c
|
testcustomcursor$(EXE): $(srcdir)/testcustomcursor.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
controllermap$(EXE): $(srcdir)/controllermap.c
|
controllermap$(EXE): $(srcdir)/controllermap.c $(srcdir)/testutils.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testvulkan$(EXE): $(srcdir)/testvulkan.c
|
testvulkan$(EXE): $(srcdir)/testvulkan.c
|
||||||
|
|
|
@ -7,7 +7,7 @@ CFLAGS = $(INCPATH) -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oteanbmier -ei
|
||||||
CFLAGS+= -wx -wcd=303
|
CFLAGS+= -wx -wcd=303
|
||||||
|
|
||||||
LIBPATH = ..
|
LIBPATH = ..
|
||||||
LIBS = SDL2.lib SDL2test.lib
|
LIBS = SDL2.lib SDL2test.lib testutils.lib
|
||||||
|
|
||||||
#CFLAGS+= -DHAVE_SDL_TTF
|
#CFLAGS+= -DHAVE_SDL_TTF
|
||||||
#TTFLIBS = SDL2ttf.lib
|
#TTFLIBS = SDL2ttf.lib
|
||||||
|
@ -44,7 +44,7 @@ OBJS = $(TARGETS:.exe=.obj)
|
||||||
COBJS = $(CSRCS:.c=.obj)
|
COBJS = $(CSRCS:.c=.obj)
|
||||||
TAOBJS = $(TASRCS:.c=.obj)
|
TAOBJS = $(TASRCS:.c=.obj)
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: testutils.lib $(TARGETS)
|
||||||
|
|
||||||
.c: ../src/test
|
.c: ../src/test
|
||||||
|
|
||||||
|
@ -70,8 +70,10 @@ testyuv.exe: testyuv.obj testyuv_cvt.obj
|
||||||
testime.exe: testime.obj
|
testime.exe: testime.obj
|
||||||
wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS) $(TTFLIBS)} op q op el file {$<} name $@
|
wlink SYS os2v2 libpath $(LIBPATH) lib {$(LIBS) $(TTFLIBS)} op q op el file {$<} name $@
|
||||||
|
|
||||||
|
testutils.lib: testutils.obj
|
||||||
|
wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $<
|
||||||
|
|
||||||
clean: .SYMBOLIC
|
clean: .SYMBOLIC
|
||||||
@if exist *.obj rm *.obj
|
rm -f *.obj *.err
|
||||||
@if exist *.err rm *.err
|
|
||||||
distclean: .SYMBOLIC clean
|
distclean: .SYMBOLIC clean
|
||||||
@if exist *.exe rm *.exe
|
rm -f *.exe *.lib
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#ifndef SDL_JOYSTICK_DISABLED
|
#ifndef SDL_JOYSTICK_DISABLED
|
||||||
|
|
||||||
|
@ -169,39 +170,6 @@ static SDL_Renderer *screen;
|
||||||
static SDL_bool done = SDL_FALSE;
|
static SDL_bool done = SDL_FALSE;
|
||||||
static SDL_bool bind_touchpad = SDL_FALSE;
|
static SDL_bool bind_touchpad = SDL_FALSE;
|
||||||
|
|
||||||
SDL_Texture *
|
|
||||||
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
SDL_Texture *texture;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (transparent) {
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!texture) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
StandardizeAxisValue(int nValue)
|
StandardizeAxisValue(int nValue)
|
||||||
{
|
{
|
||||||
|
@ -392,10 +360,10 @@ WatchJoystick(SDL_Joystick * joystick)
|
||||||
Uint32 alpha_ticks = 0;
|
Uint32 alpha_ticks = 0;
|
||||||
SDL_JoystickID nJoystickID;
|
SDL_JoystickID nJoystickID;
|
||||||
|
|
||||||
background_front = LoadTexture(screen, "controllermap.bmp", SDL_FALSE);
|
background_front = LoadTexture(screen, "controllermap.bmp", SDL_FALSE, NULL, NULL);
|
||||||
background_back = LoadTexture(screen, "controllermap_back.bmp", SDL_FALSE);
|
background_back = LoadTexture(screen, "controllermap_back.bmp", SDL_FALSE, NULL, NULL);
|
||||||
button = LoadTexture(screen, "button.bmp", SDL_TRUE);
|
button = LoadTexture(screen, "button.bmp", SDL_TRUE, NULL, NULL);
|
||||||
axis = LoadTexture(screen, "axis.bmp", SDL_TRUE);
|
axis = LoadTexture(screen, "axis.bmp", SDL_TRUE, NULL, NULL);
|
||||||
SDL_RaiseWindow(window);
|
SDL_RaiseWindow(window);
|
||||||
|
|
||||||
/* scale for platforms that don't give you the window size you asked for. */
|
/* scale for platforms that don't give you the window size you asked for. */
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
|
@ -114,7 +115,7 @@ int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char filename[4096];
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
@ -125,11 +126,13 @@ main(int argc, char *argv[])
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 1) {
|
filename = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
||||||
SDL_strlcpy(filename, argv[1], sizeof(filename));
|
|
||||||
} else {
|
if (filename == NULL) {
|
||||||
SDL_strlcpy(filename, "sample.wav", sizeof(filename));
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError());
|
||||||
|
quit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the wave file into memory */
|
/* Load the wave file into memory */
|
||||||
if (SDL_LoadWAV(filename, &wave.spec, &wave.sound, &wave.soundlen) == NULL) {
|
if (SDL_LoadWAV(filename, &wave.spec, &wave.sound, &wave.soundlen) == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
||||||
|
@ -172,6 +175,7 @@ main(int argc, char *argv[])
|
||||||
/* Clean up on signal */
|
/* Clean up on signal */
|
||||||
close_audio();
|
close_audio();
|
||||||
SDL_FreeWAV(wave.sound);
|
SDL_FreeWAV(wave.sound);
|
||||||
|
SDL_free(filename);
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
SDL_AudioSpec spec;
|
SDL_AudioSpec spec;
|
||||||
|
@ -74,7 +76,7 @@ loop()
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char filename[4096];
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
@ -85,11 +87,13 @@ main(int argc, char *argv[])
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 1) {
|
filename = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
||||||
SDL_strlcpy(filename, argv[1], sizeof(filename));
|
|
||||||
} else {
|
if (filename == NULL) {
|
||||||
SDL_strlcpy(filename, "sample.wav", sizeof(filename));
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError());
|
||||||
|
quit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the wave file into memory */
|
/* Load the wave file into memory */
|
||||||
if (SDL_LoadWAV(filename, &wave.spec, &wave.sound, &wave.soundlen) == NULL) {
|
if (SDL_LoadWAV(filename, &wave.spec, &wave.sound, &wave.soundlen) == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
||||||
|
@ -142,6 +146,7 @@ main(int argc, char *argv[])
|
||||||
/* Clean up on signal */
|
/* Clean up on signal */
|
||||||
SDL_CloseAudio();
|
SDL_CloseAudio();
|
||||||
SDL_FreeWAV(wave.sound);
|
SDL_FreeWAV(wave.sound);
|
||||||
|
SDL_free(filename);
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDL_AudioSpec spec;
|
static SDL_AudioSpec spec;
|
||||||
static Uint8 *sound = NULL; /* Pointer to wave data */
|
static Uint8 *sound = NULL; /* Pointer to wave data */
|
||||||
|
@ -137,7 +138,7 @@ int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char filename[4096];
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
@ -151,11 +152,13 @@ main(int argc, char *argv[])
|
||||||
/* Some targets (Mac CoreAudio) need an event queue for audio hotplug, so make and immediately hide a window. */
|
/* Some targets (Mac CoreAudio) need an event queue for audio hotplug, so make and immediately hide a window. */
|
||||||
SDL_MinimizeWindow(SDL_CreateWindow("testaudiohotplug", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0));
|
SDL_MinimizeWindow(SDL_CreateWindow("testaudiohotplug", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0));
|
||||||
|
|
||||||
if (argc > 1) {
|
filename = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
||||||
SDL_strlcpy(filename, argv[1], sizeof(filename));
|
|
||||||
} else {
|
if (filename == NULL) {
|
||||||
SDL_strlcpy(filename, "sample.wav", sizeof(filename));
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError());
|
||||||
|
quit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the wave file into memory */
|
/* Load the wave file into memory */
|
||||||
if (SDL_LoadWAV(filename, &spec, &sound, &soundlen) == NULL) {
|
if (SDL_LoadWAV(filename, &spec, &sound, &soundlen) == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", filename, SDL_GetError());
|
||||||
|
@ -196,6 +199,7 @@ main(int argc, char *argv[])
|
||||||
/* Quit audio first, then free WAV. This prevents access violations in the audio threads. */
|
/* Quit audio first, then free WAV. This prevents access violations in the audio threads. */
|
||||||
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
||||||
SDL_FreeWAV(sound);
|
SDL_FreeWAV(sound);
|
||||||
|
SDL_free(filename);
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#ifdef __EMSCRIPTEN__
|
#ifdef __EMSCRIPTEN__
|
||||||
#include <emscripten/emscripten.h>
|
#include <emscripten/emscripten.h>
|
||||||
|
@ -217,34 +218,6 @@ static void DelController(SDL_JoystickID controller)
|
||||||
UpdateWindowTitle();
|
UpdateWindowTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
static SDL_Texture *
|
|
||||||
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp = NULL;
|
|
||||||
SDL_Texture *texture = NULL;
|
|
||||||
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
} else {
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (transparent) {
|
|
||||||
if (temp->format->BytesPerPixel == 1) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *)temp->pixels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!texture) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (temp) {
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
}
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Uint16 ConvertAxisToRumble(Sint16 axisval)
|
static Uint16 ConvertAxisToRumble(Sint16 axisval)
|
||||||
{
|
{
|
||||||
/* Only start rumbling if the axis is past the halfway point */
|
/* Only start rumbling if the axis is past the halfway point */
|
||||||
|
@ -638,10 +611,10 @@ main(int argc, char *argv[])
|
||||||
/* scale for platforms that don't give you the window size you asked for. */
|
/* scale for platforms that don't give you the window size you asked for. */
|
||||||
SDL_RenderSetLogicalSize(screen, SCREEN_WIDTH, SCREEN_HEIGHT);
|
SDL_RenderSetLogicalSize(screen, SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||||
|
|
||||||
background_front = LoadTexture(screen, "controllermap.bmp", SDL_FALSE);
|
background_front = LoadTexture(screen, "controllermap.bmp", SDL_FALSE, NULL, NULL);
|
||||||
background_back = LoadTexture(screen, "controllermap_back.bmp", SDL_FALSE);
|
background_back = LoadTexture(screen, "controllermap_back.bmp", SDL_FALSE, NULL, NULL);
|
||||||
button = LoadTexture(screen, "button.bmp", SDL_TRUE);
|
button = LoadTexture(screen, "button.bmp", SDL_TRUE, NULL, NULL);
|
||||||
axis = LoadTexture(screen, "axis.bmp", SDL_TRUE);
|
axis = LoadTexture(screen, "axis.bmp", SDL_TRUE, NULL, NULL);
|
||||||
|
|
||||||
if (!background_front || !background_back || !button || !axis) {
|
if (!background_front || !background_back || !button || !axis) {
|
||||||
SDL_DestroyRenderer(screen);
|
SDL_DestroyRenderer(screen);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDLTest_CommonState *state;
|
static SDLTest_CommonState *state;
|
||||||
static SDL_bool use_texture = SDL_FALSE;
|
static SDL_bool use_texture = SDL_FALSE;
|
||||||
|
@ -44,54 +45,19 @@ int
|
||||||
LoadSprite(const char *file)
|
LoadSprite(const char *file)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
SDL_Surface *temp;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
sprite_w = temp->w;
|
|
||||||
sprite_h = temp->h;
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, 1, (*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, 1, (*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
for (i = 0; i < state->num_windows; ++i) {
|
for (i = 0; i < state->num_windows; ++i) {
|
||||||
SDL_Renderer *renderer = state->renderers[i];
|
/* This does the SDL_LoadBMP step repeatedly, but that's OK for test code. */
|
||||||
sprites[i] = SDL_CreateTextureFromSurface(renderer, temp);
|
sprites[i] = LoadTexture(state->renderers[i], file, SDL_TRUE, &sprite_w, &sprite_h);
|
||||||
if (!sprites[i]) {
|
if (!sprites[i]) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
SDL_DestroyTexture(sprites[i]);
|
SDL_DestroyTexture(sprites[i]);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
/* We're ready to roll. :) */
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
@ -458,6 +458,7 @@ main(int argc, char *argv[])
|
||||||
Uint32 then, now;
|
Uint32 then, now;
|
||||||
int status;
|
int status;
|
||||||
shader_data *data;
|
shader_data *data;
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
/* Initialize parameters */
|
/* Initialize parameters */
|
||||||
fsaa = 0;
|
fsaa = 0;
|
||||||
|
@ -561,14 +562,25 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
/* Load SDF BMP image */
|
/* Load SDF BMP image */
|
||||||
#if 1
|
#if 1
|
||||||
tmp = SDL_LoadBMP(f);
|
path = GetNearbyFilename(f);
|
||||||
if (tmp == NULL) {
|
|
||||||
SDL_Log("missing image file: %s", f);
|
if (path == NULL)
|
||||||
|
path = SDL_strdup(f);
|
||||||
|
|
||||||
|
if (path == NULL) {
|
||||||
|
SDL_Log("out of memory\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
} else {
|
|
||||||
SDL_Log("Load image file: %s", f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmp = SDL_LoadBMP(path);
|
||||||
|
if (tmp == NULL) {
|
||||||
|
SDL_Log("missing image file: %s", path);
|
||||||
|
exit(-1);
|
||||||
|
} else {
|
||||||
|
SDL_Log("Load image file: %s", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_free(path);
|
||||||
#else
|
#else
|
||||||
/* Generate SDF image using SDL_ttf */
|
/* Generate SDF image using SDL_ttf */
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
widelen(char *data)
|
widelen(char *data)
|
||||||
|
@ -43,7 +44,7 @@ main(int argc, char *argv[])
|
||||||
"UCS-4",
|
"UCS-4",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char * fname;
|
char * fname;
|
||||||
char buffer[BUFSIZ];
|
char buffer[BUFSIZ];
|
||||||
char *ucs4;
|
char *ucs4;
|
||||||
char *test[2];
|
char *test[2];
|
||||||
|
@ -54,12 +55,13 @@ main(int argc, char *argv[])
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
|
||||||
fname = (argc < 2) ? "utf8.txt" : argv[1];
|
fname = GetResourceFilename(argc > 1 ? argv[1] : NULL, "utf8.txt");
|
||||||
file = fopen(fname, "rb");
|
file = fopen(fname, "rb");
|
||||||
if (!file) {
|
if (!file) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to open %s\n", fname);
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to open %s\n", fname);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
SDL_free(fname);
|
||||||
|
|
||||||
while (fgets(buffer, sizeof(buffer), file)) {
|
while (fgets(buffer, sizeof(buffer), file)) {
|
||||||
/* Convert to UCS-4 */
|
/* Convert to UCS-4 */
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define DEFAULT_PTSIZE 30
|
#define DEFAULT_PTSIZE 30
|
||||||
#ifdef HAVE_SDL_TTF
|
#ifdef HAVE_SDL_TTF
|
||||||
|
@ -108,6 +109,7 @@ static int unifont_init(const char *fontname)
|
||||||
SDL_RWops *hexFile;
|
SDL_RWops *hexFile;
|
||||||
const size_t unifontGlyphSize = UNIFONT_NUM_GLYPHS * sizeof(struct UnifontGlyph);
|
const size_t unifontGlyphSize = UNIFONT_NUM_GLYPHS * sizeof(struct UnifontGlyph);
|
||||||
const size_t unifontTextureSize = UNIFONT_NUM_TEXTURES * state->num_windows * sizeof(void *);
|
const size_t unifontTextureSize = UNIFONT_NUM_TEXTURES * state->num_windows * sizeof(void *);
|
||||||
|
char *filename;
|
||||||
|
|
||||||
/* Allocate memory for the glyph data so the file can be closed after initialization. */
|
/* Allocate memory for the glyph data so the file can be closed after initialization. */
|
||||||
unifontGlyph = (struct UnifontGlyph *)SDL_malloc(unifontGlyphSize);
|
unifontGlyph = (struct UnifontGlyph *)SDL_malloc(unifontGlyphSize);
|
||||||
|
@ -127,7 +129,13 @@ static int unifont_init(const char *fontname)
|
||||||
}
|
}
|
||||||
SDL_memset(unifontTexture, 0, unifontTextureSize);
|
SDL_memset(unifontTexture, 0, unifontTextureSize);
|
||||||
|
|
||||||
hexFile = SDL_RWFromFile(fontname, "rb");
|
filename = GetResourceFilename(NULL, fontname);
|
||||||
|
if (filename == NULL) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
hexFile = SDL_RWFromFile(filename, "rb");
|
||||||
|
SDL_free(filename);
|
||||||
if (hexFile == NULL)
|
if (hexFile == NULL)
|
||||||
{
|
{
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Failed to open font file: %s\n", fontname);
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "unifont: Failed to open font file: %s\n", fontname);
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
#include <emscripten/emscripten.h>
|
#include <emscripten/emscripten.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDL_AudioSpec spec;
|
static SDL_AudioSpec spec;
|
||||||
static Uint8 *sound = NULL; /* Pointer to wave data */
|
static Uint8 *sound = NULL; /* Pointer to wave data */
|
||||||
static Uint32 soundlen = 0; /* Length of wave data */
|
static Uint32 soundlen = 0; /* Length of wave data */
|
||||||
|
@ -180,7 +182,7 @@ main(int argc, char **argv)
|
||||||
if (devcount < 1) {
|
if (devcount < 1) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Don't see any specific audio devices!\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Don't see any specific audio devices!\n");
|
||||||
} else {
|
} else {
|
||||||
const char *file = (argc < 2) ? "sample.wav" : argv[1];
|
char *file = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav");
|
||||||
|
|
||||||
/* Load the wave file into memory */
|
/* Load the wave file into memory */
|
||||||
if (SDL_LoadWAV(file, &spec, &sound, &soundlen) == NULL) {
|
if (SDL_LoadWAV(file, &spec, &sound, &soundlen) == NULL) {
|
||||||
|
@ -190,6 +192,8 @@ main(int argc, char **argv)
|
||||||
test_multi_audio(devcount);
|
test_multi_audio(devcount);
|
||||||
SDL_FreeWAV(sound);
|
SDL_FreeWAV(sound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_free(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <time.h> /* for time() */
|
#include <time.h> /* for time() */
|
||||||
|
|
||||||
#include "testnative.h"
|
#include "testnative.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define WINDOW_W 640
|
#define WINDOW_W 640
|
||||||
#define WINDOW_H 480
|
#define WINDOW_H 480
|
||||||
|
@ -52,37 +53,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Texture *
|
|
||||||
LoadSprite(SDL_Renderer *renderer, const char *file)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
SDL_Texture *sprite;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint8 *) temp->pixels);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
sprite = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!sprite) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return sprite;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MoveSprites(SDL_Renderer * renderer, SDL_Texture * sprite)
|
MoveSprites(SDL_Renderer * renderer, SDL_Texture * sprite)
|
||||||
{
|
{
|
||||||
|
@ -180,7 +150,7 @@ main(int argc, char *argv[])
|
||||||
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
|
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
sprite = LoadSprite(renderer, "icon.bmp");
|
sprite = LoadTexture(renderer, "icon.bmp", SDL_TRUE, NULL, NULL);
|
||||||
if (!sprite) {
|
if (!sprite) {
|
||||||
quit(6);
|
quit(6);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
|
||||||
#include "testyuv_cvt.h"
|
#include "testyuv_cvt.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define MOOSEPIC_W 64
|
#define MOOSEPIC_W 64
|
||||||
#define MOOSEPIC_H 88
|
#define MOOSEPIC_H 88
|
||||||
|
@ -243,6 +244,7 @@ main(int argc, char **argv)
|
||||||
int fps = 12;
|
int fps = 12;
|
||||||
int nodelay = 0;
|
int nodelay = 0;
|
||||||
int scale = 5;
|
int scale = 5;
|
||||||
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
@ -315,7 +317,13 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load the trojan moose images */
|
/* load the trojan moose images */
|
||||||
handle = SDL_RWFromFile("moose.dat", "rb");
|
filename = GetResourceFilename(NULL, "moose.dat");
|
||||||
|
if (filename == NULL) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
handle = SDL_RWFromFile(filename, "rb");
|
||||||
|
SDL_free(filename);
|
||||||
if (handle == NULL) {
|
if (handle == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
||||||
SDL_free(RawMooseData);
|
SDL_free(RawMooseData);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDLTest_CommonState *state;
|
static SDLTest_CommonState *state;
|
||||||
|
|
||||||
|
@ -44,56 +44,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Texture *
|
|
||||||
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
SDL_Texture *texture;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (transparent) {
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!texture) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Draw(DrawState *s)
|
Draw(DrawState *s)
|
||||||
{
|
{
|
||||||
|
@ -186,8 +136,8 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
drawstate->window = state->windows[i];
|
drawstate->window = state->windows[i];
|
||||||
drawstate->renderer = state->renderers[i];
|
drawstate->renderer = state->renderers[i];
|
||||||
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE);
|
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE, NULL, NULL);
|
||||||
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE);
|
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE, NULL, NULL);
|
||||||
if (!drawstate->sprite || !drawstate->background) {
|
if (!drawstate->sprite || !drawstate->background) {
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDLTest_CommonState *state;
|
static SDLTest_CommonState *state;
|
||||||
|
|
||||||
|
@ -45,56 +45,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Texture *
|
|
||||||
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
SDL_Texture *texture;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (transparent) {
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!texture) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_bool
|
SDL_bool
|
||||||
DrawComposite(DrawState *s)
|
DrawComposite(DrawState *s)
|
||||||
{
|
{
|
||||||
|
@ -292,11 +242,11 @@ main(int argc, char *argv[])
|
||||||
drawstate->window = state->windows[i];
|
drawstate->window = state->windows[i];
|
||||||
drawstate->renderer = state->renderers[i];
|
drawstate->renderer = state->renderers[i];
|
||||||
if (test_composite) {
|
if (test_composite) {
|
||||||
drawstate->sprite = LoadTexture(drawstate->renderer, "icon-alpha.bmp", SDL_TRUE);
|
drawstate->sprite = LoadTexture(drawstate->renderer, "icon-alpha.bmp", SDL_TRUE, NULL, NULL);
|
||||||
} else {
|
} else {
|
||||||
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE);
|
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE, NULL, NULL);
|
||||||
}
|
}
|
||||||
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE);
|
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE, NULL, NULL);
|
||||||
if (!drawstate->sprite || !drawstate->background) {
|
if (!drawstate->sprite || !drawstate->background) {
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define WINDOW_WIDTH 640
|
#define WINDOW_WIDTH 640
|
||||||
#define WINDOW_HEIGHT 480
|
#define WINDOW_HEIGHT 480
|
||||||
|
@ -46,56 +47,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Texture *
|
|
||||||
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
SDL_Texture *texture;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (transparent) {
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!texture) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Draw(DrawState *s)
|
Draw(DrawState *s)
|
||||||
{
|
{
|
||||||
|
@ -176,8 +127,8 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
drawstate->window = state->windows[i];
|
drawstate->window = state->windows[i];
|
||||||
drawstate->renderer = state->renderers[i];
|
drawstate->renderer = state->renderers[i];
|
||||||
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE);
|
drawstate->sprite = LoadTexture(drawstate->renderer, "icon.bmp", SDL_TRUE, NULL, NULL);
|
||||||
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE);
|
drawstate->background = LoadTexture(drawstate->renderer, "sample.bmp", SDL_FALSE, NULL, NULL);
|
||||||
if (!drawstate->sprite || !drawstate->background) {
|
if (!drawstate->sprite || !drawstate->background) {
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "SDL_test.h"
|
#include "SDL_test.h"
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define NUM_SPRITES 100
|
#define NUM_SPRITES 100
|
||||||
#define MAX_SPEED 1
|
#define MAX_SPEED 1
|
||||||
|
@ -62,54 +63,19 @@ int
|
||||||
LoadSprite(const char *file)
|
LoadSprite(const char *file)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
SDL_Surface *temp;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
sprite_w = temp->w;
|
|
||||||
sprite_h = temp->h;
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, 1, (*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, 1, (*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, 1, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
for (i = 0; i < state->num_windows; ++i) {
|
for (i = 0; i < state->num_windows; ++i) {
|
||||||
SDL_Renderer *renderer = state->renderers[i];
|
/* This does the SDL_LoadBMP step repeatedly, but that's OK for test code. */
|
||||||
sprites[i] = SDL_CreateTextureFromSurface(renderer, temp);
|
sprites[i] = LoadTexture(state->renderers[i], file, SDL_TRUE, &sprite_w, &sprite_h);
|
||||||
if (!sprites[i]) {
|
if (!sprites[i]) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError());
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
SDL_DestroyTexture(sprites[i]);
|
SDL_DestroyTexture(sprites[i]);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
/* We're ready to roll. :) */
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define WINDOW_WIDTH 640
|
#define WINDOW_WIDTH 640
|
||||||
#define WINDOW_HEIGHT 480
|
#define WINDOW_HEIGHT 480
|
||||||
|
@ -42,55 +43,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
LoadSprite(const char *file)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", file, SDL_GetError());
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
sprite_w = temp->w;
|
|
||||||
sprite_h = temp->h;
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
sprite = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!sprite) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MoveSprites()
|
MoveSprites()
|
||||||
{
|
{
|
||||||
|
@ -158,7 +110,9 @@ main(int argc, char *argv[])
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LoadSprite("icon.bmp") < 0) {
|
sprite = LoadTexture(renderer, "icon.bmp", SDL_TRUE, &sprite_w, &sprite_h);
|
||||||
|
|
||||||
|
if (sprite == NULL) {
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
#define MOOSEPIC_W 64
|
#define MOOSEPIC_W 64
|
||||||
#define MOOSEPIC_H 88
|
#define MOOSEPIC_H 88
|
||||||
|
@ -128,6 +129,7 @@ main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
SDL_Window *window;
|
SDL_Window *window;
|
||||||
SDL_RWops *handle;
|
SDL_RWops *handle;
|
||||||
|
char *filename = NULL;
|
||||||
|
|
||||||
/* Enable standard application logging */
|
/* Enable standard application logging */
|
||||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||||
|
@ -138,7 +140,13 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load the moose images */
|
/* load the moose images */
|
||||||
handle = SDL_RWFromFile("moose.dat", "rb");
|
filename = GetResourceFilename(NULL, "moose.dat");
|
||||||
|
if (filename == NULL) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
handle = SDL_RWFromFile(filename, "rb");
|
||||||
|
SDL_free(filename);
|
||||||
if (handle == NULL) {
|
if (handle == NULL) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Can't find the file moose.dat !\n");
|
||||||
quit(2);
|
quit(2);
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
/*
|
||||||
|
Copyright 1997-2022 Sam Lantinga
|
||||||
|
Copyright 2022 Collabora Ltd.
|
||||||
|
SPDX-License-Identifier: Zlib
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
|
#if defined(SDL_FILESYSTEM_OS2) || defined(SDL_FILESYSTEM_WINDOWS)
|
||||||
|
static const char pathsep[] = "\\";
|
||||||
|
#elif defined(SDL_FILESYSTEM_RISCOS)
|
||||||
|
static const char pathsep[] = ".";
|
||||||
|
#else
|
||||||
|
static const char pathsep[] = "/";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the absolute path to def in the SDL_GetBasePath() if possible, or
|
||||||
|
* the relative path to def on platforms that don't have a working
|
||||||
|
* SDL_GetBasePath(). Free the result with SDL_free.
|
||||||
|
*
|
||||||
|
* Fails and returns NULL if out of memory.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
GetNearbyFilename(const char *file)
|
||||||
|
{
|
||||||
|
char *base;
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
base = SDL_GetBasePath();
|
||||||
|
|
||||||
|
if (base != NULL) {
|
||||||
|
size_t len = SDL_strlen(base) + SDL_strlen(pathsep) + SDL_strlen(file) + 1;
|
||||||
|
|
||||||
|
path = SDL_malloc(len);
|
||||||
|
|
||||||
|
if (path == NULL) {
|
||||||
|
SDL_OutOfMemory();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_snprintf(path, len, "%s%s%s", base, pathsep, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (base) {
|
||||||
|
SDL_free(base);
|
||||||
|
}
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If user_specified is non-NULL, return a copy of it. Free with SDL_free.
|
||||||
|
*
|
||||||
|
* Otherwise, return the absolute path to def in the SDL_GetBasePath() if
|
||||||
|
* possible, or the relative path to def on platforms that don't have a
|
||||||
|
* working SDL_GetBasePath(). Free the result with SDL_free.
|
||||||
|
*
|
||||||
|
* Fails and returns NULL if out of memory.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
GetResourceFilename(const char *user_specified, const char *def)
|
||||||
|
{
|
||||||
|
if (user_specified != NULL) {
|
||||||
|
char *ret = SDL_strdup(user_specified);
|
||||||
|
|
||||||
|
if (ret == NULL) {
|
||||||
|
SDL_OutOfMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
return GetNearbyFilename(def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Load the .bmp file whose name is file, from the SDL_GetBasePath() if
|
||||||
|
* possible or the current working directory if not.
|
||||||
|
*
|
||||||
|
* If transparent is true, set the transparent colour from the top left pixel.
|
||||||
|
*
|
||||||
|
* If width_out is non-NULL, set it to the texture width.
|
||||||
|
*
|
||||||
|
* If height_out is non-NULL, set it to the texture height.
|
||||||
|
*/
|
||||||
|
SDL_Texture *
|
||||||
|
LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent,
|
||||||
|
int *width_out, int *height_out)
|
||||||
|
{
|
||||||
|
SDL_Surface *temp = NULL;
|
||||||
|
SDL_Texture *texture = NULL;
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
path = GetNearbyFilename(file);
|
||||||
|
|
||||||
|
if (path != NULL) {
|
||||||
|
file = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = SDL_LoadBMP(file);
|
||||||
|
if (temp == NULL) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError());
|
||||||
|
} else {
|
||||||
|
/* Set transparent pixel as the pixel at (0,0) */
|
||||||
|
if (transparent) {
|
||||||
|
if (temp->format->palette) {
|
||||||
|
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *)temp->pixels);
|
||||||
|
} else {
|
||||||
|
switch (temp->format->BitsPerPixel) {
|
||||||
|
case 15:
|
||||||
|
SDL_SetColorKey(temp, SDL_TRUE,
|
||||||
|
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
SDL_SetColorKey(temp, SDL_TRUE,
|
||||||
|
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (width_out != NULL) {
|
||||||
|
*width_out = temp->w;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (height_out != NULL) {
|
||||||
|
*height_out = temp->h;
|
||||||
|
}
|
||||||
|
|
||||||
|
texture = SDL_CreateTextureFromSurface(renderer, temp);
|
||||||
|
if (!texture) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (temp) {
|
||||||
|
SDL_FreeSurface(temp);
|
||||||
|
}
|
||||||
|
if (path) {
|
||||||
|
SDL_free(path);
|
||||||
|
}
|
||||||
|
return texture;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
Copyright 1997-2022 Sam Lantinga
|
||||||
|
Copyright 2022 Collabora Ltd.
|
||||||
|
SPDX-License-Identifier: Zlib
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TESTUTILS_H
|
||||||
|
#define TESTUTILS_H
|
||||||
|
|
||||||
|
#include "SDL.h"
|
||||||
|
|
||||||
|
SDL_Texture *LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent,
|
||||||
|
int *width_out, int *height_out);
|
||||||
|
char *GetNearbyFilename(const char *file);
|
||||||
|
char *GetResourceFilename(const char *user_specified, const char *def);
|
||||||
|
|
||||||
|
#endif
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
#include "SDL_test.h"
|
#include "SDL_test.h"
|
||||||
#include "SDL_test_common.h"
|
#include "SDL_test_common.h"
|
||||||
|
#include "testutils.h"
|
||||||
|
|
||||||
static SDLTest_CommonState *state;
|
static SDLTest_CommonState *state;
|
||||||
|
|
||||||
|
@ -42,55 +42,6 @@ quit(int rc)
|
||||||
exit(rc);
|
exit(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
LoadSprite(const char *file, SDL_Renderer *renderer)
|
|
||||||
{
|
|
||||||
SDL_Surface *temp;
|
|
||||||
|
|
||||||
/* Load the sprite image */
|
|
||||||
temp = SDL_LoadBMP(file);
|
|
||||||
if (temp == NULL) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", file, SDL_GetError());
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
sprite_w = temp->w;
|
|
||||||
sprite_h = temp->h;
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (temp->format->palette) {
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels);
|
|
||||||
} else {
|
|
||||||
switch (temp->format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint16 *) temp->pixels) & 0x00007FFF);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE,
|
|
||||||
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create textures from the image */
|
|
||||||
sprite = SDL_CreateTextureFromSurface(renderer, temp);
|
|
||||||
if (!sprite) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError());
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
SDL_FreeSurface(temp);
|
|
||||||
|
|
||||||
/* We're ready to roll. :) */
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
DrawOnViewport(SDL_Renderer * renderer)
|
DrawOnViewport(SDL_Renderer * renderer)
|
||||||
{
|
{
|
||||||
|
@ -229,7 +180,9 @@ main(int argc, char *argv[])
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LoadSprite("icon.bmp", state->renderers[0]) < 0) {
|
sprite = LoadTexture(state->renderers[0], "icon.bmp", SDL_TRUE, &sprite_w, &sprite_h);
|
||||||
|
|
||||||
|
if (sprite == NULL) {
|
||||||
quit(2);
|
quit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue