#include <QApplication>
#include <QMap>
#include <QDesktopWidget>
#include <QPainter>
#include <QDomNode>
#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( MphantomNode, docu
没有合适的资源?快使用搜索试试~ 我知道了~
qt图形开发之qwt6-0-1
共1144个文件
html:388个
png:177个
cpp:139个
5星 · 超过95%的资源 需积分: 50 56 下载量 169 浏览量
2013-10-12
17:32:05
上传
评论
收藏 3.38MB ZIP 举报
温馨提示
QWT[1],全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性
资源推荐
资源详情
资源评论
收起资源包目录
qt图形开发之qwt6-0-1 (1144个子文件)
CHANGES 18KB
COPYING 27KB
qwt_mml_document.cpp 274KB
qwt_plot_layout.cpp 38KB
qwt_picker.cpp 37KB
qwt_plot_curve.cpp 29KB
qwt_plot_canvas.cpp 28KB
qwt_dial.cpp 28KB
qwt_symbol.cpp 26KB
qwt_thermo.cpp 25KB
qwt_plot_rasteritem.cpp 25KB
qwt_scale_engine.cpp 24KB
qwt_plot_renderer.cpp 23KB
qwt_scale_draw.cpp 22KB
qwt_scale_widget.cpp 22KB
qwt_slider.cpp 21KB
qwt_painter.cpp 20KB
qwt_plot.cpp 19KB
friedberg2007.cpp 19KB
qwt_plot_spectrogram.cpp 18KB
qwt_plot_histogram.cpp 17KB
qwt_plot_axis.cpp 17KB
qwt_knob.cpp 17KB
qwt_plot_rescaler.cpp 15KB
qwt_text.cpp 15KB
qwt_plot_zoomer.cpp 15KB
qwt_plot_marker.cpp 15KB
qwt_plot_intervalcurve.cpp 14KB
qwt_counter.cpp 14KB
qwt_series_data.cpp 14KB
qwt_dyngrid_layout.cpp 14KB
qwt_wheel.cpp 14KB
qwt_abstract_slider.cpp 14KB
qwt_legend.cpp 13KB
qwt_panner.cpp 12KB
qwt_designer_plugin.cpp 12KB
qwt_clipper.cpp 12KB
scrollzoomer.cpp 12KB
qwt_plot_item.cpp 12KB
qwt_dial_needle.cpp 12KB
qwt_magnifier.cpp 11KB
qwt_raster_data.cpp 11KB
qwt_picker_machine.cpp 11KB
qwt_plot_scaleitem.cpp 11KB
qwt_color_map.cpp 10KB
qwt_double_range.cpp 10KB
qwt_null_paintdevice.cpp 10KB
qwt_abstract_scale_draw.cpp 10KB
qwt_curve_fitter.cpp 9KB
qwt_plot_picker.cpp 9KB
qwt_legend_item.cpp 9KB
qwt_text_engine.cpp 9KB
qwt_scale_map.cpp 9KB
canvaspicker.cpp 9KB
qwt_spline.cpp 9KB
qwt_plot_directpainter.cpp 8KB
qwt_arrow_button.cpp 8KB
qwt_round_scale_draw.cpp 8KB
qwt_plot_grid.cpp 8KB
qwt_interval.cpp 8KB
panel.cpp 8KB
plotmatrix.cpp 8KB
cpustat.cpp 8KB
qwt_system_clock.cpp 8KB
mainwindow.cpp 8KB
qwt_interval_symbol.cpp 8KB
qwt_plot_spectrocurve.cpp 7KB
qwt_matrix_raster_data.cpp 7KB
plot.cpp 7KB
qwt_compass.cpp 7KB
qwt_abstract_scale.cpp 7KB
qwt_column_symbol.cpp 7KB
qwt_event_pattern.cpp 7KB
qwt_compass_rose.cpp 7KB
qwt_text_label.cpp 7KB
plot.cpp 6KB
compass_grid.cpp 6KB
cpuplot.cpp 6KB
sliders.cpp 5KB
qwt_analog_clock.cpp 5KB
mainwindow.cpp 5KB
ampfrm.cpp 5KB
mainwindow.cpp 5KB
plot.cpp 5KB
qwt_plot_svgitem.cpp 5KB
plot.cpp 5KB
cockpit_grid.cpp 5KB
sinusplot.cpp 5KB
curvdemo1.cpp 5KB
curvdemo2.cpp 5KB
qwt_plot_dict.cpp 5KB
plot.cpp 4KB
plot.cpp 4KB
qwt_plot_panner.cpp 4KB
qwt_scale_div.cpp 4KB
plot.cpp 4KB
sysinfo.cpp 4KB
scrollbar.cpp 4KB
plot.cpp 4KB
tvplot.cpp 3KB
共 1144 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
- 映影留心2014-06-26不错,不错,要学习学习。。。。。。。
- Rat_boy2014-04-18挺好的,就是有点丑。
- cdj200915592020-07-23挺好的,可以用
huangyuancao
- 粉丝: 11
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功