#include <QApplication>
#include <QMap>
#include <QDesktopWidget>
#include <QPainter>
#include <QDomNode>
#include <QDebug>
#include "qwt_mml_document.h"
// *******************************************************************
// Declarations
// *******************************************************************
#define ROUND(a) (int)((a)+.5)
static bool g_draw_frames = false;
static const double g_mfrac_spacing = 0.1;
static const double g_mroot_base_margin = 0.1;
static const double g_script_size_multiplier = 0.7071; // sqrt(1/2)
static const int g_min_font_point_size = 8;
static const QChar g_radical_char = QChar( 0x1A, 0x22 );
static const unsigned g_oper_spec_rows = 9;
struct QwtMml
{
enum NodeType
{
NoNode = 0, MiNode, MnNode, MfracNode, MrowNode, MsqrtNode,
MrootNode, MsupNode, MsubNode, MsubsupNode, MoNode,
MstyleNode, TextNode, MphantomNode, MfencedNode,
MtableNode, MtrNode, MtdNode, MoverNode, MunderNode,
MunderoverNode, MerrorNode, MtextNode, MpaddedNode,
MspaceNode, MalignMarkNode, UnknownNode
};
enum MathVariant
{
NormalMV = 0x0000,
BoldMV = 0x0001,
ItalicMV = 0x0002,
DoubleStruckMV = 0x0004,
ScriptMV = 0x0008,
FrakturMV = 0x0010,
SansSerifMV = 0x0020,
MonospaceMV = 0x0040
};
enum FormType { PrefixForm, InfixForm, PostfixForm };
enum ColAlign { ColAlignLeft, ColAlignCenter, ColAlignRight };
enum RowAlign { RowAlignTop, RowAlignCenter, RowAlignBottom,
RowAlignAxis, RowAlignBaseline
};
enum FrameType { FrameNone, FrameSolid, FrameDashed };
struct FrameSpacing
{
FrameSpacing( int hor = 0, int ver = 0 )
: m_hor( hor ), m_ver( ver ) {}
int m_hor, m_ver;
};
};
struct QwtMmlOperSpec
{
enum StretchDir { NoStretch, HStretch, VStretch, HVStretch };
const char *name;
QwtMml::FormType form;
const char *attributes[g_oper_spec_rows];
StretchDir stretch_dir;
};
struct QwtMmlNodeSpec
{
QwtMml::NodeType type;
const char *tag;
const char *type_str;
int child_spec;
const char *child_types;
const char *attributes;
enum ChildSpec
{
ChildAny = -1, // any number of children allowed
ChildIgnore = -2, // do not build subexpression of children
ImplicitMrow = -3 // if more than one child, build mrow
};
};
struct QwtMmlEntitySpec
{
const char *name;
const char *value;
};
typedef QMap<QString, QString> QwtMmlAttributeMap;
class QwtMmlNode;
class QwtMmlDocument : public QwtMml
{
public:
QwtMmlDocument();
~QwtMmlDocument();
void clear();
bool setContent( QString text, QString *errorMsg = 0,
int *errorLine = 0, int *errorColumn = 0 );
void paint( QPainter *p, const QPoint &pos ) const;
void dump() const;
QSize size() const;
void layout();
QString fontName( QwtMathMLDocument::MmlFont type ) const;
void setFontName( QwtMathMLDocument::MmlFont type, const QString &name );
int baseFontPointSize() const
{ return m_base_font_point_size; }
void setBaseFontPointSize( int size )
{ m_base_font_point_size = size; }
QColor foregroundColor() const
{ return m_foreground_color; }
void setForegroundColor( const QColor &color )
{ m_foreground_color = color; }
QColor backgroundColor() const
{ return m_background_color; }
void setBackgroundColor( const QColor &color )
{ m_background_color = color; }
private:
void _dump( const QwtMmlNode *node, QString &indent ) const;
bool insertChild( QwtMmlNode *parent, QwtMmlNode *new_node, QString *errorMsg );
QwtMmlNode *domToMml( const QDomNode &dom_node, bool *ok, QString *errorMsg );
QwtMmlNode *createNode( NodeType type, const QwtMmlAttributeMap &mml_attr,
const QString &mml_value, QString *errorMsg );
QwtMmlNode *createImplicitMrowNode( const QDomNode &dom_node, bool *ok,
QString *errorMsg );
void insertOperator( QwtMmlNode *node, const QString &text );
QwtMmlNode *m_root_node;
QString m_normal_font_name;
QString m_fraktur_font_name;
QString m_sans_serif_font_name;
QString m_script_font_name;
QString m_monospace_font_name;
QString m_doublestruck_font_name;
int m_base_font_point_size;
QColor m_foreground_color;
QColor m_background_color;
};
class QwtMmlNode : public QwtMml
{
friend class QwtMmlDocument;
public:
QwtMmlNode( NodeType type, QwtMmlDocument *document, const QwtMmlAttributeMap &attribute_map );
virtual ~QwtMmlNode();
// Mml stuff
NodeType nodeType() const
{ return m_node_type; }
virtual QString toStr() const;
void setRelOrigin( const QPoint &rel_origin );
QPoint relOrigin() const
{ return m_rel_origin; }
void stretchTo( const QRect &rect );
bool isStretched() const
{ return m_stretched; }
QPoint devicePoint( const QPoint &p ) const;
QRect myRect() const
{ return m_my_rect; }
QRect parentRect() const;
virtual QRect deviceRect() const;
void updateMyRect();
virtual void setMyRect( const QRect &rect )
{ m_my_rect = rect; }
virtual void stretch();
virtual void layout();
virtual void paint( QPainter *p );
int basePos() const;
int overlinePos() const;
int underlinePos() const;
int em() const;
int ex() const;
QString explicitAttribute( const QString &name, const QString &def = QString::null ) const;
QString inheritAttributeFromMrow( const QString &name, const QString &def = QString::null ) const;
virtual QFont font() const;
virtual QColor color() const;
virtual QColor background() const;
virtual int scriptlevel( const QwtMmlNode *child = 0 ) const;
// Node stuff
QwtMmlDocument *document() const
{ return m_document; }
QwtMmlNode *parent() const
{ return m_parent; }
QwtMmlNode *firstChild() const
{ return m_first_child; }
QwtMmlNode *nextSibling() const
{ return m_next_sibling; }
QwtMmlNode *previousSibling() const
{ return m_previous_sibling; }
QwtMmlNode *lastSibling() const;
QwtMmlNode *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 *p ) const;
virtual QRect symbolRect() const
{ return QRect( 0, 0, 0, 0 ); }
QwtMmlNode *parentWithExplicitAttribute( const QString &name, NodeType type = NoNode );
int interpretSpacing( const QString &value, bool *ok ) const;
private:
QwtMmlAttributeMap m_attribute_map;
bool m_stretched;
QRect m_my_rect, m_parent_rect;
QPoint m_rel_origin;
NodeType m_node_type;
QwtMmlDocument *m_document;
QwtMmlNode *m_parent,
*m_first_child,
*m_next_sibling,
*m_previous_sibling;
};
class QwtMmlTokenNode : public QwtMmlNode
{
public:
QwtMmlTokenNode( NodeType type, QwtMmlDocument *document,
const QwtMmlAttributeMap &attribute_map )
: QwtMmlNode( type, document, attribute_map ) {}
QString text() const;
};
class QwtMmlMphantomNode : public QwtMmlNode
{
public:
QwtMmlMphantomNode( QwtMmlDocument *document,
const QwtMmlAttributeMap &attribute_map )
: QwtMmlNode(
没有合适的资源?快使用搜索试试~ 我知道了~
qwt已编译,亲测,包括例子和库文件
共1842个文件
html:589个
h:279个
png:232个
4星 · 超过85%的资源 需积分: 49 94 下载量 41 浏览量
2018-08-23
22:03:17
上传
评论
收藏 6.5MB ZIP 举报
温馨提示
官网下载的QWT6.1.2(最新版本),已经编译!包括examples
资源推荐
资源详情
资源评论
收起资源包目录
qwt已编译,亲测,包括例子和库文件 (1842个子文件)
CHANGES-6.1 3KB
COPYING 27KB
qwt_mml_document.cpp 274KB
qwt_symbol.cpp 45KB
qwt_plot_layout.cpp 44KB
qwt_picker.cpp 41KB
qwt_painter.cpp 37KB
qwt_date_scale_engine.cpp 36KB
quotefactory.cpp 33KB
qwt_plot.cpp 32KB
qwt_plot_curve.cpp 32KB
qwt_wheel.cpp 31KB
qwt_scale_engine.cpp 29KB
qwt_plot_canvas.cpp 29KB
qwt_plot_renderer.cpp 29KB
qwt_graphic.cpp 27KB
qwt_plot_rasteritem.cpp 26KB
qwt_slider.cpp 24KB
qwt_thermo.cpp 24KB
qwt_scale_widget.cpp 23KB
qwt_scale_draw.cpp 23KB
qwt_legend.cpp 22KB
qwt_knob.cpp 21KB
qwt_plot_legenditem.cpp 20KB
qwt_dial.cpp 20KB
qwt_point_mapper.cpp 19KB
qwt_plot_multi_barchart.cpp 19KB
qwt_abstract_slider.cpp 19KB
friedberg2007.cpp 19KB
qwt_plot_tradingcurve.cpp 19KB
qwt_plot_histogram.cpp 18KB
qwt_plot_histogram.cpp 18KB
qwt_plot_axis.cpp 18KB
qwt_counter.cpp 18KB
qwt_plot_spectrogram.cpp 18KB
qwt_date.cpp 17KB
qwt_text.cpp 16KB
qwt_plot_item.cpp 16KB
qwt_plot_intervalcurve.cpp 16KB
qwt_plot_rescaler.cpp 16KB
qwt_plot_zoomer.cpp 15KB
qwt_dyngrid_layout.cpp 15KB
qwt_plot_marker.cpp 15KB
qwt_designer_plugin.cpp 14KB
qwt_picker_machine.cpp 14KB
qwt_null_paintdevice.cpp 14KB
qwt_clipper.cpp 13KB
qwt_panner.cpp 13KB
scrollzoomer.cpp 13KB
qwt_magnifier.cpp 12KB
qwt_raster_data.cpp 12KB
qwt_color_map.cpp 12KB
qwt_plot_scaleitem.cpp 12KB
plotmatrix.cpp 12KB
qwt_plot_barchart.cpp 12KB
qwt_plot_shapeitem.cpp 12KB
qwt_dial_needle.cpp 11KB
qwt_abstract_scale.cpp 11KB
qwt_curve_fitter.cpp 10KB
qwt_plot_grid.cpp 10KB
qwt_abstract_scale_draw.cpp 10KB
canvaspicker.cpp 10KB
editor.cpp 10KB
qwt_plot_abstract_barchart.cpp 9KB
qwt_legend_label.cpp 9KB
qwt_plot_picker.cpp 9KB
panel.cpp 9KB
legend.cpp 9KB
qwt_series_data.cpp 9KB
qwt_text_engine.cpp 9KB
qwt_widget_overlay.cpp 9KB
qwt_spline.cpp 9KB
qwt_interval.cpp 9KB
qwt_plot_directpainter.cpp 9KB
qwt_arrow_button.cpp 8KB
qwt_round_scale_draw.cpp 8KB
qwt_system_clock.cpp 8KB
qwt_interval_symbol.cpp 8KB
qwt_matrix_raster_data.cpp 8KB
plot.cpp 8KB
qwt_plot_spectrocurve.cpp 8KB
cpustat.cpp 8KB
qwt_plot_glcanvas.cpp 8KB
qwt_scale_div.cpp 8KB
compass_grid.cpp 8KB
qwt_compass.cpp 8KB
panel.cpp 7KB
plot.cpp 7KB
qwt_plot_zoneitem.cpp 7KB
plot.cpp 7KB
qwt_date_scale_draw.cpp 7KB
qwt_text_label.cpp 7KB
qwt_column_symbol.cpp 7KB
qwt_point_data.cpp 7KB
qwt_event_pattern.cpp 7KB
mainwindow.cpp 7KB
qwt_plot_panner.cpp 7KB
qwt_compass_rose.cpp 7KB
griditem.cpp 7KB
plot.cpp 7KB
共 1842 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19
资源评论
- datianwa2020-03-23有用,感谢分享!
- a2003322019-04-12最好 能 写一下 怎么 编译的步骤,这样就更好了,不能用的话也知道 怎么编译的呢,
一个早起的程序员
- 粉丝: 3833
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功