Brief description of class still missing. More...
#include <DrawScene.h>
Public Types | |
enum | CoordinateType { CartesianAbsolute, CartesianRelative, PolarAbsolute, PolarRelative } |
enum | Unit { Millimeter, Centimeter, Meter, Kilometer } |
Public Member Functions | |
DimensionItem * | addDimension (const QLineF &line, const QFont &f=QFont(), const QPen &pen=QPen(), const QBrush &brush=QBrush()) |
EllipseItem * | addEllipse (const QRectF &rect, double start, double span, const QPen &pen=QPen(), const QBrush &brush=QBrush()) |
QGraphicsLineItem * | addLine (const QLineF &line, const QPen &pen=QPen()) |
QGraphicsRectItem * | addRect (const QRectF &rect, const QPen &pen=QPen(), const QBrush &brush=QBrush()) |
TextItem * | addText (const QString &t, const QFont &f=QFont(), const QPen &pen=QPen(), const QBrush &brush=QBrush()) |
const QBrush & | brush () const |
void | clear () |
QPointF | currentPoint () const |
DrawScene () | |
const QFont & | font () const |
double | margin () const |
void | moveTo (const QPointF &p) |
QList< QPointF > | nodes (const QRectF &rect) |
bool | parse (const QString cmd) |
const QPen & | pen () const |
double | scale () const |
double | scale (double val) |
QPointF | scale (const QPointF &p) |
bool | scaling () const |
void | setBrush (const QBrush &b) |
void | setCoordinateType (CoordinateType ct) |
void | setCurrentPoint (double x, double y) |
void | setFont (const QFont &f) |
void | setMargin (double m) |
void | setPen (const QPen &p) |
void | setScale (double s) |
void | setScaling (bool s) |
void | setUnit (Unit u) |
Unit | unit () const |
double | unitToDots (int dpi) |
~DrawScene () |
Brief description of class still missing.
Full description of class still missing
enum DrawScene::Unit |
{Millimeter, Centimeter, Meter, Kilometer};
Description of constructor still missing
References CartesianAbsolute, Millimeter, and TRACE.
: QGraphicsScene() { TRACE; _scale=1.0; _unit=Millimeter; _margin=2.0; // 2 cm margin _scaling=true; _currentAzimuth=90.0; _coordinateType=CartesianAbsolute; _currentPoint=QPointF(); _currentFont=QFont("Nimbus Sans L", 12); _lineDelegate=new LineItemDelegate; _rectDelegate=new RectItemDelegate; _ellipseDelegate=new EllipseItemDelegate; _textDelegate=new TextItemDelegate; _dimensionDelegate=new DimensionItemDelegate; }
DimensionItem * DrawScene::addDimension | ( | const QLineF & | line, |
const QFont & | f = QFont() , |
||
const QPen & | pen = QPen() , |
||
const QBrush & | brush = QBrush() |
||
) |
References DimensionItem::setFont().
{ DimensionItem * item=new DimensionItem(line); item->setBrush(brush); item->setPen(pen); item->setFont(f); addItem(item); item->setFlag(QGraphicsItem::ItemIsSelectable, true); QByteArray delegatePtr(( const char * ) &_dimensionDelegate, sizeof(DrawItemDelegate * )); item->setData(0, delegatePtr); return item; }
EllipseItem * DrawScene::addEllipse | ( | const QRectF & | rect, |
double | start, | ||
double | span, | ||
const QPen & | pen = QPen() , |
||
const QBrush & | brush = QBrush() |
||
) |
{ EllipseItem * item=new EllipseItem(rect, start, span); item->setPen(pen); item->setBrush(brush); addItem(item); item->setFlag(QGraphicsItem::ItemIsSelectable, true); QByteArray delegatePtr(( const char * ) &_ellipseDelegate, sizeof(DrawItemDelegate * )); item->setData(0, delegatePtr); return item; }
QGraphicsLineItem * DrawScene::addLine | ( | const QLineF & | line, |
const QPen & | pen = QPen() |
||
) |
{ QGraphicsLineItem *item=new QGraphicsLineItem(line); item->setPen(pen); addItem(item); item->setFlag(QGraphicsItem::ItemIsSelectable, true); QByteArray delegatePtr(( const char * ) &_lineDelegate, sizeof(DrawItemDelegate * )); item->setData(0, delegatePtr); return item; }
QGraphicsRectItem * DrawScene::addRect | ( | const QRectF & | rect, |
const QPen & | pen = QPen() , |
||
const QBrush & | brush = QBrush() |
||
) |
{ QGraphicsRectItem *item=new QGraphicsRectItem(rect); item->setPen(pen); item->setBrush(brush); addItem(item); item->setFlag(QGraphicsItem::ItemIsSelectable, true); QByteArray delegatePtr(( const char * ) &_rectDelegate, sizeof(DrawItemDelegate * )); item->setData(0, delegatePtr); return item; }
TextItem * DrawScene::addText | ( | const QString & | t, |
const QFont & | f = QFont() , |
||
const QPen & | pen = QPen() , |
||
const QBrush & | brush = QBrush() |
||
) |
References TextItem::setFont().
const QBrush& DrawScene::brush | ( | ) | const [inline] |
{return _currentBrush;}
void DrawScene::clear | ( | ) |
References CartesianAbsolute.
Referenced by MapProject::open(), and MapProject::setScript().
{ QList<QGraphicsItem *> itemList=items(); for(QList<QGraphicsItem *>::iterator it=itemList.begin(); it!=itemList.end();it++) { removeItem(*it); delete *it; } _currentAzimuth=90.0; _coordinateType=CartesianAbsolute; _currentPoint=QPointF(); _currentPen=QPen(); _currentBrush=QBrush(); printf("Reset\n"); printf("Current point %lf, %lf, current azimuth %lf\n",_currentPoint.x(),_currentPoint.y(), _currentAzimuth); }
QPointF DrawScene::currentPoint | ( | ) | const [inline] |
Referenced by MapProject::currentPoint(), and DrawView::drawForeground().
{return _currentPoint;}
const QFont& DrawScene::font | ( | ) | const [inline] |
{return _currentFont;}
double DrawScene::margin | ( | ) | const [inline] |
Referenced by MapProject::print().
{return _margin;}
void DrawScene::moveTo | ( | const QPointF & | p | ) |
Moves current point according current type of coordinates
References CartesianAbsolute, CartesianRelative, QGpCoreTools::cos(), PolarAbsolute, PolarRelative, and QGpCoreTools::sin().
{ switch(_coordinateType) { case CartesianAbsolute: if(p!=_currentPoint) { _currentAzimuth=Angle::mathToGeographic(atan2(p.y()-_currentPoint.y(), p.x()-_currentPoint.x())); } _currentPoint=QPointF(p.x(), -p.y()); break; case CartesianRelative: if(p.x()!=0.0 || p.y()!=0.0) { _currentAzimuth=Angle::mathToGeographic(atan2(p.y(), p.x())); } _currentPoint+=QPointF(p.x(), -p.y()); break; case PolarAbsolute: { _currentAzimuth=p.y(); double a=Angle::geographicToMath(p.y()); _currentPoint+=QPointF(p.x()*cos(a), -p.x()*sin(a)); } break; case PolarRelative: { _currentAzimuth+=p.y(); double a=Angle::geographicToMath(_currentAzimuth); _currentPoint+=QPointF(p.x()*cos(a), -p.x()*sin(a)); } break; } printf("Current point %lf, %lf, current azimuth %lf\n",_currentPoint.x(),-_currentPoint.y(), _currentAzimuth); }
QList< QPointF > DrawScene::nodes | ( | const QRectF & | rect | ) |
Referenced by DrawView::setMousePoint().
{ QList<QGraphicsItem *> itemList=items(rect, Qt::IntersectsItemBoundingRect); QList<QPointF> nodes; for(QList<QGraphicsItem *>::iterator it=itemList.begin(); it!=itemList.end(); it++ ) { nodes << ( *reinterpret_cast<DrawItemDelegate **>((*it)->data(0).toByteArray().data()) )->nodes( *it); } return nodes; }
bool DrawScene::parse | ( | const QString | cmd | ) |
References SceneContext::run(), and TRACE.
Referenced by DrawConsole::addCommand(), MapProject::addCommand(), MapProject::open(), and MapProject::setScript().
{ TRACE; SceneContext context(this); context.run(cmd); return true; }
const QPen& DrawScene::pen | ( | ) | const [inline] |
{return _currentPen;}
double DrawScene::scale | ( | ) | const [inline] |
{return _scale;}
double DrawScene::scale | ( | double | val | ) |
If scaling is not active, val is assumed to be in cm.
{ if(_scaling) { return val; } else { return scaleHelper(val); } }
QPointF DrawScene::scale | ( | const QPointF & | p | ) |
If scaling is not active, p is assumed to be in cm.
References CartesianAbsolute, CartesianRelative, PolarAbsolute, and PolarRelative.
{ if(_scaling) { return p; } else { QPointF np; switch(_coordinateType) { case CartesianAbsolute: case CartesianRelative: np.setX(scaleHelper(p.x())); np.setY(scaleHelper(p.y())); break; case PolarAbsolute: case PolarRelative: np.setX(scaleHelper(p.x())); np.setY(p.y()); break; } return np; } }
bool DrawScene::scaling | ( | ) | const [inline] |
{return _scaling;}
void DrawScene::setBrush | ( | const QBrush & | b | ) | [inline] |
{_currentBrush=b;}
void DrawScene::setCoordinateType | ( | CoordinateType | ct | ) | [inline] |
{_coordinateType=ct;}
void DrawScene::setCurrentPoint | ( | double | x, |
double | y | ||
) |
Moves current point to an absolute position independently of the current coordinate type.
{ _currentPoint=QPointF(x, y); }
void DrawScene::setFont | ( | const QFont & | f | ) | [inline] |
{_currentFont=f;}
void DrawScene::setMargin | ( | double | m | ) | [inline] |
{_margin=m;}
void DrawScene::setPen | ( | const QPen & | p | ) | [inline] |
{_currentPen=p;}
void DrawScene::setScale | ( | double | s | ) | [inline] |
{_scale=s;}
void DrawScene::setScaling | ( | bool | s | ) | [inline] |
{_scaling=s;}
void DrawScene::setUnit | ( | Unit | u | ) | [inline] |
{_unit=u;}
Unit DrawScene::unit | ( | ) | const [inline] |
{return _unit;}
double DrawScene::unitToDots | ( | int | dpi | ) |
References Centimeter, Kilometer, Meter, and Millimeter.
Referenced by MapProject::print().
{ double s=dpi/2.54; // Number of dots per cm switch(_unit) { case Millimeter: s*=0.1; break; case Centimeter: break; case Meter: s*=100.0; break; case Kilometer: s*=100000.0; break; } s*=_scale; return s; }