digiKam
Digikam::FacePreviewLoader Class Reference
+ Inheritance diagram for Digikam::FacePreviewLoader:

Public Types

enum  AccessMode { AccessModeRead , AccessModeReadWrite }
 
enum  LoadingMode { LoadingModeNormal , LoadingModeShared }
 
enum  LoadingPolicy {
  LoadingPolicyFirstRemovePrevious , LoadingPolicyPrepend , LoadingPolicySimplePrepend , LoadingPolicyAppend ,
  LoadingPolicySimpleAppend , LoadingPolicyPreload
}
 
enum  LoadingTaskFilter { LoadingTaskFilterAll , LoadingTaskFilterPreloading }
 
enum  NotificationPolicy { NotificationPolicyDirect , NotificationPolicyTimeLimited }
 
enum  State { Inactive , Scheduled , Running , Deactivating }
 
enum  TerminationPolicy { TerminationPolicyTerminateLoading , TerminationPolicyTerminatePreloading , TerminationPolicyWait , TerminationPolicyTerminateAll }
 

Public Slots

void process (FacePipelineExtendedPackage::Ptr package)
 
void slotImageLoaded (const LoadingDescription &loadingDescription, const DImg &img)
 
void start ()
 
void stop ()
 
void wait ()
 

Signals

void finished ()
 
void processed (FacePipelineExtendedPackage::Ptr package)
 
void signalImageLoaded (const LoadingDescription &loadingDescription, const DImg &img)
 
void signalImageSaved (const QString &filePath, bool success)
 
void signalImageStartedLoading (const LoadingDescription &loadingDescription)
 
void signalImageStartedSaving (const QString &filePath)
 
void signalLoadingProgress (const LoadingDescription &loadingDescription, float progress)
 
void signalMoreCompleteLoadingAvailable (const LoadingDescription &oldLoadingDescription, const LoadingDescription &newLoadingDescription)
 
void signalSavingProgress (const QString &filePath, float progress)
 
void signalThumbnailLoaded (const LoadingDescription &loadingDescription, const QImage &img)
 
void starting ()
 

Public Member Functions

void cancel ()
 
void checkRestart ()
 
 FacePreviewLoader (FacePipeline::Private *const dd)
 
void imageLoaded (const LoadingDescription &loadingDescription, const DImg &img) override
 
void imageSaved (const QString &filePath, bool success) override
 
void imageStartedLoading (const LoadingDescription &loadingDescription) override
 
void imageStartedSaving (const QString &filePath) override
 
bool isFinished () const
 
bool isRunning () const
 
void load (const LoadingDescription &description)
 
void load (const LoadingDescription &description, LoadingPolicy policy)
 
void load (const QString &filePath, const PreviewSettings &settings, int size=0)
 
void loadFast (const QString &filePath, int size)
 
void loadFastButLarge (const QString &filePath, int minimumSize)
 
void loadHighQuality (const QString &filePath, PreviewSettings::RawLoading rawLoadingMode=PreviewSettings::RawPreviewAutomatic)
 
LoadingPolicy loadingPolicy () const
 
void loadingProgress (const LoadingDescription &loadingDescription, float progress) override
 
void moreCompleteLoadingAvailable (const LoadingDescription &oldLoadingDescription, const LoadingDescription &newLoadingDescription) override
 
QThread::Priority priority () const
 
virtual bool querySendNotifyEvent () const
 
void save (const DImg &image, const QString &filePath, const QString &format)
 
void save (DImg &image, const QString &filePath, const QString &format)
 
void savingProgress (const QString &filePath, float progress) override
 
bool sentOutLimitReached ()
 
void setDisplayingWidget (QWidget *const widget)
 
void setEmitSignals (bool emitThem)
 
void setLoadingPolicy (LoadingPolicy policy)
 
void setNotificationPolicy (NotificationPolicy notificationPolicy)
 
void setPriority (QThread::Priority priority)
 
void setTerminationPolicy (TerminationPolicy terminationPolicy)
 
State state () const
 
void stopAllTasks ()
 
void stopLoading (const LoadingDescription &desc, LoadingTaskFilter filter=LoadingTaskFilterAll)
 
void stopLoading (const QString &filePath=QString(), LoadingTaskFilter filter=LoadingTaskFilterAll)
 
