1 /* 2 Copyright (C) 2008 - 2018 by Mark de Wever <koraq@xs4all.nl> 3 Part of the Battle for Wesnoth Project https://www.wesnoth.org/ 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY. 11 12 See the COPYING file for more details. 13 */ 14 15 #pragma once 16 17 #include "color.hpp" 18 #include "font/text.hpp" 19 20 #include <pango/pango-layout.h> 21 22 #include <cstdint> 23 #include <string> 24 25 struct SDL_Rect; 26 struct point; 27 class t_string; 28 29 namespace wfl 30 { 31 class map_formula_callable; 32 } // namespace wfl 33 34 namespace gui2 35 { 36 /** 37 * Creates a rectangle. 38 * 39 * @param origin The top left corner. 40 * @param size The width (x) and height (y). 41 * 42 * @returns SDL_Rect with the proper rectangle. 43 */ 44 SDL_Rect create_rect(const point& origin, const point& size); 45 46 /** 47 * Converts a color string to a color. 48 * 49 * @param color A color string see 50 * https://www.wesnoth.org/wiki/GUIVariable for 51 * more info. 52 * 53 * @returns The color. 54 */ 55 color_t decode_color(const std::string& color); 56 57 /** 58 * Converts a text alignment string to a text alignment. 59 * 60 * @param alignment An alignment string see 61 * https://www.wesnoth.org/wiki/GUIVariable for 62 * more info. 63 * 64 * @returns The text alignment. 65 */ 66 PangoAlignment decode_text_alignment(const std::string& alignment); 67 68 /** 69 * Converts a text alignment to its string representation. 70 * 71 * @param alignment An alignment. 72 * 73 * @returns An alignment string see 74 * https://www.wesnoth.org/wiki/GUIVariable for 75 * more info. 76 */ 77 std::string encode_text_alignment(const PangoAlignment alignment); 78 79 /** 80 * Converts a font style string to a font style. 81 * 82 * @param style A font style string see 83 * https://www.wesnoth.org/wiki/GUIVariable for 84 * more info. 85 * 86 * @returns The font style. 87 */ 88 font::pango_text::FONT_STYLE decode_font_style(const std::string& style); 89 90 /** 91 * Returns a default error message if a mandatory widget is omitted. 92 * 93 * @param id The id of the omitted widget. 94 * @returns The error message. 95 */ 96 t_string missing_widget(const std::string& id); 97 98 /** 99 * Gets a formula object with the screen size. 100 * 101 * @param variable A formula object in which the screen_width, 102 * screen_height, gamemap_width and 103 * gamemap_height variable will set to the 104 * current values of these in settings. It 105 * modifies the object send. 106 */ 107 void get_screen_size_variables(wfl::map_formula_callable& variable); 108 109 /** 110 * Gets a formula object with the screen size. 111 * 112 * @returns Formula object with the screen_width, 113 * screen_height, gamemap_width and 114 * gamemap_height variable set to the current 115 * values of these in settings. 116 */ 117 wfl::map_formula_callable get_screen_size_variables(); 118 119 /** Returns the current mouse position. */ 120 point get_mouse_position(); 121 122 /** 123 * Returns a truncated version of the text. 124 * 125 * For debugging it's sometimes useful to get a part of the label of the 126 * widget. This function shows the first part. 127 * 128 * @param text The text to truncate. 129 * 130 * @returns The truncated text. 131 */ 132 std::string debug_truncate(const std::string& text); 133 134 } // namespace gui2 135