Added merge printing.

This commit is contained in:
Jim Evins
2016-05-21 21:21:45 -04:00
parent 38899348f9
commit 18089d8635
8 changed files with 124 additions and 66 deletions
+11 -21
View File
@@ -1,6 +1,6 @@
/* ColorNode.cpp /* ColorNode.cpp
* *
* Copyright (C) 2013 Jim Evins <evins@snaught.com> * Copyright (C) 2013-2016 Jim Evins <evins@snaught.com>
* *
* This file is part of gLabels-qt. * This file is part of gLabels-qt.
* *
@@ -20,6 +20,8 @@
#include "ColorNode.h" #include "ColorNode.h"
#include "MergeRecord.h"
/// ///
/// Default Constructor /// Default Constructor
@@ -158,40 +160,28 @@ uint32_t ColorNode::rgba( void ) const
} }
#if TODO QColor ColorNode::color( MergeRecord* record ) const
QColor ColorNode::expand( MergeRecord? record )
{ {
if ( fieldFlag ) if ( mFieldFlag )
{ {
if ( record == null ) if ( record == 0 )
{ {
return QColor.fromRgba(0x00000000); return mColor;
} }
else else
{ {
string? text = record.evalKey( key ); if ( record->contains( mKey ) )
if ( text != null )
{ {
Gdk.Color gdkColor = Gdk.Color(); return QColor( (*record)[ mKey ] );
if ( Gdk.Color.parse( text, out gdkColor ) )
{
Color color = Color.from_gdkColor( gdkColor );
return color;
} }
else else
{ {
return Color.fromRgba(0x00000000); return mColor;
}
}
else
{
return Color.fromRgba(0x00000000);
} }
} }
} }
else else
{ {
return color; return mColor;
} }
} }
#endif
+4 -5
View File
@@ -1,6 +1,6 @@
/* ColorNode.h /* ColorNode.h
* *
* Copyright (C) 2013 Jim Evins <evins@snaught.com> * Copyright (C) 2013-2016 Jim Evins <evins@snaught.com>
* *
* This file is part of gLabels-qt. * This file is part of gLabels-qt.
* *
@@ -25,6 +25,8 @@
#include <QColor> #include <QColor>
#include <stdint.h> #include <stdint.h>
class MergeRecord; // Forward reference
/// ///
/// Color Node Type /// Color Node Type
@@ -87,10 +89,7 @@ public:
///////////////////////////////// /////////////////////////////////
public: public:
uint32_t rgba( void ) const; uint32_t rgba( void ) const;
QColor color( MergeRecord* record ) const;
#if TODO
QColor expand( MergeRecord? record );
#endif
///////////////////////////////// /////////////////////////////////
+5 -9
View File
@@ -68,11 +68,9 @@ LabelModelBoxObject* LabelModelBoxObject::clone() const
/// ///
void LabelModelBoxObject::drawShadow( QPainter* painter, bool inEditor, MergeRecord* record ) const void LabelModelBoxObject::drawShadow( QPainter* painter, bool inEditor, MergeRecord* record ) const
{ {
/// TODO expand colors based on record QColor lineColor = mLineColorNode.color( record );
QColor fillColor = mFillColorNode.color( record );
QColor lineColor = mLineColorNode.color(); QColor shadowColor = mShadowColorNode.color( record );
QColor fillColor = mFillColorNode.color();
QColor shadowColor = mShadowColorNode.color();
shadowColor.setAlphaF( mShadowOpacity ); shadowColor.setAlphaF( mShadowOpacity );
@@ -115,10 +113,8 @@ void LabelModelBoxObject::drawShadow( QPainter* painter, bool inEditor, MergeRec
/// ///
void LabelModelBoxObject::drawObject( QPainter* painter, bool inEditor, MergeRecord* record ) const void LabelModelBoxObject::drawObject( QPainter* painter, bool inEditor, MergeRecord* record ) const
{ {
/// TODO expand colors based on record QColor lineColor = mLineColorNode.color( record );
QColor fillColor = mFillColorNode.color( record );
QColor lineColor = mLineColorNode.color();
QColor fillColor = mFillColorNode.color();
painter->setPen( QPen( lineColor, mLineWidth.pt() ) ); painter->setPen( QPen( lineColor, mLineWidth.pt() ) );
painter->setBrush( fillColor ); painter->setBrush( fillColor );
+20 -1
View File
@@ -1,6 +1,6 @@
/* Merge.cpp /* Merge.cpp
* *
* Copyright (C) 2015 Jim Evins <evins@snaught.com> * Copyright (C) 2015-2016 Jim Evins <evins@snaught.com>
* *
* This file is part of gLabels-qt. * This file is part of gLabels-qt.
* *
@@ -165,6 +165,25 @@ void Merge::unselectAll()
} }
///
/// Return count of selected records
///
int Merge::nSelectedRecords() const
{
int count = 0;
foreach ( MergeRecord* record, mRecordList )
{
if ( record->isSelected() )
{
count++;
}
}
return count;
}
/// ///
/// Return list of selected records /// Return list of selected records
/// ///
+3 -1
View File
@@ -1,6 +1,6 @@
/* Merge.h /* Merge.h
* *
* Copyright (C) 2015 Jim Evins <evins@snaught.com> * Copyright (C) 2015-2016 Jim Evins <evins@snaught.com>
* *
* This file is part of gLabels-qt. * This file is part of gLabels-qt.
* *
@@ -73,6 +73,8 @@ public:
void setSelected( int i, bool state = true ); void setSelected( int i, bool state = true );
void selectAll(); void selectAll();
void unselectAll(); void unselectAll();
int nSelectedRecords() const;
const QList<MergeRecord*> selectedRecords() const; const QList<MergeRecord*> selectedRecords() const;
+65 -16
View File
@@ -1,6 +1,6 @@
/* PageRenderer.cpp /* PageRenderer.cpp
* *
* Copyright (C) 2013-2014 Jim Evins <evins@snaught.com> * Copyright (C) 2013-2016 Jim Evins <evins@snaught.com>
* *
* This file is part of gLabels-qt. * This file is part of gLabels-qt.
* *
@@ -21,6 +21,8 @@
#include "PageRenderer.h" #include "PageRenderer.h"
#include "LabelModel.h" #include "LabelModel.h"
#include "Merge.h"
#include "MergeNone.h"
#include "MergeRecord.h" #include "MergeRecord.h"
#include <QPainter> #include <QPainter>
@@ -37,9 +39,9 @@ namespace
PageRenderer::PageRenderer() PageRenderer::PageRenderer()
: mModel(0), mNLabels(0), mStartLabel(0), : mModel(0), mNCopies(0), mStartLabel(0),
mPrintOutlines(false), mPrintCropMarks(false), mPrintReverse(false), mPrintOutlines(false), mPrintCropMarks(false), mPrintReverse(false),
mIPage(0), mNPages(0) mIsMerge(false), mIPage(0), mNPages(0)
{ {
} }
@@ -47,15 +49,17 @@ PageRenderer::PageRenderer()
void PageRenderer::setModel( const LabelModel* model ) void PageRenderer::setModel( const LabelModel* model )
{ {
mModel = model; mModel = model;
mMerge = mModel->merge();
mOrigins = mModel->frame()->getOrigins(); mOrigins = mModel->frame()->getOrigins();
mNLabelsPerPage = mModel->frame()->nLabels(); mNLabelsPerPage = mModel->frame()->nLabels();
mIsMerge = ( dynamic_cast<const MergeNone*>(mMerge) == 0 );
updateNPages(); updateNPages();
} }
void PageRenderer::setNLabels( int nLabels ) void PageRenderer::setNCopies( int nCopies )
{ {
mNLabels = nLabels; mNCopies = nCopies;
updateNPages(); updateNPages();
} }
@@ -114,12 +118,17 @@ void PageRenderer::updateNPages()
{ {
if ( mModel ) if ( mModel )
{ {
/// @TODO merge case if ( mIsMerge )
{
mLastLabel = mStartLabel + mNCopies*mMerge->nSelectedRecords();
}
else
{
mLastLabel = mStartLabel + mNCopies;
}
int lastLabel = mStartLabel + mNLabels; mNPages = mLastLabel / mNLabelsPerPage;
if ( mLastLabel % mNLabelsPerPage )
mNPages = lastLabel / mNLabelsPerPage;
if ( lastLabel % mNLabelsPerPage )
{ {
mNPages++; mNPages++;
} }
@@ -147,11 +156,16 @@ void PageRenderer::printPage( QPainter* painter, int iPage ) const
{ {
if ( mModel ) if ( mModel )
{ {
/// @TODO merge case if ( mIsMerge )
{
printMergePage( painter, iPage );
}
else
{
printSimplePage( painter, iPage ); printSimplePage( painter, iPage );
} }
} }
}
void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const
@@ -164,10 +178,9 @@ void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const
iStart = mStartLabel; iStart = mStartLabel;
} }
int lastLabel = mStartLabel + mNLabels; if ( (mLastLabel / mNLabelsPerPage) == iPage )
if ( (lastLabel / mNLabelsPerPage) == iPage )
{ {
iEnd = lastLabel % mNLabelsPerPage; iEnd = mLastLabel % mNLabelsPerPage;
} }
printCropMarks( painter ); printCropMarks( painter );
@@ -194,7 +207,43 @@ void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const
void PageRenderer::printMergePage( QPainter* painter, int iPage ) const void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
{ {
/// @TODO merge case int iStart = 0;
int iEnd = mNLabelsPerPage;
if ( iPage == 0 )
{
iStart = mStartLabel;
}
if ( (mLastLabel / mNLabelsPerPage) == iPage )
{
iEnd = mLastLabel % mNLabelsPerPage;
}
const QList<MergeRecord*> records = mMerge->selectedRecords();
int iRecord = (iPage*mNLabelsPerPage + iStart - mStartLabel) % records.size();
printCropMarks( painter );
for ( int i = iStart; i < iEnd; i++ )
{
painter->save();
painter->translate( mOrigins[i].x().pt(), mOrigins[i].y().pt() );
painter->save();
clipLabel( painter );
printLabel( painter, records[iRecord] );
painter->restore(); // From before clip
printOutline( painter );
painter->restore(); // From before translation
iRecord = (iRecord + 1) % records.size();
}
} }
+11 -8
View File
@@ -27,12 +27,11 @@
#include <QVector> #include <QVector>
#include <QRect> #include <QRect>
// Forward references
class QPainter; // Forward reference class QPainter;
class LabelModel;
class Merge;
class LabelModel; // Forward reference class MergeRecord;
class MergeRecord; // Forward reference
/// ///
@@ -52,7 +51,7 @@ public:
///////////////////////////////// /////////////////////////////////
public: public:
void setModel( const LabelModel* model ); void setModel( const LabelModel* model );
void setNLabels( int nLabels ); void setNCopies( int nCopies );
void setStartLabel( int startLabel ); void setStartLabel( int startLabel );
void setPrintOutlines( bool printOutlinesFlag ); void setPrintOutlines( bool printOutlinesFlag );
void setPrintCropMarks( bool printCropMarksFlag ); void setPrintCropMarks( bool printCropMarksFlag );
@@ -82,13 +81,17 @@ private:
///////////////////////////////// /////////////////////////////////
private: private:
const LabelModel* mModel; const LabelModel* mModel;
int mNLabels; const Merge* mMerge;
int mNCopies;
int mStartLabel; int mStartLabel;
int mLastLabel;
bool mPrintOutlines; bool mPrintOutlines;
bool mPrintCropMarks; bool mPrintCropMarks;
bool mPrintReverse; bool mPrintReverse;
int mIPage; int mIPage;
bool mIsMerge;
int mNPages; int mNPages;
int mNLabelsPerPage; int mNLabelsPerPage;
+3 -3
View File
@@ -77,7 +77,7 @@ void PrintView::onLabelSizeChanged()
copiesToSpin->setRange( copiesFromSpin->value(), nLabelsPerPage ); copiesToSpin->setRange( copiesFromSpin->value(), nLabelsPerPage );
if ( copiesSheetsRadio->isChecked() ) if ( copiesSheetsRadio->isChecked() )
{ {
mRenderer.setNLabels( copiesSheetsSpin->value()*nLabelsPerPage ); mRenderer.setNCopies( copiesSheetsSpin->value()*nLabelsPerPage );
mRenderer.setStartLabel( 0 ); mRenderer.setStartLabel( 0 );
copiesFromSpin->setValue( 1 ); copiesFromSpin->setValue( 1 );
copiesToSpin->setValue( nLabelsPerPage ); copiesToSpin->setValue( nLabelsPerPage );
@@ -113,14 +113,14 @@ void PrintView::onFormChanged()
// TODO select between simple and merge // TODO select between simple and merge
if ( copiesSheetsRadio->isChecked() ) if ( copiesSheetsRadio->isChecked() )
{ {
mRenderer.setNLabels( copiesSheetsSpin->value()*nLabelsPerPage ); mRenderer.setNCopies( copiesSheetsSpin->value()*nLabelsPerPage );
mRenderer.setStartLabel( 0 ); mRenderer.setStartLabel( 0 );
copiesFromSpin->setValue( 1 ); copiesFromSpin->setValue( 1 );
copiesToSpin->setValue( nLabelsPerPage ); copiesToSpin->setValue( nLabelsPerPage );
} }
else else
{ {
mRenderer.setNLabels( copiesToSpin->value() - copiesFromSpin->value() + 1 ); mRenderer.setNCopies( copiesToSpin->value() - copiesFromSpin->value() + 1 );
mRenderer.setStartLabel( copiesFromSpin->value() - 1 ); mRenderer.setStartLabel( copiesFromSpin->value() - 1 );
copiesSheetsSpin->setValue( 1 ); copiesSheetsSpin->setValue( 1 );
} }