Files
@ r27487:4d1c2a7bde00
Branch filter:
Location: cpp/openttd-patchpack/source/src/textfile_gui.h - annotation
r27487:4d1c2a7bde00
2.6 KiB
text/x-c
Codechange: remove queue_wrap / last_position from mouse movement
No backend uses it anymore, so also no longer any need to support
it.
No backend uses it anymore, so also no longer any need to support
it.
r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19068:3e8bf48b7b8a r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f r27259:59b91be38623 r19067:8b759022e9ee r19064:0f7af43d9a9f r19064:0f7af43d9a9f r23538:8df50944b27a r23538:8df50944b27a r23538:8df50944b27a r23538:8df50944b27a r19064:0f7af43d9a9f r25304:2d7ac9e432f0 r25304:2d7ac9e432f0 r19064:0f7af43d9a9f r23505:2c24909d1448 r23505:2c24909d1448 r23505:2c24909d1448 r23505:2c24909d1448 r23505:2c24909d1448 r25304:2d7ac9e432f0 r23505:2c24909d1448 r23505:2c24909d1448 r23505:2c24909d1448 r27295:4dfa0d5adc00 r23505:2c24909d1448 r26399:db15b808f86d r23505:2c24909d1448 r27259:59b91be38623 r23505:2c24909d1448 r27371:b9ad4c1bff08 r27371:b9ad4c1bff08 r27371:b9ad4c1bff08 r20772:bf3b8b08485d r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r27295:4dfa0d5adc00 r25304:2d7ac9e432f0 r20772:bf3b8b08485d r25304:2d7ac9e432f0 r19064:0f7af43d9a9f r19064:0f7af43d9a9f r19064:0f7af43d9a9f | /*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file textfile_gui.h GUI functions related to textfiles. */
#ifndef TEXTFILE_GUI_H
#define TEXTFILE_GUI_H
#include "fileio_type.h"
#include "strings_func.h"
#include "textfile_type.h"
#include "window_gui.h"
std::optional<std::string> GetTextfile(TextfileType type, Subdirectory dir, const std::string &filename);
/** Window for displaying a textfile */
struct TextfileWindow : public Window, MissingGlyphSearcher {
TextfileType file_type; ///< Type of textfile to view.
Scrollbar *vscroll; ///< Vertical scrollbar.
Scrollbar *hscroll; ///< Horizontal scrollbar.
uint search_iterator; ///< Iterator for the font check search.
uint max_length; ///< Maximum length of unwrapped text line.
TextfileWindow(TextfileType file_type);
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override;
void OnClick(Point pt, int widget, int click_count) override;
void DrawWidget(const Rect &r, int widget) const override;
void OnResize() override;
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
void Reset() override;
FontSize DefaultSize() override;
std::optional<std::string_view> NextString() override;
bool Monospace() override;
void SetFontNames(FontCacheSettings *settings, const char *font_name, const void *os_data) override;
virtual void LoadTextfile(const std::string &textfile, Subdirectory dir);
protected:
void LoadText(std::string_view buf);
private:
struct Line {
int top; ///< Top scroll position.
int bottom; ///< Bottom scroll position.
std::string_view text; ///< Pointer to text buffer.
Line(int top, std::string_view text) : top(top), bottom(top + 1), text(text) {}
};
std::string text; ///< Lines of text from the NewGRF's textfile.
std::vector<Line> lines; ///< #text, split into lines in a table with lines.
uint ReflowContent();
uint GetContentHeight();
void SetupScrollbars(bool force_reflow);
};
#endif /* TEXTFILE_GUI_H */
|