PropertiesView and View now follow Settings::units.
This commit is contained in:
@@ -97,11 +97,11 @@ void ObjectEditor::loadPositionPage()
|
|||||||
|
|
||||||
posXSpin->setDecimals( mSpinDigits );
|
posXSpin->setDecimals( mSpinDigits );
|
||||||
posXSpin->setSingleStep( mSpinStep );
|
posXSpin->setSingleStep( mSpinStep );
|
||||||
posXSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
posXSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
posYSpin->setDecimals( mSpinDigits );
|
posYSpin->setDecimals( mSpinDigits );
|
||||||
posYSpin->setSingleStep( mSpinStep );
|
posYSpin->setSingleStep( mSpinStep );
|
||||||
posYSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
posYSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
posXSpin->setValue( mObject->x0().inUnits(mUnits) );
|
posXSpin->setValue( mObject->x0().inUnits(mUnits) );
|
||||||
posYSpin->setValue( mObject->y0().inUnits(mUnits) );
|
posYSpin->setValue( mObject->y0().inUnits(mUnits) );
|
||||||
@@ -119,11 +119,11 @@ void ObjectEditor::loadRectSizePage()
|
|||||||
|
|
||||||
sizeWSpin->setDecimals( mSpinDigits );
|
sizeWSpin->setDecimals( mSpinDigits );
|
||||||
sizeWSpin->setSingleStep( mSpinStep );
|
sizeWSpin->setSingleStep( mSpinStep );
|
||||||
sizeWSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
sizeWSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
sizeHSpin->setDecimals( mSpinDigits );
|
sizeHSpin->setDecimals( mSpinDigits );
|
||||||
sizeHSpin->setSingleStep( mSpinStep );
|
sizeHSpin->setSingleStep( mSpinStep );
|
||||||
sizeHSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
sizeHSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
sizeWSpin->setValue( mObject->w().inUnits(mUnits) );
|
sizeWSpin->setValue( mObject->w().inUnits(mUnits) );
|
||||||
sizeHSpin->setValue( mObject->h().inUnits(mUnits) );
|
sizeHSpin->setValue( mObject->h().inUnits(mUnits) );
|
||||||
@@ -141,11 +141,11 @@ void ObjectEditor::loadShadowPage()
|
|||||||
|
|
||||||
shadowXSpin->setDecimals( mSpinDigits );
|
shadowXSpin->setDecimals( mSpinDigits );
|
||||||
shadowXSpin->setSingleStep( mSpinStep );
|
shadowXSpin->setSingleStep( mSpinStep );
|
||||||
shadowXSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
shadowXSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
shadowYSpin->setDecimals( mSpinDigits );
|
shadowYSpin->setDecimals( mSpinDigits );
|
||||||
shadowYSpin->setSingleStep( mSpinStep );
|
shadowYSpin->setSingleStep( mSpinStep );
|
||||||
shadowYSpin->setSuffix( " " + glabels::Distance::toId(mUnits) );
|
shadowYSpin->setSuffix( " " + mUnits.toIdString() );
|
||||||
|
|
||||||
shadowEnableCheck->setChecked( mObject->shadow() );
|
shadowEnableCheck->setChecked( mObject->shadow() );
|
||||||
shadowXSpin->setValue( mObject->shadowX().inUnits(mUnits) );
|
shadowXSpin->setValue( mObject->shadowX().inUnits(mUnits) );
|
||||||
@@ -158,65 +158,11 @@ void ObjectEditor::loadShadowPage()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ObjectEditor::spinDigits( glabels::Distance::Units units )
|
|
||||||
{
|
|
||||||
int digits;
|
|
||||||
|
|
||||||
switch (units)
|
|
||||||
{
|
|
||||||
case glabels::Distance::Units::PT:
|
|
||||||
digits = 2;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::IN:
|
|
||||||
digits = 3;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::MM:
|
|
||||||
digits = 2;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::CM:
|
|
||||||
digits = 3;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::PC:
|
|
||||||
digits = 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return digits;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
double ObjectEditor::spinStep( glabels::Distance::Units units )
|
|
||||||
{
|
|
||||||
double step;
|
|
||||||
|
|
||||||
switch (units)
|
|
||||||
{
|
|
||||||
case glabels::Distance::Units::PT:
|
|
||||||
step = 0.01;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::IN:
|
|
||||||
step = 0.001;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::MM:
|
|
||||||
step = 0.01;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::CM:
|
|
||||||
step = 0.001;
|
|
||||||
break;
|
|
||||||
case glabels::Distance::Units::PC:
|
|
||||||
step = 0.01;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return step;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ObjectEditor::onSettingsChanged()
|
void ObjectEditor::onSettingsChanged()
|
||||||
{
|
{
|
||||||
mUnits = Settings::units();
|
mUnits = Settings::units();
|
||||||
mSpinDigits = spinDigits( mUnits );
|
mSpinDigits = mUnits.resolutionDigits();
|
||||||
mSpinStep = spinStep( mUnits );
|
mSpinStep = mUnits.resolution();
|
||||||
|
|
||||||
/* Must now update limits and reload any active pages with appropriate units . */
|
/* Must now update limits and reload any active pages with appropriate units . */
|
||||||
onLabelSizeChanged();
|
onLabelSizeChanged();
|
||||||
|
|||||||
@@ -60,9 +60,6 @@ private:
|
|||||||
void loadRectSizePage();
|
void loadRectSizePage();
|
||||||
void loadShadowPage();
|
void loadShadowPage();
|
||||||
|
|
||||||
int spinDigits( glabels::Distance::Units units );
|
|
||||||
double spinStep( glabels::Distance::Units units );
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Slots
|
// Slots
|
||||||
@@ -89,7 +86,7 @@ private:
|
|||||||
LabelModel* mModel;
|
LabelModel* mModel;
|
||||||
LabelModelObject* mObject;
|
LabelModelObject* mObject;
|
||||||
|
|
||||||
glabels::Distance::Units mUnits;
|
glabels::Units mUnits;
|
||||||
int mSpinDigits;
|
int mSpinDigits;
|
||||||
double mSpinStep;
|
double mSpinStep;
|
||||||
|
|
||||||
|
|||||||
@@ -31,18 +31,18 @@ PreferencesDialog::PreferencesDialog( QWidget *parent )
|
|||||||
{
|
{
|
||||||
setupUi( this );
|
setupUi( this );
|
||||||
|
|
||||||
switch ( Settings::units() )
|
switch ( Settings::units().toEnum() )
|
||||||
{
|
{
|
||||||
case glabels::Distance::Units::IN:
|
case glabels::Units::IN:
|
||||||
unitsInchesRadio->setChecked( true );
|
unitsInchesRadio->setChecked( true );
|
||||||
break;
|
break;
|
||||||
case glabels::Distance::Units::MM:
|
case glabels::Units::MM:
|
||||||
unitsMillimetersRadio->setChecked( true );
|
unitsMillimetersRadio->setChecked( true );
|
||||||
break;
|
break;
|
||||||
case glabels::Distance::Units::CM:
|
case glabels::Units::CM:
|
||||||
unitsCentimetersRadio->setChecked( true );
|
unitsCentimetersRadio->setChecked( true );
|
||||||
break;
|
break;
|
||||||
case glabels::Distance::Units::PC:
|
case glabels::Units::PC:
|
||||||
unitsPicasRadio->setChecked( true );
|
unitsPicasRadio->setChecked( true );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -59,22 +59,22 @@ void PreferencesDialog::onUnitsRadiosChanged()
|
|||||||
{
|
{
|
||||||
if ( unitsInchesRadio->isChecked() )
|
if ( unitsInchesRadio->isChecked() )
|
||||||
{
|
{
|
||||||
Settings::setUnits( glabels::Distance::Units::IN );
|
Settings::setUnits( glabels::Units::in() );
|
||||||
}
|
}
|
||||||
else if ( unitsMillimetersRadio->isChecked() )
|
else if ( unitsMillimetersRadio->isChecked() )
|
||||||
{
|
{
|
||||||
Settings::setUnits( glabels::Distance::Units::MM );
|
Settings::setUnits( glabels::Units::mm() );
|
||||||
}
|
}
|
||||||
else if ( unitsCentimetersRadio->isChecked() )
|
else if ( unitsCentimetersRadio->isChecked() )
|
||||||
{
|
{
|
||||||
Settings::setUnits( glabels::Distance::Units::CM );
|
Settings::setUnits( glabels::Units::cm() );
|
||||||
}
|
}
|
||||||
else if ( unitsPicasRadio->isChecked() )
|
else if ( unitsPicasRadio->isChecked() )
|
||||||
{
|
{
|
||||||
Settings::setUnits( glabels::Distance::Units::PC );
|
Settings::setUnits( glabels::Units::pc() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Settings::setUnits( glabels::Distance::Units::PT );
|
Settings::setUnits( glabels::Units::pt() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "PropertiesView.h"
|
#include "PropertiesView.h"
|
||||||
|
|
||||||
#include "LabelModel.h"
|
#include "LabelModel.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
|
||||||
#include "libglabels/Db.h"
|
#include "libglabels/Db.h"
|
||||||
#include "SelectProductDialog.h"
|
#include "SelectProductDialog.h"
|
||||||
@@ -37,6 +38,9 @@ PropertiesView::PropertiesView( QWidget *parent )
|
|||||||
|
|
||||||
similarBrowser->setAttribute(Qt::WA_TranslucentBackground);
|
similarBrowser->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
similarBrowser->viewport()->setAutoFillBackground(false);
|
similarBrowser->viewport()->setAutoFillBackground(false);
|
||||||
|
|
||||||
|
connect( Settings::instance(), SIGNAL(changed()), this, SLOT(onSettingsChanged()) );
|
||||||
|
onSettingsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -61,6 +65,19 @@ void PropertiesView::setModel( LabelModel* model )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Settings changed handler
|
||||||
|
///
|
||||||
|
void PropertiesView::onSettingsChanged()
|
||||||
|
{
|
||||||
|
mUnits = Settings::units();
|
||||||
|
if (mModel)
|
||||||
|
{
|
||||||
|
onLabelSizeChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Label size changed handler
|
/// Label size changed handler
|
||||||
///
|
///
|
||||||
@@ -99,7 +116,7 @@ void PropertiesView::onLabelSizeChanged()
|
|||||||
QString pgSizeString = glabels::Db::lookupPaperNameFromId( tmplate->paperId() );
|
QString pgSizeString = glabels::Db::lookupPaperNameFromId( tmplate->paperId() );
|
||||||
pageSizeLabel->setText( pgSizeString );
|
pageSizeLabel->setText( pgSizeString );
|
||||||
|
|
||||||
QString labelSizeString = frame->sizeDescription( glabels::Distance::Units::IN );
|
QString labelSizeString = frame->sizeDescription( mUnits );
|
||||||
labelSizeLabel->setText( labelSizeString );
|
labelSizeLabel->setText( labelSizeString );
|
||||||
|
|
||||||
QString layoutString = frame->layoutDescription();
|
QString layoutString = frame->layoutDescription();
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "ui_PropertiesView.h"
|
#include "ui_PropertiesView.h"
|
||||||
|
|
||||||
|
#include "libglabels/Units.h"
|
||||||
|
|
||||||
class LabelModel; // Forward reference
|
class LabelModel; // Forward reference
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ public:
|
|||||||
// Slots
|
// Slots
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private slots:
|
private slots:
|
||||||
|
void onSettingsChanged();
|
||||||
void onLabelSizeChanged();
|
void onLabelSizeChanged();
|
||||||
void onFormChanged();
|
void onFormChanged();
|
||||||
void onChangeProductButtonClicked();
|
void onChangeProductButtonClicked();
|
||||||
@@ -62,7 +64,8 @@ private slots:
|
|||||||
// Private Data
|
// Private Data
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private:
|
private:
|
||||||
LabelModel* mModel;
|
LabelModel* mModel;
|
||||||
|
glabels::Units mUnits;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -50,30 +50,30 @@ Settings* Settings::instance()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
glabels::Distance::Units Settings::units()
|
glabels::Units Settings::units()
|
||||||
{
|
{
|
||||||
// Guess at a suitable default
|
// Guess at a suitable default
|
||||||
QString defaultIdString;
|
QString defaultIdString;
|
||||||
if ( QLocale::system().measurementSystem() == QLocale::ImperialSystem )
|
if ( QLocale::system().measurementSystem() == QLocale::ImperialSystem )
|
||||||
{
|
{
|
||||||
defaultIdString = glabels::Distance::toId( glabels::Distance::Units::IN );
|
defaultIdString = glabels::Units(glabels::Units::IN).toIdString();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
defaultIdString = glabels::Distance::toId( glabels::Distance::Units::MM );
|
defaultIdString = glabels::Units(glabels::Units::MM).toIdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
mInstance->beginGroup( "Locale" );
|
mInstance->beginGroup( "Locale" );
|
||||||
QString idString = mInstance->value( "units", defaultIdString ).toString();
|
QString idString = mInstance->value( "units", defaultIdString ).toString();
|
||||||
mInstance->endGroup();
|
mInstance->endGroup();
|
||||||
|
|
||||||
return glabels::Distance::toUnits( idString );
|
return glabels::Units( idString );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Settings::setUnits( glabels::Distance::Units units )
|
void Settings::setUnits( const glabels::Units& units )
|
||||||
{
|
{
|
||||||
QString idString = glabels::Distance::toId( units );
|
QString idString = units.toIdString();
|
||||||
|
|
||||||
mInstance->beginGroup( "Locale" );
|
mInstance->beginGroup( "Locale" );
|
||||||
mInstance->setValue( "units", idString );
|
mInstance->setValue( "units", idString );
|
||||||
|
|||||||
+2
-2
@@ -60,8 +60,8 @@ signals:
|
|||||||
// Accessors
|
// Accessors
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
public:
|
public:
|
||||||
static glabels::Distance::Units units();
|
static glabels::Units units();
|
||||||
static void setUnits( glabels::Distance::Units units );
|
static void setUnits( const glabels::Units& units );
|
||||||
|
|
||||||
static bool searchIsoPaperSizes();
|
static bool searchIsoPaperSizes();
|
||||||
static void setSearchIsoPaperSizes( bool searchIsoPaperSizes );
|
static void setSearchIsoPaperSizes( bool searchIsoPaperSizes );
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "LabelModel.h"
|
#include "LabelModel.h"
|
||||||
#include "LabelModelObject.h"
|
#include "LabelModelObject.h"
|
||||||
#include "LabelModelBoxObject.h"
|
#include "LabelModelBoxObject.h"
|
||||||
|
#include "Settings.h"
|
||||||
#include "Cursors.h"
|
#include "Cursors.h"
|
||||||
|
|
||||||
#include "libglabels/Markup.h"
|
#include "libglabels/Markup.h"
|
||||||
@@ -85,6 +86,10 @@ View::View( QScrollArea* scrollArea, QWidget* parent )
|
|||||||
mGridSpacing = 18;
|
mGridSpacing = 18;
|
||||||
|
|
||||||
setMouseTracking( true );
|
setMouseTracking( true );
|
||||||
|
setFocusPolicy(Qt::StrongFocus);
|
||||||
|
|
||||||
|
connect( Settings::instance(), SIGNAL(changed()), this, SLOT(onSettingsChanged()) );
|
||||||
|
onSettingsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -851,6 +856,50 @@ View::handleResizeMotion( const glabels::Distance& xWorld,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Key Press Event Handler
|
||||||
|
void
|
||||||
|
View::keyPressEvent( QKeyEvent* event )
|
||||||
|
{
|
||||||
|
if ( mState == IdleState )
|
||||||
|
{
|
||||||
|
switch (event->key())
|
||||||
|
{
|
||||||
|
|
||||||
|
case Qt::Key_Left:
|
||||||
|
mModel->moveSelection( -mStepSize, glabels::Distance(0) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::Key_Up:
|
||||||
|
mModel->moveSelection( glabels::Distance(0), -mStepSize );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::Key_Right:
|
||||||
|
mModel->moveSelection( mStepSize, glabels::Distance(0) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::Key_Down:
|
||||||
|
mModel->moveSelection( glabels::Distance(0), mStepSize );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::Key_Delete:
|
||||||
|
mModel->deleteSelection();
|
||||||
|
setCursor( Qt::ArrowCursor );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
QWidget::keyPressEvent( event );
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QWidget::keyPressEvent( event );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Paint Event Handler
|
/// Paint Event Handler
|
||||||
///
|
///
|
||||||
@@ -1092,6 +1141,17 @@ View::drawSelectRegionLayer( QPainter* painter )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Settings changed handler
|
||||||
|
///
|
||||||
|
void View::onSettingsChanged()
|
||||||
|
{
|
||||||
|
glabels::Units units = Settings::units();
|
||||||
|
|
||||||
|
mStepSize = glabels::Distance( units.resolution(), units );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Model changed handler
|
/// Model changed handler
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ protected:
|
|||||||
void mouseMoveEvent( QMouseEvent* event );
|
void mouseMoveEvent( QMouseEvent* event );
|
||||||
void mouseReleaseEvent( QMouseEvent* event );
|
void mouseReleaseEvent( QMouseEvent* event );
|
||||||
void leaveEvent( QEvent* event );
|
void leaveEvent( QEvent* event );
|
||||||
|
void keyPressEvent( QKeyEvent* event );
|
||||||
void paintEvent( QPaintEvent* event );
|
void paintEvent( QPaintEvent* event );
|
||||||
|
|
||||||
|
|
||||||
@@ -142,6 +143,7 @@ private:
|
|||||||
// Private slots
|
// Private slots
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
private slots:
|
private slots:
|
||||||
|
void onSettingsChanged();
|
||||||
void onModelChanged();
|
void onModelChanged();
|
||||||
void onModelSizeChanged();
|
void onModelSizeChanged();
|
||||||
|
|
||||||
@@ -180,6 +182,7 @@ private:
|
|||||||
bool mGridVisible;
|
bool mGridVisible;
|
||||||
|
|
||||||
double mGridSpacing;
|
double mGridSpacing;
|
||||||
|
glabels::Distance mStepSize;
|
||||||
|
|
||||||
LabelModel* mModel;
|
LabelModel* mModel;
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ set (libglabels_sources
|
|||||||
XmlTemplateCreator.cpp
|
XmlTemplateCreator.cpp
|
||||||
XmlUtil.cpp
|
XmlUtil.cpp
|
||||||
MiniPreviewPixmap.cpp
|
MiniPreviewPixmap.cpp
|
||||||
|
Units.cpp
|
||||||
Distance.cpp
|
Distance.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace glabels
|
|||||||
const double PTS_PER_INCH = 72.0;
|
const double PTS_PER_INCH = 72.0;
|
||||||
const double PTS_PER_MM = 2.83464566929;
|
const double PTS_PER_MM = 2.83464566929;
|
||||||
const double PTS_PER_CM = (10.0*PTS_PER_MM);
|
const double PTS_PER_CM = (10.0*PTS_PER_MM);
|
||||||
const double PTS_PER_PICA = (1.0/12.0);
|
const double PTS_PER_PICA = 12.0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+79
-128
@@ -27,125 +27,9 @@
|
|||||||
namespace glabels
|
namespace glabels
|
||||||
{
|
{
|
||||||
|
|
||||||
QString Distance::toId( Units units )
|
Distance::Distance( double d, Units::Enum unitsEnum )
|
||||||
{
|
{
|
||||||
QString idString;
|
switch (unitsEnum)
|
||||||
|
|
||||||
switch (units)
|
|
||||||
{
|
|
||||||
case Units::PT:
|
|
||||||
idString = "pt";
|
|
||||||
break;
|
|
||||||
case Units::IN:
|
|
||||||
idString = "in";
|
|
||||||
break;
|
|
||||||
case Units::MM:
|
|
||||||
idString = "mm";
|
|
||||||
break;
|
|
||||||
case Units::CM:
|
|
||||||
idString = "cm";
|
|
||||||
break;
|
|
||||||
case Units::PC:
|
|
||||||
idString = "pc";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return idString;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QString Distance::toTrName( Units units )
|
|
||||||
{
|
|
||||||
QString nameString;
|
|
||||||
|
|
||||||
switch (units)
|
|
||||||
{
|
|
||||||
case Units::PT:
|
|
||||||
nameString = tr("points");
|
|
||||||
break;
|
|
||||||
case Units::IN:
|
|
||||||
nameString = tr("inches");
|
|
||||||
break;
|
|
||||||
case Units::MM:
|
|
||||||
nameString = tr("mm");
|
|
||||||
break;
|
|
||||||
case Units::CM:
|
|
||||||
nameString = tr("cm");
|
|
||||||
break;
|
|
||||||
case Units::PC:
|
|
||||||
nameString = tr("picas");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nameString;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool Distance::isIdValid( const QString& unitsId )
|
|
||||||
{
|
|
||||||
bool retValue = false;
|
|
||||||
|
|
||||||
if ( unitsId == "pt" )
|
|
||||||
{
|
|
||||||
retValue = true;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "in" )
|
|
||||||
{
|
|
||||||
retValue = true;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "mm" )
|
|
||||||
{
|
|
||||||
retValue = true;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "cm" )
|
|
||||||
{
|
|
||||||
retValue = true;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "pc" )
|
|
||||||
{
|
|
||||||
retValue = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Distance::Units Distance::toUnits( const QString& unitsId )
|
|
||||||
{
|
|
||||||
Units units;
|
|
||||||
|
|
||||||
if ( unitsId == "pt" )
|
|
||||||
{
|
|
||||||
units = Units::PT;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "in" )
|
|
||||||
{
|
|
||||||
units = Units::IN;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "mm" )
|
|
||||||
{
|
|
||||||
units = Units::MM;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "cm" )
|
|
||||||
{
|
|
||||||
units = Units::CM;
|
|
||||||
}
|
|
||||||
else if ( unitsId == "pc" )
|
|
||||||
{
|
|
||||||
units = Units::PC;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
units = Units::PT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Distance::Distance( double d, Units units )
|
|
||||||
{
|
|
||||||
switch (units)
|
|
||||||
{
|
{
|
||||||
case Units::PT:
|
case Units::PT:
|
||||||
mDPts = d;
|
mDPts = d;
|
||||||
@@ -162,15 +46,44 @@ namespace glabels
|
|||||||
case Units::PC:
|
case Units::PC:
|
||||||
mDPts = d * PTS_PER_PICA;
|
mDPts = d * PTS_PER_PICA;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
mDPts = d;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Distance::Distance( double d, const Units& units )
|
||||||
|
{
|
||||||
|
switch (units.toEnum())
|
||||||
|
{
|
||||||
|
case Units::PT:
|
||||||
|
mDPts = d;
|
||||||
|
break;
|
||||||
|
case Units::IN:
|
||||||
|
mDPts = d * PTS_PER_INCH;
|
||||||
|
break;
|
||||||
|
case Units::MM:
|
||||||
|
mDPts = d * PTS_PER_MM;
|
||||||
|
break;
|
||||||
|
case Units::CM:
|
||||||
|
mDPts = d * PTS_PER_CM;
|
||||||
|
break;
|
||||||
|
case Units::PC:
|
||||||
|
mDPts = d * PTS_PER_PICA;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mDPts = d;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Distance::Distance( double d, const QString& unitsId )
|
Distance::Distance( double d, const QString& unitsId )
|
||||||
{
|
{
|
||||||
Units units = toUnits( unitsId );
|
Units units = Units( unitsId );
|
||||||
|
|
||||||
switch (units)
|
switch (units.toEnum())
|
||||||
{
|
{
|
||||||
case Units::PT:
|
case Units::PT:
|
||||||
mDPts = d;
|
mDPts = d;
|
||||||
@@ -187,6 +100,9 @@ namespace glabels
|
|||||||
case Units::PC:
|
case Units::PC:
|
||||||
mDPts = d * PTS_PER_PICA;
|
mDPts = d * PTS_PER_PICA;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
mDPts = d;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,20 +116,47 @@ namespace glabels
|
|||||||
QString unitsString;
|
QString unitsString;
|
||||||
valueStream >> value >> unitsString;
|
valueStream >> value >> unitsString;
|
||||||
|
|
||||||
if ( !unitsString.isEmpty() && !isIdValid( unitsString ) )
|
if ( !unitsString.isEmpty() && !Units::isIdValid( unitsString ) )
|
||||||
{
|
{
|
||||||
qWarning() << "Error: invalid Distance::Units \"" << string << "\"";
|
qWarning() << "Invalid Units in string: \"" << string << "\"";
|
||||||
}
|
}
|
||||||
|
|
||||||
return Distance( value, unitsString );
|
return Distance( value, unitsString );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double Distance::inUnits( Units units ) const
|
double Distance::inUnits( const Units& units ) const
|
||||||
{
|
{
|
||||||
double d;
|
double d;
|
||||||
|
|
||||||
switch (units)
|
switch (units.toEnum())
|
||||||
|
{
|
||||||
|
case Units::PT:
|
||||||
|
d = pt();
|
||||||
|
break;
|
||||||
|
case Units::IN:
|
||||||
|
d = in();
|
||||||
|
break;
|
||||||
|
case Units::MM:
|
||||||
|
d = mm();
|
||||||
|
break;
|
||||||
|
case Units::CM:
|
||||||
|
d = cm();
|
||||||
|
break;
|
||||||
|
case Units::PC:
|
||||||
|
d = pc();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
double Distance::inUnits( Units::Enum unitsEnum ) const
|
||||||
|
{
|
||||||
|
double d;
|
||||||
|
|
||||||
|
switch (unitsEnum)
|
||||||
{
|
{
|
||||||
case Units::PT:
|
case Units::PT:
|
||||||
d = pt();
|
d = pt();
|
||||||
@@ -238,18 +181,26 @@ namespace glabels
|
|||||||
|
|
||||||
double Distance::inUnits( const QString& unitsId ) const
|
double Distance::inUnits( const QString& unitsId ) const
|
||||||
{
|
{
|
||||||
return inUnits( toUnits( unitsId ) );
|
return inUnits( Units( unitsId ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString Distance::toString( Units units ) const
|
QString Distance::toString( const Units& units ) const
|
||||||
{
|
{
|
||||||
return QString::number( inUnits(units) ) + toId(units);
|
return QString::number( inUnits(units) ) + units.toIdString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString Distance::toString( Units::Enum unitsEnum ) const
|
||||||
|
{
|
||||||
|
Units units(unitsEnum);
|
||||||
|
return QString::number( inUnits(units) ) + units.toIdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString Distance::toString( const QString& unitsId ) const
|
QString Distance::toString( const QString& unitsId ) const
|
||||||
{
|
{
|
||||||
return QString::number( inUnits(unitsId) ) + unitsId;
|
Units units(unitsId);
|
||||||
|
return QString::number( inUnits(units) ) + units.toIdString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-12
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include "Constants.h"
|
#include "Units.h"
|
||||||
|
|
||||||
|
|
||||||
namespace glabels
|
namespace glabels
|
||||||
@@ -36,16 +36,9 @@ namespace glabels
|
|||||||
Q_DECLARE_TR_FUNCTIONS(Distance)
|
Q_DECLARE_TR_FUNCTIONS(Distance)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum class Units { PT, IN, MM, CM, PC };
|
|
||||||
|
|
||||||
static QString toId( Units units );
|
|
||||||
static QString toTrName( Units units );
|
|
||||||
static bool isIdValid( const QString& unitsId );
|
|
||||||
static Units toUnits( const QString& unitsId );
|
|
||||||
|
|
||||||
|
|
||||||
Distance();
|
Distance();
|
||||||
Distance( double d, Units units = Units::PT );
|
Distance( double d, Units::Enum unitsEnum = Units::PT );
|
||||||
|
Distance( double d, const Units& units );
|
||||||
Distance( double d, const QString& unitsId );
|
Distance( double d, const QString& unitsId );
|
||||||
|
|
||||||
static Distance pt( double dPts );
|
static Distance pt( double dPts );
|
||||||
@@ -61,11 +54,13 @@ namespace glabels
|
|||||||
double mm() const;
|
double mm() const;
|
||||||
double cm() const;
|
double cm() const;
|
||||||
double pc() const;
|
double pc() const;
|
||||||
double inUnits( Units units ) const;
|
double inUnits( const Units& units ) const;
|
||||||
|
double inUnits( Units::Enum unitsEnum ) const;
|
||||||
double inUnits( const QString& unitsId ) const;
|
double inUnits( const QString& unitsId ) const;
|
||||||
|
|
||||||
|
|
||||||
QString toString( Units units ) const;
|
QString toString( const Units& units ) const;
|
||||||
|
QString toString( Units::Enum unitsEnum ) const;
|
||||||
QString toString( const QString& unitsId ) const;
|
QString toString( const QString& unitsId ) const;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Constants.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ namespace glabels
|
|||||||
virtual Distance w() const = 0;
|
virtual Distance w() const = 0;
|
||||||
virtual Distance h() const = 0;
|
virtual Distance h() const = 0;
|
||||||
|
|
||||||
virtual const QString sizeDescription( Distance::Units units ) const = 0;
|
virtual const QString sizeDescription( const Units& units ) const = 0;
|
||||||
virtual bool isSimilarTo( Frame* other ) const = 0;
|
virtual bool isSimilarTo( Frame* other ) const = 0;
|
||||||
|
|
||||||
virtual const QPainterPath& path() const = 0;
|
virtual const QPainterPath& path() const = 0;
|
||||||
|
|||||||
@@ -85,22 +85,22 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QString FrameCd::sizeDescription( Distance::Units units ) const
|
const QString FrameCd::sizeDescription( const Units& units ) const
|
||||||
{
|
{
|
||||||
if ( units == Distance::Units::IN )
|
if ( units.toEnum() == Units::IN )
|
||||||
{
|
{
|
||||||
QString dStr = StrUtil::formatFraction( 2 * mR1.in() );
|
QString dStr = StrUtil::formatFraction( 2 * mR1.in() );
|
||||||
|
|
||||||
return QString().sprintf( "%s %s %s",
|
return QString().sprintf( "%s %s %s",
|
||||||
qPrintable(dStr),
|
qPrintable(dStr),
|
||||||
qPrintable(Distance::toTrName(units)),
|
qPrintable(units.toTrName()),
|
||||||
qPrintable(tr("diameter")) );
|
qPrintable(tr("diameter")) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString().sprintf( "%.5g %s %s",
|
return QString().sprintf( "%.5g %s %s",
|
||||||
2 * mR1.inUnits(units),
|
2 * mR1.inUnits(units),
|
||||||
qPrintable(Distance::toTrName(units)),
|
qPrintable(units.toTrName()),
|
||||||
qPrintable(tr("diameter")) );
|
qPrintable(tr("diameter")) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace glabels
|
|||||||
Distance w() const;
|
Distance w() const;
|
||||||
Distance h() const;
|
Distance h() const;
|
||||||
|
|
||||||
const QString sizeDescription( Distance::Units units ) const;
|
const QString sizeDescription( const Units& units ) const;
|
||||||
bool isSimilarTo( Frame* other ) const;
|
bool isSimilarTo( Frame* other ) const;
|
||||||
|
|
||||||
const QPainterPath& path() const;
|
const QPainterPath& path() const;
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QString FrameEllipse::sizeDescription( Distance::Units units ) const
|
const QString FrameEllipse::sizeDescription( const Units& units ) const
|
||||||
{
|
{
|
||||||
if ( units == Distance::Units::IN )
|
if ( units.toEnum() == Units::IN )
|
||||||
{
|
{
|
||||||
QString wStr = StrUtil::formatFraction( mW.in() );
|
QString wStr = StrUtil::formatFraction( mW.in() );
|
||||||
QString hStr = StrUtil::formatFraction( mH.in() );
|
QString hStr = StrUtil::formatFraction( mH.in() );
|
||||||
@@ -72,14 +72,14 @@ namespace glabels
|
|||||||
return QString().sprintf( "%s x %s %s",
|
return QString().sprintf( "%s x %s %s",
|
||||||
qPrintable(wStr),
|
qPrintable(wStr),
|
||||||
qPrintable(hStr),
|
qPrintable(hStr),
|
||||||
qPrintable(Distance::toTrName(units)) );
|
qPrintable(units.toTrName()) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString().sprintf( "%.5g x %.5g %s",
|
return QString().sprintf( "%.5g x %.5g %s",
|
||||||
mW.inUnits(units),
|
mW.inUnits(units),
|
||||||
mH.inUnits(units),
|
mH.inUnits(units),
|
||||||
qPrintable(Distance::toTrName(units)) );
|
qPrintable(units.toTrName()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ namespace glabels
|
|||||||
Distance w() const;
|
Distance w() const;
|
||||||
Distance h() const;
|
Distance h() const;
|
||||||
|
|
||||||
const QString sizeDescription( Distance::Units units ) const;
|
const QString sizeDescription( const Units& units ) const;
|
||||||
bool isSimilarTo( Frame* other ) const;
|
bool isSimilarTo( Frame* other ) const;
|
||||||
|
|
||||||
const QPainterPath& path() const;
|
const QPainterPath& path() const;
|
||||||
|
|||||||
@@ -66,9 +66,9 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QString FrameRect::sizeDescription( Distance::Units units ) const
|
const QString FrameRect::sizeDescription( const Units& units ) const
|
||||||
{
|
{
|
||||||
if ( units == Distance::Units::IN )
|
if ( units.toEnum() == Units::IN )
|
||||||
{
|
{
|
||||||
QString wStr = StrUtil::formatFraction( mW.in() );
|
QString wStr = StrUtil::formatFraction( mW.in() );
|
||||||
QString hStr = StrUtil::formatFraction( mH.in() );
|
QString hStr = StrUtil::formatFraction( mH.in() );
|
||||||
@@ -76,14 +76,14 @@ namespace glabels
|
|||||||
return QString().sprintf( "%s x %s %s",
|
return QString().sprintf( "%s x %s %s",
|
||||||
qPrintable(wStr),
|
qPrintable(wStr),
|
||||||
qPrintable(hStr),
|
qPrintable(hStr),
|
||||||
qPrintable(Distance::toTrName(units)) );
|
qPrintable(units.toTrName()) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString().sprintf( "%.5g x %.5g %s",
|
return QString().sprintf( "%.5g x %.5g %s",
|
||||||
mW.inUnits(units),
|
mW.inUnits(units),
|
||||||
mH.inUnits(units),
|
mH.inUnits(units),
|
||||||
qPrintable(Distance::toTrName(units)) );
|
qPrintable(units.toTrName()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace glabels
|
|||||||
Distance w() const;
|
Distance w() const;
|
||||||
Distance h() const;
|
Distance h() const;
|
||||||
|
|
||||||
const QString sizeDescription( Distance::Units units ) const;
|
const QString sizeDescription( const Units& units ) const;
|
||||||
|
|
||||||
bool isSimilarTo( Frame* other ) const;
|
bool isSimilarTo( Frame* other ) const;
|
||||||
|
|
||||||
|
|||||||
@@ -62,22 +62,22 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const QString FrameRound::sizeDescription( Distance::Units units ) const
|
const QString FrameRound::sizeDescription( const Units& units ) const
|
||||||
{
|
{
|
||||||
if ( units == Distance::Units::IN )
|
if ( units.toEnum() == Units::IN )
|
||||||
{
|
{
|
||||||
QString dStr = StrUtil::formatFraction( 2 * mR.in() );
|
QString dStr = StrUtil::formatFraction( 2 * mR.in() );
|
||||||
|
|
||||||
return QString().sprintf( "%s %s %s",
|
return QString().sprintf( "%s %s %s",
|
||||||
qPrintable(dStr),
|
qPrintable(dStr),
|
||||||
qPrintable(Distance::toTrName(units)),
|
qPrintable(units.toTrName()),
|
||||||
qPrintable(tr("diameter")) );
|
qPrintable(tr("diameter")) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString().sprintf( "%.5g %s %s",
|
return QString().sprintf( "%.5g %s %s",
|
||||||
2 * mR.inUnits(units),
|
2 * mR.inUnits(units),
|
||||||
qPrintable(Distance::toTrName(units)),
|
qPrintable(units.toTrName()),
|
||||||
qPrintable(tr("diameter")) );
|
qPrintable(tr("diameter")) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ namespace glabels
|
|||||||
Distance w() const;
|
Distance w() const;
|
||||||
Distance h() const;
|
Distance h() const;
|
||||||
|
|
||||||
const QString sizeDescription( Distance::Units units ) const;
|
const QString sizeDescription( const Units& units ) const;
|
||||||
bool isSimilarTo( Frame* other ) const;
|
bool isSimilarTo( Frame* other ) const;
|
||||||
|
|
||||||
const QPainterPath& path() const;
|
const QPainterPath& path() const;
|
||||||
|
|||||||
@@ -0,0 +1,258 @@
|
|||||||
|
/* Units.cpp
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Units.h"
|
||||||
|
|
||||||
|
#include <QTextStream>
|
||||||
|
#include <QtDebug>
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
Units::Units() : mEnumValue(PT)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units::Units( Units::Enum enumValue ) : mEnumValue(enumValue)
|
||||||
|
{
|
||||||
|
switch (enumValue)
|
||||||
|
{
|
||||||
|
case PT:
|
||||||
|
case IN:
|
||||||
|
case MM:
|
||||||
|
case CM:
|
||||||
|
case PC:
|
||||||
|
/* Catch all valid enum values. */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* Catch invalid enum values, reset to PT. */
|
||||||
|
qWarning() << "Bad Units::Enum value = " << enumValue << ".";
|
||||||
|
mEnumValue = PT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units::Units( const QString& idString )
|
||||||
|
{
|
||||||
|
if ( idString == "pt" )
|
||||||
|
{
|
||||||
|
mEnumValue = PT;
|
||||||
|
}
|
||||||
|
else if ( idString == "in" )
|
||||||
|
{
|
||||||
|
mEnumValue = IN;
|
||||||
|
}
|
||||||
|
else if ( idString == "mm" )
|
||||||
|
{
|
||||||
|
mEnumValue = MM;
|
||||||
|
}
|
||||||
|
else if ( idString == "cm" )
|
||||||
|
{
|
||||||
|
mEnumValue = CM;
|
||||||
|
}
|
||||||
|
else if ( idString == "pc" )
|
||||||
|
{
|
||||||
|
mEnumValue = PC;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mEnumValue = PT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units Units::pt()
|
||||||
|
{
|
||||||
|
return Units(PT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units Units::in()
|
||||||
|
{
|
||||||
|
return Units(IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units Units::mm()
|
||||||
|
{
|
||||||
|
return Units(MM);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units Units::cm()
|
||||||
|
{
|
||||||
|
return Units(CM);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units Units::pc()
|
||||||
|
{
|
||||||
|
return Units(PC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Units::Enum Units::toEnum() const
|
||||||
|
{
|
||||||
|
return mEnumValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString Units::toIdString() const
|
||||||
|
{
|
||||||
|
QString idString;
|
||||||
|
|
||||||
|
switch (mEnumValue)
|
||||||
|
{
|
||||||
|
case Units::PT:
|
||||||
|
idString = "pt";
|
||||||
|
break;
|
||||||
|
case Units::IN:
|
||||||
|
idString = "in";
|
||||||
|
break;
|
||||||
|
case Units::MM:
|
||||||
|
idString = "mm";
|
||||||
|
break;
|
||||||
|
case Units::CM:
|
||||||
|
idString = "cm";
|
||||||
|
break;
|
||||||
|
case Units::PC:
|
||||||
|
idString = "pc";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return idString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString Units::toTrName() const
|
||||||
|
{
|
||||||
|
QString nameString;
|
||||||
|
|
||||||
|
switch (mEnumValue)
|
||||||
|
{
|
||||||
|
case Units::PT:
|
||||||
|
nameString = tr("points");
|
||||||
|
break;
|
||||||
|
case Units::IN:
|
||||||
|
nameString = tr("inches");
|
||||||
|
break;
|
||||||
|
case Units::MM:
|
||||||
|
nameString = tr("mm");
|
||||||
|
break;
|
||||||
|
case Units::CM:
|
||||||
|
nameString = tr("cm");
|
||||||
|
break;
|
||||||
|
case Units::PC:
|
||||||
|
nameString = tr("picas");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nameString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
double Units::resolution() const
|
||||||
|
{
|
||||||
|
double value;
|
||||||
|
|
||||||
|
switch (mEnumValue)
|
||||||
|
{
|
||||||
|
case glabels::Units::PT:
|
||||||
|
value = 0.01;
|
||||||
|
break;
|
||||||
|
case glabels::Units::IN:
|
||||||
|
value = 0.001;
|
||||||
|
break;
|
||||||
|
case glabels::Units::MM:
|
||||||
|
value = 0.01;
|
||||||
|
break;
|
||||||
|
case glabels::Units::CM:
|
||||||
|
value = 0.001;
|
||||||
|
break;
|
||||||
|
case glabels::Units::PC:
|
||||||
|
value = 0.01;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Units::resolutionDigits() const
|
||||||
|
{
|
||||||
|
int digits;
|
||||||
|
|
||||||
|
switch (mEnumValue)
|
||||||
|
{
|
||||||
|
case glabels::Units::PT:
|
||||||
|
digits = 2;
|
||||||
|
break;
|
||||||
|
case glabels::Units::IN:
|
||||||
|
digits = 3;
|
||||||
|
break;
|
||||||
|
case glabels::Units::MM:
|
||||||
|
digits = 2;
|
||||||
|
break;
|
||||||
|
case glabels::Units::CM:
|
||||||
|
digits = 3;
|
||||||
|
break;
|
||||||
|
case glabels::Units::PC:
|
||||||
|
digits = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return digits;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Units::isIdValid( const QString& idString )
|
||||||
|
{
|
||||||
|
bool retValue = false;
|
||||||
|
|
||||||
|
if ( idString == "pt" )
|
||||||
|
{
|
||||||
|
retValue = true;
|
||||||
|
}
|
||||||
|
else if ( idString == "in" )
|
||||||
|
{
|
||||||
|
retValue = true;
|
||||||
|
}
|
||||||
|
else if ( idString == "mm" )
|
||||||
|
{
|
||||||
|
retValue = true;
|
||||||
|
}
|
||||||
|
else if ( idString == "cm" )
|
||||||
|
{
|
||||||
|
retValue = true;
|
||||||
|
}
|
||||||
|
else if ( idString == "pc" )
|
||||||
|
{
|
||||||
|
retValue = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/* Units.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef glabels_Units_h
|
||||||
|
#define glabels_Units_h
|
||||||
|
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
class Units
|
||||||
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(Units)
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum Enum { PT, IN, MM, CM, PC };
|
||||||
|
|
||||||
|
Units();
|
||||||
|
Units( Enum enumValue );
|
||||||
|
Units( const QString& idString );
|
||||||
|
|
||||||
|
static Units pt();
|
||||||
|
static Units in();
|
||||||
|
static Units mm();
|
||||||
|
static Units cm();
|
||||||
|
static Units pc();
|
||||||
|
|
||||||
|
Enum toEnum() const;
|
||||||
|
|
||||||
|
QString toIdString() const;
|
||||||
|
QString toTrName() const;
|
||||||
|
|
||||||
|
double resolution() const;
|
||||||
|
int resolutionDigits() const;
|
||||||
|
|
||||||
|
static bool isIdValid( const QString& unitsId );
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
Enum mEnumValue;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif // glabels_Units_h
|
||||||
@@ -27,12 +27,12 @@
|
|||||||
namespace glabels
|
namespace glabels
|
||||||
{
|
{
|
||||||
|
|
||||||
Distance::Units XmlUtil::mUnits;
|
Units XmlUtil::mUnits;
|
||||||
|
|
||||||
|
|
||||||
XmlUtil::XmlUtil()
|
XmlUtil::XmlUtil()
|
||||||
{
|
{
|
||||||
mUnits = Distance::Units::PT;
|
mUnits = Units(Units::PT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Distance::Units XmlUtil::units()
|
Units XmlUtil::units()
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XmlUtil::setUnits( Distance::Units units )
|
void XmlUtil::setUnits( const Units& units )
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ namespace glabels
|
|||||||
|
|
||||||
valueStream >> value >> unitsString;
|
valueStream >> value >> unitsString;
|
||||||
|
|
||||||
if ( !unitsString.isEmpty() && !Distance::isIdValid( unitsString ) )
|
if ( !unitsString.isEmpty() && !Units::isIdValid( unitsString ) )
|
||||||
{
|
{
|
||||||
qWarning() << "Error: bad length value in attribute "
|
qWarning() << "Error: bad length value in attribute "
|
||||||
<< node.tagName() << ":" << name << "=" << valueString;
|
<< node.tagName() << ":" << name << "=" << valueString;
|
||||||
@@ -284,7 +284,7 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
||||||
node.setAttribute( name, QString::number(value.inUnits(mUnits)) + Distance::toId(mUnits) );
|
node.setAttribute( name, QString::number(value.inUnits(mUnits)) + mUnits.toIdString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ namespace glabels
|
|||||||
|
|
||||||
static void init();
|
static void init();
|
||||||
|
|
||||||
static Distance::Units units();
|
static Units units();
|
||||||
static void setUnits( Distance::Units units );
|
static void setUnits( const Units& units );
|
||||||
|
|
||||||
static QString getStringAttr( const QDomElement& node,
|
static QString getStringAttr( const QDomElement& node,
|
||||||
const QString& name,
|
const QString& name,
|
||||||
@@ -97,7 +97,7 @@ namespace glabels
|
|||||||
const Distance& value );
|
const Distance& value );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static Distance::Units mUnits;
|
static Units mUnits;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace glabels
|
|||||||
namespace Constants
|
namespace Constants
|
||||||
{
|
{
|
||||||
|
|
||||||
const Distance EPSILON( 0.5, Distance::Units::PT );
|
const Distance EPSILON( 0.5, Units::PT );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user