• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

C:/CVUT/diplomka/Automata_editor/sources/serializers.h

Go to the documentation of this file.
00001 #ifndef _SERIALIZERS_68443198787331_
00002 #define _SERIALIZERS_68443198787331_
00003 
00004 #include "state.h"
00005 #include "transition.h"
00006 
00007 class QGraphicsItem;
00008 #include <QStringList>
00009 
00010 // logging enabled/disabled
00011 #ifdef TESTING_SERIALIZERS
00012 #   define DBGLOG_SER(x) DBGLOG_("SERIALIZER", x)
00013 #else
00014 #   define DBGLOG_SER(x)
00015 #endif
00016 
00017 struct StateSerializer
00018 {
00019     StateSerializer() : m_valid(false) {};
00020     //! serialize state info
00021     StateSerializer(const State &state);
00022     //! copy constructor
00023     StateSerializer(const StateSerializer &other);
00024 
00025     //! returns new state instance, owner is to be delete it
00026     State* createState(Editor *editor, const QPoint &pos);
00027 
00028     bool    m_valid;        //!< if true, contains real state
00029 
00030     QString m_stateName;    //!< holds original state name -> for copying transitions
00031     QPointF m_pos;          //!< needed when pasted in selection
00032     QString m_typeName;     //!< state typeName (StateManager create state according to this)
00033     QString m_label;
00034 
00035     bool    m_dimmed;
00036 
00037     unsigned char   m_stateLineStyle;
00038     float           m_stateLineWidth;
00039     QString         m_stateLineColor;
00040     QString         m_stateLabelColor;
00041     float           m_stateLabelScale;
00042     unsigned char   m_stateFillStatus;
00043     QString         m_stateFillColor;
00044 
00045     unsigned char   m_dimStateLineStyle;
00046     QString         m_dimStateLineColor;
00047     float           m_dimStateLineCoef;
00048     QString         m_dimStateLabelColor;
00049     QString         m_dimStateFillColor;
00050 
00051     float           m_stateLineDoubleCoef;
00052     float           m_stateLineDoubleSep;
00053 
00054     int             m_stateLabelSize;
00055 };
00056 
00057 /*!qRegisterMetaTypeStreamOperators<StateSerializer>("StateSerializer");
00058  * is in editor's constructor.
00059  */ 
00060 QDataStream &operator<<(QDataStream &out, const StateSerializer &serializer);
00061 QDataStream &operator>>(QDataStream &in, StateSerializer &serializer);
00062 
00063 Q_DECLARE_METATYPE(StateSerializer)
00064 
00065 
00066 
00067 struct TransitionSerializer
00068 {
00069     TransitionSerializer() : m_valid(false){};
00070 
00071     TransitionSerializer(const Transition &tr);
00072 
00073     TransitionSerializer(const TransitionSerializer &other);
00074 
00075     //! stateNames is stored in order - startState, endState (or just one state)
00076     Transition* createTransition(Editor *editor, QList<State*> &states);
00077 
00078     bool m_valid;
00079 
00080     QStringList m_stateNames;
00081     QString     m_typeName;
00082     QString     m_label;
00083     int         m_labelPos;
00084 
00085     bool        m_dimmed;
00086 
00087     int     m_arcAngleA;
00088     int     m_arcAngleB;
00089     float   m_nCurv;
00090 
00091     bool        m_leftOriented;
00092     int         m_direction;
00093 
00094     QStringList     m_labels;
00095     QList<float>    m_labelsPositions;
00096     QList<bool>     m_labelsLeftOriented;
00097     
00098     unsigned char   m_edgeLineStyle;
00099     float           m_edgeLineWidth;
00100     QString         m_edgeLineColor;
00101     QString         m_edgeLabelColor;
00102     float           m_edgeLabelScale;
00103     bool            m_edgeLineDblStatus;
00104     float           m_edgeLineBorderCoef;
00105     QString         m_edgeLineBorderColor;
00106     float           m_edgeLineDblCoef;
00107     float           m_edgeLineDblSep;
00108     unsigned char   m_dimEdgeLineStyle;
00109     QString         m_dimEdgeLineColor;
00110     float           m_dimEdgeLineCoef;
00111     QString         m_dimEdgeLabelColor;
00112 };
00113 
00114 /*!qRegisterMetaTypeStreamOperators<TransitionSerializer>("TransitionSerializer");
00115  * is in editor's constructor.
00116  */ 
00117 QDataStream &operator<<(QDataStream &out, const TransitionSerializer &serializer);
00118 QDataStream &operator>>(QDataStream &in, TransitionSerializer &serializer);
00119 
00120 Q_DECLARE_METATYPE(TransitionSerializer)
00121 
00122 
00123 
00124 struct SelectionSerializer
00125 {
00126     SelectionSerializer() : m_valid(false) {};
00127 
00128     SelectionSerializer(const QList<QGraphicsItem*> &items);
00129 
00130     SelectionSerializer(const SelectionSerializer &other);
00131 
00132     //! only states are needed in list, since pointers to transitions are stored in states
00133     typedef QList<State*>                       TStateList;
00134     typedef QList<Transition*>                  TTransitionList;
00135     typedef QPair<TStateList, TTransitionList>  TItemsPair;
00136     TItemsPair createItems(Editor *editor, const QPoint& pos);    
00137 
00138     typedef QList<QGraphicsItem*>   TItemList;      //!< constructor argument
00139     typedef QMap<QString, State*>   TStateNameMap;  //!< maps original to new state's names
00140 
00141     bool    m_valid;
00142 
00143     QPointF m_hotSpot; //!< center of selection, states needs to memorize translation against this point
00144 
00145     typedef QList<StateSerializer>      TSerializedStatesList;
00146     typedef QList<TransitionSerializer> TSerializedTransitionsList;
00147 
00148     TSerializedStatesList       m_serializedStates;
00149     TSerializedTransitionsList  m_serializedTransitions;    
00150 };
00151 
00152 /*!qRegisterMetaTypeStreamOperators<SelectionSerializer>("SelectionSerializer");
00153  * is in editor's constructor.
00154  */ 
00155 QDataStream &operator<<(QDataStream &out, const SelectionSerializer &serializer);
00156 QDataStream &operator>>(QDataStream &in, SelectionSerializer &serializer);
00157 
00158 Q_DECLARE_METATYPE(SelectionSerializer)
00159 
00160 
00161 
00162 #endif //_SERIALIZERS_68443198787331_

Generated on Tue Jan 4 2011 03:03:23 for Autoamata editor by  doxygen 1.7.0