Make both highlight and select region layers work.

This commit is contained in:
Jim Evins
2015-08-14 13:10:05 -04:00
parent aeb6098159
commit cdbc3a8c9b
7 changed files with 233 additions and 157 deletions
+24 -19
View File
@@ -61,7 +61,12 @@ void glabels::Handle::drawAt( QPainter* painter, double x, double y ) const
painter->save();
painter->translate( x, y );
painter->resetTransform();
/* Render at a scale of 1:1 in pixels, while preserving translations and rotations. */
QTransform t = painter->transform();
painter->setTransform( QTransform( 1, t.m12(), t.m13(),
t.m21(), 1, t.m23(),
t.m31(), t.m32(), t.m33() ) );
painter->setPen( QPen( handleOutlineColor, handleOutlineWidthPixels ) );
painter->setBrush( handleFillColor );
@@ -147,7 +152,7 @@ glabels::HandleNorthEast::~HandleNorthEast()
///
void glabels::HandleNorthEast::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, mOwner->w(), 0 );
}
@@ -156,7 +161,7 @@ void glabels::HandleNorthEast::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleNorthEast::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, mOwner->w(), 0 );
}
@@ -182,7 +187,7 @@ glabels::HandleEast::~HandleEast()
///
void glabels::HandleEast::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, mOwner->w(), mOwner->h()/2 );
}
@@ -191,7 +196,7 @@ void glabels::HandleEast::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleEast::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, mOwner->w(), mOwner->h()/2 );
}
@@ -217,7 +222,7 @@ glabels::HandleSouthEast::~HandleSouthEast()
///
void glabels::HandleSouthEast::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, mOwner->w(), mOwner->h() );
}
@@ -226,7 +231,7 @@ void glabels::HandleSouthEast::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleSouthEast::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, mOwner->w(), mOwner->h() );
}
@@ -252,7 +257,7 @@ glabels::HandleSouth::~HandleSouth()
///
void glabels::HandleSouth::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, mOwner->w()/2, mOwner->h() );
}
@@ -261,7 +266,7 @@ void glabels::HandleSouth::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleSouth::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, mOwner->w()/2, mOwner->h() );
}
@@ -287,7 +292,7 @@ glabels::HandleSouthWest::~HandleSouthWest()
///
void glabels::HandleSouthWest::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, 0, mOwner->h() );
}
@@ -296,7 +301,7 @@ void glabels::HandleSouthWest::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleSouthWest::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, 0, mOwner->w() );
}
@@ -322,7 +327,7 @@ glabels::HandleWest::~HandleWest()
///
void glabels::HandleWest::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, 0, mOwner->h()/2 );
}
@@ -331,7 +336,7 @@ void glabels::HandleWest::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleWest::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, 0, mOwner->h()/2 );
}
@@ -357,7 +362,7 @@ glabels::HandleNorthWest::~HandleNorthWest()
///
void glabels::HandleNorthWest::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, 0, 0 );
}
@@ -366,7 +371,7 @@ void glabels::HandleNorthWest::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleNorthWest::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, 0, 0 );
}
@@ -392,7 +397,7 @@ glabels::HandleP1::~HandleP1()
///
void glabels::HandleP1::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, 0, 0 );
}
@@ -401,7 +406,7 @@ void glabels::HandleP1::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleP1::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, 0, 0 );
}
@@ -427,7 +432,7 @@ glabels::HandleP2::~HandleP2()
///
void glabels::HandleP2::draw( QPainter* painter ) const
{
drawAt( painter, mOwner->w()/2, 0 );
drawAt( painter, mOwner->w(), mOwner->h() );
}
@@ -436,5 +441,5 @@ void glabels::HandleP2::draw( QPainter* painter ) const
///
QPainterPath glabels::HandleP2::path( QPainter* painter ) const
{
return pathAt( painter, mOwner->w()/2, 0 );
return pathAt( painter, mOwner->w(), mOwner->h() );
}
+1
View File
@@ -23,6 +23,7 @@
#include <QFileInfo>
#include <algorithm>
#include <cmath>
#include <QtDebug>
#include "LabelModelObject.h"
#include "LabelRegion.h"
+1
View File
@@ -23,6 +23,7 @@
#include <QTransform>
#include <QFont>
#include <algorithm>
#include <QtDebug>
#include "ColorNode.h"
#include "TextNode.h"
+4
View File
@@ -32,6 +32,8 @@ namespace glabels
///
LabelModelShapeObject::LabelModelShapeObject( QObject* parent ) : LabelModelObject(parent)
{
mOutline = new Outline( this );
mHandles << new HandleNorthWest( this );
mHandles << new HandleNorth( this );
mHandles << new HandleNorthEast( this );
@@ -50,6 +52,8 @@ namespace glabels
///
LabelModelShapeObject::~LabelModelShapeObject()
{
delete mOutline;
foreach( Handle* handle, mHandles )
{
delete handle;
+23 -5
View File
@@ -28,8 +28,11 @@
namespace
{
const double outlineWidthPixels = 2;
const QColor outlineColor( 0, 0, 0, 192 );
const qreal dashSize = 1;
const double outlineWidthPixels = 1;
const QColor outlineColor1( 0, 0, 0 );
const QColor outlineColor2( 255, 255, 255 );
}
@@ -39,6 +42,20 @@ namespace
glabels::Outline::Outline( LabelModelObject* owner )
: mOwner(owner)
{
mDashes << dashSize << dashSize;
mPen1.setColor( outlineColor1 );
mPen1.setWidth( outlineWidthPixels );
mPen1.setCosmetic( true );
mPen1.setCapStyle( Qt::FlatCap );
mPen1.setDashPattern( mDashes );
mPen2.setColor( outlineColor2 );
mPen2.setWidth( outlineWidthPixels );
mPen2.setCosmetic( true );
mPen2.setCapStyle( Qt::FlatCap );
mPen2.setDashPattern( mDashes );
mPen2.setDashOffset( dashSize );
}
@@ -57,11 +74,12 @@ void glabels::Outline::draw( QPainter* painter ) const
{
painter->save();
QPen pen( outlineColor, outlineWidthPixels, Qt::DotLine );
pen.setCosmetic( true );
painter->setPen( pen );
painter->setBrush( Qt::NoBrush );
painter->setPen( mPen1 );
painter->drawRect( 0, 0, mOwner->w(), mOwner->h() );
painter->setPen( mPen2 );
painter->drawRect( 0, 0, mOwner->w(), mOwner->h() );
painter->restore();
+4
View File
@@ -59,6 +59,10 @@ namespace glabels
private:
LabelModelObject* mOwner;
QVector<qreal> mDashes;
QPen mPen1;
QPen mPen2;
};
}
+46 -3
View File
@@ -290,6 +290,7 @@ glabels::View::paintEvent( QPaintEvent* event )
drawObjectsLayer( &painter );
drawFgLayer( &painter );
drawHighlightLayer( &painter );
drawSelectRegionLayer( &painter );
}
}
@@ -316,6 +317,8 @@ glabels::View::resizeEvent( QResizeEvent *event )
///
void
glabels::View::mouseMoveEvent( QMouseEvent* event )
{
if ( mModel )
{
/*
* Translate to label coordinates
@@ -336,7 +339,7 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
/*
* Handle event as appropriate for mode
*/
if ( mInObjectCreateMode )
if ( !mInObjectCreateMode )
{
switch (mState)
{
@@ -409,6 +412,7 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
}
}
}
}
///
@@ -416,6 +420,8 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
///
void
glabels::View::mousePressEvent( QMouseEvent* event )
{
if ( mModel )
{
/*
* Translate to label coordinates
@@ -443,11 +449,13 @@ glabels::View::mousePressEvent( QMouseEvent* event )
mSelectRegion.setY2( yWorld );
mState = ArrowSelectRegion;
update();
}
else
{
}
}
}
///
@@ -455,6 +463,8 @@ glabels::View::mousePressEvent( QMouseEvent* event )
///
void
glabels::View::mouseReleaseEvent( QMouseEvent* event )
{
if ( mModel )
{
/*
* Translate to label coordinates
@@ -476,12 +486,14 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
break;
case ArrowSelectRegion:
mSelectRegionVisible = false;
mSelectRegion.setX2( xWorld );
mSelectRegion.setY2( yWorld );
mModel->selectRegion( mSelectRegion );
mState = IdleState;
update();
break;
default:
@@ -494,6 +506,7 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
{
}
}
}
///
@@ -501,9 +514,12 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
///
void
glabels::View::leaveEvent( QEvent* event )
{
if ( mModel )
{
emit pointerExited();
}
}
///
@@ -584,7 +600,9 @@ glabels::View::drawGridLayer( QPainter* painter )
painter->setClipPath( mModel->frame()->path() );
painter->setPen( QPen( gridLineColor, gridLineWidthPixels/mZoom ) );
QPen pen( gridLineColor, gridLineWidthPixels );
pen.setCosmetic( true );
painter->setPen( pen );
for ( double x = x0; x < w; x += gridSpacing )
{
@@ -651,8 +669,10 @@ glabels::View::drawFgLayer( QPainter* painter )
*/
painter->save();
QPen pen( labelOutlineColor, labelOutlineWidthPixels );
pen.setCosmetic( true );
painter->setBrush( QBrush( Qt::NoBrush ) );
painter->setPen( QPen( labelOutlineColor, labelOutlineWidthPixels/mZoom ) );
painter->setPen( pen );
if ( mModel->rotate() )
{
@@ -683,3 +703,26 @@ glabels::View::drawHighlightLayer( QPainter* painter )
painter->restore();
}
///
/// Draw Select Region Layer
///
void
glabels::View::drawSelectRegionLayer( QPainter* painter )
{
if ( mSelectRegionVisible )
{
painter->save();
QPen pen( selectRegionOutlineColor, selectRegionOutlineWidthPixels );
pen.setCosmetic( true );
painter->setBrush( selectRegionFillColor );
painter->setPen( pen );
painter->drawRect( mSelectRegion.rect() );
painter->restore();
}
}