summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/textbuf.cpp36
-rw-r--r--src/textbuf_type.h5
2 files changed, 41 insertions, 0 deletions
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 <stdarg.h>
+
#include "textbuf_type.h"
#include "string_func.h"
+#include "strings_func.h"
#include "gfx_type.h"
#include "gfx_func.h"
#include "window_func.h"
@@ -378,6 +381,39 @@ void Textbuf::Initialize(char *buf, uint16 max_bytes, uint16 max_chars)
}
/**
+ * 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.
* Useful when copying in a larger amount of text at once
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);