void stopSaving (const QString &filePath=QString())
 
virtual void taskHasFinished ()
 
TerminationPolicy terminationPolicy () const
 
void thumbnailLoaded (const LoadingDescription &loadingDescription, const QImage &img) override
 
 ~FacePreviewLoader () override
 

Static Public Member Functions

static int exifOrientation (const QString &filePath, const DMetadata &metadata, bool isRaw, bool fromRawEmbeddedPreview)
 
static LoadSaveFileInfoProviderinfoProvider ()
 
static DImg loadFastButLargeSynchronously (const QString &filePath, int minimumSize, const IccProfile &profile=IccProfile())
 
static DImg loadFastSynchronously (const QString &filePath, int size, const IccProfile &profile=IccProfile())
 
static DImg loadHighQualitySynchronously (const QString &filePath, PreviewSettings::RawLoading rawLoadingMode=PreviewSettings::RawPreviewAutomatic, const IccProfile &profile=IccProfile())
 
static DImg loadSynchronously (const LoadingDescription &description)
 
static DImg loadSynchronously (const QString &filePath, const PreviewSettings &previewSettings, int size, const IccProfile &profile=IccProfile())
 
static void setInfoProvider (LoadSaveFileInfoProvider *const infoProvider)
 

Protected Member Functions

LoadingDescription createLoadingDescription (const QString &filePath, const PreviewSettings &settings, int size)
 
void load (const LoadingDescription &description, LoadingMode loadingMode, AccessMode mode=AccessModeReadWrite)
 
void load (const LoadingDescription &description, LoadingMode loadingMode, LoadingPolicy policy, AccessMode mode=AccessModeReadWrite)
 
void loadPreview (const LoadingDescription &description, LoadingPolicy policy)
 
void loadThumbnail (const LoadingDescription &description)
 
void notificationReceived ()
 
void preloadThumbnail (const LoadingDescription &description)
 
void preloadThumbnailGroup (const QList< LoadingDescription > &descriptions)
 
void prependThumbnailGroup (const QList< LoadingDescription > &descriptions)
 
void run () override
 
bool runningFlag () const volatile
 
void shutDown ()
 
void start (QMutexLocker &locker)
 
void stop (QMutexLocker &locker)
 
QMutex * threadMutex () const
 
void wait (QMutexLocker &locker)
 

Static Protected Member Functions

static LoadingDescription createLoadingDescription (const QString &filePath, const PreviewSettings &settings, int size, const IccProfile &profile)
 

Protected Attributes

FacePipeline::Private *const d
 
LoadSaveTaskm_currentTask
 
QWidget * m_displayingWidget
 
LoadingPolicy m_loadingPolicy
 
QMutex m_mutex
 
NotificationPolicy m_notificationPolicy
 
TerminationPolicy m_terminationPolicy
 
QList< LoadSaveTask * > m_todo
 
int maximumSentOutPackages
 
PackageLoadingDescriptionList scheduledPackages
 

Member Enumeration Documentation

◆ AccessMode

used by SharedLoadSaveThread only

Enumerator
AccessModeRead 

image will only be used for reading

AccessModeReadWrite 

image data will possibly be changed

◆ LoadingMode

used by SharedLoadSaveThread only

Enumerator
LoadingModeNormal 

no sharing of loading process, no caching of image

LoadingModeShared 

loading process is shared, image is cached

◆ LoadingPolicy

Enumerator
LoadingPolicyFirstRemovePrevious 

Load image immediately, remove and stop all previous loading tasks.

LoadingPolicyPrepend 

Prepend loading in front of all other tasks, but wait for the current task to finish. No other tasks will be removed, preloading tasks will be stopped and postponed.

LoadingPolicySimplePrepend 

Prepend in front of all other tasks (not touching the current task). Do not check for duplicate tasks, do not check for preloading tasks.

LoadingPolicyAppend 

Append loading task to the end of the list, but in front of all preloading tasks. No other tasks will be removed, preloading tasks will be stopped and postponed. This is similar to the simple load() operation from LoadSaveThread, except for the special care taken for preloading.

LoadingPolicySimpleAppend 

Append to the lists of tasks. Do not check for duplicate tasks, do not check for preloading tasks.

