00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "EngaugeAssert.h"
00009 #include "Logger.h"
00010 #include <QGraphicsScene>
00011 #include <QImage>
00012 #include "TransformationStateAbstractBase.h"
00013 #include "TransformationStateContext.h"
00014 #include "TransformationStateDefined.h"
00015 #include "TransformationStateUndefined.h"
00016
00017 TransformationStateContext::TransformationStateContext(QGraphicsScene &scene,
00018 bool isGnuplot) :
00019 m_isGnuplot (isGnuplot)
00020 {
00021 m_states.insert (TRANSFORMATION_STATE_DEFINED , new TransformationStateDefined (*this, scene));
00022 m_states.insert (TRANSFORMATION_STATE_UNDEFINED, new TransformationStateUndefined (*this, scene));
00023 ENGAUGE_ASSERT (m_states.size () == NUM_TRANSFORMATION_STATES);
00024
00025 m_currentState = NUM_TRANSFORMATION_STATES;
00026 }
00027
00028 TransformationStateContext::~TransformationStateContext()
00029 {
00030 }
00031
00032 bool TransformationStateContext::isGnuplot() const
00033 {
00034 return m_isGnuplot;
00035 }
00036
00037 void TransformationStateContext::resetOnLoad ()
00038 {
00039 LOG4CPP_INFO_S ((*mainCat)) << "TransformationStateContext::resetOnLoad";
00040
00041 m_currentState = NUM_TRANSFORMATION_STATES;
00042 }
00043
00044 void TransformationStateContext::triggerStateTransition (TransformationState transformationState,
00045 CmdMediator &cmdMediator,
00046 const Transformation &transformation,
00047 const QString &selectedGraphCurve)
00048 {
00049 LOG4CPP_INFO_S ((*mainCat)) << "TransformationStateContext::triggerStateTransition";
00050
00051
00052
00053
00054
00055 if (m_currentState != NUM_TRANSFORMATION_STATES) {
00056 m_states[m_currentState]->end(cmdMediator,
00057 transformation);
00058 }
00059
00060 m_currentState = transformationState;
00061
00062
00063 m_states[m_currentState]->begin(cmdMediator,
00064 transformation,
00065 selectedGraphCurve);
00066 }
00067
00068 void TransformationStateContext::updateAxesChecker (CmdMediator &cmdMediator,
00069 const Transformation &transformation)
00070 {
00071 LOG4CPP_INFO_S ((*mainCat)) << "TransformationStateContext::updateAxesChecker";
00072
00073
00074 if (m_currentState < NUM_TRANSFORMATION_STATES) {
00075
00076 m_states[m_currentState]->updateAxesChecker (cmdMediator,
00077 transformation);
00078
00079 }
00080 }