29 if (propName ==
"-w") {
35 }
else if (propName ==
"-h") {
41 }
else if (propName ==
"-relw") {
43 if (relSize[0] != relw) {
47 }
else if (propName ==
"-relh") {
49 if (relSize[1] != relh) {
53 }
else if (propName ==
"-scale") {
54 float scale2 = value.
getFloat(interp);
55 if (scale != scale2) {
59 }
else if (propName ==
"-image") {
61 if (imageName != val) {
71 }
else if (propName ==
"-bordersize") {
72 float newSize = value.
getFloat(interp);
73 if (borderSize != newSize) {
77 }
else if (propName ==
"-relbordersize") {
78 float newSize = value.
getFloat(interp);
79 if (relBorderSize != newSize) {
80 relBorderSize = newSize;
83 }
else if (propName ==
"-borderrgba") {
84 uint32_t newRGBA = value.
getInt(interp);
85 if (borderRGBA != newRGBA) {
96 if (propName ==
"-w") {
98 }
else if (propName ==
"-h") {
100 }
else if (propName ==
"-relw") {
102 }
else if (propName ==
"-relh") {
104 }
else if (propName ==
"-scale") {
106 }
else if (propName ==
"-image") {
108 }
else if (propName ==
"-bordersize") {
110 }
else if (propName ==
"-relbordersize") {
111 result = relBorderSize;
112 }
else if (propName ==
"-borderrgba") {
124bool OSDRectangle::takeImageDimensions()
const
126 return (size ==
vec2()) && (relSize ==
vec2());
129vec2 OSDRectangle::getSize(
const OutputSurface& output)
const
131 if (!imageName.empty() &&
image && takeImageDimensions()) {
140uint8_t OSDRectangle::getFadedAlpha()
const
145template<
typename IMAGE> std::unique_ptr<BaseImage> OSDRectangle::create(
146 OutputSurface& output)
148 if (imageName.empty()) {
150 if (constAlpha && ((
getRGBA(0) & 0xff) == 0) &&
151 (((borderRGBA & 0xFF) == 0) || (borderSize == 0.0f))) {
159 vec2 sz = getSize(output);
161 auto bs = narrow_cast<int>(lrintf(factor * borderSize + sz[0] * relBorderSize));
163 return std::make_unique<IMAGE>(output,
round(sz),
getRGBA4(), bs, borderRGBA);
166 if (takeImageDimensions()) {
168 return std::make_unique<IMAGE>(output, file, factor);
171 return std::make_unique<IMAGE>(output, file, iSize);
176std::unique_ptr<BaseImage> OSDRectangle::createSDL(OutputSurface& output)
178 return create<SDLImage>(output);
181std::unique_ptr<BaseImage> OSDRectangle::createGL(OutputSurface& output)
184 return create<GLImage>(output);
Represents the output window/screen of openMSX.
std::string resolve(std::string_view filename) const
void getProperty(std::string_view name, TclObject &result) const override
OSDRectangle(Display &display, const TclObject &name)
void setProperty(Interpreter &interp, std::string_view name, const TclObject &value) override
std::string_view getType() const override
float getFloat(Interpreter &interp) const
int getInt(Interpreter &interp) const
zstring_view getString() const
constexpr double round(double x)
bool isRegularFile(const Stat &st)
This file implemented 3 utility functions:
const FileContext & systemFileContext()