LoadingPolicyPreload 

Preload image, i.e. load it with low priority when no other tasks are scheduled. All other tasks will take precedence, and preloading tasks will be stopped and postponed when another task is added. No progress info will be sent for preloaded images

◆ LoadingTaskFilter

Enumerator
LoadingTaskFilterAll 

filter all loading tasks

LoadingTaskFilterPreloading 

filter only tasks with preloading policy

◆ NotificationPolicy

Enumerator
NotificationPolicyDirect 

Always send notification, unless the last event is still in the event queue

NotificationPolicyTimeLimited 

Always wait for a certain amount of time after the last event sent. In particular, the first event will be sent only after waiting for this time span. (Or no event will be sent, when the loading has finished before) This is the default.

◆ State

Enumerator
Inactive 
Scheduled 
Running 
Deactivating 

◆ TerminationPolicy

Enumerator
TerminationPolicyTerminateLoading 

Wait for saving tasks, stop and remove loading tasks This is the default.

TerminationPolicyTerminatePreloading 

Wait for loading and saving tasks, stop and remove preloading tasks

TerminationPolicyWait 

Wait for all pending tasks

TerminationPolicyTerminateAll 

Stop all pending tasks

Constructor & Destructor Documentation

◆ FacePreviewLoader()

◆ ~FacePreviewLoader()

Digikam::FacePreviewLoader::~FacePreviewLoader ( )
override

Member Function Documentation

◆ cancel()

void Digikam::FacePreviewLoader::cancel ( )

◆ checkRestart()

void Digikam::FacePreviewLoader::checkRestart ( )

◆ createLoadingDescription() [1/2]

LoadingDescription Digikam::PreviewLoadThread::createLoadingDescription ( const QString &  filePath,
const PreviewSettings settings,
int  size 
)
protectedinherited

◆ createLoadingDescription() [2/2]

LoadingDescription Digikam::PreviewLoadThread::createLoadingDescription ( const QString &  filePath,
const PreviewSettings settings,
int  size,
const IccProfile profile 
)
staticprotectedinherited

◆ exifOrientation()

int Digikam::LoadSaveThread::exifOrientation ( const QString &  filePath,
const DMetadata metadata,
bool  isRaw,
bool  fromRawEmbeddedPreview 
)
staticinherited

◆ finished

◆ imageLoaded()

void Digikam::LoadSaveThread::imageLoaded ( const LoadingDescription loadingDescription,
const DImg img 
)
overridevirtualinherited

◆ imageSaved()

void Digikam::LoadSaveThread::imageSaved ( const QString &  filePath,
bool  success 
)
overridevirtualinherited

◆ imageStartedLoading()

void Digikam::LoadSaveThread::imageStartedLoading ( const LoadingDescription loadingDescription)
overridevirtualinherited

◆ imageStartedSaving()

void Digikam::LoadSaveThread::imageStartedSaving ( const QString &  filePath)
overridevirtualinherited

◆ infoProvider()

LoadSaveFileInfoProvider * Digikam::LoadSaveThread::infoProvider ( )
staticinherited

◆ isFinished()

bool Digikam::DynamicThread::isFinished ( ) const
inherited

◆ isRunning()

◆ load() [1/5]

void Digikam::PreviewLoadThread::load ( const LoadingDescription description)
inherited

Load a preview. Loading description will not be touched.

References Digikam::ManagedLoadSaveThread::loadPreview(), and Digikam::ManagedLoadSaveThread::m_loadingPolicy.

◆ load() [2/5]

void Digikam::ManagedLoadSaveThread::load ( const LoadingDescription description,
LoadingMode  loadingMode,
AccessMode  mode = AccessModeReadWrite 
)
protectedinherited

◆ load() [3/5]

◆ load() [4/5]

void Digikam::ManagedLoadSaveThread::load ( const LoadingDescription description,
LoadingPolicy  policy 
)
inherited

◆ load() [5/5]

void Digikam::PreviewLoadThread::load ( const QString &  filePath,
const PreviewSettings settings,
int  size = 0 
)
inherited

Load a preview. Settings determine the loading mode. For fast loading, size is preview area size. For fast-but-large loading, it serves as a minimum size. For high quality loading, it is ignored

