diff options
Diffstat (limited to 'mwe/events/src/uiRenderer.cpp')
-rw-r--r-- | mwe/events/src/uiRenderer.cpp | 170 |
1 files changed, 87 insertions, 83 deletions
diff --git a/mwe/events/src/uiRenderer.cpp b/mwe/events/src/uiRenderer.cpp index dbe8dfe..9fec272 100644 --- a/mwe/events/src/uiRenderer.cpp +++ b/mwe/events/src/uiRenderer.cpp @@ -1,103 +1,107 @@ #include "uiRenderer.h" // Constructor -UIRenderer::UIRenderer(SDL_Renderer* renderer) : renderer(renderer) {} +UIRenderer::UIRenderer(SDL_Renderer * renderer) : renderer(renderer) {} // Render function -void UIRenderer::render(UIObject* uiObject) { - if (Button* button = dynamic_cast<Button*>(uiObject)) { - renderButton(button); - } else if (Text* text = dynamic_cast<Text*>(uiObject)) { - renderText(text); - } else if (TextInput* textInput = dynamic_cast<TextInput*>(uiObject)) { - renderTextInput(textInput); - } +void UIRenderer::render(UIObject * uiObject) { + if (Button * button = dynamic_cast<Button *>(uiObject)) { + renderButton(button); + } else if (Text * text = dynamic_cast<Text *>(uiObject)) { + renderText(text); + } else if (TextInput * textInput = dynamic_cast<TextInput *>(uiObject)) { + renderTextInput(textInput); + } } // Private helper function to render a Button -void UIRenderer::renderButton(Button* button) { - SDL_Rect buttonRect = {button->x, button->y, button->width, button->height}; - SDL_SetRenderDrawColor(renderer, 100, 100, 255, 255); // Button color - SDL_RenderFillRect(renderer, &buttonRect); +void UIRenderer::renderButton(Button * button) { + SDL_Rect buttonRect = {button->x, button->y, button->width, button->height}; + SDL_SetRenderDrawColor(renderer, 100, 100, 255, 255); // Button color + SDL_RenderFillRect(renderer, &buttonRect); } // Private helper function to render a Text -void UIRenderer::renderText(Text* text) { - if (text->font != nullptr) { - SDL_Color sdlColor = {text->color.red, text->color.green, text->color.blue, 255}; - SDL_Surface* textSurface = TTF_RenderText_Blended(text->font, text->text.c_str(), sdlColor); - if (!textSurface) { - std::cerr << "Error creating text surface: " << TTF_GetError() << std::endl; - return; - } +void UIRenderer::renderText(Text * text) { + if (text->font != nullptr) { + SDL_Color sdlColor + = {text->color.red, text->color.green, text->color.blue, 255}; + SDL_Surface * textSurface + = TTF_RenderText_Blended(text->font, text->text.c_str(), sdlColor); + if (!textSurface) { + std::cerr << "Error creating text surface: " << TTF_GetError() + << std::endl; + return; + } - SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface); - if (!textTexture) { - std::cerr << "Error creating texture from surface: " << SDL_GetError() << std::endl; - SDL_FreeSurface(textSurface); - return; - } + SDL_Texture * textTexture + = SDL_CreateTextureFromSurface(renderer, textSurface); + if (!textTexture) { + std::cerr << "Error creating texture from surface: " + << SDL_GetError() << std::endl; + SDL_FreeSurface(textSurface); + return; + } - SDL_Rect textRect = {text->x, text->y, textSurface->w, textSurface->h}; - SDL_RenderCopy(renderer, textTexture, nullptr, &textRect); - SDL_FreeSurface(textSurface); - SDL_DestroyTexture(textTexture); - } + SDL_Rect textRect = {text->x, text->y, textSurface->w, textSurface->h}; + SDL_RenderCopy(renderer, textTexture, nullptr, &textRect); + SDL_FreeSurface(textSurface); + SDL_DestroyTexture(textTexture); + } } -void UIRenderer::renderTextInput(TextInput* textInput) { - // // Check if textInput or renderer is null to avoid segmentation faults - // if (!textInput || !renderer) { - // std::cerr << "Error: Null pointer detected for textInput or renderer." << std::endl; - // return; - // } +void UIRenderer::renderTextInput(TextInput * textInput) { + // // Check if textInput or renderer is null to avoid segmentation faults + // if (!textInput || !renderer) { + // std::cerr << "Error: Null pointer detected for textInput or renderer." << std::endl; + // return; + // } - // // Render the background rectangle for the text input - // SDL_Rect inputRect = {textInput->x, textInput->y, textInput->width, textInput->height}; - // SDL_SetRenderDrawColor(renderer, textInput->backgroundColor.red, textInput->backgroundColor.green, textInput->backgroundColor.blue, 255); - // SDL_RenderFillRect(renderer, &inputRect); + // // Render the background rectangle for the text input + // SDL_Rect inputRect = {textInput->x, textInput->y, textInput->width, textInput->height}; + // SDL_SetRenderDrawColor(renderer, textInput->backgroundColor.red, textInput->backgroundColor.green, textInput->backgroundColor.blue, 255); + // SDL_RenderFillRect(renderer, &inputRect); - // // Check if font is valid - // if (!textInput->font) { - // std::cerr << "Error: Font is not loaded for textInput." << std::endl; - // return; - // } + // // Check if font is valid + // if (!textInput->font) { + // std::cerr << "Error: Font is not loaded for textInput." << std::endl; + // return; + // } - // SDL_Color sdlColor = {textInput->textColor.red, textInput->textColor.green, textInput->textColor.blue, 255}; + // SDL_Color sdlColor = {textInput->textColor.red, textInput->textColor.green, textInput->textColor.blue, 255}; - // if (!textInput->textBuffer.empty()) { - // // Render the text in the input field - // SDL_Surface* textSurface = TTF_RenderText_Blended(textInput->font, textInput->textBuffer.c_str(), sdlColor); - // if (textSurface) { - // SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface); - // if (textTexture) { - // SDL_Rect textRect = {textInput->x + 5, textInput->y + 5, textSurface->w, textSurface->h}; - // SDL_RenderCopy(renderer, textTexture, nullptr, &textRect); - // SDL_DestroyTexture(textTexture); - // } else { - // std::cerr << "Error: Unable to create texture from text surface." << std::endl; - // } - // SDL_FreeSurface(textSurface); - // } else { - // std::cerr << "Error: Unable to create text surface." << std::endl; - // } - // } else if (!textInput->placeholder.empty()) { - // // Render the placeholder text - // SDL_Color placeholderColor = {128, 128, 128, 255}; // Light gray for placeholder - // SDL_Surface* placeholderSurface = TTF_RenderText_Blended(textInput->font, textInput->placeholder.c_str(), placeholderColor); - // if (placeholderSurface) { - // SDL_Texture* placeholderTexture = SDL_CreateTextureFromSurface(renderer, placeholderSurface); - // if (placeholderTexture) { - // SDL_Rect placeholderRect = {textInput->x + 5, textInput->y + 5, placeholderSurface->w, placeholderSurface->h}; - // SDL_RenderCopy(renderer, placeholderTexture, nullptr, &placeholderRect); - // SDL_DestroyTexture(placeholderTexture); - // } else { - // std::cerr << "Error: Unable to create texture from placeholder surface." << std::endl; - // } - // SDL_FreeSurface(placeholderSurface); - // } else { - // std::cerr << "Error: Unable to create placeholder surface." << std::endl; - // } - // } + // if (!textInput->textBuffer.empty()) { + // // Render the text in the input field + // SDL_Surface* textSurface = TTF_RenderText_Blended(textInput->font, textInput->textBuffer.c_str(), sdlColor); + // if (textSurface) { + // SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface); + // if (textTexture) { + // SDL_Rect textRect = {textInput->x + 5, textInput->y + 5, textSurface->w, textSurface->h}; + // SDL_RenderCopy(renderer, textTexture, nullptr, &textRect); + // SDL_DestroyTexture(textTexture); + // } else { + // std::cerr << "Error: Unable to create texture from text surface." << std::endl; + // } + // SDL_FreeSurface(textSurface); + // } else { + // std::cerr << "Error: Unable to create text surface." << std::endl; + // } + // } else if (!textInput->placeholder.empty()) { + // // Render the placeholder text + // SDL_Color placeholderColor = {128, 128, 128, 255}; // Light gray for placeholder + // SDL_Surface* placeholderSurface = TTF_RenderText_Blended(textInput->font, textInput->placeholder.c_str(), placeholderColor); + // if (placeholderSurface) { + // SDL_Texture* placeholderTexture = SDL_CreateTextureFromSurface(renderer, placeholderSurface); + // if (placeholderTexture) { + // SDL_Rect placeholderRect = {textInput->x + 5, textInput->y + 5, placeholderSurface->w, placeholderSurface->h}; + // SDL_RenderCopy(renderer, placeholderTexture, nullptr, &placeholderRect); + // SDL_DestroyTexture(placeholderTexture); + // } else { + // std::cerr << "Error: Unable to create texture from placeholder surface." << std::endl; + // } + // SDL_FreeSurface(placeholderSurface); + // } else { + // std::cerr << "Error: Unable to create placeholder surface." << std::endl; + // } + // } } - |