- Remove _t postfix from struct defns

- Remove inline header function definitions
- Change assorted functions to return structs rather than modifying an argument
This commit is contained in:
Alfred Reynolds
2021-08-05 19:50:07 +12:00
parent ceadcf7a54
commit eac73d618b
11 changed files with 100 additions and 70 deletions

View File

@@ -19,6 +19,11 @@ ImageSelector::ImageSelector(std::unique_ptr<PathTraverser>& pathTraverser):
ImageSelector::~ImageSelector(){}
void ImageSelector::setDebugMode(bool debugModeIn)
{
debugMode = debugModeIn;
}
int ReadExifTag(ExifData* exifData, ExifTag tag, bool shortRead = false)
{
int value = -1;
@@ -39,8 +44,9 @@ int ReadExifTag(ExifData* exifData, ExifTag tag, bool shortRead = false)
return value;
}
void ImageSelector::populateImageDetails(const std::string&fileName, ImageDetails_t &imageDetails, const ImageDisplayOptions_t &baseOptions)
ImageDetails ImageSelector::populateImageDetails(const std::string&fileName, const ImageDisplayOptions &baseOptions)
{
ImageDetails imageDetails;
int orientation = -1;
int imageWidth = -1;
int imageHeight = -1;
@@ -99,16 +105,17 @@ void ImageSelector::populateImageDetails(const std::string&fileName, ImageDetail
imageDetails.height = imageHeight;
imageDetails.rotation = degrees;
if (imageWidth > imageHeight) {
imageDetails.aspect = EImageAspect_Landscape;
imageDetails.aspect = ImageAspect_Landscape;
} else if (imageHeight > imageWidth) {
imageDetails.aspect = EImageAspect_Portrait;
imageDetails.aspect = ImageAspect_Portrait;
} else {
imageDetails.aspect = EImageAspect_Any;
imageDetails.aspect = ImageAspect_Any;
}
imageDetails.options = baseOptions;
return imageDetails;
}
bool ImageSelector::imageMatchesFilter(const ImageDetails_t& imageDetails)
bool ImageSelector::imageMatchesFilter(const ImageDetails& imageDetails)
{
if(!QFileInfo::exists(QString(imageDetails.filename.c_str())))
{
@@ -131,9 +138,9 @@ bool ImageSelector::imageMatchesFilter(const ImageDetails_t& imageDetails)
return true;
}
bool ImageSelector::imageValidForAspect(const ImageDetails_t& imageDetails)
bool ImageSelector::imageValidForAspect(const ImageDetails& imageDetails)
{
if (imageDetails.options.onlyAspect == EImageAspect_Any ||
if (imageDetails.options.onlyAspect == ImageAspect_Any ||
imageDetails.aspect == imageDetails.options.onlyAspect)
{
return true;
@@ -150,18 +157,18 @@ RandomImageSelector::RandomImageSelector(std::unique_ptr<PathTraverser>& pathTra
RandomImageSelector::~RandomImageSelector(){}
const ImageDetails_t RandomImageSelector::getNextImage(const ImageDisplayOptions_t &baseOptions)
const ImageDetails RandomImageSelector::getNextImage(const ImageDisplayOptions &baseOptions)
{
ImageDetails_t imageDetails;
ImageDetails imageDetails;
try
{
QStringList images = pathTraverser->getImages();
unsigned int selectedImage = selectRandom(images);
populateImageDetails(pathTraverser->getImagePath(images.at(selectedImage).toStdString()), imageDetails, baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.at(selectedImage).toStdString()), baseOptions);
while(!imageMatchesFilter(imageDetails))
{
unsigned int selectedImage = selectRandom(images);
populateImageDetails(pathTraverser->getImagePath(images.at(selectedImage).toStdString()), imageDetails, baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.at(selectedImage).toStdString()), baseOptions);
}
}
catch(const std::string& err)
@@ -169,7 +176,7 @@ const ImageDetails_t RandomImageSelector::getNextImage(const ImageDisplayOptions
std::cerr << "Error: " << err << std::endl;
}
std::cout << "updating image: " << imageDetails.filename << std::endl;
pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
imageDetails.options = pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
return imageDetails;
}
@@ -198,23 +205,23 @@ ShuffleImageSelector::~ShuffleImageSelector()
{
}
const ImageDetails_t ShuffleImageSelector::getNextImage(const ImageDisplayOptions_t &baseOptions)
const ImageDetails ShuffleImageSelector::getNextImage(const ImageDisplayOptions &baseOptions)
{
reloadImagesIfNoneLeft();
ImageDetails_t imageDetails;
ImageDetails imageDetails;
if (images.size() == 0)
{
return imageDetails;
}
populateImageDetails(pathTraverser->getImagePath(images.at(current_image_shuffle).toStdString()), imageDetails, baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.at(current_image_shuffle).toStdString()), baseOptions);
current_image_shuffle = current_image_shuffle + 1; // ignore and move to next image
while(!imageMatchesFilter(imageDetails)) {
reloadImagesIfNoneLeft();
populateImageDetails(pathTraverser->getImagePath(images.at(current_image_shuffle).toStdString()), imageDetails,baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.at(current_image_shuffle).toStdString()),baseOptions);
current_image_shuffle = current_image_shuffle + 1; // ignore and move to next image
}
std::cout << "updating image: " << imageDetails.filename << std::endl;
pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
imageDetails.options = pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
return imageDetails;
}
@@ -254,22 +261,22 @@ bool operator<(const QString& lhs, const QString& rhs) noexcept{
}
const ImageDetails_t SortedImageSelector::getNextImage(const ImageDisplayOptions_t &baseOptions)
const ImageDetails SortedImageSelector::getNextImage(const ImageDisplayOptions &baseOptions)
{
reloadImagesIfEmpty();
ImageDetails_t imageDetails;
ImageDetails imageDetails;
if (images.size() == 0)
{
return imageDetails;
}
populateImageDetails(pathTraverser->getImagePath(images.takeFirst().toStdString()), imageDetails, baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.takeFirst().toStdString()), baseOptions);
while(!imageMatchesFilter(imageDetails)) {
reloadImagesIfEmpty();
populateImageDetails(pathTraverser->getImagePath(images.takeFirst().toStdString()), imageDetails, baseOptions);
imageDetails = populateImageDetails(pathTraverser->getImagePath(images.takeFirst().toStdString()), baseOptions);
}
std::cout << "updating image: " << imageDetails.filename << std::endl;
pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
imageDetails.options = pathTraverser->UpdateOptionsForImage(imageDetails.filename, imageDetails.options);
return imageDetails;
}