From 0ea21523556a345d38933ee2dd6dcdca0ec08514 Mon Sep 17 00:00:00 2001 From: frosch Date: Wed, 14 Nov 2012 22:50:11 +0000 Subject: (svn r24737) -Add: Textbuf::Assign and Textbuf::Print. --- src/textbuf.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/textbuf_type.h | 5 +++++ 2 files changed, 41 insertions(+) diff --git a/src/textbuf.cpp b/src/textbuf.cpp index 9c8753d89..0816c5dcf 100644 --- a/src/textbuf.cpp +++ b/src/textbuf.cpp @@ -10,8 +10,11 @@ /** @file textbuf.cpp Textbuffer handling. */ #include "stdafx.h" +#include + #include "textbuf_type.h" #include "string_func.h" +#include "strings_func.h" #include "gfx_type.h" #include "gfx_func.h" #include "window_func.h" @@ -377,6 +380,39 @@ void Textbuf::Initialize(char *buf, uint16 max_bytes, uint16 max_chars) this->UpdateSize(); } +/** + * Render a string into the textbuffer. + * @param string String + */ +void Textbuf::Assign(StringID string) +{ + GetString(this->buf, string, &this->buf[this->max_bytes - 1]); + this->UpdateSize(); +} + +/** + * Copy a string into the textbuffer. + * @param text Source. + */ +void Textbuf::Assign(const char *text) +{ + ttd_strlcpy(this->buf, text, this->max_bytes); + this->UpdateSize(); +} + +/** + * Print a formatted string into the textbuffer. + */ +void Textbuf::Print(const char *format, ...) +{ + va_list va; + va_start(va, format); + vsnprintf(this->buf, this->max_bytes, format, va); + va_end(va); + this->UpdateSize(); +} + + /** * Update Textbuf type with its actual physical character and screenlength * Get the count of characters in the string as well as the width in pixels. diff --git a/src/textbuf_type.h b/src/textbuf_type.h index 363f01643..77a957f84 100644 --- a/src/textbuf_type.h +++ b/src/textbuf_type.h @@ -13,6 +13,7 @@ #define TEXTBUF_TYPE_H #include "string_type.h" +#include "strings_type.h" /** Helper/buffer for input fields. */ struct Textbuf { @@ -29,6 +30,10 @@ struct Textbuf { void Initialize(char *buf, uint16 max_bytes); void Initialize(char *buf, uint16 max_bytes, uint16 max_chars); + void Assign(StringID string); + void Assign(const char *text); + void CDECL Print(const char *format, ...) WARN_FORMAT(2, 3); + void DeleteAll(); bool DeleteChar(int delmode); bool InsertChar(uint32 key); -- cgit v1.2.3-70-g09d2