From 75c2ceec47f647dd3d2fcc4b2b300a77e06a4b6b Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Tue, 10 Dec 2013 01:52:21 -0500 Subject: [PATCH] Draw label layer in view. --- app/LabelModel.h | 7 +++++++ app/MainWindow.cpp | 2 +- app/View.cpp | 37 +++++++++++++++++++++++++++++++++++++ app/View.h | 7 +++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/LabelModel.h b/app/LabelModel.h index bbf5edd..f2dfd6d 100644 --- a/app/LabelModel.h +++ b/app/LabelModel.h @@ -75,6 +75,7 @@ namespace glabels inline void setCompressionLevel( int compressionLevel ); inline const libglabels::Template* tmplate() const; + inline const libglabels::Frame* frame() const; inline void setTmplate( const libglabels::Template* tmplate ); 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 ) { if (mTmplate != tmplate) diff --git a/app/MainWindow.cpp b/app/MainWindow.cpp index 8c18a4f..e191720 100644 --- a/app/MainWindow.cpp +++ b/app/MainWindow.cpp @@ -44,7 +44,7 @@ namespace glabels setCentralWidget( tmp ); #else 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 ); LabelModelBoxObject* object = new LabelModelBoxObject(); object->setW( 36 ); diff --git a/app/View.cpp b/app/View.cpp index 8a34933..0c5a73a 100644 --- a/app/View.cpp +++ b/app/View.cpp @@ -21,6 +21,7 @@ #include "View.h" #include +#include #include #include @@ -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 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 ); + setAttribute( Qt::WA_TranslucentBackground ); + viewport()->setAutoFillBackground( false ); + mScene = new QGraphicsScene(); setScene( mScene ); } @@ -53,6 +65,8 @@ namespace glabels { mModel = model; + createLabelLayer(); + foreach (LabelModelObject* object, model->objectList() ) { QGraphicsItem* item = object->createGraphicsItem(); @@ -170,4 +184,27 @@ namespace glabels 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 ); + } + } diff --git a/app/View.h b/app/View.h index 592494f..0aea061 100644 --- a/app/View.h +++ b/app/View.h @@ -87,6 +87,13 @@ namespace glabels void leaveEvent( QEvent* event ); + ///////////////////////////////////// + // Private methods + ///////////////////////////////////// + private: + void createLabelLayer(); + + ///////////////////////////////////// // Private data /////////////////////////////////////