Make clay debug mode work

This commit is contained in:
Yousef Khadadeh 2026-04-30 23:03:58 +03:00
parent 6b7973072d
commit 151c3f9bed

View file

@ -16,6 +16,16 @@
#include <modules/skparagraph/include/TextStyle.h> #include <modules/skparagraph/include/TextStyle.h>
#include <modules/skunicode/include/SkUnicode_icu.h> #include <modules/skunicode/include/SkUnicode_icu.h>
//#define CLAY_DEBUG_MENU_ENABLED
SkColor4f convert_clay_color_to_skcolor4f(const Clay_Color& color) {
#ifdef CLAY_DEBUG_MENU_ENABLED
if(color.a > 1.0f)
return {color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f};
#endif
return convert_vec4<SkColor4f>(color);
}
namespace GUIStuff { namespace GUIStuff {
GUIManager::GUIManager() GUIManager::GUIManager()
@ -25,6 +35,9 @@ GUIManager::GUIManager()
clayArena = Clay_CreateArenaWithCapacityAndMemory(Clay_MinMemorySize(), malloc(Clay_MinMemorySize())); clayArena = Clay_CreateArenaWithCapacityAndMemory(Clay_MinMemorySize(), malloc(Clay_MinMemorySize()));
clayInstance = Clay_Initialize(clayArena, Clay_Dimensions(1.0f, 1.0f), (Clay_ErrorHandler)clay_error_handler); clayInstance = Clay_Initialize(clayArena, Clay_Dimensions(1.0f, 1.0f), (Clay_ErrorHandler)clay_error_handler);
Clay_SetMeasureTextFunction(clay_skia_measure_text, this); Clay_SetMeasureTextFunction(clay_skia_measure_text, this);
#ifdef CLAY_DEBUG_MENU_ENABLED
Clay_SetDebugModeEnabled(true);
#endif
setToLayout = true; setToLayout = true;
postCallbackFuncIsHighPriority = false; postCallbackFuncIsHighPriority = false;
lastInteractionIsTouch = false; lastInteractionIsTouch = false;
@ -128,7 +141,7 @@ void GUIManager::draw(SkCanvas* c, bool skiaAA) {
SkPaint paint; SkPaint paint;
paint.setAntiAlias(skiaAA); paint.setAntiAlias(skiaAA);
paint.setStyle(SkPaint::kFill_Style); paint.setStyle(SkPaint::kFill_Style);
paint.setColor4f(convert_vec4<SkColor4f>(config->backgroundColor)); paint.setColor4f(convert_clay_color_to_skcolor4f(config->backgroundColor));
canvas->drawRRect(rrect, paint); canvas->drawRRect(rrect, paint);
break; break;
@ -141,7 +154,7 @@ void GUIManager::draw(SkCanvas* c, bool skiaAA) {
skia::textlayout::TextStyle tStyle; skia::textlayout::TextStyle tStyle;
tStyle.setFontSize(config->fontSize); tStyle.setFontSize(config->fontSize);
tStyle.setFontFamilies(io.fonts->get_default_font_families()); tStyle.setFontFamilies(io.fonts->get_default_font_families());
tStyle.setColor(convert_vec4<SkColor4f>(config->textColor).toSkColor()); tStyle.setColor(convert_clay_color_to_skcolor4f(config->textColor).toSkColor());
pStyle.setTextStyle(tStyle); pStyle.setTextStyle(tStyle);
skia::textlayout::ParagraphBuilderImpl a(pStyle, io.fonts->collection, SkUnicodes::ICU::Make()); skia::textlayout::ParagraphBuilderImpl a(pStyle, io.fonts->collection, SkUnicodes::ICU::Make());
@ -156,7 +169,7 @@ void GUIManager::draw(SkCanvas* c, bool skiaAA) {
Clay_BorderRenderData* config = &command->renderData.border; Clay_BorderRenderData* config = &command->renderData.border;
SkPaint p; SkPaint p;
p.setColor4f(convert_vec4<SkColor4f>(config->color)); p.setColor4f(convert_clay_color_to_skcolor4f(config->color));
p.setStyle(SkPaint::kStroke_Style); p.setStyle(SkPaint::kStroke_Style);
p.setAntiAlias(skiaAA); p.setAntiAlias(skiaAA);
@ -309,7 +322,7 @@ void GUIManager::draw_force(SkCanvas* canvas, bool skiaAA) {
SkPaint paint; SkPaint paint;
paint.setAntiAlias(skiaAA); paint.setAntiAlias(skiaAA);
paint.setStyle(SkPaint::kFill_Style); paint.setStyle(SkPaint::kFill_Style);
paint.setColor4f(convert_vec4<SkColor4f>(config->backgroundColor)); paint.setColor4f(convert_clay_color_to_skcolor4f(config->backgroundColor));
canvas->drawRRect(rrect, paint); canvas->drawRRect(rrect, paint);
break; break;
@ -322,7 +335,7 @@ void GUIManager::draw_force(SkCanvas* canvas, bool skiaAA) {
skia::textlayout::TextStyle tStyle; skia::textlayout::TextStyle tStyle;
tStyle.setFontSize(config->fontSize); tStyle.setFontSize(config->fontSize);
tStyle.setFontFamilies(io.fonts->get_default_font_families()); tStyle.setFontFamilies(io.fonts->get_default_font_families());
tStyle.setColor(convert_vec4<SkColor4f>(config->textColor).toSkColor()); tStyle.setColor(convert_clay_color_to_skcolor4f(config->textColor).toSkColor());
pStyle.setTextStyle(tStyle); pStyle.setTextStyle(tStyle);
skia::textlayout::ParagraphBuilderImpl a(pStyle, io.fonts->collection, SkUnicodes::ICU::Make()); skia::textlayout::ParagraphBuilderImpl a(pStyle, io.fonts->collection, SkUnicodes::ICU::Make());
@ -337,7 +350,7 @@ void GUIManager::draw_force(SkCanvas* canvas, bool skiaAA) {
Clay_BorderRenderData* config = &command->renderData.border; Clay_BorderRenderData* config = &command->renderData.border;
SkPaint p; SkPaint p;
p.setColor4f(convert_vec4<SkColor4f>(config->color)); p.setColor4f(convert_clay_color_to_skcolor4f(config->color));
p.setStyle(SkPaint::kStroke_Style); p.setStyle(SkPaint::kStroke_Style);
p.setAntiAlias(skiaAA); p.setAntiAlias(skiaAA);
@ -543,6 +556,9 @@ void GUIManager::layout_if_necessary() {
} }
void GUIManager::layout() { void GUIManager::layout() {
#ifdef CLAY_DEBUG_MENU_ENABLED
Clay_SetPointerState({io.input->mouse.pos.x(), io.input->mouse.pos.y()}, io.input->mouse.leftDown);
#endif
constexpr int LAYOUT_RUN_COUNT = 6; constexpr int LAYOUT_RUN_COUNT = 6;
for(int i = 0; i < LAYOUT_RUN_COUNT; i++) for(int i = 0; i < LAYOUT_RUN_COUNT; i++)
single_layout_run(); single_layout_run();