Files
spectrumAnalyzer/IText.cpp
T
EmsiaetKadosh ae4372827f 更改字符集
2025-02-07 14:38:48 +08:00

52 lines
2.9 KiB
C++

//
// Created by EmsiaetKadosh on 25-1-18.
//
#include "IText.h"
#include "def.h"
#include "Renderer.h"
void Font::draw(const RenderableString& text, int x, int y, unsigned int color) {
int lastStyle = -1;
HFONT lastFont = nullptr;
COLORREF defaultColor = Renderer::changeColorFormat(color);
for (const RenderableString::StringConfig& config : text.configs) {
if (config.style != lastStyle) {
lastStyle = config.style;
lastFont = tryCreate(config);
}
if (lastFont == nullptr) lastFont = tryCreate(config);
SelectObject(renderer.MainDC, lastFont);
RECT rect {
.left = x,
.top = y,
.right = 0,
.bottom = 0
};
DrawTextW(renderer.MainDC, config.text.c_str(), static_cast<int>(config.text.length()), &rect, DT_SINGLELINE | DT_NOCLIP);
SetTextColor(renderer.MainDC, config.isDefaultColor() ? defaultColor : Renderer::changeColorFormat(config.color));
Logger.log(L"rect.right = " + std::to_wstring(rect.right));
}
}
const String& TranslatableText::getText() const noexcept {
refreshText();
return target->getText();
}
const RenderableString& TranslatableText::getRenderableString() const noexcept {
refreshText();
return target->getRenderableString();
}
void TranslatableText::refreshText() const noexcept {
if (target == nullptr || langConfig == translator.getConfigVersion()) {
target = translator.getText(idSrc);
langConfig = translator.getConfigVersion();
}
}
inline Translator translator = Translator();
inline FontManager fontManager = FontManager();