Some cleanup/restructuring of Frame and its subclasses.

This commit is contained in:
Jim Evins
2013-10-31 18:59:23 -04:00
parent a11b498e9a
commit be55bebc50
10 changed files with 99 additions and 146 deletions
+20 -38
View File
@@ -24,44 +24,6 @@
namespace libglabels namespace libglabels
{ {
int Frame::nLabels() const
{
int n = 0;
std::list<Layout*>::const_iterator it;
for ( it = mLayouts.begin(); it != mLayouts.end(); it++ )
{
n += (*it)->nx() * (*it)->ny();
}
return n;
}
QString &Frame::layoutDescription()
{
if ( mLayouts.size() == 1 )
{
Layout *layout = *mLayouts.begin();
/*
* Translators: %1 = number of labels across a page,
* %2 = number of labels down a page,
* %3 = total number of labels on a page (sheet).
*/
mLayoutDescription = QString( tr("%1 x %2 (%3 per sheet)") )
.arg(layout->nx()).arg(layout->ny()).arg(nLabels());
}
else
{
/* Translators: %1 is the total number of labels on a page (sheet). */
mLayoutDescription = QString( tr("%1 per sheet") ).arg( nLabels() );
}
return mLayoutDescription;
}
std::vector<Point> Frame::getOrigins() const std::vector<Point> Frame::getOrigins() const
{ {
std::vector<Point> origins( nLabels() ); std::vector<Point> origins( nLabels() );
@@ -87,6 +49,26 @@ namespace libglabels
void Frame::addLayout( Layout *layout ) void Frame::addLayout( Layout *layout )
{ {
mLayouts.push_back( layout ); mLayouts.push_back( layout );
// Update total number of labels
mNLabels += layout->nx() * layout->ny();
// Update layout description
if ( mLayouts.size() == 1 )
{
/*
* Translators: %1 = number of labels across a page,
* %2 = number of labels down a page,
* %3 = total number of labels on a page (sheet).
*/
mLayoutDescription = QString( tr("%1 x %2 (%3 per sheet)") )
.arg(layout->nx()).arg(layout->ny()).arg(mNLabels);
}
else
{
/* Translators: %1 is the total number of labels on a page (sheet). */
mLayoutDescription = QString( tr("%1 per sheet") ).arg(mNLabels);
}
} }
+9 -6
View File
@@ -41,31 +41,34 @@ namespace libglabels
Q_DECLARE_TR_FUNCTIONS(Frame) Q_DECLARE_TR_FUNCTIONS(Frame)
protected: protected:
Frame( const QString &id = "0" ) : mId(id) Frame( const QString &id = "0" ) : mId(id), mNLabels(0), mLayoutDescription("")
{ {
} }
public: public:
inline const QString &id() const { return mId; } inline const QString &id() const { return mId; }
inline int nLabels() const { return mNLabels; }
inline const QString &layoutDescription() { return mLayoutDescription; }
int nLabels() const;
QString &layoutDescription();
std::vector<Point> getOrigins() const; std::vector<Point> getOrigins() const;
void addLayout( Layout *layout ); void addLayout( Layout *layout );
void addMarkup( Markup *markup ); void addMarkup( Markup *markup );
virtual void getSize( double *w, double *h ) const = 0; virtual double w() const = 0;
virtual double h() const = 0;
virtual const QString &sizeDescription( Units *units ) = 0;
virtual bool isSimilar( Frame *b ) const = 0; virtual bool isSimilar( Frame *b ) const = 0;
virtual QString &getSizeDescription( Units *units ) const = 0;
private: private:
QString mId; QString mId;
int mNLabels;
QString mLayoutDescription;
std::list<Layout*> mLayouts; std::list<Layout*> mLayouts;
std::list<Markup*> mMarkups; std::list<Markup*> mMarkups;
QString mLayoutDescription;
}; };
} }
+5 -25
View File
@@ -29,28 +29,6 @@
namespace libglabels namespace libglabels
{ {
void FrameCd::getSize( double *w, double *h ) const
{
if ( mW == 0 )
{
*w = 2 * mR1;
}
else
{
*w = mW;
}
if ( mH == 0 )
{
*h = 2 * mR1;
}
else
{
*h = mH;
}
}
bool FrameCd::isSimilar( Frame *b ) const bool FrameCd::isSimilar( Frame *b ) const
{ {
if ( FrameCd *bCd = dynamic_cast<FrameCd*>(b) ) if ( FrameCd *bCd = dynamic_cast<FrameCd*>(b) )
@@ -67,24 +45,26 @@ namespace libglabels
} }
QString &FrameCd::getSizeDescription( Units *units ) const const QString &FrameCd::sizeDescription( Units *units )
{ {
if ( units->id() == "in" ) if ( units->id() == "in" )
{ {
QString dStr = StrUtil::formatFraction( 2 * mR1 * units->unitsPerPoint() ); QString dStr = StrUtil::formatFraction( 2 * mR1 * units->unitsPerPoint() );
return QString().sprintf( "%s %s %s", mSizeDescription = QString().sprintf( "%s %s %s",
dStr.toStdString().c_str(), dStr.toStdString().c_str(),
units->name().toStdString().c_str(), units->name().toStdString().c_str(),
tr("diameter").toStdString().c_str() ); tr("diameter").toStdString().c_str() );
} }
else else
{ {
return QString().sprintf( "%.5g %s %s", mSizeDescription = QString().sprintf( "%.5g %s %s",
2 * mR1 * units->unitsPerPoint(), 2 * mR1 * units->unitsPerPoint(),
units->name().toStdString().c_str(), units->name().toStdString().c_str(),
tr("diameter").toStdString().c_str() ); tr("diameter").toStdString().c_str() );
} }
return mSizeDescription;
} }
} }
+5 -4
View File
@@ -42,14 +42,13 @@ namespace libglabels
inline double r1() const { return mR1; } inline double r1() const { return mR1; }
inline double r2() const { return mR2; } inline double r2() const { return mR2; }
inline double w() const { return mW; }
inline double h() const { return mH; }
inline double waste() const { return mWaste; } inline double waste() const { return mWaste; }
double w() const { return (mW == 0) ? 2*mR1 : mW; }
double h() const { return (mH == 0) ? 2*mR1 : mH; }
void getSize( double *w, double *h ) const; const QString &sizeDescription( Units *units );
bool isSimilar( Frame *b ) const; bool isSimilar( Frame *b ) const;
QString &getSizeDescription( Units *units ) const;
private: private:
@@ -59,6 +58,8 @@ namespace libglabels
double mH; double mH;
double mWaste; double mWaste;
QString mSizeDescription;
}; };
} }
+3 -10
View File
@@ -29,13 +29,6 @@
namespace libglabels namespace libglabels
{ {
void FrameEllipse::getSize( double *w, double *h ) const
{
*w = mW;
*h = mH;
}
bool FrameEllipse::isSimilar( Frame *b ) const bool FrameEllipse::isSimilar( Frame *b ) const
{ {
if ( FrameEllipse *bEllipse = dynamic_cast<FrameEllipse*>(b) ) if ( FrameEllipse *bEllipse = dynamic_cast<FrameEllipse*>(b) )
@@ -50,21 +43,21 @@ namespace libglabels
} }
QString &FrameEllipse::getSizeDescription( Units *units ) const const QString &FrameEllipse::sizeDescription( Units *units )
{ {
if ( units->id() == "in" ) if ( units->id() == "in" )
{ {
QString wStr = StrUtil::formatFraction( mW * units->unitsPerPoint() ); QString wStr = StrUtil::formatFraction( mW * units->unitsPerPoint() );
QString hStr = StrUtil::formatFraction( mH * units->unitsPerPoint() ); QString hStr = StrUtil::formatFraction( mH * units->unitsPerPoint() );
return QString().sprintf( "%s x %s %s", mSizeDescription = QString().sprintf( "%s x %s %s",
wStr.toStdString().c_str(), wStr.toStdString().c_str(),
hStr.toStdString().c_str(), hStr.toStdString().c_str(),
units->name().toStdString().c_str() ); units->name().toStdString().c_str() );
} }
else else
{ {
return QString().sprintf( "%.5g x %.5g %s", mSizeDescription = QString().sprintf( "%.5g x %.5g %s",
mW * units->unitsPerPoint(), mW * units->unitsPerPoint(),
mH * units->unitsPerPoint(), mH * units->unitsPerPoint(),
units->name().toStdString().c_str() ); units->name().toStdString().c_str() );
+5 -4
View File
@@ -38,14 +38,13 @@ namespace libglabels
{ {
} }
inline double w() const { return mW; }
inline double h() const { return mH; }
inline double waste() const { return mWaste; } inline double waste() const { return mWaste; }
double w() const { return mW; }
double h() const { return mH; }
void getSize( double *w, double *h ) const; const QString &sizeDescription( Units *units );
bool isSimilar( Frame *b ) const; bool isSimilar( Frame *b ) const;
QString &getSizeDescription( Units *units ) const;
private: private:
@@ -53,6 +52,8 @@ namespace libglabels
double mH; double mH;
double mWaste; double mWaste;
QString mSizeDescription;
}; };
} }
+20 -25
View File
@@ -29,10 +29,27 @@
namespace libglabels namespace libglabels
{ {
void FrameRect::getSize( double *w, double *h ) const const QString &FrameRect::sizeDescription( Units *units )
{ {
*w = mW; if ( units->id() == "in" )
*h = mH; {
QString wStr = StrUtil::formatFraction( mW * units->unitsPerPoint() );
QString hStr = StrUtil::formatFraction( mH * units->unitsPerPoint() );
mSizeDescription = QString().sprintf( "%s x %s %s",
wStr.toStdString().c_str(),
hStr.toStdString().c_str(),
units->name().toStdString().c_str() );
}
else
{
mSizeDescription = QString().sprintf( "%.5g x %.5g %s",
mW * units->unitsPerPoint(),
mH * units->unitsPerPoint(),
units->name().toStdString().c_str() );
}
return mSizeDescription;
} }
@@ -49,27 +66,5 @@ namespace libglabels
return false; return false;
} }
QString &FrameRect::getSizeDescription( Units *units ) const
{
if ( units->id() == "in" )
{
QString wStr = StrUtil::formatFraction( mW * units->unitsPerPoint() );
QString hStr = StrUtil::formatFraction( mH * units->unitsPerPoint() );
return QString().sprintf( "%s x %s %s",
wStr.toStdString().c_str(),
hStr.toStdString().c_str(),
units->name().toStdString().c_str() );
}
else
{
return QString().sprintf( "%.5g x %.5g %s",
mW * units->unitsPerPoint(),
mH * units->unitsPerPoint(),
units->name().toStdString().c_str() );
}
}
} }
+5 -4
View File
@@ -40,16 +40,15 @@ namespace libglabels
{ {
} }
inline double w() const { return mW; }
inline double h() const { return mH; }
inline double r() const { return mR; } inline double r() const { return mR; }
inline double xWaste() const { return mXWaste; } inline double xWaste() const { return mXWaste; }
inline double yWaste() const { return mYWaste; } inline double yWaste() const { return mYWaste; }
double w() const { return mW; }
double h() const { return mH; }
void getSize( double *w, double *h ) const; const QString &sizeDescription( Units *units );
bool isSimilar( Frame *b ) const; bool isSimilar( Frame *b ) const;
QString &getSizeDescription( Units *units ) const;
private: private:
@@ -59,6 +58,8 @@ namespace libglabels
double mXWaste; double mXWaste;
double mYWaste; double mYWaste;
QString mSizeDescription;
}; };
} }
+5 -10
View File
@@ -29,13 +29,6 @@
namespace libglabels namespace libglabels
{ {
void FrameRound::getSize( double *w, double *h ) const
{
*w = 2*mR;
*h = 2*mR;
}
bool FrameRound::isSimilar( Frame *b ) const bool FrameRound::isSimilar( Frame *b ) const
{ {
if ( FrameRound *bRound = dynamic_cast<FrameRound*>(b) ) if ( FrameRound *bRound = dynamic_cast<FrameRound*>(b) )
@@ -49,24 +42,26 @@ namespace libglabels
} }
QString &FrameRound::getSizeDescription( Units *units ) const const QString &FrameRound::sizeDescription( Units *units )
{ {
if ( units->id() == "in" ) if ( units->id() == "in" )
{ {
QString dStr = StrUtil::formatFraction( 2 * mR * units->unitsPerPoint() ); QString dStr = StrUtil::formatFraction( 2 * mR * units->unitsPerPoint() );
return QString().sprintf( "%s %s %s", mSizeDescription = QString().sprintf( "%s %s %s",
dStr.toStdString().c_str(), dStr.toStdString().c_str(),
units->name().toStdString().c_str(), units->name().toStdString().c_str(),
tr("diameter").toStdString().c_str() ); tr("diameter").toStdString().c_str() );
} }
else else
{ {
return QString().sprintf( "%.5g %s %s", mSizeDescription = QString().sprintf( "%.5g %s %s",
2 * mR * units->unitsPerPoint(), 2 * mR * units->unitsPerPoint(),
units->name().toStdString().c_str(), units->name().toStdString().c_str(),
tr("diameter").toStdString().c_str() ); tr("diameter").toStdString().c_str() );
} }
return mSizeDescription;
} }
} }
+4 -2
View File
@@ -40,16 +40,18 @@ namespace libglabels
inline double r() const { return mR; } inline double r() const { return mR; }
inline double waste() const { return mWaste; } inline double waste() const { return mWaste; }
double w() const { return 2*mR; }
double h() const { return 2*mR; }
void getSize( double *w, double *h ) const; const QString &sizeDescription( Units *units );
bool isSimilar( Frame *b ) const; bool isSimilar( Frame *b ) const;
QString &getSizeDescription( Units *units ) const;
private: private:
double mR; double mR;
double mWaste; double mWaste;
QString mSizeDescription;
}; };
} }