void DigitizeStatePointMatch::createPermanentPoint (CmdMediator *cmdMediator,
                                                    const QPointF &posScreen)
{
  // Create command to add point
  OrdinalGenerator ordinalGenerator;
  Document &document = cmdMediator->document ();
  const Transformation &transformation = context ().mainWindow ().transformation();
  QUndoCommand *cmd = new CmdAddPointGraph (context ().mainWindow(),
                                            document,
                                            context ().mainWindow().selectedGraphCurve(),
                                            posScreen,
                                            ordinalGenerator.generateCurvePointOrdinal(document,
                                                                                       transformation,
                                                                                       posScreen,
                                                                                       activeCurve ()));
  context().appendNewCmd(cmdMediator,
                         cmd);

}
示例#2
0
void DigitizeStateSegment::slotMouseClickOnSegment(QPointF posSegmentStart)
{
    LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateSegment::slotMouseClickOnSegment";

    Segment *segment = segmentFromSegmentStart (posSegmentStart);

    // Create single-entry list that is expected by SegmentFactory
    QList<Segment*> segments;
    segments.push_back (segment);

    // Generate point coordinates. Nothing is created in the GraphicsScene at this point
    GraphicsScene &scene = context().mainWindow().scene();
    SegmentFactory segmentFactory ((QGraphicsScene &) scene,
                                   context().isGnuplot());

    QList<QPoint> points = segmentFactory.fillPoints (m_cmdMediator->document().modelSegments(),
                           segments);

    // Create one ordinal for each point
    OrdinalGenerator ordinalGenerator;
    Document &document = m_cmdMediator->document ();
    const Transformation &transformation = context ().mainWindow ().transformation();
    QList<double> ordinals;
    QList<QPoint>::iterator itr;
    for (itr = points.begin(); itr != points.end(); itr++) {

        QPoint point = *itr;
        ordinals << ordinalGenerator.generateCurvePointOrdinal(document,
                 transformation,
                 point,
                 activeCurve ());
    }

    // Create command to add points
    QUndoCommand *cmd = new CmdAddPointsGraph (context ().mainWindow(),
            document,
            context ().mainWindow().selectedGraphCurve(),
            points,
            ordinals);
    context().appendNewCmd(m_cmdMediator,
                           cmd);
}