References Digikam::PreviewLoadThread::createLoadingDescription().

Referenced by Digikam::PreviewLoadThread::loadFast(), Digikam::PreviewLoadThread::loadFastButLarge(), and Digikam::PreviewLoadThread::loadHighQuality().

◆ loadFast()

void Digikam::PreviewLoadThread::loadFast ( const QString &  filePath,
int  size 
)
inherited

Load a preview that is optimized for fast loading. Raw decoding and color management settings will be adjusted.

References Digikam::PreviewLoadThread::createLoadingDescription(), Digikam::PreviewSettings::FastPreview, and Digikam::PreviewLoadThread::load().

◆ loadFastButLarge()

void Digikam::PreviewLoadThread::loadFastButLarge ( const QString &  filePath,
int  minimumSize 
)
inherited

Load a preview that is as large as possible without sacrificing speed for performance. Especially, raw previews are taken if larger than the given size. Raw decoding and color management settings will be adjusted.

References Digikam::PreviewLoadThread::createLoadingDescription(), Digikam::PreviewSettings::FastButLargePreview, and Digikam::PreviewLoadThread::load().

◆ loadFastButLargeSynchronously()

DImg Digikam::PreviewLoadThread::loadFastButLargeSynchronously ( const QString &  filePath,
int  minimumSize,
const IccProfile profile = IccProfile() 
)
staticinherited

◆ loadFastSynchronously()

DImg Digikam::PreviewLoadThread::loadFastSynchronously ( const QString &  filePath,
int  size,
const IccProfile profile = IccProfile() 
)
staticinherited

Synchronous versions of the above methods. These are safe to call from the non-UI thread, as the IccProfile either passed or deduced independent from a displaying widget

References Digikam::PreviewLoadThread::createLoadingDescription(), Digikam::PreviewSettings::FastPreview, and Digikam::PreviewLoadThread::loadSynchronously().

Referenced by Digikam::FingerprintsTask::run(), and Digikam::ImageQualityTask::run().

◆ loadHighQuality()

void Digikam::PreviewLoadThread::loadHighQuality ( const QString &  filePath,
PreviewSettings::RawLoading  rawLoadingMode = PreviewSettings::RawPreviewAutomatic 
)
inherited

Load a preview with higher resolution, trading more quality for less speed. Raw decoding and color management settings will be adjusted.

References Digikam::PreviewLoadThread::createLoadingDescription(), Digikam::PreviewSettings::HighQualityPreview, and Digikam::PreviewLoadThread::load().

Referenced by process().

◆ loadHighQualitySynchronously()

DImg Digikam::PreviewLoadThread::loadHighQualitySynchronously ( const QString &  filePath,
PreviewSettings::RawLoading  rawLoadingMode = PreviewSettings::RawPreviewAutomatic,
const IccProfile profile = IccProfile() 
)
staticinherited

◆ loadingPolicy()

ManagedLoadSaveThread::LoadingPolicy Digikam::ManagedLoadSaveThread::loadingPolicy ( ) const
inherited

◆ loadingProgress()

void Digikam::LoadSaveThread::loadingProgress ( const LoadingDescription loadingDescription,
float  progress 
)
overridevirtualinherited

◆ loadPreview()

void Digikam::ManagedLoadSaveThread::loadPreview ( const LoadingDescription description,
LoadingPolicy  policy 
)
protectedinherited

◆ loadSynchronously() [1/2]

DImg Digikam::PreviewLoadThread::loadSynchronously ( const LoadingDescription description)
staticinherited

◆ loadSynchronously() [2/2]

DImg Digikam::PreviewLoadThread::loadSynchronously ( const QString &  filePath,
const PreviewSettings previewSettings,
int  size,
const IccProfile profile = IccProfile() 
)
staticinherited

◆ loadThumbnail()

◆ moreCompleteLoadingAvailable()

void Digikam::LoadSaveThread::moreCompleteLoadingAvailable ( const LoadingDescription oldLoadingDescription,
const LoadingDescription newLoadingDescription 
)
overridevirtualinherited

◆ notificationReceived()

◆ preloadThumbnail()

◆ preloadThumbnailGroup()

◆ prependThumbnailGroup()

