/******************************************************************* Part of the Fritzing project - http://fritzing.org Copyright (c) 2007-2014 Fachhochschule Potsdam - http://fh-potsdam.de Fritzing is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Fritzing is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Fritzing. If not, see . ******************************************************************** $Revision: 6904 $: $Author: irascibl@gmail.com $: $Date: 2013-02-26 16:26:03 +0100 (Di, 26. Feb 2013) $ ********************************************************************/ #ifndef PEGRAPHICSITEM_H_ #define PEGRAPHICSITEM_H_ #include #include #include #include #include #include #include class PEGraphicsItem : public QObject, public QGraphicsRectItem { Q_OBJECT public: PEGraphicsItem(double x, double y, double width, double height, class ItemBase *); ~PEGraphicsItem(); void hoverEnterEvent(QGraphicsSceneHoverEvent *); void hoverLeaveEvent(QGraphicsSceneHoverEvent *); void wheelEvent(QGraphicsSceneWheelEvent *); void mousePressEvent(QGraphicsSceneMouseEvent *); void mouseMoveEvent(QGraphicsSceneMouseEvent *); void mouseReleaseEvent(QGraphicsSceneMouseEvent *); void setHighlighted(bool); bool highlighted(); void setElement(QDomElement &); QDomElement & element(); void setOffset(QPointF); QPointF offset(); void showTerminalPoint(bool); bool showingTerminalPoint(); void showMarquee(bool); bool showingMarquee(); void setTerminalPoint(QPointF); QPointF terminalPoint(); void setPendingTerminalPoint(QPointF); QPointF pendingTerminalPoint(); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void setPickAppearance(bool); void flash(); class ItemBase * itemBase(); signals: void highlightSignal(PEGraphicsItem *); void mousePressedSignal(PEGraphicsItem *, bool & ignore); void mouseReleasedSignal(PEGraphicsItem *); void terminalPointMoved(PEGraphicsItem *, QPointF); void terminalPointChanged(PEGraphicsItem *, QPointF before, QPointF after); protected slots: void restoreColor(); protected: bool m_highlighted; bool m_flash; QDomElement m_element; QPointF m_offset; bool m_showTerminalPoint; bool m_showMarquee; QPointF m_terminalPoint; QPointF m_pendingTerminalPoint; bool m_dragTerminalPoint; QPointF m_dragTerminalOrigin; QPointF m_terminalPointOrigin; bool m_drawHighlight; int m_wheelAccum; qreal m_savedOpacity; bool m_pick; class ItemBase * m_itemBase; }; #endif /* PEGRAPHICSITEM_H_ */