Skip to content

Commit 9f7a1ac

Browse files
authored
Merge pull request #205 from ftylitak/switch-from-ref-to-shared-pointer
Refactor all code to use QSharePointer and std::vector
2 parents 8a36df7 + 96cbe18 commit 9f7a1ac

File tree

233 files changed

+3883
-3682
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

233 files changed

+3883
-3682
lines changed

src/CameraImageWrapper.cpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ CameraImageWrapper::CameraImageWrapper(const QImage &sourceImage) : LuminanceSou
7171
{
7272
updateImageAsGrayscale( sourceImage );
7373

74-
delegate = Ref<GreyscaleLuminanceSource>(
74+
delegate = QSharedPointer<GreyscaleLuminanceSource>(
7575
new GreyscaleLuminanceSource(getMatrixP(), sourceImage.width(), sourceImage.height(),0, 0, sourceImage.width(), sourceImage.height()));
7676
}
7777

@@ -85,7 +85,7 @@ CameraImageWrapper::~CameraImageWrapper()
8585
{
8686
}
8787

88-
CameraImageWrapper *CameraImageWrapper::Factory(const QImage &sourceImage, int maxWidth, int maxHeight, bool smoothTransformation)
88+
QSharedPointer<CameraImageWrapper> CameraImageWrapper::Factory(const QImage &sourceImage, int maxWidth, int maxHeight, bool smoothTransformation)
8989
{
9090
if((maxWidth != -1 && sourceImage.width() > maxWidth) || (maxHeight != -1 && sourceImage.height() > maxHeight))
9191
{
@@ -95,26 +95,26 @@ CameraImageWrapper *CameraImageWrapper::Factory(const QImage &sourceImage, int m
9595
maxHeight != -1 ? maxHeight : sourceImage.height(),
9696
Qt::KeepAspectRatio,
9797
smoothTransformation ? Qt::SmoothTransformation : Qt::FastTransformation);
98-
return new CameraImageWrapper(image);
98+
return QSharedPointer<CameraImageWrapper>(new CameraImageWrapper(image));
9999
}
100100
else
101-
return new CameraImageWrapper(sourceImage);
101+
return QSharedPointer<CameraImageWrapper>(new CameraImageWrapper(sourceImage));
102102
}
103103

104-
ArrayRef<ArrayRef<zxing::byte> > CameraImageWrapper::getOriginalImage()
104+
QSharedPointer<std::vector<QSharedPointer<std::vector<zxing::byte>>>> CameraImageWrapper::getOriginalImage()
105105
{
106106
return imageBytesPerRow;
107107
}
108108

109-
ArrayRef<zxing::byte> CameraImageWrapper::getRow(int y, ArrayRef<zxing::byte> row) const
109+
QSharedPointer<std::vector<zxing::byte>> CameraImageWrapper::getRow(int y, QSharedPointer<std::vector<zxing::byte>> row) const
110110
{
111111
if(delegate)
112112
return delegate->getRow(y, row);
113113
else
114114
return getRowP(y, row);
115115
}
116116

117-
ArrayRef<zxing::byte> CameraImageWrapper::getMatrix() const
117+
QSharedPointer<std::vector<zxing::byte>> CameraImageWrapper::getMatrix() const
118118
{
119119
if(delegate)
120120
return delegate->getMatrix();
@@ -130,7 +130,7 @@ bool CameraImageWrapper::isCropSupported() const
130130
return LuminanceSource::isCropSupported();
131131
}
132132

133-
Ref<LuminanceSource> CameraImageWrapper::crop(int left, int top, int width, int height) const
133+
QSharedPointer<LuminanceSource> CameraImageWrapper::crop(int left, int top, int width, int height) const
134134
{
135135
if(delegate)
136136
return delegate->crop(left, top, width, height);
@@ -146,35 +146,35 @@ bool CameraImageWrapper::isRotateSupported() const
146146
return LuminanceSource::isRotateSupported();
147147
}
148148

149-
Ref<LuminanceSource> CameraImageWrapper::invert() const
149+
QSharedPointer<LuminanceSource> CameraImageWrapper::invert() const
150150
{
151151
if(delegate)
152152
return delegate->invert();
153153
else
154154
return LuminanceSource::invert();
155155
}
156156

157-
Ref<LuminanceSource> CameraImageWrapper::rotateCounterClockwise() const
157+
QSharedPointer<LuminanceSource> CameraImageWrapper::rotateCounterClockwise() const
158158
{
159159
if(delegate)
160160
return delegate->rotateCounterClockwise();
161161
else
162162
return LuminanceSource::rotateCounterClockwise();
163163
}
164164

165-
ArrayRef<zxing::byte> CameraImageWrapper::getRowP(int y, ArrayRef<zxing::byte> row) const
165+
QSharedPointer<std::vector<zxing::byte>> CameraImageWrapper::getRowP(int y, QSharedPointer<std::vector<zxing::byte>> row) const
166166
{
167167
int width = getWidth();
168168

169169
if (row->size() != width)
170-
row.reset(ArrayRef<zxing::byte>(width));
170+
row.reset(new std::vector<zxing::byte>(width));
171171

172172
Q_ASSERT(y >= 0 && y < getHeight());
173173

174-
return imageBytesPerRow[y];
174+
return (*imageBytesPerRow)[y];
175175
}
176176

177-
ArrayRef<zxing::byte> CameraImageWrapper::getMatrixP() const
177+
QSharedPointer<std::vector<zxing::byte>> CameraImageWrapper::getMatrixP() const
178178
{
179179
return imageBytes;
180180
}
@@ -195,28 +195,28 @@ void CameraImageWrapper::updateImageAsGrayscale(const QImage &origin)
195195
const int width = getWidth();
196196
const int height = getHeight();
197197

198-
imageBytes = ArrayRef<zxing::byte>(height*width);
199-
imageBytesPerRow = ArrayRef<ArrayRef<zxing::byte>>(height);
200-
zxing::byte* m = &imageBytes[0];
198+
imageBytes = QSharedPointer<std::vector<zxing::byte>>(new std::vector<zxing::byte>((size_t)height * (size_t)width));
199+
imageBytesPerRow = QSharedPointer<std::vector<QSharedPointer<std::vector<zxing::byte>>>>(new std::vector<QSharedPointer<std::vector<zxing::byte>>>(height));
200+
zxing::byte* m = &(*imageBytes)[0];
201201

202202
for(int j=0; j<height; j++)
203203
{
204-
ArrayRef<zxing::byte> line(width);
204+
QSharedPointer<std::vector<zxing::byte>> line(new std::vector<zxing::byte>(width));
205205
for(int i=0; i<width; i++)
206206
{
207207
pixel = origin.pixel(i,j);
208208
if(needsConvesionToGrayscale)
209209
pixelGrayscale = gray(qRed(pixel),qGreen(pixel),qBlue(pixel));
210210
else
211211
pixelGrayscale = pixel & 0xFF;
212-
line[i] = pixelGrayscale;
212+
(*line)[i] = pixelGrayscale;
213213
}
214-
imageBytesPerRow[j] = line;
214+
(*imageBytesPerRow)[j] = line;
215215

216216
#if __cplusplus > 199711L
217-
memcpy(m, line->values().data(), width);
217+
memcpy(m, (*line).data(), width); ///the below line is also usable
218218
#else
219-
memcpy(m, &line[0], width);
219+
memcpy(m, &(*line)[0], width);
220220
#endif
221221
m += width * sizeof(zxing::byte);
222222
}

src/CameraImageWrapper.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,30 @@ class CameraImageWrapper : public LuminanceSource
3131
CameraImageWrapper(CameraImageWrapper& otherInstance);
3232
~CameraImageWrapper();
3333

34-
static CameraImageWrapper* Factory(const QImage& image, int maxWidth=-1, int maxHeight=-1, bool smoothTransformation=false);
34+
static QSharedPointer<CameraImageWrapper> Factory(const QImage& image, int maxWidth=-1, int maxHeight=-1, bool smoothTransformation=false);
3535

36-
ArrayRef<ArrayRef<zxing::byte> > getOriginalImage();
37-
Ref<GreyscaleLuminanceSource> getDelegate() { return delegate; }
36+
QSharedPointer<std::vector<QSharedPointer<std::vector<zxing::byte>> > > getOriginalImage();
37+
QSharedPointer<GreyscaleLuminanceSource> getDelegate() { return delegate; }
3838

39-
ArrayRef<zxing::byte> getRow(int y, ArrayRef<zxing::byte> row) const;
40-
ArrayRef<zxing::byte> getMatrix() const;
39+
QSharedPointer<std::vector<zxing::byte>> getRow(int y, QSharedPointer<std::vector<zxing::byte>> row) const;
40+
QSharedPointer<std::vector<zxing::byte>> getMatrix() const;
4141

4242
bool isCropSupported() const;
43-
Ref<LuminanceSource> crop(int left, int top, int width, int height) const;
43+
QSharedPointer<LuminanceSource> crop(int left, int top, int width, int height) const;
4444
bool isRotateSupported() const;
45-
Ref<LuminanceSource> invert() const;
46-
Ref<LuminanceSource> rotateCounterClockwise() const;
45+
QSharedPointer<LuminanceSource> invert() const;
46+
QSharedPointer<LuminanceSource> rotateCounterClockwise() const;
4747

4848
inline zxing::byte gray(const unsigned int r, const unsigned int g, const unsigned int b);
4949

5050
private:
51-
ArrayRef<zxing::byte> getRowP(int y, ArrayRef<zxing::byte> row) const;
52-
ArrayRef<zxing::byte> getMatrixP() const;
51+
QSharedPointer<std::vector<zxing::byte>> getRowP(int y, QSharedPointer<std::vector<zxing::byte>> row) const;
52+
QSharedPointer<std::vector<zxing::byte>> getMatrixP() const;
5353
void updateImageAsGrayscale(const QImage &origin);
5454

55-
Ref<GreyscaleLuminanceSource> delegate;
56-
ArrayRef<ArrayRef<zxing::byte>> imageBytesPerRow;
57-
ArrayRef<zxing::byte> imageBytes;
55+
QSharedPointer<GreyscaleLuminanceSource> delegate;
56+
QSharedPointer<std::vector<QSharedPointer<std::vector<zxing::byte>>>> imageBytesPerRow;
57+
QSharedPointer<std::vector<zxing::byte>> imageBytes;
5858

5959
static const zxing::byte B_TO_GREYSCALE[256];
6060
static const zxing::byte G_TO_GREYSCALE[256];

src/QZXing-components.pri

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,10 @@ HEADERS += $$PWD/QZXing_global.h \
5858
$$PWD/zxing/zxing/common/GlobalHistogramBinarizer.h \
5959
$$PWD/zxing/zxing/common/DetectorResult.h \
6060
$$PWD/zxing/zxing/common/DecoderResult.h \
61-
$$PWD/zxing/zxing/common/Counted.h \
6261
$$PWD/zxing/zxing/common/CharacterSetECI.h \
6362
$$PWD/zxing/zxing/common/BitSource.h \
6463
$$PWD/zxing/zxing/common/BitMatrix.h \
6564
$$PWD/zxing/zxing/common/BitArray.h \
66-
$$PWD/zxing/zxing/common/Array.h \
6765
$$PWD/zxing/zxing/common/detector/MathUtils.h \
6866
$$PWD/zxing/zxing/common/detector/JavaMath.h \
6967
$$PWD/zxing/zxing/common/detector/WhiteRectangleDetector.h \
@@ -109,7 +107,6 @@ SOURCES += $$PWD/CameraImageWrapper.cpp \
109107
$$PWD/zxing/zxing/IllegalStateException.cpp \
110108
$$PWD/zxing/zxing/NotFoundException.cpp \
111109
$$PWD/zxing/zxing/WriterException.cpp \
112-
$$PWD/zxing/zxing/common/Counted.cpp \
113110
$$PWD/zxing/zxing/common/StringUtils.cpp \
114111
$$PWD/zxing/zxing/common/Str.cpp \
115112
$$PWD/zxing/zxing/common/PerspectiveTransform.cpp \

src/QZXing.cpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ void QZXing::setDecoder(const uint &hint)
345345
* \param bitMatrix
346346
* \return
347347
*/
348-
QRectF getTagRect(const ArrayRef<Ref<ResultPoint> > &resultPoints, const Ref<BitMatrix> &bitMatrix)
348+
QRectF getTagRect(const QSharedPointer<std::vector<QSharedPointer<ResultPoint>> > &resultPoints, const QSharedPointer<BitMatrix> &bitMatrix)
349349
{
350350
if (resultPoints->size() < 2)
351351
return QRectF();
@@ -355,15 +355,15 @@ QRectF getTagRect(const ArrayRef<Ref<ResultPoint> > &resultPoints, const Ref<Bit
355355
// 1D barcode
356356
if (resultPoints->size() == 2) {
357357
WhiteRectangleDetector detector(bitMatrix);
358-
std::vector<Ref<ResultPoint> > resultRectPoints = detector.detect();
358+
std::vector<QSharedPointer<ResultPoint> > resultRectPoints = detector.detect();
359359

360360
if (resultRectPoints.size() != 4)
361361
return QRectF();
362362

363-
qreal xMin = qreal(resultPoints[0]->getX());
363+
qreal xMin = qreal((*resultPoints)[0]->getX());
364364
qreal xMax = xMin;
365365
for (int i = 1; i < resultPoints->size(); ++i) {
366-
qreal x = qreal(resultPoints[i]->getX());
366+
qreal x = qreal((*resultPoints)[i]->getX());
367367
if (x < xMin)
368368
xMin = x;
369369
if (x > xMax)
@@ -385,13 +385,13 @@ QRectF getTagRect(const ArrayRef<Ref<ResultPoint> > &resultPoints, const Ref<Bit
385385

386386
// 2D QR code
387387
if (resultPoints->size() == 4) {
388-
qreal xMin = qreal(resultPoints[0]->getX());
388+
qreal xMin = qreal((*resultPoints)[0]->getX());
389389
qreal xMax = xMin;
390-
qreal yMin = qreal(resultPoints[0]->getY());
390+
qreal yMin = qreal((*resultPoints)[0]->getY());
391391
qreal yMax = yMin;
392392
for (int i = 1; i < resultPoints->size(); ++i) {
393-
qreal x = qreal(resultPoints[i]->getX());
394-
qreal y = qreal(resultPoints[i]->getY());
393+
qreal x = qreal((*resultPoints)[i]->getX());
394+
qreal y = qreal((*resultPoints)[i]->getY());
395395
if (x < xMin)
396396
xMin = x;
397397
if (x > xMax)
@@ -414,7 +414,7 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
414414
QElapsedTimer t;
415415
t.start();
416416
processingTime = -1;
417-
Ref<Result> res;
417+
QSharedPointer<Result> res;
418418
emit decodingStarted();
419419

420420
if(image.isNull())
@@ -425,7 +425,7 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
425425
return "";
426426
}
427427

428-
CameraImageWrapper *ciw = ZXING_NULLPTR;
428+
QSharedPointer<CameraImageWrapper> ciw;
429429

430430
if ((maxWidth > 0) || (maxHeight > 0))
431431
ciw = CameraImageWrapper::Factory(image, maxWidth, maxHeight, smoothTransformation);
@@ -434,10 +434,10 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
434434

435435
QString errorMessage = "Unknown";
436436

437-
Ref<LuminanceSource> imageRefOriginal = Ref<LuminanceSource>(ciw);
438-
Ref<LuminanceSource> imageRef = imageRefOriginal;
439-
Ref<GlobalHistogramBinarizer> binz;
440-
Ref<BinaryBitmap> bb;
437+
QSharedPointer<LuminanceSource> imageRefOriginal = ciw;
438+
QSharedPointer<LuminanceSource> imageRef = imageRefOriginal;
439+
QSharedPointer<GlobalHistogramBinarizer> binz;
440+
QSharedPointer<BinaryBitmap> bb;
441441

442442
size_t numberOfIterations = 0;
443443
if (imageSourceFilter & SourceFilter_ImageNormal)
@@ -451,10 +451,10 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
451451
try {
452452
if((numberOfIterations == 1 && (imageSourceFilter & SourceFilter_ImageInverted)) || i == 1) {
453453
//qDebug() << "Selecting Inverted Luminance source";
454-
imageRef = Ref<LuminanceSource>((LuminanceSource*)(new InvertedLuminanceSource(imageRefOriginal)));
454+
imageRef = QSharedPointer<LuminanceSource>((LuminanceSource*)(new InvertedLuminanceSource(imageRefOriginal)));
455455
}
456-
binz = Ref<GlobalHistogramBinarizer>( new GlobalHistogramBinarizer(imageRef) );
457-
bb = Ref<BinaryBitmap>( new BinaryBitmap(binz) );
456+
binz = QSharedPointer<GlobalHistogramBinarizer>( new GlobalHistogramBinarizer(imageRef) );
457+
bb = QSharedPointer<BinaryBitmap>( new BinaryBitmap(binz) );
458458

459459
DecodeHints hints(static_cast<DecodeHintType>(enabledDecoders));
460460

@@ -493,13 +493,13 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
493493
}
494494

495495
if (!lastDecodeOperationSucceded_&& tryHarder_ && (tryHarderType & TryHarderBehaviour_Rotate) && bb->isRotateSupported()) {
496-
Ref<BinaryBitmap> bbTmp = bb;
496+
QSharedPointer<BinaryBitmap> bbTmp = bb;
497497

498498
//qDebug() << "Decoding phase 2, rotate: starting";
499499

500500
hints.setTryHarder(true);
501501
for (int i=0; (i<3 && !lastDecodeOperationSucceded_); i++) {
502-
Ref<BinaryBitmap> rotatedImage(bbTmp->rotateCounterClockwise());
502+
QSharedPointer<BinaryBitmap> rotatedImage(bbTmp->rotateCounterClockwise());
503503
bbTmp = rotatedImage;
504504

505505
try {
@@ -527,7 +527,6 @@ QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bo
527527
int fmt = res->getBarcodeFormat().value;
528528
decodedFormat = decoderFormatToString(1<<fmt);
529529
charSet_ = QString::fromStdString(res->getCharSet());
530-
qDebug() << "charSet_: " << charSet_;
531530
if (!charSet_.isEmpty()) {
532531
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
533532
QTextCodec *codec = QTextCodec::codecForName(res->getCharSet().c_str());
@@ -670,7 +669,7 @@ QImage QZXing::encodeData(const QString &data, const QZXingEncoderConfig &encode
670669
#ifdef ENABLE_ENCODER_QR_CODE
671670
case EncoderFormat_QR_CODE:
672671
{
673-
Ref<qrcode::QRCode> barcode = qrcode::Encoder::encode(
672+
QSharedPointer<qrcode::QRCode> barcode = qrcode::Encoder::encode(
674673
data.toStdWString(),
675674
encoderConfig.errorCorrectionLevel == EncodeErrorCorrectionLevel_H ?
676675
qrcode::ErrorCorrectionLevel::H :
@@ -680,7 +679,7 @@ QImage QZXing::encodeData(const QString &data, const QZXingEncoderConfig &encode
680679
qrcode::ErrorCorrectionLevel::M :
681680
qrcode::ErrorCorrectionLevel::L)));
682681

683-
Ref<qrcode::ByteMatrix> bytesRef = barcode->getMatrix();
682+
QSharedPointer<qrcode::ByteMatrix> bytesRef = barcode->getMatrix();
684683
const std::vector< std::vector <zxing::byte> >& bytes = bytesRef->getArray();
685684
const int width = int(bytesRef->getWidth()) + (encoderConfig.border ? 2 : 0);
686685
const int height = int(bytesRef->getHeight()) + (encoderConfig.border ? 2 : 0);

src/zxing/zxing/Binarizer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@
2424

2525
namespace zxing {
2626

27-
Binarizer::Binarizer(Ref<LuminanceSource> source) : source_(source) {
27+
Binarizer::Binarizer(QSharedPointer<LuminanceSource> source) : source_(source) {
2828
}
2929

3030
Binarizer::~Binarizer() {
3131
}
3232

33-
Ref<LuminanceSource> Binarizer::getLuminanceSource() const {
33+
QSharedPointer<LuminanceSource> Binarizer::getLuminanceSource() const {
3434
return source_;
3535
}
3636

src/zxing/zxing/Binarizer.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,23 @@
2323
#include <zxing/LuminanceSource.h>
2424
#include <zxing/common/BitArray.h>
2525
#include <zxing/common/BitMatrix.h>
26-
#include <zxing/common/Counted.h>
26+
#include <QSharedPointer>
2727

2828
namespace zxing {
2929

30-
class Binarizer : public Counted {
30+
class Binarizer {
3131
private:
32-
Ref<LuminanceSource> source_;
32+
QSharedPointer<LuminanceSource> source_;
3333

3434
public:
35-
Binarizer(Ref<LuminanceSource> source);
35+
Binarizer(QSharedPointer<LuminanceSource> source);
3636
virtual ~Binarizer();
3737

38-
virtual Ref<BitArray> getBlackRow(int y, Ref<BitArray> row) = 0;
39-
virtual Ref<BitMatrix> getBlackMatrix() = 0;
38+
virtual QSharedPointer<BitArray> getBlackRow(int y, QSharedPointer<BitArray> row) = 0;
39+
virtual QSharedPointer<BitMatrix> getBlackMatrix() = 0;
4040

41-
Ref<LuminanceSource> getLuminanceSource() const ;
42-
virtual Ref<Binarizer> createBinarizer(Ref<LuminanceSource> source) = 0;
41+
QSharedPointer<LuminanceSource> getLuminanceSource() const ;
42+
virtual QSharedPointer<Binarizer> createBinarizer(QSharedPointer<LuminanceSource> source) = 0;
4343

4444
int getWidth() const;
4545
int getHeight() const;

0 commit comments

Comments
 (0)