-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMmlNode.h
132 lines (105 loc) · 2.83 KB
/
MmlNode.h
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#ifndef MMLNODE_H
#define MMLNODE_H
#include "Mml.h"
#include "MmlDocument.h"
#include <QRect>
#include <QRectF>
#include <QMap>
#include <QString>
#include <QPointF>
#include <QFont>
#include <QColor>
#include <QPainter>
class MmlDocument;
class MmlNode : public Mml
{
friend class MmlDocument;
public:
MmlNode( Mml::NodeType type, MmlDocument *document, const MmlAttributeMap &attribute_map );
virtual ~MmlNode();
// Mml stuff
Mml::NodeType nodeType() const
{
return m_node_type;
}
virtual QString toStr() const;
void setRelOrigin( const QPointF &rel_origin );
void stretchTo( const QRectF &rect );
QPointF devicePoint( const QPointF &p ) const;
QRectF myRect() const
{
return m_my_rect;
}
virtual void setMyRect( const QRectF &rect )
{
m_my_rect = rect;
}
void updateMyRect();
QRectF parentRect() const;
virtual QRectF deviceRect() const;
virtual void stretch();
virtual void layout();
virtual void paint( QPainter *painter, qreal x_scaling, qreal y_scaling );
qreal basePos() const;
qreal em() const;
qreal ex() const;
QString explicitAttribute( const QString &name, const QString &def = QString() ) const;
QString inheritAttributeFromMrow( const QString &name, const QString &def = QString() ) const;
virtual QFont font() const;
virtual QColor color() const;
virtual QColor background() const;
virtual int scriptlevel( const MmlNode *child = 0 ) const;
// Node stuff
MmlNode *parent() const
{
return m_parent;
}
MmlNode *firstChild() const
{
return m_first_child;
}
MmlNode *nextSibling() const
{
return m_next_sibling;
}
MmlNode *previousSibling() const
{
return m_previous_sibling;
}
MmlNode *lastSibling() const;
MmlNode *firstSibling() const;
bool isLastSibling() const
{
return m_next_sibling == 0;
}
bool isFirstSibling() const
{
return m_previous_sibling == 0;
}
bool hasChildNodes() const
{
return m_first_child != 0;
}
//protected:
virtual void layoutSymbol();
virtual void paintSymbol( QPainter *painter, qreal, qreal ) const;
virtual QRectF symbolRect() const
{
return QRectF( 0.0, 0.0, 0.0, 0.0 );
}
MmlNode *parentWithExplicitAttribute( const QString &name, NodeType type = NoNode );
qreal interpretSpacing( const QString &value, bool *ok ) const;
qreal lineWidth() const;
//private:
MmlAttributeMap m_attribute_map;
bool m_stretched;
QRectF m_my_rect, m_parent_rect;
QPointF m_rel_origin;
Mml::NodeType m_node_type;
MmlDocument *m_document;
MmlNode *m_parent,
*m_first_child,
*m_next_sibling,
*m_previous_sibling;
};
#endif // MMLNODE_H