00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ITEM_H
00021 #define ITEM_H
00022
00023
00024 #include <QtGui/QGraphicsItem>
00025 #include <QtGui/QPen>
00026
00027
00028 class QGraphicsSceneMouseEvent;
00029
00030
00031 namespace qsapecng
00032 {
00033
00034
00035 class SchematicScene;
00036
00037
00038 class Item: public QGraphicsItem
00039 {
00040
00041 public:
00042 Item(QGraphicsItem* parent = 0, SchematicScene* scene = 0);
00043 virtual ~Item() { }
00044
00045 enum { Type = UserType + 1 };
00046 enum { OpacityFactor = 3 };
00047
00048 enum ItemType {
00049 Std = Type,
00050 Wire,
00051 Label
00052 };
00053
00054 virtual inline ItemType itemType() const { return Std; }
00055 virtual inline int type() const { return Type; }
00056
00057 virtual void mirror();
00058 virtual void rotate();
00059 virtual void rotateBack();
00060
00061 bool mirrored() const;
00062 bool rotated() const;
00063 uint angle() const;
00064
00065 SchematicScene* schematicScene() const;
00066
00067 protected:
00068 virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event);
00069 virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
00070
00071 protected:
00072 qreal penWidth() const;
00073 QPen defaultPen_;
00074 QPen itemPen_;
00075
00076 private:
00077 bool mirrored_;
00078 uint angle_;
00079
00080 };
00081
00082
00083 }
00084
00085
00086 #endif // ITEM_H