void Digikam::ManagedLoadSaveThread::prependThumbnailGroup ( const QList< LoadingDescription > &  descriptions)
protectedinherited

◆ priority()

QThread::Priority Digikam::DynamicThread::priority ( ) const
inherited

◆ process

◆ processed

void Digikam::FacePreviewLoader::processed ( FacePipelineExtendedPackage::Ptr  package)
signal

Referenced by process(), and slotImageLoaded().

◆ querySendNotifyEvent()

◆ run()

◆ runningFlag()

bool Digikam::DynamicThread::runningFlag ( ) const volatile
protectedinherited

◆ save() [1/2]

void Digikam::LoadSaveThread::save ( const DImg image,
const QString &  filePath,
const QString &  format 
)
inherited

Append a task to save the image to the task list

References Digikam::LoadSaveThread::m_todo, Digikam::DynamicThread::start(), and Digikam::DynamicThread::threadMutex().

◆ save() [2/2]

◆ savingProgress()

void Digikam::LoadSaveThread::savingProgress ( const QString &  filePath,
float  progress 
)
overridevirtualinherited

◆ sentOutLimitReached()

bool Digikam::FacePreviewLoader::sentOutLimitReached ( )

◆ setDisplayingWidget()

void Digikam::PreviewLoadThread::setDisplayingWidget ( QWidget *const  widget)
inherited

Optionally, set the displaying widget for color management

References Digikam::PreviewLoadThread::m_displayingWidget.

◆ setEmitSignals()

void Digikam::DynamicThread::setEmitSignals ( bool  emitThem)
inherited

◆ setInfoProvider()

void Digikam::LoadSaveThread::setInfoProvider ( LoadSaveFileInfoProvider *const  infoProvider)
staticinherited

◆ setLoadingPolicy()

void Digikam::ManagedLoadSaveThread::setLoadingPolicy ( LoadingPolicy  policy)
inherited

Set the loading policy. Default is LoadingPolicyAppend. You can override the default value for each operation.

References Digikam::ManagedLoadSaveThread::m_loadingPolicy.

Referenced by FacePreviewLoader().

◆ setNotificationPolicy()

void Digikam::LoadSaveThread::setNotificationPolicy ( NotificationPolicy  notificationPolicy)
inherited

◆ setPriority()

void Digikam::DynamicThread::setPriority ( QThread::Priority  priority)
inherited

Sets the priority for this dynamic thread. Can be set anytime. If the thread is currently not running, the priority will be set when it is run next time. When you set QThread::InheritPriority (default), the priority is not changed but inherited from the thread pool.

References Digikam::DynamicThread::priority().

Referenced by Digikam::FacePipeline::Private::applyPriority(), and Digikam::FacePipeline::Private::createThumbnailLoadThread().

◆ setTerminationPolicy()

void Digikam::ManagedLoadSaveThread::setTerminationPolicy ( TerminationPolicy  terminationPolicy)
inherited

◆ shutDown()

◆ signalImageLoaded

void Digikam::LoadSaveThread::signalImageLoaded ( const LoadingDescription loadingDescription,
const DImg img 
)
signalinherited

This signal is emitted when the loading process has finished. If the process failed, img is null.

Referenced by FacePreviewLoader(), and Digikam::LoadSaveThread::imageLoaded().

◆ signalImageSaved

void Digikam::LoadSaveThread::signalImageSaved ( const QString &  filePath,
bool  success 
)
signalinherited

◆ signalImageStartedLoading

void Digikam::LoadSaveThread::signalImageStartedLoading ( const LoadingDescription loadingDescription)
signalinherited

All signals are delivered to the thread from where the LoadSaveThread object has been created. This thread must use its event loop to get the signals. You must connect to these signals with Qt::AutoConnection (default) or Qt::QueuedConnection. This signal is emitted when the loading process begins.

Referenced by Digikam::LoadSaveThread::imageStartedLoading().

◆ signalImageStartedSaving

void Digikam::LoadSaveThread::signalImageStartedSaving ( const QString &  filePath)
signalinherited

◆ signalLoadingProgress

void Digikam::LoadSaveThread::signalLoadingProgress ( const LoadingDescription loadingDescription,
float  progress 
)
signalinherited

