00001 /****************************************************************************************************** 00002 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released * 00003 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file * 00004 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. * 00005 ******************************************************************************************************/ 00006 00007 #ifndef TRANSFORMATION_STATE_ABSTRACT_BASE_H 00008 #define TRANSFORMATION_STATE_ABSTRACT_BASE_H 00009 00010 class CmdMediator; 00011 class DocumentModelAxesChecker; 00012 class QColor; 00013 class QString; 00014 class Transformation; 00015 class TransformationStateContext; 00016 00018 enum TransformationState { 00019 TRANSFORMATION_STATE_DEFINED, 00020 TRANSFORMATION_STATE_UNDEFINED, 00021 NUM_TRANSFORMATION_STATES 00022 }; 00023 00025 class TransformationStateAbstractBase 00026 { 00027 public: 00029 TransformationStateAbstractBase(TransformationStateContext &context); 00030 virtual ~TransformationStateAbstractBase(); 00031 00033 virtual void begin(CmdMediator &cmdMediator, 00034 const Transformation &transformation, 00035 const QString &selectedGraphCurve) = 0; 00036 00038 virtual void end(CmdMediator &cmdMediator, 00039 const Transformation &transformation) = 0; 00040 00042 virtual void updateAxesChecker (CmdMediator &cmdMediator, 00043 const Transformation &transformation) = 0; 00044 00045 protected: 00047 TransformationStateContext &context (); 00048 00049 private: 00050 TransformationStateAbstractBase(); 00051 00052 TransformationStateContext &m_context; 00053 }; 00054 00055 #endif // TRANSFORMATION_STATE_ABSTRACT_BASE_H