00001
00002
00003
00004
00005
00006
00007 #include "CurveConnectAs.h"
00008 #include "GeometryStrategyContext.h"
00009 #include "GeometryStrategyFunctionSmooth.h"
00010 #include "GeometryStrategyFunctionStraight.h"
00011 #include "GeometryStrategyRelationSmooth.h"
00012 #include "GeometryStrategyRelationStraight.h"
00013 #include "Transformation.h"
00014
00015 GeometryStrategyContext::GeometryStrategyContext()
00016 {
00017 m_strategies.insert (CONNECT_AS_FUNCTION_SMOOTH , new GeometryStrategyFunctionSmooth ());
00018 m_strategies.insert (CONNECT_AS_FUNCTION_STRAIGHT, new GeometryStrategyFunctionStraight ());
00019 m_strategies.insert (CONNECT_AS_RELATION_SMOOTH , new GeometryStrategyRelationSmooth ());
00020 m_strategies.insert (CONNECT_AS_RELATION_STRAIGHT, new GeometryStrategyRelationStraight ());
00021 }
00022
00023 GeometryStrategyContext::~GeometryStrategyContext()
00024 {
00025 }
00026
00027 void GeometryStrategyContext::calculateGeometry (const Points &points,
00028 const DocumentModelCoords &modelCoords,
00029 const DocumentModelGeneral &modelGeneral,
00030 const MainWindowModel &modelMainWindow,
00031 const Transformation &transformation,
00032 CurveConnectAs connectAs,
00033 QString &funcArea,
00034 QString &polyArea,
00035 QVector<QString> &x,
00036 QVector<QString> &y,
00037 QVector<QString> &distanceGraphForward,
00038 QVector<QString> &distancePercentForward,
00039 QVector<QString> &distanceGraphBackward,
00040 QVector<QString> &distancePercentBackward) const
00041 {
00042 if (transformation.transformIsDefined()) {
00043
00044 m_strategies [connectAs]->calculateGeometry (points,
00045 modelCoords,
00046 modelGeneral,
00047 modelMainWindow,
00048 transformation,
00049 funcArea,
00050 polyArea,
00051 x,
00052 y,
00053 distanceGraphForward,
00054 distancePercentForward,
00055 distanceGraphBackward,
00056 distancePercentBackward);
00057 }
00058 }