This signal is emitted whenever new progress info is available and the notification policy allows emitting the signal. No progress info will be sent for preloaded images (ManagedLoadSaveThread).

Referenced by Digikam::LoadSaveThread::loadingProgress().

◆ signalMoreCompleteLoadingAvailable

void Digikam::LoadSaveThread::signalMoreCompleteLoadingAvailable ( const LoadingDescription oldLoadingDescription,
const LoadingDescription newLoadingDescription 
)
signalinherited

This signal is emitted if

  • you are doing shared loading (SharedLoadSaveThread)
  • you started a loading operation with a LoadingDescription for a reduced version of the image
  • another thread started a loading operation for a more complete version You may want to cancel the current operation and start with the given loadingDescription

Referenced by Digikam::LoadSaveThread::moreCompleteLoadingAvailable().

◆ signalSavingProgress

void Digikam::LoadSaveThread::signalSavingProgress ( const QString &  filePath,
float  progress 
)
signalinherited

◆ signalThumbnailLoaded

void Digikam::LoadSaveThread::signalThumbnailLoaded ( const LoadingDescription loadingDescription,
const QImage &  img 
)
signalinherited

◆ slotImageLoaded

◆ start [1/2]

◆ start() [2/2]

void Digikam::DynamicThread::start ( QMutexLocker &  locker)
protectedinherited

Doing the same as start(), stop() and wait above, provide it with a locked QMutexLocker on mutex(). Note the start() will unlock and relock for scheduling once, after state change.

References Digikam::ThreadManager::instance(), and Digikam::ThreadManager::schedule().

◆ starting

void Digikam::DynamicThread::starting ( )
signalinherited

Emitted if emitSignals is enabled

◆ state()

◆ stop [1/2]

◆ stop() [2/2]

void Digikam::DynamicThread::stop ( QMutexLocker &  locker)
protectedinherited

◆ stopAllTasks()

◆ stopLoading() [1/2]

void Digikam::ManagedLoadSaveThread::stopLoading ( const LoadingDescription desc,
LoadingTaskFilter  filter = LoadingTaskFilterAll 
)
inherited

Same than previous method, but Stop and remove tasks filtered by LoadingDescription.

References Digikam::DynamicThread::threadMutex().

◆ stopLoading() [2/2]

void Digikam::ManagedLoadSaveThread::stopLoading ( const QString &  filePath = QString(),
LoadingTaskFilter  filter = LoadingTaskFilterAll 
)
inherited

Stop and remove tasks filtered by filePath and policy. If filePath isNull, applies to all file paths.

References Digikam::DynamicThread::threadMutex().

Referenced by Digikam::EditorCore::load().

◆ stopSaving()

void Digikam::ManagedLoadSaveThread::stopSaving ( const QString &  filePath = QString())
inherited

◆ taskHasFinished()

◆ terminationPolicy()

ManagedLoadSaveThread::TerminationPolicy Digikam::ManagedLoadSaveThread::terminationPolicy ( ) const
inherited

◆ threadMutex()

QMutex * Digikam::DynamicThread::threadMutex ( ) const
protectedinherited

◆ thumbnailLoaded()

void Digikam::LoadSaveThread::thumbnailLoaded ( const LoadingDescription loadingDescription,
const QImage &  img 
)
overridevirtualinherited

◆ wait [1/2]

◆ wait() [2/2]

void Digikam::DynamicThread::wait ( QMutexLocker &  locker)
protectedinherited

Member Data Documentation

◆ d

FacePipeline::Private* const Digikam::FacePreviewLoader::d
protected

Referenced by sentOutLimitReached().

◆ m_currentTask

◆ m_displayingWidget

QWidget* Digikam::PreviewLoadThread::m_displayingWidget
protectedinherited

◆ m_loadingPolicy

◆ m_mutex

QMutex Digikam::LoadSaveThread::m_mutex
protectedinherited

◆ m_notificationPolicy

◆ m_terminationPolicy

◆ m_todo

◆ maximumSentOutPackages

int Digikam::FacePreviewLoader::maximumSentOutPackages
protected

◆ scheduledPackages

PackageLoadingDescriptionList Digikam::FacePreviewLoader::scheduledPackages
protected

The documentation for this class was generated from the following files: