Draw label layer in view.

This commit is contained in:
Jim Evins
2013-12-10 01:52:21 -05:00
parent dc8cc35d51
commit 75c2ceec47
4 changed files with 52 additions and 1 deletions
+7
View File
@@ -75,6 +75,7 @@ namespace glabels
inline void setCompressionLevel( int compressionLevel ); inline void setCompressionLevel( int compressionLevel );
inline const libglabels::Template* tmplate() const; inline const libglabels::Template* tmplate() const;
inline const libglabels::Frame* frame() const;
inline void setTmplate( const libglabels::Template* tmplate ); inline void setTmplate( const libglabels::Template* tmplate );
inline bool rotate() const; inline bool rotate() const;
@@ -234,6 +235,12 @@ namespace glabels
} }
inline const libglabels::Frame* LabelModel::frame() const
{
return mFrame;
}
inline void LabelModel::setTmplate( const libglabels::Template* tmplate ) inline void LabelModel::setTmplate( const libglabels::Template* tmplate )
{ {
if (mTmplate != tmplate) if (mTmplate != tmplate)
+1 -1
View File
@@ -44,7 +44,7 @@ namespace glabels
setCentralWidget( tmp ); setCentralWidget( tmp );
#else #else
LabelModel* model = new LabelModel(); LabelModel* model = new LabelModel();
const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 3612" ); const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 5163" );
model->setTmplate( tmplate ); model->setTmplate( tmplate );
LabelModelBoxObject* object = new LabelModelBoxObject(); LabelModelBoxObject* object = new LabelModelBoxObject();
object->setW( 36 ); object->setW( 36 );
+37
View File
@@ -21,6 +21,7 @@
#include "View.h" #include "View.h"
#include <QMouseEvent> #include <QMouseEvent>
#include <QGraphicsDropShadowEffect>
#include <cmath> #include <cmath>
#include <iostream> #include <iostream>
@@ -31,6 +32,14 @@ namespace
const double zoomLevels[nZoomLevels] = { 8, 6, 4, 3, 2, 1.5, 1, 0.75, 0.67, 0.50, 0.33, 0.25, 0.15, 0.10 }; const double zoomLevels[nZoomLevels] = { 8, 6, 4, 3, 2, 1.5, 1, 0.75, 0.67, 0.50, 0.33, 0.25, 0.15, 0.10 };
const double ZOOM_TO_FIT_PAD = 16; const double ZOOM_TO_FIT_PAD = 16;
const QColor shadowColor( 64, 64, 64 );
const double shadowOffsetPixels = 3;
const double shadowRadiusPixels = 12;
const QColor labelColor( 255, 255, 255 );
const QColor labelOutlineColor( 0, 0, 0 );
const double labelOutlineWidthPixels = 1;
} }
@@ -44,6 +53,9 @@ namespace glabels
setMouseTracking( true ); setMouseTracking( true );
setAttribute( Qt::WA_TranslucentBackground );
viewport()->setAutoFillBackground( false );
mScene = new QGraphicsScene(); mScene = new QGraphicsScene();
setScene( mScene ); setScene( mScene );
} }
@@ -53,6 +65,8 @@ namespace glabels
{ {
mModel = model; mModel = model;
createLabelLayer();
foreach (LabelModelObject* object, model->objectList() ) foreach (LabelModelObject* object, model->objectList() )
{ {
QGraphicsItem* item = object->createGraphicsItem(); QGraphicsItem* item = object->createGraphicsItem();
@@ -170,4 +184,27 @@ namespace glabels
emit pointerExited(); emit pointerExited();
} }
void View::createLabelLayer()
{
QGraphicsPathItem *labelItem = new QGraphicsPathItem( mModel->frame()->path() );
QBrush brush( labelColor );
labelItem->setBrush( brush );
QPen pen( labelOutlineColor );
pen.setJoinStyle( Qt::MiterJoin );
pen.setCosmetic( true );
pen.setWidthF( labelOutlineWidthPixels );
labelItem->setPen( pen );
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();
shadowEffect->setColor( shadowColor );
shadowEffect->setOffset( shadowOffsetPixels );
shadowEffect->setBlurRadius( shadowRadiusPixels );
labelItem->setGraphicsEffect( shadowEffect );
mScene->addItem( labelItem );
}
} }
+7
View File
@@ -87,6 +87,13 @@ namespace glabels
void leaveEvent( QEvent* event ); void leaveEvent( QEvent* event );
/////////////////////////////////////
// Private methods
/////////////////////////////////////
private:
void createLabelLayer();
///////////////////////////////////// /////////////////////////////////////
// Private data // Private data
///////////////////////////////////// /////////////////////////////////////