summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/RichTextBox.h
blob: b4d778c34701052ce3d504241036a1cfcf881426 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*  Project nGenEx
	Destroyer Studios LLC
	Copyright © 1997-2004. All Rights Reserved.

	SUBSYSTEM:    nGenEx.lib
	FILE:         RichTextBox.h
	AUTHOR:       John DiCamillo


	OVERVIEW
	========
	Rich Text Window - an HTML-like control
*/

#ifndef RichTextBox_h
#define RichTextBox_h

#include "Types.h"
#include "Color.h"
#include "Bitmap.h"
#include "ScrollWindow.h"
#include "EventTarget.h"
#include "List.h"
#include "Text.h"

// +--------------------------------------------------------------------+

class RichTextBox : public ScrollWindow
{
public:
	static const char* TYPENAME() { return "RichTextBox"; }

	RichTextBox(ActiveWindow* p, int ax, int ay, int aw, int ah, DWORD aid=0, DWORD astyle=0);
	RichTextBox(Screen*       s, int ax, int ay, int aw, int ah, DWORD aid=0, DWORD astyle=0);
	virtual ~RichTextBox();

	int operator == (const RichTextBox& w) const { return id == w.id; }

	// Operations:
	virtual void   DrawContent(const Rect& ctrl_rect);
	virtual void   SetText(const char* t);

	// Event Target Interface:
	virtual int    OnMouseMove(int x, int y);
	virtual int    OnLButtonDown(int x, int y);
	virtual int    OnLButtonUp(int x, int y);
	virtual int    OnMouseWheel(int wheel);
	virtual int    OnClick();

	virtual int    OnKeyDown(int vk, int flags);

protected:
	virtual void   DrawTabbedText();
	virtual void   DrawRichText(Rect& text_rect);
	int            GetNextTab(int xpos);

	virtual int    find_next_word_start(const char* text, int index);
	virtual int    find_next_word_end(const char* text, int index);
	virtual int    parse_hex_digit(char c);
	virtual int    process_tag(const char* text, int index, Font*& font);

};

#endif RichTextBox_h