/* Handles.cpp * * Copyright (C) 2013 Jim Evins * * This file is part of gLabels-qt. * * gLabels-qt 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. * * gLabels-qt 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 gLabels-qt. If not, see . */ #include "Handles.h" #include "LabelModelObject.h" #include namespace { const double handlePixels = 7; const double handleOutlineWidthPixels = 1; const QColor handleFillColor( 0, 192, 0, 96 ); const QColor handleOutlineColor( 0, 0, 0, 192 ); } /// /// Handle Constructor /// glabels::Handle::Handle( LabelModelObject* owner ) : mOwner(owner) { } /// /// Handle Destructor /// glabels::Handle::~Handle() { } /// /// Draw Handle at x,y /// void glabels::Handle::drawAt( QPainter* painter, double x, double y ) const { painter->save(); painter->translate( x, y ); painter->resetTransform(); painter->setPen( QPen( handleOutlineColor, handleOutlineWidthPixels ) ); painter->setBrush( handleFillColor ); painter->drawRect( -handlePixels/2, -handlePixels/2, handlePixels, handlePixels ); painter->restore(); } /// /// Create Handle path at x,y /// QPainterPath glabels::Handle::pathAt( QPainter *painter, double x, double y ) const { QPainterPath path; QTransform transform = painter->transform(); double sx = 1/transform.m11(); double sy = 1/transform.m22(); path.addRect( -sx*handlePixels/2, -sy*handlePixels/2, sx*handlePixels, sy*handlePixels ); path.translate( x, y ); return path; } /// /// HandleNorth Constructor /// glabels::HandleNorth::HandleNorth( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleNorth Destructor /// glabels::HandleNorth::~HandleNorth() { } /// /// Draw HandleNorth /// void glabels::HandleNorth::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleNorth Path /// QPainterPath glabels::HandleNorth::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleNorthEast Constructor /// glabels::HandleNorthEast::HandleNorthEast( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleNorthEast Destructor /// glabels::HandleNorthEast::~HandleNorthEast() { } /// /// Draw HandleNorthEast /// void glabels::HandleNorthEast::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleNorthEast Path /// QPainterPath glabels::HandleNorthEast::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleEast Constructor /// glabels::HandleEast::HandleEast( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleEast Destructor /// glabels::HandleEast::~HandleEast() { } /// /// Draw HandleEast /// void glabels::HandleEast::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleEast Path /// QPainterPath glabels::HandleEast::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouthEast Constructor /// glabels::HandleSouthEast::HandleSouthEast( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleSouthEast Destructor /// glabels::HandleSouthEast::~HandleSouthEast() { } /// /// Draw HandleSouthEast /// void glabels::HandleSouthEast::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouthEast Path /// QPainterPath glabels::HandleSouthEast::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouth Constructor /// glabels::HandleSouth::HandleSouth( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleSouth Destructor /// glabels::HandleSouth::~HandleSouth() { } /// /// Draw HandleSouth /// void glabels::HandleSouth::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouth Path /// QPainterPath glabels::HandleSouth::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouthWest Constructor /// glabels::HandleSouthWest::HandleSouthWest( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleSouthWest Destructor /// glabels::HandleSouthWest::~HandleSouthWest() { } /// /// Draw HandleSouthWest /// void glabels::HandleSouthWest::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleSouthWest Path /// QPainterPath glabels::HandleSouthWest::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleWest Constructor /// glabels::HandleWest::HandleWest( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleWest Destructor /// glabels::HandleWest::~HandleWest() { } /// /// Draw HandleWest /// void glabels::HandleWest::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleWest Path /// QPainterPath glabels::HandleWest::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleNorthWest Constructor /// glabels::HandleNorthWest::HandleNorthWest( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleNorthWest Destructor /// glabels::HandleNorthWest::~HandleNorthWest() { } /// /// Draw HandleNorthWest /// void glabels::HandleNorthWest::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleNorthWest Path /// QPainterPath glabels::HandleNorthWest::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleP1 Constructor /// glabels::HandleP1::HandleP1( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleP1 Destructor /// glabels::HandleP1::~HandleP1() { } /// /// Draw HandleP1 /// void glabels::HandleP1::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleP1 Path /// QPainterPath glabels::HandleP1::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); } /// /// HandleP2 Constructor /// glabels::HandleP2::HandleP2( LabelModelObject* owner ) : Handle(owner) { } /// /// HandleP2 Destructor /// glabels::HandleP2::~HandleP2() { } /// /// Draw HandleP2 /// void glabels::HandleP2::draw( QPainter* painter ) const { drawAt( painter, mOwner->w()/2, 0 ); } /// /// HandleP2 Path /// QPainterPath glabels::HandleP2::path( QPainter* painter ) const { return pathAt( painter, mOwner->w()/2, 0 ); }