diff --git a/internal/c/parts/video/image/sg_curico/sg_curico.cpp b/internal/c/parts/video/image/sg_curico/sg_curico.cpp index 0b6e1908c..82c2481e5 100644 --- a/internal/c/parts/video/image/sg_curico/sg_curico.cpp +++ b/internal/c/parts/video/image/sg_curico/sg_curico.cpp @@ -91,7 +91,7 @@ class CurIcoImage { Header(Stream &stream) { ReadFromStream(stream); } - bool IsValid() { return reserved == 0 && (type == Type::Icon || type == Type::Cursor) && count > 0; } + auto IsValid() { return reserved == 0 && (type == Type::Icon || type == Type::Cursor) && count > 0; } static auto GetStructSize() noexcept { return 6; } // sizeof(Header) @@ -285,7 +285,7 @@ class CurIcoImage { /// @param fileName The name of the icon file /// @param payloadData A pointer to the PNG payload /// @param payloadSize The size of the PNG payload in bytes - static bool WriteToFile(const char *fileName, const uint8_t *payloadData, uint32_t payloadSize) { + static auto WriteToFile(const char *fileName, const uint8_t *payloadData, uint32_t payloadSize) { if (fileName && fileName[0] && payloadData && payloadSize) { auto file = fopen(fileName, "wb"); @@ -601,9 +601,9 @@ class CurIcoImage { auto src = input.GetData(); auto dst = *out_data; - auto pixels = width * height; + size_t pixels = width * height; - for (auto i = 0; i < pixels; i++) { + for (size_t i = 0; i < pixels; i++) { auto r = *src; ++src; auto g = *src; diff --git a/tests/compile_tests/image/curico_test.bas b/tests/compile_tests/image/curico_test.bas new file mode 100644 index 000000000..5ef272947 --- /dev/null +++ b/tests/compile_tests/image/curico_test.bas @@ -0,0 +1,79 @@ +DEFLNG A-Z +OPTION _EXPLICIT +$CONSOLE:ONLY +CHDIR _STARTDIR$ + +CONST ICON_DIR = "./icons/" +CONST TEST_FILE_FORMAT = "bmp" +CONST TOLERANCE_LIMIT = 0 + +RESTORE file_list + +DIM fileName AS STRING: READ fileName + +DO + DoImageFile ICON_DIR + fileName + READ fileName +LOOP WHILE LEN(fileName) + +SYSTEM + +file_list: +DATA 1bpp.ico +DATA 24bpp.ico +DATA 4bpp.cur +DATA 4bpp.ico +DATA 8bpp.ico +DATA 8bpp.cur +DATA bard.ico +DATA broom.ico +DATA cat.ico +DATA computer.ico +DATA dumb1.ico +DATA dumb2.ico +DATA pencil.ico +DATA please_wait.ico +DATA question.ico +DATA really_huge_duck.ico +DATA sample3.ico +DATA sample4.ico +DATA soft_drink.ico +DATA taco.ico +DATA terra_globe.ico +DATA thumbs_up.ico +DATA volme_dialog.ico +DATA word-icon.ico +DATA x.ico +DATA "" + +SUB PrintImageDetails (handle AS LONG, testFileName AS STRING) + DIM fullTestFileName AS STRING: fullTestFileName = testFileName + "." + TEST_FILE_FORMAT + + PRINT "Testing against "; fullTestFileName; " ("; _WIDTH(handle); "x"; _HEIGHT(handle); ")." + '_SAVEIMAGE fullTestFileName, handle + AssertImage2 handle, fullTestFileName, TOLERANCE_LIMIT + + PRINT +END SUB + + +SUB DoImageFile (testFileName AS STRING) + DIM fileName AS STRING: fileName = testFileName + + PRINT "Loading image from storage "; fileName; " ... "; + + DIM h AS LONG: h = _LOADIMAGE(fileName, 32) + + IF h < -1 THEN + PRINT "done." + + PrintImageDetails h, testFileName + + _FREEIMAGE h + ELSE + PRINT "failed!" + END IF +END SUB + +'$INCLUDE:'../utilities/imageassert.bm' +'$INCLUDE:'../utilities/base64.bm' diff --git a/tests/compile_tests/image/curico_test.output b/tests/compile_tests/image/curico_test.output new file mode 100644 index 000000000..eb5c9618f --- /dev/null +++ b/tests/compile_tests/image/curico_test.output @@ -0,0 +1,100 @@ +Loading image from storage ./icons/1bpp.ico ... done. +Testing against ./icons/1bpp.ico.bmp ( 128 x 128 ). +Success, images are identical! + +Loading image from storage ./icons/24bpp.ico ... done. +Testing against ./icons/24bpp.ico.bmp ( 128 x 128 ). +Success, images are identical! + +Loading image from storage ./icons/4bpp.cur ... done. +Testing against ./icons/4bpp.cur.bmp ( 16 x 16 ). +Success, images are identical! + +Loading image from storage ./icons/4bpp.ico ... done. +Testing against ./icons/4bpp.ico.bmp ( 128 x 128 ). +Success, images are identical! + +Loading image from storage ./icons/8bpp.ico ... done. +Testing against ./icons/8bpp.ico.bmp ( 128 x 128 ). +Success, images are identical! + +Loading image from storage ./icons/8bpp.cur ... done. +Testing against ./icons/8bpp.cur.bmp ( 32 x 32 ). +Success, images are identical! + +Loading image from storage ./icons/bard.ico ... done. +Testing against ./icons/bard.ico.bmp ( 1360 x 1083 ). +Success, images are identical! + +Loading image from storage ./icons/broom.ico ... done. +Testing against ./icons/broom.ico.bmp ( 600 x 600 ). +Success, images are identical! + +Loading image from storage ./icons/cat.ico ... done. +Testing against ./icons/cat.ico.bmp ( 150 x 150 ). +Success, images are identical! + +Loading image from storage ./icons/computer.ico ... done. +Testing against ./icons/computer.ico.bmp ( 474 x 474 ). +Success, images are identical! + +Loading image from storage ./icons/dumb1.ico ... done. +Testing against ./icons/dumb1.ico.bmp ( 540 x 500 ). +Success, images are identical! + +Loading image from storage ./icons/dumb2.ico ... done. +Testing against ./icons/dumb2.ico.bmp ( 540 x 500 ). +Success, images are identical! + +Loading image from storage ./icons/pencil.ico ... done. +Testing against ./icons/pencil.ico.bmp ( 256 x 256 ). +Success, images are identical! + +Loading image from storage ./icons/please_wait.ico ... done. +Testing against ./icons/please_wait.ico.bmp ( 404 x 325 ). +Success, images are identical! + +Loading image from storage ./icons/question.ico ... done. +Testing against ./icons/question.ico.bmp ( 512 x 512 ). +Success, images are identical! + +Loading image from storage ./icons/really_huge_duck.ico ... done. +Testing against ./icons/really_huge_duck.ico.bmp ( 4293 x 4293 ). +Success, images are identical! + +Loading image from storage ./icons/sample3.ico ... done. +Testing against ./icons/sample3.ico.bmp ( 256 x 171 ). +Success, images are identical! + +Loading image from storage ./icons/sample4.ico ... done. +Testing against ./icons/sample4.ico.bmp ( 256 x 192 ). +Success, images are identical! + +Loading image from storage ./icons/soft_drink.ico ... done. +Testing against ./icons/soft_drink.ico.bmp ( 256 x 256 ). +Success, images are identical! + +Loading image from storage ./icons/taco.ico ... done. +Testing against ./icons/taco.ico.bmp ( 966 x 764 ). +Success, images are identical! + +Loading image from storage ./icons/terra_globe.ico ... done. +Testing against ./icons/terra_globe.ico.bmp ( 772 x 769 ). +Success, images are identical! + +Loading image from storage ./icons/thumbs_up.ico ... done. +Testing against ./icons/thumbs_up.ico.bmp ( 463 x 294 ). +Success, images are identical! + +Loading image from storage ./icons/volme_dialog.ico ... done. +Testing against ./icons/volme_dialog.ico.bmp ( 32 x 32 ). +Success, images are identical! + +Loading image from storage ./icons/word-icon.ico ... done. +Testing against ./icons/word-icon.ico.bmp ( 512 x 512 ). +Success, images are identical! + +Loading image from storage ./icons/x.ico ... done. +Testing against ./icons/x.ico.bmp ( 256 x 256 ). +Success, images are identical! + diff --git a/tests/compile_tests/image/icons/1bpp.ico b/tests/compile_tests/image/icons/1bpp.ico new file mode 100644 index 000000000..ab50a51b6 Binary files /dev/null and b/tests/compile_tests/image/icons/1bpp.ico differ diff --git a/tests/compile_tests/image/icons/1bpp.ico.bmp b/tests/compile_tests/image/icons/1bpp.ico.bmp new file mode 100644 index 000000000..15a8d3d93 Binary files /dev/null and b/tests/compile_tests/image/icons/1bpp.ico.bmp differ diff --git a/tests/compile_tests/image/icons/24bpp.ico b/tests/compile_tests/image/icons/24bpp.ico new file mode 100644 index 000000000..fa06b5374 Binary files /dev/null and b/tests/compile_tests/image/icons/24bpp.ico differ diff --git a/tests/compile_tests/image/icons/24bpp.ico.bmp b/tests/compile_tests/image/icons/24bpp.ico.bmp new file mode 100644 index 000000000..8ab7fdf91 Binary files /dev/null and b/tests/compile_tests/image/icons/24bpp.ico.bmp differ diff --git a/tests/compile_tests/image/icons/4bpp.cur b/tests/compile_tests/image/icons/4bpp.cur new file mode 100644 index 000000000..e96de1adb Binary files /dev/null and b/tests/compile_tests/image/icons/4bpp.cur differ diff --git a/tests/compile_tests/image/icons/4bpp.cur.bmp b/tests/compile_tests/image/icons/4bpp.cur.bmp new file mode 100644 index 000000000..3813201b0 Binary files /dev/null and b/tests/compile_tests/image/icons/4bpp.cur.bmp differ diff --git a/tests/compile_tests/image/icons/4bpp.ico b/tests/compile_tests/image/icons/4bpp.ico new file mode 100644 index 000000000..3cf23d31b Binary files /dev/null and b/tests/compile_tests/image/icons/4bpp.ico differ diff --git a/tests/compile_tests/image/icons/4bpp.ico.bmp b/tests/compile_tests/image/icons/4bpp.ico.bmp new file mode 100644 index 000000000..de04ace08 Binary files /dev/null and b/tests/compile_tests/image/icons/4bpp.ico.bmp differ diff --git a/tests/compile_tests/image/icons/8bpp.cur b/tests/compile_tests/image/icons/8bpp.cur new file mode 100644 index 000000000..8295abc75 Binary files /dev/null and b/tests/compile_tests/image/icons/8bpp.cur differ diff --git a/tests/compile_tests/image/icons/8bpp.cur.bmp b/tests/compile_tests/image/icons/8bpp.cur.bmp new file mode 100644 index 000000000..7c7e858c2 Binary files /dev/null and b/tests/compile_tests/image/icons/8bpp.cur.bmp differ diff --git a/tests/compile_tests/image/icons/8bpp.ico b/tests/compile_tests/image/icons/8bpp.ico new file mode 100644 index 000000000..c9c17bdf4 Binary files /dev/null and b/tests/compile_tests/image/icons/8bpp.ico differ diff --git a/tests/compile_tests/image/icons/8bpp.ico.bmp b/tests/compile_tests/image/icons/8bpp.ico.bmp new file mode 100644 index 000000000..69c5cd8e8 Binary files /dev/null and b/tests/compile_tests/image/icons/8bpp.ico.bmp differ diff --git a/tests/compile_tests/image/icons/bard.ico b/tests/compile_tests/image/icons/bard.ico new file mode 100644 index 000000000..02b5d7fd6 Binary files /dev/null and b/tests/compile_tests/image/icons/bard.ico differ diff --git a/tests/compile_tests/image/icons/bard.ico.bmp b/tests/compile_tests/image/icons/bard.ico.bmp new file mode 100644 index 000000000..24a6f3863 Binary files /dev/null and b/tests/compile_tests/image/icons/bard.ico.bmp differ diff --git a/tests/compile_tests/image/icons/broom.ico b/tests/compile_tests/image/icons/broom.ico new file mode 100644 index 000000000..409832394 Binary files /dev/null and b/tests/compile_tests/image/icons/broom.ico differ diff --git a/tests/compile_tests/image/icons/broom.ico.bmp b/tests/compile_tests/image/icons/broom.ico.bmp new file mode 100644 index 000000000..427fd7abd Binary files /dev/null and b/tests/compile_tests/image/icons/broom.ico.bmp differ diff --git a/tests/compile_tests/image/icons/cat.ico b/tests/compile_tests/image/icons/cat.ico new file mode 100644 index 000000000..54134af6d Binary files /dev/null and b/tests/compile_tests/image/icons/cat.ico differ diff --git a/tests/compile_tests/image/icons/cat.ico.bmp b/tests/compile_tests/image/icons/cat.ico.bmp new file mode 100644 index 000000000..ceba54c71 Binary files /dev/null and b/tests/compile_tests/image/icons/cat.ico.bmp differ diff --git a/tests/compile_tests/image/icons/computer.ico b/tests/compile_tests/image/icons/computer.ico new file mode 100644 index 000000000..cfcca46ec Binary files /dev/null and b/tests/compile_tests/image/icons/computer.ico differ diff --git a/tests/compile_tests/image/icons/computer.ico.bmp b/tests/compile_tests/image/icons/computer.ico.bmp new file mode 100644 index 000000000..162429174 Binary files /dev/null and b/tests/compile_tests/image/icons/computer.ico.bmp differ diff --git a/tests/compile_tests/image/icons/dumb1.ico b/tests/compile_tests/image/icons/dumb1.ico new file mode 100644 index 000000000..236915e8e Binary files /dev/null and b/tests/compile_tests/image/icons/dumb1.ico differ diff --git a/tests/compile_tests/image/icons/dumb1.ico.bmp b/tests/compile_tests/image/icons/dumb1.ico.bmp new file mode 100644 index 000000000..d4be3f8b4 Binary files /dev/null and b/tests/compile_tests/image/icons/dumb1.ico.bmp differ diff --git a/tests/compile_tests/image/icons/dumb2.ico b/tests/compile_tests/image/icons/dumb2.ico new file mode 100644 index 000000000..7c6493520 Binary files /dev/null and b/tests/compile_tests/image/icons/dumb2.ico differ diff --git a/tests/compile_tests/image/icons/dumb2.ico.bmp b/tests/compile_tests/image/icons/dumb2.ico.bmp new file mode 100644 index 000000000..b67138f22 Binary files /dev/null and b/tests/compile_tests/image/icons/dumb2.ico.bmp differ diff --git a/tests/compile_tests/image/icons/pencil.ico b/tests/compile_tests/image/icons/pencil.ico new file mode 100644 index 000000000..9839f897d Binary files /dev/null and b/tests/compile_tests/image/icons/pencil.ico differ diff --git a/tests/compile_tests/image/icons/pencil.ico.bmp b/tests/compile_tests/image/icons/pencil.ico.bmp new file mode 100644 index 000000000..89aa60660 Binary files /dev/null and b/tests/compile_tests/image/icons/pencil.ico.bmp differ diff --git a/tests/compile_tests/image/icons/please_wait.ico b/tests/compile_tests/image/icons/please_wait.ico new file mode 100644 index 000000000..e925387eb Binary files /dev/null and b/tests/compile_tests/image/icons/please_wait.ico differ diff --git a/tests/compile_tests/image/icons/please_wait.ico.bmp b/tests/compile_tests/image/icons/please_wait.ico.bmp new file mode 100644 index 000000000..765722d87 Binary files /dev/null and b/tests/compile_tests/image/icons/please_wait.ico.bmp differ diff --git a/tests/compile_tests/image/icons/question.ico b/tests/compile_tests/image/icons/question.ico new file mode 100644 index 000000000..c561db8a5 Binary files /dev/null and b/tests/compile_tests/image/icons/question.ico differ diff --git a/tests/compile_tests/image/icons/question.ico.bmp b/tests/compile_tests/image/icons/question.ico.bmp new file mode 100644 index 000000000..9606267ca Binary files /dev/null and b/tests/compile_tests/image/icons/question.ico.bmp differ diff --git a/tests/compile_tests/image/icons/really_huge_duck.ico b/tests/compile_tests/image/icons/really_huge_duck.ico new file mode 100644 index 000000000..1318975c1 Binary files /dev/null and b/tests/compile_tests/image/icons/really_huge_duck.ico differ diff --git a/tests/compile_tests/image/icons/really_huge_duck.ico.bmp b/tests/compile_tests/image/icons/really_huge_duck.ico.bmp new file mode 100644 index 000000000..898335a2c Binary files /dev/null and b/tests/compile_tests/image/icons/really_huge_duck.ico.bmp differ diff --git a/tests/compile_tests/image/icons/sample3.ico b/tests/compile_tests/image/icons/sample3.ico new file mode 100644 index 000000000..0d00e6a2c Binary files /dev/null and b/tests/compile_tests/image/icons/sample3.ico differ diff --git a/tests/compile_tests/image/icons/sample3.ico.bmp b/tests/compile_tests/image/icons/sample3.ico.bmp new file mode 100644 index 000000000..8efe8352f Binary files /dev/null and b/tests/compile_tests/image/icons/sample3.ico.bmp differ diff --git a/tests/compile_tests/image/icons/sample4.ico b/tests/compile_tests/image/icons/sample4.ico new file mode 100644 index 000000000..90f39ee72 Binary files /dev/null and b/tests/compile_tests/image/icons/sample4.ico differ diff --git a/tests/compile_tests/image/icons/sample4.ico.bmp b/tests/compile_tests/image/icons/sample4.ico.bmp new file mode 100644 index 000000000..b110aa001 Binary files /dev/null and b/tests/compile_tests/image/icons/sample4.ico.bmp differ diff --git a/tests/compile_tests/image/icons/soft_drink.ico b/tests/compile_tests/image/icons/soft_drink.ico new file mode 100644 index 000000000..465b474b8 Binary files /dev/null and b/tests/compile_tests/image/icons/soft_drink.ico differ diff --git a/tests/compile_tests/image/icons/soft_drink.ico.bmp b/tests/compile_tests/image/icons/soft_drink.ico.bmp new file mode 100644 index 000000000..7ab2441ea Binary files /dev/null and b/tests/compile_tests/image/icons/soft_drink.ico.bmp differ diff --git a/tests/compile_tests/image/icons/taco.ico b/tests/compile_tests/image/icons/taco.ico new file mode 100644 index 000000000..459633d5d Binary files /dev/null and b/tests/compile_tests/image/icons/taco.ico differ diff --git a/tests/compile_tests/image/icons/taco.ico.bmp b/tests/compile_tests/image/icons/taco.ico.bmp new file mode 100644 index 000000000..43e7ad02e Binary files /dev/null and b/tests/compile_tests/image/icons/taco.ico.bmp differ diff --git a/tests/compile_tests/image/icons/terra_globe.ico b/tests/compile_tests/image/icons/terra_globe.ico new file mode 100644 index 000000000..b4cb80fd2 Binary files /dev/null and b/tests/compile_tests/image/icons/terra_globe.ico differ diff --git a/tests/compile_tests/image/icons/terra_globe.ico.bmp b/tests/compile_tests/image/icons/terra_globe.ico.bmp new file mode 100644 index 000000000..c3dbba98a Binary files /dev/null and b/tests/compile_tests/image/icons/terra_globe.ico.bmp differ diff --git a/tests/compile_tests/image/icons/thumbs_up.ico b/tests/compile_tests/image/icons/thumbs_up.ico new file mode 100644 index 000000000..48c440b41 Binary files /dev/null and b/tests/compile_tests/image/icons/thumbs_up.ico differ diff --git a/tests/compile_tests/image/icons/thumbs_up.ico.bmp b/tests/compile_tests/image/icons/thumbs_up.ico.bmp new file mode 100644 index 000000000..b132572ff Binary files /dev/null and b/tests/compile_tests/image/icons/thumbs_up.ico.bmp differ diff --git a/tests/compile_tests/image/icons/volme_dialog.ico b/tests/compile_tests/image/icons/volme_dialog.ico new file mode 100644 index 000000000..1ece9c69e Binary files /dev/null and b/tests/compile_tests/image/icons/volme_dialog.ico differ diff --git a/tests/compile_tests/image/icons/volme_dialog.ico.bmp b/tests/compile_tests/image/icons/volme_dialog.ico.bmp new file mode 100644 index 000000000..d7ddbc324 Binary files /dev/null and b/tests/compile_tests/image/icons/volme_dialog.ico.bmp differ diff --git a/tests/compile_tests/image/icons/word-icon.ico b/tests/compile_tests/image/icons/word-icon.ico new file mode 100644 index 000000000..246c233cf Binary files /dev/null and b/tests/compile_tests/image/icons/word-icon.ico differ diff --git a/tests/compile_tests/image/icons/word-icon.ico.bmp b/tests/compile_tests/image/icons/word-icon.ico.bmp new file mode 100644 index 000000000..d75729feb Binary files /dev/null and b/tests/compile_tests/image/icons/word-icon.ico.bmp differ diff --git a/tests/compile_tests/image/icons/x.ico b/tests/compile_tests/image/icons/x.ico new file mode 100644 index 000000000..b34470a02 Binary files /dev/null and b/tests/compile_tests/image/icons/x.ico differ diff --git a/tests/compile_tests/image/icons/x.ico.bmp b/tests/compile_tests/image/icons/x.ico.bmp new file mode 100644 index 000000000..c569e22d3 Binary files /dev/null and b/tests/compile_tests/image/icons/x.ico.bmp differ diff --git a/tests/compile_tests/utilities/imageassert.bm b/tests/compile_tests/utilities/imageassert.bm index cedd7e8ab..37f9db95f 100644 --- a/tests/compile_tests/utilities/imageassert.bm +++ b/tests/compile_tests/utilities/imageassert.bm @@ -118,7 +118,7 @@ END SUB FUNCTION GetColorDelta~& (color1 AS _UNSIGNED LONG, color2 AS _UNSIGNED LONG) - GetColorDelta = ABS(_RED32(color1) - _RED32(color2)) + ABS(_GREEN32(color1) - _GREEN32(color2)) + ABS(_BLUE32(color1) - _BLUE32(color2)) + ABS(_ALPHA32(color1) - _ALPHA32(color2)) + GetColorDelta = ABS(_RED32(color1) - _RED32(color2)) + ABS(_GREEN32(color1) - _GREEN32(color2)) + ABS(_BLUE32(color1) - _BLUE32(color2)) END FUNCTION @@ -178,7 +178,7 @@ SUB AssertImage2 (originalActualImage AS LONG, expectedFileName AS STRING, toler actualPixel = _MEMGET(actual, actual.OFFSET + pixelOffset, _UNSIGNED LONG) expectedPixel = _MEMGET(expected, expected.OFFSET + pixelOffset, _UNSIGNED LONG) - IF actualPixel <> expectedPixel _ANDALSO GetColorDelta(actualPixel, expectedPixel) > toleranceLimit THEN + IF actualPixel <> expectedPixel _ANDALSO _ALPHA32(actualPixel) <> 0 _ANDALSO _ALPHA32(expectedPixel) <> 0 _ANDALSO GetColorDelta(actualPixel, expectedPixel) > toleranceLimit THEN PRINT "Failure! Image pixels at ("; x&; ","; y&; ") differ, actual: 0x"; HEX$(actualPixel); ", expected: 0x"; HEX$(expectedPixel) GOTO freeImages END IF