从MVC角度分解:
[Model ]
char *text;
int term_width, term_height;
int cursor_col, cursor_row;
[View ]
+-----------------------+
|content_ |
| |
| 0,8 |
+-----------------------+
[Controller]
Event(EV_INPUT, EV_KEY, ..)
关系:
1. [C]-改变->[M] (不同的state,[C]对[M]造成不同的影响)
2. [C]-改变->[V] (为了效率,[C]可直接作用[V],但同时应改变[M])
3. [M]-可独立生成->[V] (e.g redraw)
改善设计:
首先改善[Model]的设计,这是根本,比如
char *text;
改成
list<string> string_list;
就可以改善[Controller]的控制。
中文处理,需要定制Char,String, so..:
list<String> string_list;
继续封装:
Text text;
类设计:
class Char -> class String -> class Text
Char的上面贴过了,
String的:
class String {
private:
list<Char> _string;
public:
int size();
int length();
void insert(int, Char);
void append(Char);
char* c_str();
char* sub_c_str(int);
void erase();
void erase(int);
int num_at(int); 由于中文问题,第n个位置的字符在String中不一定是第n个字符
Char at(int); 返回第n个位置的字符
Char getChar(int); 返回第n个字符
};
class Text 的设计...thinking...
--
FROM 61.235.136.251