summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/RichTextBox.h
blob: deb7caa14e71d550055be9b7a306717e07f94ad3 (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