/* * Copyright 2022-2025 Frederico de Oliveira Linhares * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "text.hpp" #include "../int/core.hpp" namespace BluCat::GRA { Text::Text( const BitmapFont &font, const char *str, const I32F x, const I32F y): x{x}, y{y}, height{font.height}, z_index{4.5f} { const std::vector text{BluCat::GRA::Character::str_to_unicode(str)}; this->width = text.size() * font.width; for(I32F index{0}; index < text.size(); index++) { if(str[index] == 32) continue; glm::vec4 rect{ x + index * font.width, y, x + (index + 1) * font.width, y + font.height}; this->letters.emplace_back(font.characters.at(text[index]).sprite, rect); } } void Text::draw() { auto &sprites_to_draw = BluCat::INT::core.vk_renderer->sprites_to_draw[ BluCat::INT::core.vk_swapchain->current_frame]; for(Letter &l: this->letters) sprites_to_draw.emplace_back(l.sprite, l.position, this->z_index); } }