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
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
00021 StateSerializer(const State &state);
00022
00023 StateSerializer(const StateSerializer &other);
00024
00025
00026 State* createState(Editor *editor, const QPoint &pos);
00027
00028 bool m_valid;
00029
00030 QString m_stateName;
00031 QPointF m_pos;
00032 QString m_typeName;
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
00058
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
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
00115
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
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;
00139 typedef QMap<QString, State*> TStateNameMap;
00140
00141 bool m_valid;
00142
00143 QPointF m_hotSpot;
00144
00145 typedef QList<StateSerializer> TSerializedStatesList;
00146 typedef QList<TransitionSerializer> TSerializedTransitionsList;
00147
00148 TSerializedStatesList m_serializedStates;
00149 TSerializedTransitionsList m_serializedTransitions;
00150 };
00151
00152
00153
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_