// Copyright (c) 2008 GeometryFactory Sarl (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org); you may redistribute it under // the terms of the Q Public License version 1.0. // See the file LICENSE.QPL distributed with CGAL. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // // $URL$ // $Id$ // // // Author(s) : Andreas Fabri // Laurent Rineau #ifndef CGAL_QT_LINE_GRAPHICS_ITEM_H #define CGAL_QT_LINE_GRAPHICS_ITEM_H #include #include #include #include #include #include #include namespace CGAL { namespace Qt { template class LineGraphicsItem : public GraphicsItem { typedef typename CK::Line_2 Line_2; public: LineGraphicsItem(); void modelChanged(); public: QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); const QPen& verticesPen() const { return this->vertices_pen; } const QPen& edgesPen() const { return edges_pen; } void setVerticesPen(const QPen& pen) { this->vertices_pen = pen; } void setEdgesPen(const QPen& pen) { edges_pen = pen; } void setLine(const Line_2& a); Line_2 line() const { return line_; } protected: QPainter* m_painter; PainterOstream painterostream; QPen edges_pen; Line_2 line_; }; template void LineGraphicsItem::setLine(const Line_2& a) { line_ = a; update(); } template LineGraphicsItem::LineGraphicsItem() : painterostream(0) { this->hide(); setZValue(13); } template QRectF LineGraphicsItem::boundingRect() const { std::cerr << "Enter boundingRect" << std::endl; if(isVisible()){ std::cerr << "visible" << std::endl; QRectF rect = CGAL::Qt::viewportsBbox(scene()); assert(rect.isValid()); return rect; } else { std::cerr << "not visible" << std::endl; return QRectF(); } } template void LineGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget * widget) { painter->setPen(this->edgesPen()); std::cerr << "in paint" << std::endl; painterostream = PainterOstream(painter, boundingRect()); painterostream << line_; } template void LineGraphicsItem::modelChanged() { update(); } } // namespace Qt } // namespace CGAL #endif // CGAL_QT_LINE_GRAPHICS_ITEM_H