ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/dclient/include/ndk/text.hh
Revision: 1.1
Committed: Sun Oct 24 20:31:44 2010 UTC (13 years, 9 months ago) by sf-pippijn
Branch: MAIN
CVS Tags: HEAD
Log Message:
use EV and plain sockets instead of asio

File Contents

# Content
1 /* text.hh
2 * This file is part of ndk library
3 * Copyright (c) 2003,2004 by Stanislav Ievlev
4 *
5 * This file is covered by the GNU Library General Public License,
6 * which should be included with libndk as the file COPYING.
7 */
8 #pragma once
9
10 #include <ndk/color.hh>
11 #include <ndk/frame.hh>
12 #include <ndk/pad.hh>
13
14 namespace ndk
15 {
16 struct color;
17 }
18
19 namespace ndk
20 {
21 // this is a simple container of the multi-line text
22 struct text
23 : frame
24 {
25 enum possible_events
26 {
27 // system events generated by text widget
28 changed
29 };
30
31 enum wrap_type
32 {
33 no_wrap,
34 wrap
35 };
36
37 explicit text (std::string const &title = "", panel *parent = 0, wrap_type wrapping = no_wrap);
38
39 void add_text (color c, std::string const &str); // append text to the buffer
40 void set_text (color c, std::string const &str); // set current text of the buffer, same as clear+add+draw
41
42 template<typename... Args>
43 void add_text (color c, char const *fmt, Args const &...args)
44 {
45 char buf[BUFSIZ];
46 add_text (c, std::string (buf, snprintf (buf, sizeof buf, fmt, args...)));
47 }
48
49 bool right (); // move text viewport to the right
50 bool left (); // move text viewport to the left
51 bool up (); // move text viewport to the up
52 bool down (); // move text viewport to the down
53
54 void clear (); // clear all text
55
56 int length () const; // total length of the text
57 int last_line () const; // number of the last visible line
58
59 virtual void resize (int w, int h);
60
61 private:
62 event::result at_keyboard (const keyboard &ev);
63
64 virtual void draw (); // draw frame on the panel
65
66 int string_height (const std::string &str); // number of strings
67 int string_width (const std::string &str); // maximum string length
68
69 int x_; // first viewport position coordinate
70 int y_; // second viewport position coordinate
71 pad pad_; // internal container for all inner text
72 wrap_type wrapping_; // made or not wrapping of the inner strings
73 };
74 }