196 lines
3.6 KiB
C++
196 lines
3.6 KiB
C++
/* Barcode.cpp
|
|
*
|
|
* Copyright (C) 2013 Jim Evins <evins@snaught.com>
|
|
*
|
|
* This file is part of glbarcode++.
|
|
*
|
|
* glbarcode++ is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* glbarcode++ 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 Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with glbarcode++. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "Barcode.h"
|
|
|
|
#include <list>
|
|
|
|
#include "DrawingPrimitives.h"
|
|
|
|
|
|
namespace glbarcode
|
|
{
|
|
|
|
/*
|
|
* Barcode private data
|
|
*/
|
|
struct Barcode::PrivateData {
|
|
|
|
bool mShowTextFlag; /**< Display text flag */
|
|
bool mChecksumFlag; /**< Add checksum flag */
|
|
|
|
double mW; /**< Width of barcode (points) */
|
|
double mH; /**< Height of barcode (points) */
|
|
|
|
bool mIsEmpty; /**< Empty data flag */
|
|
bool mIsDataValid; /**< Valid data flag */
|
|
|
|
std::list<DrawingPrimitive *> mPrimitives; /**< List of drawing primitives */
|
|
|
|
};
|
|
|
|
|
|
Barcode::Barcode()
|
|
{
|
|
d = new Barcode::PrivateData;
|
|
|
|
d->mShowTextFlag = false;
|
|
d->mChecksumFlag = false;
|
|
|
|
d->mW = 0;
|
|
d->mH = 0;
|
|
|
|
d->mIsEmpty = true;
|
|
d->mIsDataValid = false;
|
|
}
|
|
|
|
|
|
Barcode::~Barcode()
|
|
{
|
|
clear(); /* Clear drawing primitives. */
|
|
delete d;
|
|
}
|
|
|
|
|
|
Barcode& Barcode::setShowText( bool value )
|
|
{
|
|
d->mShowTextFlag = value;
|
|
return *this;
|
|
}
|
|
|
|
|
|
bool Barcode::showText( void ) const
|
|
{
|
|
return d->mShowTextFlag;
|
|
}
|
|
|
|
|
|
Barcode& Barcode::setChecksum( bool value )
|
|
{
|
|
d->mChecksumFlag = value;
|
|
return *this;
|
|
}
|
|
|
|
|
|
bool Barcode::checksum( void ) const
|
|
{
|
|
return d->mChecksumFlag;
|
|
}
|
|
|
|
|
|
void Barcode::render( Renderer& renderer )
|
|
{
|
|
renderer.render( d->mW, d->mH, d->mPrimitives );
|
|
}
|
|
|
|
|
|
bool Barcode::isEmpty( void ) const
|
|
{
|
|
return d->mIsEmpty;
|
|
}
|
|
|
|
|
|
void Barcode::setIsEmpty( bool value )
|
|
{
|
|
d->mIsEmpty = value;
|
|
}
|
|
|
|
|
|
bool Barcode::isDataValid( void ) const
|
|
{
|
|
return d->mIsDataValid;
|
|
}
|
|
|
|
|
|
void Barcode::setIsDataValid( bool value )
|
|
{
|
|
d->mIsDataValid = value;
|
|
}
|
|
|
|
|
|
double Barcode::width( void ) const
|
|
{
|
|
return d->mW;
|
|
}
|
|
|
|
|
|
double Barcode::height( void ) const
|
|
{
|
|
return d->mH;
|
|
}
|
|
|
|
|
|
void Barcode::setWidth( double w )
|
|
{
|
|
d->mW = w;
|
|
}
|
|
|
|
|
|
void Barcode::setHeight( double h )
|
|
{
|
|
d->mH = h;
|
|
}
|
|
|
|
|
|
void Barcode::clear( void )
|
|
{
|
|
std::list<DrawingPrimitive*>::iterator primitive;
|
|
|
|
for ( primitive = d->mPrimitives.begin(); primitive != d->mPrimitives.end(); primitive++ )
|
|
{
|
|
delete *primitive;
|
|
}
|
|
|
|
d->mPrimitives.clear();
|
|
}
|
|
|
|
|
|
void Barcode::addLine( double x, double y, double w, double h )
|
|
{
|
|
d->mPrimitives.push_back( new DrawingPrimitiveLine( x, y, w, h ) );
|
|
}
|
|
|
|
|
|
void Barcode::addBox( double x, double y, double w, double h )
|
|
{
|
|
d->mPrimitives.push_back( new DrawingPrimitiveBox( x, y, w, h ) );
|
|
}
|
|
|
|
|
|
void Barcode::addText( double x, double y, double size, const std::string& text )
|
|
{
|
|
d->mPrimitives.push_back( new DrawingPrimitiveText( x, y, size, text ) );
|
|
}
|
|
|
|
|
|
void Barcode::addRing( double x, double y, double r, double w )
|
|
{
|
|
d->mPrimitives.push_back( new DrawingPrimitiveRing( x, y, r, w ) );
|
|
}
|
|
|
|
|
|
void Barcode::addHexagon( double x, double y, double h )
|
|
{
|
|
d->mPrimitives.push_back( new DrawingPrimitiveHexagon( x, y, h ) );
|
|
}
|
|
|
|
|
|
}
|