outlineOffsetX{0},
outlineOffsetY{0},
format{Pixel::A8},
- compressType(CompressType::NO_COMPRESS),
+ compressionType{CompressionType::NO_COMPRESSION},
isColorEmoji{false},
isColorBitmap{false},
isBufferOwned{false}
}
}
+FontClient::GlyphBufferData::GlyphBufferData(FontClient::GlyphBufferData&& rhs) noexcept
+: buffer{rhs.buffer},
+ width{rhs.width},
+ height{rhs.height},
+ outlineOffsetX{rhs.outlineOffsetX},
+ outlineOffsetY{rhs.outlineOffsetY},
+ format{rhs.format},
+ compressionType{rhs.compressionType},
+ isColorEmoji{rhs.isColorEmoji},
+ isColorBitmap{rhs.isColorBitmap},
+ isBufferOwned{rhs.isBufferOwned}
+{
+ // Remove moved data
+ rhs.buffer = nullptr;
+ rhs.isBufferOwned = false;
+}
+
+FontClient::GlyphBufferData& FontClient::GlyphBufferData::operator=(FontClient::GlyphBufferData&& rhs) noexcept
+{
+ buffer = rhs.buffer;
+ width = rhs.width;
+ height = rhs.height;
+ outlineOffsetX = rhs.outlineOffsetX;
+ outlineOffsetY = rhs.outlineOffsetY;
+ format = rhs.format;
+ compressionType = rhs.compressionType;
+ isColorEmoji = rhs.isColorEmoji;
+ isColorBitmap = rhs.isColorBitmap;
+ isBufferOwned = rhs.isBufferOwned;
+
+ // Remove moved data
+ rhs.buffer = nullptr;
+ rhs.isBufferOwned = false;
+
+ return *this;
+}
+
size_t FontClient::GlyphBufferData::Compress(const uint8_t* const __restrict__ inBuffer, GlyphBufferData& __restrict__ outBufferData)
{
size_t bufferSize = 0u;
uint8_t*& __restrict__ compressedBuffer = outBufferData.buffer;
- switch(outBufferData.compressType)
+ switch(outBufferData.compressionType)
{
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::NO_COMPRESS:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::NO_COMPRESSION:
{
- bufferSize = outBufferData.width * outBufferData.height * Pixel::GetBytesPerPixel(outBufferData.format);
+ bufferSize = static_cast<size_t>(outBufferData.width) * static_cast<size_t>(outBufferData.height) * static_cast<size_t>(Pixel::GetBytesPerPixel(outBufferData.format));
compressedBuffer = (uint8_t*)malloc(bufferSize);
if(DALI_UNLIKELY(compressedBuffer == nullptr))
memcpy(compressedBuffer, inBuffer, bufferSize);
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::BIT_PER_PIXEL_4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::BPP_4:
{
const uint32_t widthByte = outBufferData.width * Pixel::GetBytesPerPixel(outBufferData.format);
const uint32_t componentCount = (widthByte >> 1);
const bool considerPadding = (widthByte & 1) ? true : false;
// For BIT_PER_PIXEL_4 type, we can know final compressed buffer size immediatly.
- bufferSize = outBufferData.height * (componentCount + (considerPadding ? 1 : 0));
+ bufferSize = static_cast<size_t>(outBufferData.height) * static_cast<size_t>(componentCount + (considerPadding ? 1 : 0));
compressedBuffer = (uint8_t*)malloc(bufferSize);
if(DALI_UNLIKELY(compressedBuffer == nullptr))
{
}
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::COMPRESS_RLE4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::RLE_4:
{
const uint32_t widthByte = outBufferData.width * Pixel::GetBytesPerPixel(outBufferData.format);
return;
}
- switch(inBufferData.compressType)
+ switch(inBufferData.compressionType)
{
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::NO_COMPRESS:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::NO_COMPRESSION:
{
const auto bufferSize = inBufferData.width * inBufferData.height * Pixel::GetBytesPerPixel(inBufferData.format);
memcpy(outBuffer, inBufferData.buffer, bufferSize);
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::BIT_PER_PIXEL_4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::BPP_4:
{
const uint32_t widthByte = inBufferData.width * Pixel::GetBytesPerPixel(inBufferData.format);
const uint32_t componentCount = (widthByte >> 1);
}
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::COMPRESS_RLE4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::RLE_4:
{
const uint32_t widthByte = inBufferData.width * Pixel::GetBytesPerPixel(inBufferData.format);
void FontClient::GlyphBufferData::DecompressScanline(const GlyphBufferData& __restrict__ inBufferData, uint8_t* __restrict__ outBuffer, uint32_t& __restrict__ offset)
{
- switch(inBufferData.compressType)
+ switch(inBufferData.compressionType)
{
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::NO_COMPRESS:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::NO_COMPRESSION:
{
const auto bufferSize = inBufferData.width * Pixel::GetBytesPerPixel(inBufferData.format);
offset += bufferSize;
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::BIT_PER_PIXEL_4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::BPP_4:
{
const uint32_t widthByte = inBufferData.width * Pixel::GetBytesPerPixel(inBufferData.format);
const uint32_t componentCount = (widthByte >> 1);
offset += (widthByte + 1u) >> 1u;
break;
}
- case TextAbstraction::FontClient::GlyphBufferData::CompressType::COMPRESS_RLE4:
+ case TextAbstraction::FontClient::GlyphBufferData::CompressionType::RLE_4:
{
const uint32_t widthByte = inBufferData.width * Pixel::GetBytesPerPixel(inBufferData.format);
{
}
-FontClient::FontClient(const FontClient& handle)
-: BaseHandle(handle)
-{
-}
+FontClient::FontClient(const FontClient& handle) = default;
-FontClient& FontClient::operator=(const FontClient& handle)
-{
- BaseHandle::operator=(handle);
- return *this;
-}
+FontClient& FontClient::operator=(const FontClient& handle) = default;
+
+FontClient::FontClient(FontClient&& handle) = default;
+
+FontClient& FontClient::operator=(FontClient&& handle) = default;
void FontClient::ClearCache()
{
GetImplementation(*this).GetDefaultFonts(defaultFonts);
}
+void FontClient::InitDefaultFontDescription()
+{
+ GetImplementation(*this).InitDefaultFontDescription();
+}
+
void FontClient::GetDefaultPlatformFontDescription(FontDescription& fontDescription)
{
GetImplementation(*this).GetDefaultPlatformFontDescription(fontDescription);
GetImplementation(*this).GetSystemFonts(systemFonts);
}
-void FontClient::GetDescription(FontId id, FontDescription& fontDescription)
+void FontClient::GetDescription(FontId fontId, FontDescription& fontDescription)
{
- GetImplementation(*this).GetDescription(id, fontDescription);
+ GetImplementation(*this).GetDescription(fontId, fontDescription);
}
-PointSize26Dot6 FontClient::GetPointSize(FontId id)
+PointSize26Dot6 FontClient::GetPointSize(FontId fontId)
{
- return GetImplementation(*this).GetPointSize(id);
+ return GetImplementation(*this).GetPointSize(fontId);
}
bool FontClient::IsCharacterSupportedByFont(FontId fontId, Character character)
return Internal::FontClient::PreInitialize();
}
+void FontClientPreCache(const FontFamilyList& fallbackFamilyList, const FontFamilyList& extraFamilyList, const FontFamily& localeFamily, bool useThread)
+{
+ Internal::FontClient::PreCache(fallbackFamilyList, extraFamilyList, localeFamily, useThread);
+}
+
+void FontClientFontPreLoad(const FontPathList& fontPathList, const FontPathList& memoryFontPathList, bool useThread)
+{
+ Internal::FontClient::PreLoad(fontPathList, memoryFontPathList, useThread);
+}
+
} // namespace TextAbstraction
} // namespace Dali