/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali/internal/imaging/common/loader-ico.h>
#include <dali/internal/imaging/common/loader-jpeg.h>
#include <dali/internal/imaging/common/loader-ktx.h>
+#include <dali/internal/imaging/common/loader-pkm.h>
#include <dali/internal/imaging/common/loader-png.h>
#include <dali/internal/imaging/common/loader-wbmp.h>
#include <dali/internal/imaging/common/loader-webp.h>
*/
enum FileFormats
{
+ // Unsupported file format that we should not process image loader.
+ FORMAT_UNSUPPORTED = -2,
+
// Unknown file format
FORMAT_UNKNOWN = -1,
FORMAT_WEBP,
FORMAT_KTX,
FORMAT_ASTC,
+ FORMAT_PKM,
FORMAT_ICO,
FORMAT_MAGIC_BYTE_COUNT,
{Webp::MAGIC_BYTE_1, Webp::MAGIC_BYTE_2, LoadBitmapFromWebp, nullptr, LoadWebpHeader, Bitmap::BITMAP_2D_PACKED_PIXELS},
{Ktx::MAGIC_BYTE_1, Ktx::MAGIC_BYTE_2, LoadBitmapFromKtx, nullptr, LoadKtxHeader, Bitmap::BITMAP_COMPRESSED },
{Astc::MAGIC_BYTE_1, Astc::MAGIC_BYTE_2, LoadBitmapFromAstc, nullptr, LoadAstcHeader, Bitmap::BITMAP_COMPRESSED },
+ {Pkm::MAGIC_BYTE_1, Pkm::MAGIC_BYTE_2, LoadBitmapFromPkm, nullptr, LoadPkmHeader, Bitmap::BITMAP_COMPRESSED },
{Ico::MAGIC_BYTE_1, Ico::MAGIC_BYTE_2, LoadBitmapFromIco, nullptr, LoadIcoHeader, Bitmap::BITMAP_2D_PACKED_PIXELS},
{0x0, 0x0, LoadBitmapFromWbmp, nullptr, LoadWbmpHeader, Bitmap::BITMAP_2D_PACKED_PIXELS},
};
*/
struct FormatExtension
{
- const std::string extension;
- FileFormats format;
+ const std::string_view extension;
+ FileFormats format;
};
// clang-format off
-const FormatExtension FORMAT_EXTENSIONS[] =
+constexpr FormatExtension FORMAT_EXTENSIONS[] =
{
{".png", FORMAT_PNG },
{".jpg", FORMAT_JPEG},
{".webp", FORMAT_WEBP },
{".ktx", FORMAT_KTX },
{".astc", FORMAT_ASTC},
+ {".pkm", FORMAT_PKM},
{".ico", FORMAT_ICO },
- {".wbmp", FORMAT_WBMP}
+ {".wbmp", FORMAT_WBMP},
+ {".svg", FORMAT_UNSUPPORTED}, // SVG
+ {".tvg", FORMAT_UNSUPPORTED}, // ThorVG
+ {".json", FORMAT_UNSUPPORTED}, // Lottie
};
// clang-format on
Bitmap::Profile& profile,
const std::string& filename)
{
+ // Fast out if image loader doesn't support the format.
+ if(DALI_UNLIKELY(format == FORMAT_UNSUPPORTED))
+ {
+ return false;
+ }
+
unsigned char magic[MAGIC_LENGTH];
size_t read = fread(magic, sizeof(unsigned char), MAGIC_LENGTH, fp);
unsigned int width = 0;
unsigned int height = 0;
+ const FileFormats formatHint = GetFormatHint(filename);
+
+ // Fast out if image loader doesn't support the format.
+ if(formatHint == FileFormats::FORMAT_UNSUPPORTED)
+ {
+ return ImageDimensions(width, height);
+ }
+
Internal::Platform::FileReader fileReader(filename);
FILE* fp = fileReader.GetFile();
if(fp != NULL)
Bitmap::Profile profile;
if(GetBitmapLoaderFunctions(fp,
- GetFormatHint(filename),
+ formatHint,
loaderFunction,
planeLoader,
headerFunction,