Since FontDescription cache system have some problem if family is empty.
So we use DefaultFontDescription if inputed family is empty.
But we try to delay the FontClient creation time as possible.
If that case, It it possible that Default informations are not prepared yet.
This patch ensure the mDefaultFontDescription prepared at FontClient::Get().
So now, we can ensure to use FontId cache system well.
TODO : We might fix empty family bugs if possible
Change-Id: I72f5f7a581186addd130848f257f939cd24e094a
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
for(int i = 0; i < 50; ++i)
{
TextAbstraction::GlyphBufferData dummy = std::move(movedGlyphBufferData2000);
- movedGlyphBufferData2000 = std::move(dummy);
+ movedGlyphBufferData2000 = std::move(dummy);
// Test moved GlyphBufferData destruct well
}
Size maximumTextAtlasSize = fontClient.GetMaximumTextAtlasSize();
Size currentMaximumBlockSizeFitInAtlas = fontClient.GetCurrentMaximumBlockSizeFitInAtlas();
- tet_infoline("CurrentMaximumBlockSizeFitInAtlas start with default ");
- DALI_TEST_EQUALS(currentMaximumBlockSizeFitInAtlas, defaultTextAtlasSize, TEST_LOCATION);
+ // TODO : This UTC pass only if we don't create fontClient plugin. Currently we always create plugin at Get API, due to performance
+ //tet_infoline("CurrentMaximumBlockSizeFitInAtlas start with default ");
+ //DALI_TEST_EQUALS(currentMaximumBlockSizeFitInAtlas, defaultTextAtlasSize, TEST_LOCATION);
+
+ currentMaximumBlockSizeFitInAtlas = defaultTextAtlasSize;
tet_infoline("SetCurrentMaximumBlockSizeFitInAtlas is changed with current ");
isChanged = fontClient.SetCurrentMaximumBlockSizeFitInAtlas(currentMaximumBlockSizeFitInAtlas);
/*
- * 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/devel-api/text-abstraction/glyph-info.h>
-#define FONT_LOG_MESSAGE(level, format, ...) \
- do \
- { \
- char buffer[256]; \
- int result = std::snprintf(buffer, sizeof(buffer), format, ##__VA_ARGS__); \
- if (result >= static_cast<int>(sizeof(buffer))) \
- { \
- std::string log("Font log message is too long to fit in the buffer.\n"); \
- Dali::TizenPlatform::LogMessage(Dali::Integration::Log::ERROR, log); \
- break; \
- } \
- std::string log(buffer); \
- Dali::TizenPlatform::LogMessage(level, log); \
+#define FONT_LOG_MESSAGE(level, format, ...) \
+ do \
+ { \
+ char buffer[256]; \
+ int result = std::snprintf(buffer, sizeof(buffer), format, ##__VA_ARGS__); \
+ if(result >= static_cast<int>(sizeof(buffer))) \
+ { \
+ std::string log("Font log message is too long to fit in the buffer.\n"); \
+ Dali::TizenPlatform::LogMessage(Dali::Integration::Log::ERROR, log); \
+ break; \
+ } \
+ std::string log(buffer); \
+ Dali::TizenPlatform::LogMessage(level, log); \
} while(0)
namespace Dali
{
Dali::TextAbstraction::FontClient FontClient::gPreInitializedFontClient(NULL);
Dali::TextAbstraction::FontClient FontClient::gPreCachedFontClient(NULL);
-std::thread gPreCacheThread;
+std::thread gPreCacheThread;
/* TODO: This is to prevent duplicate calls of font pre-cache.
* We may support this later, but currently we can't guarantee the behaviour
* if there is a pre-cache call from the user after the font client has been created. */
else
{
fontClientHandle = Dali::TextAbstraction::FontClient(new FontClient);
+
+ // Make DefaultFontDescription cached
+ Dali::TextAbstraction::FontDescription defaultFontDescription;
+ fontClientHandle.GetDefaultPlatformFontDescription(defaultFontDescription);
}
gFontPreCacheAvailable = false;
FONT_LOG_MESSAGE(Dali::Integration::Log::INFO, "BEGIN: DALI_TEXT_PRECACHE_RUN\n");
Dali::TextAbstraction::FontClient fontClient = Dali::TextAbstraction::FontClient(new FontClient);
GetImplementation(fontClient).FontPreCache(fallbackFamilyList, extraFamilyList, localeFamily);
- gPreCachedFontClient = fontClient;
+ gPreCachedFontClient = fontClient;
gFontPreCacheAvailable = false;
FONT_LOG_MESSAGE(Dali::Integration::Log::INFO, "END: DALI_TEXT_PRECACHE_RUN\n");
}
/*
- * 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.
// INTERNAL INCLUDES
#include <dali/devel-api/text-abstraction/font-list.h>
#include <dali/integration-api/debug.h>
-#include <dali/integration-api/trace.h>
#include <dali/integration-api/platform-abstraction.h>
+#include <dali/integration-api/trace.h>
#include <dali/internal/adaptor/common/adaptor-impl.h>
#include <dali/internal/imaging/common/image-operations.h>
#include <dali/internal/text/text-abstraction/plugin/bitmap-font-cache-item.h>
namespace
{
-
DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_FONT_PERFORMANCE_MARKER, false);
/**
FontFamilyList familyList;
familyList.reserve(extraFamilyList.size() + 1);
- for (const auto& fallbackFont : fallbackFamilyList)
+ for(const auto& fallbackFont : fallbackFamilyList)
{
- FontList* fontList = nullptr;
- CharacterSetList* characterSetList = nullptr;
+ FontList* fontList = nullptr;
+ CharacterSetList* characterSetList = nullptr;
FontDescriptionId fontDescriptionId = 0u;
- FontDescription fontDescription;
+ FontDescription fontDescription;
fontDescription.family = FontFamily(fallbackFont);
fontDescription.weight = DefaultFontWeight();
fontDescription.width = DefaultFontWidth();
DALI_LOG_INFO(gFontClientLogFilter, Debug::Verbose, " [%s] --> [%s]\n", FontWidth::Name[preferredFontDescription.width], FontWidth::Name[fontDescription.width]);
DALI_LOG_INFO(gFontClientLogFilter, Debug::Verbose, " [%s] --> [%s]\n", FontSlant::Name[preferredFontDescription.slant], FontSlant::Name[fontDescription.slant]);
- #if defined(TRACE_ENABLED)
+#if defined(TRACE_ENABLED)
if(gTraceFilter && gTraceFilter->IsTraceEnabled())
{
DALI_LOG_DEBUG_INFO("DALI_TEXT_FIND_FALLBACKFONT : %s -> %s\n", preferredFontDescription.family.c_str(), fontDescription.family.c_str());
}
- #endif
+#endif
// Check first if the font's description has been queried before.
FontList* fontList = nullptr;
DALI_TRACE_SCOPE(gTraceFilter, "DALI_TEXT_CREATE_FONT");
FontId fontId = 0u;
- #if defined(TRACE_ENABLED)
+#if defined(TRACE_ENABLED)
if(gTraceFilter && gTraceFilter->IsTraceEnabled())
{
DALI_LOG_DEBUG_INFO("DALI_TEXT_CREATE_FONT : FT_New_Face : %s\n", path.c_str());
}
- #endif
+#endif
// Create & cache new font face
FT_Face ftFace;