Changeset - r19782:9badef40ca91
[Not reviewed]
master
0 2 0
frosch - 12 years ago 2012-11-14 22:50:11
frosch@openttd.org
(svn r24737) -Add: Textbuf::Assign and Textbuf::Print.
2 files changed with 41 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/textbuf.cpp
Show inline comments
 
@@ -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, uint
 
}
 

	
 
/**
 
 * 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
src/textbuf_type.h
Show inline comments
 
@@ -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);
0 comments (0 inline, 0 general)