void BWSepiaFilter::filterImage() { if (d->settings.preview) { m_destImage = getThumbnailForEffect(m_orgImage); } else { m_destImage = m_orgImage; postProgress(10); // Apply black and white filter. blackAndWhiteConversion(m_destImage, d->settings.filterType); postProgress(20); // Apply black and white film type. blackAndWhiteConversion(m_destImage, d->settings.filmType); postProgress(30); // Apply color tone filter. blackAndWhiteConversion(m_destImage, d->settings.toneType); postProgress(40); // Calculate and apply the luminosity curve on image. CurvesFilter curves(&m_destImage, 0L, d->settings.curvesPrm); postProgress(50); curves.startFilterDirectly(); postProgress(60); m_destImage.putImageData(curves.getTargetImage().bits()); postProgress(70); // Adjust contrast. BCGFilter bcg(&m_destImage, 0L, d->settings.bcgPrm); postProgress(80); bcg.startFilterDirectly(); postProgress(90); m_destImage.putImageData(bcg.getTargetImage().bits()); postProgress(100); } }
void RawProcessingFilter::filterImage() { m_destImage = m_orgImage; // emulate LibRaw custom output profile if (!m_customOutputProfile.isNull()) { // Note the m_destImage is not yet ready in load()! IccTransform trans; trans.setIntent(IccTransform::Perceptual); trans.setEmbeddedProfile(m_destImage); trans.setOutputProfile(m_customOutputProfile); trans.apply(m_orgImage, m_observer); m_destImage.setIccProfile(m_customOutputProfile); } postProgress(20); if (!m_settings.wb.isDefault()) { WBFilter wb(m_settings.wb, this, m_orgImage, m_destImage, 20, 40); } postProgress(40); if (!m_settings.bcg.isDefault()) { BCGFilter bcg(m_settings.bcg, this, m_orgImage, m_destImage, 40, 70); } postProgress(70); if (!m_settings.curvesAdjust.isEmpty()) { CurvesFilter curves(m_settings.curvesAdjust, this, m_orgImage, m_destImage, 70, 100); } postProgress(100); }