summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CDrawBuffer.h
blob: 9ec0ed95e98efe4fcb8853507640eacd99ea0c4c (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
66
67
68
69
70
71
72
73
#ifndef __CDRAWBUFFER_H
#define __CDRAWBUFFER_H

#include "StyleConsts.h"
#include "CBuffer.h"
#include "my_list.h"
#include "linktype.h"

class QPainter;

struct textsegment
{
    int start;
    CStyle style;
    textsegment(int _start, const CStyle& _style)
	:
	start(_start), style(_style)
	{}
};

class FontControl;

class CDrawBuffer : public CBuffer
{
    CList<textsegment> segs;
    int len;
    FontControl* fc;
    int m_maxstyle, m_ascent, m_descent, m_lineSpacing, m_lineExtraSpacing;
    bool m_bEof;
    bool m_bSop, m_bEop;
    CDrawBuffer(const CDrawBuffer&);
    CDrawBuffer& operator=(const tchar*sztmp);
 public:
    void setstartpara() { m_bSop = true; }
    void setendpara() { m_bEop = true; }
    int leftMargin();
    int rightMargin();
    void setEof() { m_bEof = true; }
    bool eof() { return m_bEof; }
    CDrawBuffer& operator=(CDrawBuffer&);
    CDrawBuffer(FontControl* _fs = NULL)
	:
	fc(_fs)
	{
	    empty();
	}
    ~CDrawBuffer();
/*
    CDrawBuffer()
	:
	size(0)
	{
	    empty();
	}
*/
    int width(int numchars = -1, bool onscreen = false, int scwidth = 0, unsigned char _border = 0);
    int offset(int, unsigned char);
    void render(QPainter* _p, int _y, bool _bMono, int _charWidth, int scw, unsigned char);
    void empty();
    void addch(tchar ch, CStyle _style);
    void truncate(int);
    void setright(CDrawBuffer&, int);
    CStyle laststyle();
    int ascent() { return m_ascent; }
    int descent() { return m_descent; }
    int lineSpacing() { return m_lineSpacing; }
    int lineExtraSpacing() { return m_lineExtraSpacing; }

//    void frig();
    linkType getLinkType(int numchars, size_t& tgt);
    void resize();
};
#endif