mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Ink coverage dialog
This commit is contained in:
@ -3853,12 +3853,14 @@ PDFInkCoverageCalculator::PDFInkCoverageCalculator(const PDFDocument* document,
|
||||
const PDFCMSManager* cmsManager,
|
||||
const PDFOptionalContentActivity* optionalContentActivity,
|
||||
const PDFInkMapper* inkMapper,
|
||||
PDFProgress* progress,
|
||||
PDFTransparencyRendererSettings settings) :
|
||||
m_document(document),
|
||||
m_fontCache(fontCache),
|
||||
m_cmsManager(cmsManager),
|
||||
m_optionalContentActivity(optionalContentActivity),
|
||||
m_inkMapper(inkMapper),
|
||||
m_progress(progress),
|
||||
m_settings(settings)
|
||||
{
|
||||
Q_ASSERT(m_document);
|
||||
@ -3876,6 +3878,11 @@ void PDFInkCoverageCalculator::perform(QSize size, const std::vector<PDFInteger>
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_progress)
|
||||
{
|
||||
m_progress->start(pages.size(), ProgressStartupInfo());
|
||||
}
|
||||
|
||||
auto calculatePageCoverage = [this, size](PDFInteger pageIndex)
|
||||
{
|
||||
if (pageIndex >= PDFInteger(m_document->getCatalog()->getPageCount()))
|
||||
@ -3971,11 +3978,27 @@ void PDFInkCoverageCalculator::perform(QSize size, const std::vector<PDFInteger>
|
||||
results.emplace_back(qMove(info));
|
||||
}
|
||||
|
||||
if (m_progress)
|
||||
{
|
||||
m_progress->step();
|
||||
}
|
||||
|
||||
QMutexLocker lock(&m_mutex);
|
||||
m_inkCoverageResults[pageIndex] = qMove(results);
|
||||
};
|
||||
|
||||
PDFExecutionPolicy::execute(PDFExecutionPolicy::Scope::Page, pages.begin(), pages.end(), calculatePageCoverage);
|
||||
|
||||
if (m_progress)
|
||||
{
|
||||
m_progress->finish();
|
||||
}
|
||||
}
|
||||
|
||||
void PDFInkCoverageCalculator::clear()
|
||||
{
|
||||
QMutexLocker lock(&m_mutex);
|
||||
m_inkCoverageResults.clear();
|
||||
}
|
||||
|
||||
const std::vector<PDFInkCoverageCalculator::InkCoverageChannelInfo>* PDFInkCoverageCalculator::getInkCoverage(PDFInteger pageIndex) const
|
||||
@ -3990,4 +4013,27 @@ const std::vector<PDFInkCoverageCalculator::InkCoverageChannelInfo>* PDFInkCover
|
||||
return &dummy;
|
||||
}
|
||||
|
||||
const PDFInkCoverageCalculator::InkCoverageChannelInfo* PDFInkCoverageCalculator::findCoverageInfoByName(const std::vector<PDFInkCoverageCalculator::InkCoverageChannelInfo>& infos,
|
||||
const QByteArray& name)
|
||||
{
|
||||
auto it = std::find_if(infos.cbegin(), infos.cend(), [&name](const auto& info) { return info.name == name; });
|
||||
if (it != infos.cend())
|
||||
{
|
||||
return &*it;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PDFInkCoverageCalculator::InkCoverageChannelInfo* PDFInkCoverageCalculator::findCoverageInfoByName(std::vector<PDFInkCoverageCalculator::InkCoverageChannelInfo>& infos, const QByteArray& name)
|
||||
{
|
||||
auto it = std::find_if(infos.begin(), infos.end(), [&name](const auto& info) { return info.name == name; });
|
||||
if (it != infos.cend())
|
||||
{
|
||||
return &*it;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace pdf
|
||||
|
Reference in New Issue
Block a user