summaryrefslogtreecommitdiffstats
path: root/digikam/imageplugins/coreplugin/iccprooftool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'digikam/imageplugins/coreplugin/iccprooftool.cpp')
-rw-r--r--digikam/imageplugins/coreplugin/iccprooftool.cpp1310
1 files changed, 0 insertions, 1310 deletions
diff --git a/digikam/imageplugins/coreplugin/iccprooftool.cpp b/digikam/imageplugins/coreplugin/iccprooftool.cpp
deleted file mode 100644
index 35097d17..00000000
--- a/digikam/imageplugins/coreplugin/iccprooftool.cpp
+++ /dev/null
@@ -1,1310 +0,0 @@
-/* ============================================================
- *
- * This file is a part of digiKam project
- * http://www.digikam.org
- *
- * Date : 2005-12-21
- * Description : digiKam image editor tool to correct picture
- * colors using an ICC color profile
- *
- * Copyright (C) 2005-2006 by F.J. Cruz <fj.cruz@supercable.es>
- * Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General
- * Public License as published by the Free Software Foundation;
- * either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * ============================================================ */
-
-// TQt includes.
-
-#include <tqcheckbox.h>
-#include <tqcolor.h>
-#include <tqcombobox.h>
-#include <tqfile.h>
-#include <tqframe.h>
-#include <tqgroupbox.h>
-#include <tqhbox.h>
-#include <tqhbuttongroup.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqpoint.h>
-#include <tqpushbutton.h>
-#include <tqradiobutton.h>
-#include <tqtextstream.h>
-#include <tqtoolbox.h>
-#include <tqtooltip.h>
-#include <tqvbox.h>
-#include <tqvbuttongroup.h>
-#include <tqwhatsthis.h>
-
-// KDE includes.
-
-#include <tdeapplication.h>
-#include <tdeconfig.h>
-#include <kcursor.h>
-#include <tdefile.h>
-#include <tdefiledialog.h>
-#include <tdeglobalsettings.h>
-#include <kiconloader.h>
-#include <tdelocale.h>
-#include <tdemessagebox.h>
-#include <ksqueezedtextlabel.h>
-#include <kstandarddirs.h>
-#include <ktabwidget.h>
-#include <kurllabel.h>
-#include <kurlrequester.h>
-
-// LibKDcraw includes.
-
-#include <libkdcraw/rnuminput.h>
-#include <libkdcraw/rcombobox.h>
-
-// Digikam includes.
-
-#include "bcgmodifier.h"
-#include "colorgradientwidget.h"
-#include "curveswidget.h"
-#include "ddebug.h"
-#include "dimg.h"
-#include "dimgimagefilters.h"
-#include "editortoolsettings.h"
-#include "histogramwidget.h"
-#include "iccpreviewwidget.h"
-#include "iccprofileinfodlg.h"
-#include "icctransform.h"
-#include "imagecurves.h"
-#include "imagehistogram.h"
-#include "imageiface.h"
-#include "imagewidget.h"
-
-// Local includes.
-
-#include "iccprooftool.h"
-#include "iccprooftool.moc"
-
-using namespace KDcrawIface;
-using namespace Digikam;
-
-namespace DigikamImagesPluginCore
-{
-
-ICCProofTool::ICCProofTool(TQObject* parent)
- : EditorTool(parent)
-{
- setName("colormanagement");
- setToolName(i18n("Color Management"));
- setToolIcon(SmallIcon("colormanagement"));
- setToolHelp("colormanagement.anchor");
-
- m_destinationPreviewData = 0;
- m_cmEnabled = true;
- m_hasICC = false;
-
- ImageIface iface(0, 0);
- m_originalImage = iface.getOriginalImg();
- m_embeddedICC = iface.getEmbeddedICCFromOriginalImage();
-
- m_previewWidget = new ImageWidget("colormanagement Tool",0,
- i18n("<p>Here you can see the image preview after "
- "applying a color profile</p>"));
- setToolView(m_previewWidget);
-
- // -------------------------------------------------------------------
-
- m_gboxSettings = new EditorToolSettings(EditorToolSettings::Default|
- EditorToolSettings::Load|
- EditorToolSettings::SaveAs|
- EditorToolSettings::Ok|
- EditorToolSettings::Cancel);
-
- TQGridLayout *gridSettings = new TQGridLayout(m_gboxSettings->plainPage(), 3, 2);
-
- TQLabel *label1 = new TQLabel(i18n("Channel: "), m_gboxSettings->plainPage());
- label1->setAlignment(TQt::AlignRight | TQt::AlignVCenter);
- m_channelCB = new TQComboBox(false, m_gboxSettings->plainPage());
- m_channelCB->insertItem(i18n("Luminosity"));
- m_channelCB->insertItem(i18n("Red"));
- m_channelCB->insertItem(i18n("Green"));
- m_channelCB->insertItem(i18n("Blue"));
- TQWhatsThis::add( m_channelCB, i18n("<p>Select the histogram channel to display here:<p>"
- "<b>Luminosity</b>: display the image's luminosity values.<p>"
- "<b>Red</b>: display the red channel values.<p>"
- "<b>Green</b>: display the green channel values.<p>"
- "<b>Blue</b>: display the blue channel values.<p>"));
-
- m_scaleBG = new TQHButtonGroup(m_gboxSettings->plainPage());
- m_scaleBG->setExclusive(true);
- m_scaleBG->setFrameShape(TQFrame::NoFrame);
- m_scaleBG->setInsideMargin(0);
- TQWhatsThis::add(m_scaleBG, i18n("<p>Select the histogram scale here.<p>"
- "If the image's maximal values are small, you can use the linear scale.<p>"
- "Logarithmic scale can be used when the maximal values are big; "
- "if it is used, all values (small and large) will be visible on the "
- "graph."));
-
- TQPushButton *linHistoButton = new TQPushButton(m_scaleBG);
- TQToolTip::add(linHistoButton, i18n("<p>Linear"));
- m_scaleBG->insert(linHistoButton, HistogramWidget::LinScaleHistogram);
- TDEGlobal::dirs()->addResourceType("histogram-lin", TDEGlobal::dirs()->kde_default("data") + "digikam/data");
- TQString directory = TDEGlobal::dirs()->findResourceDir("histogram-lin", "histogram-lin.png");
- linHistoButton->setPixmap(TQPixmap(directory + "histogram-lin.png"));
- linHistoButton->setToggleButton(true);
-
- TQPushButton *logHistoButton = new TQPushButton(m_scaleBG);
- TQToolTip::add(logHistoButton, i18n("<p>Logarithmic"));
- m_scaleBG->insert(logHistoButton, HistogramWidget::LogScaleHistogram);
- TDEGlobal::dirs()->addResourceType("histogram-log", TDEGlobal::dirs()->kde_default("data") + "digikam/data");
- directory = TDEGlobal::dirs()->findResourceDir("histogram-log", "histogram-log.png");
- logHistoButton->setPixmap(TQPixmap(directory + "histogram-log.png"));
- logHistoButton->setToggleButton(true);
-
- TQHBoxLayout* l1 = new TQHBoxLayout();
- l1->addWidget(label1);
- l1->addWidget(m_channelCB);
- l1->addStretch(10);
- l1->addWidget(m_scaleBG);
-
- gridSettings->addMultiCellLayout(l1, 0, 0, 0, 2);
-
- // -------------------------------------------------------------
-
- TQVBox *histoBox = new TQVBox(m_gboxSettings->plainPage());
- m_histogramWidget = new HistogramWidget(256, 140, histoBox, false, true, true);
- TQWhatsThis::add( m_histogramWidget, i18n("<p>Here you can see the target preview image histogram "
- "of the selected image channel. "
- "This one is updated after setting changes."));
- TQLabel *space = new TQLabel(histoBox);
- space->setFixedHeight(1);
- m_hGradient = new ColorGradientWidget( ColorGradientWidget::Horizontal, 10,
- histoBox );
- m_hGradient->setColors( TQColor( "black" ), TQColor( "white" ) );
-
- gridSettings->addMultiCellWidget(histoBox, 1, 2, 0, 2);
-
- // -------------------------------------------------------------
-
- m_toolBoxWidgets = new TQToolBox(m_gboxSettings->plainPage());
- TQWidget *generalOptions = new TQWidget(m_toolBoxWidgets);
- TQWidget *inProfiles = new TQWidget(m_toolBoxWidgets);
- TQWidget *spaceProfiles = new TQWidget(m_toolBoxWidgets);
- TQWidget *proofProfiles = new TQWidget(m_toolBoxWidgets);
- TQWidget *lightnessadjust = new TQWidget(m_toolBoxWidgets);
-
- //---------- "General" Page Setup ----------------------------------
-
- m_toolBoxWidgets->insertItem(GENERALPAGE, generalOptions,
- SmallIconSet("misc"), i18n("General Settings"));
- TQWhatsThis::add(generalOptions, i18n("<p>Here you can set general parameters.</p>"));
-
- TQGridLayout *zeroPageLayout = new TQGridLayout(generalOptions, 5, 1);
-
- m_doSoftProofBox = new TQCheckBox(generalOptions);
- m_doSoftProofBox->setText(i18n("Soft-proofing"));
- TQWhatsThis::add(m_doSoftProofBox, i18n("<p>Rendering emulation of the device described "
- "by the \"Proofing\" profile. Useful to preview the final "
- "result without rendering to physical medium.</p>"));
-
- m_checkGamutBox = new TQCheckBox(generalOptions);
- m_checkGamutBox->setText(i18n("Check gamut"));
- TQWhatsThis::add(m_checkGamutBox, i18n("<p>You can use this option if you want to show "
- "the colors that are outside the printer's gamut<p>"));
-
- m_embeddProfileBox = new TQCheckBox(generalOptions);
- m_embeddProfileBox->setChecked(true);
- m_embeddProfileBox->setText(i18n("Assign profile"));
- TQWhatsThis::add(m_embeddProfileBox, i18n("<p>You can use this option to embed "
- "the selected workspace color profile into the image.</p>"));
-
- m_BPCBox = new TQCheckBox(generalOptions);
- m_BPCBox->setText(i18n("Use BPC"));
- TQWhatsThis::add(m_BPCBox, i18n("<p>The Black Point Compensation (BPC) feature does work in conjunction "
- "with Relative Colorimetric Intent. Perceptual intent should make no "
- "difference, since BPC is always on, and in Absolute Colorimetric "
- "Intent it is always turned off.</p>"
- "<p>BPC does compensate for a lack of ICC profiles in the dark tone rendering. "
- "With BPC the dark tones are optimally mapped (no clipping) from original media "
- "to the destination rendering media, e.g. the combination of paper and ink.</p>"));
-
- TQLabel *intent = new TQLabel(i18n("Rendering Intent:"), generalOptions);
- m_renderingIntentsCB = new RComboBox(generalOptions);
- m_renderingIntentsCB->insertItem("Perceptual");
- m_renderingIntentsCB->insertItem("Absolute Colorimetric");
- m_renderingIntentsCB->insertItem("Relative Colorimetric");
- m_renderingIntentsCB->insertItem("Saturation");
- m_renderingIntentsCB->setDefaultItem(0);
- TQWhatsThis::add( m_renderingIntentsCB, i18n("<ul><li>Perceptual intent causes the full gamut "
- "of the image to be compressed or expanded to fill the gamut of the destination media, "
- "so that gray balance is preserved but colorimetric accuracy may not be preserved.<br>"
- "In other words, if certain colors in an image fall outside of the range of colors that "
- "the output device can render, the image intent will cause all the colors in the image "
- "to be adjusted so that every color in the image falls within the range that can be "
- "rendered and so that the relationship between colors is preserved as much as possible.<br>"
- "This intent is most suitable for display of photographs and images, and is the default "
- "intent.</li>"
- "<li> Absolute Colorimetric intent causes any colors that fall outside the range that the "
- "output device can render to be adjusted to the closest color that can be rendered, while all "
- "other colors are left unchanged.<br>"
- "This intent preserves the white point and is most suitable for spot colors (Pantone, "
- "TruMatch, logo colors, ...).</li>"
- "<li>Relative Colorimetric intent is defined such that any colors that fall outside the "
- "range that the output device can render are adjusted to the closest color that can be "
- "rendered, while all other colors are left unchanged. Proof intent does not preserve "
- "the white point.</li>"
- "<li>Saturation intent preserves the saturation of colors in the image at the possible "
- "expense of hue and lightness.<br>"
- "Implementation of this intent remains somewhat problematic, and the ICC is still working "
- "on methods to achieve the desired effects.<br>"
- "This intent is most suitable for business graphics such as charts, where it is more "
- "important that the colors be vivid and contrast well with each other rather than a "
- "specific color.</li></ul>"));
-
- KURLLabel *lcmsLogoLabel = new KURLLabel(generalOptions);
- lcmsLogoLabel->setAlignment(AlignTop | AlignRight);
- lcmsLogoLabel->setText(TQString());
- lcmsLogoLabel->setURL("http://www.littlecms.com");
- TDEGlobal::dirs()->addResourceType("logo-lcms", TDEGlobal::dirs()->kde_default("data") + "digikam/data");
- directory = TDEGlobal::dirs()->findResourceDir("logo-lcms", "logo-lcms.png");
- lcmsLogoLabel->setPixmap(TQPixmap(directory + "logo-lcms.png"));
- TQToolTip::add(lcmsLogoLabel, i18n("Visit Little CMS project website"));
-
- zeroPageLayout->addMultiCellWidget(m_doSoftProofBox, 0, 0, 0, 0);
- zeroPageLayout->addMultiCellWidget(m_checkGamutBox, 1, 1, 0, 0);
- zeroPageLayout->addMultiCellWidget(m_embeddProfileBox, 2, 2, 0, 0);
- zeroPageLayout->addMultiCellWidget(lcmsLogoLabel, 0, 2, 1, 1);
- zeroPageLayout->addMultiCellWidget(m_BPCBox, 3, 3, 0, 0);
- zeroPageLayout->addMultiCellWidget(intent, 4, 4, 0, 0);
- zeroPageLayout->addMultiCellWidget(m_renderingIntentsCB, 4, 4, 1, 1);
- zeroPageLayout->setRowStretch(5, 10);
-
- //---------- "Input" Page Setup ----------------------------------
-
- m_toolBoxWidgets->insertItem(INPUTPAGE, inProfiles, SmallIconSet("camera-photo"), i18n("Input Profile"));
- TQWhatsThis::add(inProfiles, i18n("<p>Set here all parameters relevant of Input Color "
- "Profiles.</p>"));
-
- TQGridLayout *firstPageLayout = new TQGridLayout(inProfiles, 4, 2);
-
- m_inProfileBG = new TQButtonGroup(4, Qt::Vertical, inProfiles);
- m_inProfileBG->setFrameStyle(TQFrame::NoFrame);
- m_inProfileBG->setInsideMargin(0);
-
- m_useEmbeddedProfile = new TQRadioButton(m_inProfileBG);
- m_useEmbeddedProfile->setText(i18n("Use embedded profile"));
-
- m_useSRGBDefaultProfile = new TQRadioButton(m_inProfileBG);
- m_useSRGBDefaultProfile->setText(i18n("Use builtin sRGB profile"));
- m_useSRGBDefaultProfile->setChecked(true);
-
- m_useInDefaultProfile = new TQRadioButton(m_inProfileBG);
- m_useInDefaultProfile->setText(i18n("Use default profile"));
-
- m_useInSelectedProfile = new TQRadioButton(m_inProfileBG);
- m_useInSelectedProfile->setText(i18n("Use selected profile"));
-
- m_inProfilesPath = new KURLRequester(inProfiles);
- m_inProfilesPath->setMode(KFile::File|KFile::ExistingOnly);
- m_inProfilesPath->setFilter("*.icc *.icm|"+i18n("ICC Files (*.icc; *.icm)"));
- KFileDialog *inProfiles_dialog = m_inProfilesPath->fileDialog();
- m_iccInPreviewWidget = new ICCPreviewWidget(inProfiles_dialog);
- inProfiles_dialog->setPreviewWidget(m_iccInPreviewWidget);
-
- TQPushButton *inProfilesInfo = new TQPushButton(i18n("Info..."), inProfiles);
-
- TQGroupBox *pictureInfo = new TQGroupBox(2, Qt::Horizontal, i18n("Camera information"), inProfiles);
- new TQLabel(i18n("Make:"), pictureInfo);
- KSqueezedTextLabel *make = new KSqueezedTextLabel(0, pictureInfo);
- new TQLabel(i18n("Model:"), pictureInfo);
- KSqueezedTextLabel *model = new KSqueezedTextLabel(0, pictureInfo);
- make->setText(iface.getPhotographInformations().make);
- model->setText(iface.getPhotographInformations().model);
-
- firstPageLayout->addMultiCellWidget(m_inProfileBG, 0, 1, 0, 0);
- firstPageLayout->addMultiCellWidget(inProfilesInfo, 0, 0, 2, 2);
- firstPageLayout->addMultiCellWidget(m_inProfilesPath, 2, 2, 0, 2);
- firstPageLayout->addMultiCellWidget(pictureInfo, 3, 3, 0, 2);
- firstPageLayout->setColStretch(1, 10);
- firstPageLayout->setRowStretch(4, 10);
-
- //---------- "Workspace" Page Setup ---------------------------------
-
- m_toolBoxWidgets->insertItem(WORKSPACEPAGE, spaceProfiles,
- SmallIconSet("input-tablet"), i18n("Workspace Profile"));
- TQWhatsThis::add(spaceProfiles, i18n("<p>Set here all parameters relevant to Color Workspace "
- "Profiles.</p>"));
-
- TQGridLayout *secondPageLayout = new TQGridLayout(spaceProfiles, 3, 2);
-
- m_spaceProfileBG = new TQButtonGroup(2, Qt::Vertical, spaceProfiles);
- m_spaceProfileBG->setFrameStyle(TQFrame::NoFrame);
- m_spaceProfileBG->setInsideMargin(0);
-
- m_useSpaceDefaultProfile = new TQRadioButton(m_spaceProfileBG);
- m_useSpaceDefaultProfile->setText(i18n("Use default workspace profile"));
-
- m_useSpaceSelectedProfile = new TQRadioButton(m_spaceProfileBG);
- m_useSpaceSelectedProfile->setText(i18n("Use selected profile"));
-
- m_spaceProfilePath = new KURLRequester(spaceProfiles);
- m_spaceProfilePath->setMode(KFile::File|KFile::ExistingOnly);
- m_spaceProfilePath->setFilter("*.icc *.icm|"+i18n("ICC Files (*.icc; *.icm)"));
- KFileDialog *spaceProfiles_dialog = m_spaceProfilePath->fileDialog();
- m_iccSpacePreviewWidget = new ICCPreviewWidget(spaceProfiles_dialog);
- spaceProfiles_dialog->setPreviewWidget(m_iccSpacePreviewWidget);
-
- TQPushButton *spaceProfilesInfo = new TQPushButton(i18n("Info..."), spaceProfiles);
-
- secondPageLayout->addMultiCellWidget(m_spaceProfileBG, 0, 1, 0, 0);
- secondPageLayout->addMultiCellWidget(spaceProfilesInfo, 0, 0, 2, 2);
- secondPageLayout->addMultiCellWidget(m_spaceProfilePath, 2, 2, 0, 2);
- secondPageLayout->setColStretch(1, 10);
- secondPageLayout->setRowStretch(3, 10);
-
- //---------- "Proofing" Page Setup ---------------------------------
-
- m_toolBoxWidgets->insertItem(PROOFINGPAGE, proofProfiles,
- SmallIconSet("printer"), i18n("Proofing Profile"));
- TQWhatsThis::add(proofProfiles, i18n("<p>Set here all parameters relevant to Proofing Color "
- "Profiles.</p>"));
-
- TQGridLayout *thirdPageLayout = new TQGridLayout(proofProfiles, 3, 2);
-
- m_proofProfileBG = new TQButtonGroup(2, Qt::Vertical, proofProfiles);
- m_proofProfileBG->setFrameStyle(TQFrame::NoFrame);
- m_proofProfileBG->setInsideMargin(0);
-
- m_useProofDefaultProfile = new TQRadioButton(m_proofProfileBG);
- m_useProofDefaultProfile->setText(i18n("Use default proof profile"));
-
- m_useProofSelectedProfile = new TQRadioButton(m_proofProfileBG);
- m_useProofSelectedProfile->setText(i18n("Use selected profile"));
-
- m_proofProfilePath = new KURLRequester(proofProfiles);
- m_proofProfilePath->setMode(KFile::File|KFile::ExistingOnly);
- m_proofProfilePath->setFilter("*.icc *.icm|"+i18n("ICC Files (*.icc; *.icm)"));
- KFileDialog *proofProfiles_dialog = m_proofProfilePath->fileDialog();
- m_iccProofPreviewWidget = new ICCPreviewWidget(proofProfiles_dialog);
- proofProfiles_dialog->setPreviewWidget(m_iccProofPreviewWidget);
-
- TQPushButton *proofProfilesInfo = new TQPushButton(i18n("Info..."), proofProfiles);
-
- thirdPageLayout->addMultiCellWidget(m_proofProfileBG, 0, 1, 0, 0);
- thirdPageLayout->addMultiCellWidget(proofProfilesInfo, 0, 0, 2, 2);
- thirdPageLayout->addMultiCellWidget(m_proofProfilePath, 2, 2, 0, 2);
- thirdPageLayout->setColStretch(1, 10);
- thirdPageLayout->setRowStretch(3, 10);
-
- //---------- "Lightness" Page Setup ----------------------------------
-
- m_toolBoxWidgets->insertItem(LIGHTNESSPAGE, lightnessadjust,
- SmallIconSet("blend"), i18n("Lightness Adjustments"));
- TQWhatsThis::add(lightnessadjust, i18n("<p>Set here all lightness adjustments to the target image.</p>"));
-
- TQGridLayout *fourPageLayout = new TQGridLayout( lightnessadjust, 5, 2);
-
- ColorGradientWidget* vGradient = new ColorGradientWidget(ColorGradientWidget::Vertical,
- 10, lightnessadjust );
- vGradient->setColors(TQColor("white"), TQColor("black"));
-
- TQLabel *spacev = new TQLabel(lightnessadjust);
- spacev->setFixedWidth(1);
-
- m_curvesWidget = new CurvesWidget(256, 192, m_originalImage->bits(), m_originalImage->width(),
- m_originalImage->height(), m_originalImage->sixteenBit(),
- lightnessadjust);
- TQWhatsThis::add( m_curvesWidget, i18n("<p>This is the curve adjustment of the image luminosity"));
-
- TQLabel *spaceh = new TQLabel(lightnessadjust);
- spaceh->setFixedHeight(1);
-
- ColorGradientWidget *hGradient = new ColorGradientWidget(ColorGradientWidget::Horizontal,
- 10,
- lightnessadjust);
-
- hGradient->setColors(TQColor("black"), TQColor("white"));
-
- m_cInput = new RIntNumInput(lightnessadjust);
- m_cInput->input()->setLabel(i18n("Contrast:"), AlignLeft | AlignVCenter);
- m_cInput->setRange(-100, 100, 1);
- m_cInput->setDefaultValue(0);
- TQWhatsThis::add( m_cInput, i18n("<p>Set here the contrast adjustment of the image."));
-
- fourPageLayout->addMultiCellWidget(vGradient, 0, 0, 0, 0);
- fourPageLayout->addMultiCellWidget(spacev, 0, 0, 1, 1);
- fourPageLayout->addMultiCellWidget(m_curvesWidget, 0, 0, 2, 2);
- fourPageLayout->addMultiCellWidget(spaceh, 1, 1, 2, 2);
- fourPageLayout->addMultiCellWidget(hGradient, 2, 2, 2, 2);
- fourPageLayout->addMultiCellWidget(m_cInput, 4, 4, 0, 2);
-// fourPageLayout->setRowSpacing(3);
- fourPageLayout->setRowStretch(5, 10);
-
- // -------------------------------------------------------------
-
- gridSettings->addMultiCellWidget(m_toolBoxWidgets, 3, 3, 0, 2);
-
- setToolSettings(m_gboxSettings);
- m_gboxSettings->enableButton(EditorToolSettings::Ok, false);
- init();
-
- // -------------------------------------------------------------
-
- connect(lcmsLogoLabel, TQT_SIGNAL(leftClickedURL(const TQString&)),
- this, TQT_SLOT(processLCMSURL(const TQString&)));
-
- connect(m_channelCB, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(slotChannelChanged(int)));
-
- connect(m_scaleBG, TQT_SIGNAL(released(int)),
- this, TQT_SLOT(slotScaleChanged(int)));
-
- connect(m_curvesWidget, TQT_SIGNAL(signalCurvesChanged()),
- this, TQT_SLOT(slotTimer()));
-
- connect(m_cInput, TQT_SIGNAL(valueChanged (int)),
- this, TQT_SLOT(slotTimer()));
-
- connect(m_renderingIntentsCB, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(slotEffect()));
-
- //-- Check box options connections -------------------------------------------
-
- connect(m_doSoftProofBox, TQT_SIGNAL(toggled (bool)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_checkGamutBox, TQT_SIGNAL(toggled (bool)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_BPCBox, TQT_SIGNAL(toggled (bool)),
- this, TQT_SLOT(slotEffect()));
-
- //-- Button Group ICC profile options connections ----------------------------
-
- connect(m_inProfileBG, TQT_SIGNAL(released (int)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_spaceProfileBG, TQT_SIGNAL(released (int)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_proofProfileBG, TQT_SIGNAL(released (int)),
- this, TQT_SLOT(slotEffect()));
-
- //-- url requester ICC profile connections -----------------------------------
-
- connect(m_inProfilesPath, TQT_SIGNAL(urlSelected(const TQString&)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_spaceProfilePath, TQT_SIGNAL(urlSelected(const TQString&)),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_proofProfilePath, TQT_SIGNAL(urlSelected(const TQString&)),
- this, TQT_SLOT(slotEffect()));
-
- //-- Image preview widget connections ----------------------------
-
- connect(m_previewWidget, TQT_SIGNAL(signalResized()),
- this, TQT_SLOT(slotEffect()));
-
- connect(m_previewWidget, TQT_SIGNAL(spotPositionChangedFromOriginal( const Digikam::DColor &, const TQPoint & )),
- this, TQT_SLOT(slotSpotColorChanged( const Digikam::DColor & )));
-
- connect(m_previewWidget, TQT_SIGNAL(spotPositionChangedFromTarget( const Digikam::DColor &, const TQPoint & )),
- this, TQT_SLOT(slotColorSelectedFromTarget( const Digikam::DColor & )));
-
- //-- ICC profile preview connections -----------------------------
-
- connect(inProfilesInfo, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotInICCInfo()));
-
- connect(spaceProfilesInfo, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotSpaceICCInfo()));
-
- connect(proofProfilesInfo, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotProofICCInfo()));
-}
-
-ICCProofTool::~ICCProofTool()
-{
- if (m_destinationPreviewData)
- delete [] m_destinationPreviewData;
-}
-
-void ICCProofTool::readSettings()
-{
- TQString defaultICCPath = TDEGlobalSettings::documentPath();
- TDEConfig* config = kapp->config();
-
- // General settings of digiKam Color Management
- config->setGroup("Color Management");
-
- if (!config->readBoolEntry("EnableCM", false))
- {
- m_cmEnabled = false;
- slotToggledWidgets(false);
- }
- else
- {
- m_inPath = config->readPathEntry("InProfileFile");
- m_spacePath = config->readPathEntry("WorkProfileFile");
- m_proofPath = config->readPathEntry("ProofProfileFile");
-
- if (TQFile::exists(config->readPathEntry("DefaultPath")))
- {
- defaultICCPath = config->readPathEntry("DefaultPath");
- }
- else
- {
- TQString message = i18n("The ICC profiles path seems to be invalid. You won't be able to use the \"Default profile\"\
- options.<p>Please fix this in the digiKam ICC setup.");
- slotToggledWidgets( false );
- KMessageBox::information(kapp->activeWindow(), message);
- }
- }
-
- // Plugin settings.
- config->setGroup("colormanagement Tool");
- m_channelCB->setCurrentItem(config->readNumEntry("Histogram Channel", 0)); // Luminosity.
- m_scaleBG->setButton(config->readNumEntry("Histogram Scale", HistogramWidget::LogScaleHistogram));
- m_toolBoxWidgets->setCurrentIndex(config->readNumEntry("Settings Tab", GENERALPAGE));
- m_inProfilesPath->setURL(config->readPathEntry("InputProfilePath", defaultICCPath));
- m_proofProfilePath->setURL(config->readPathEntry("ProofProfilePath", defaultICCPath));
- m_spaceProfilePath->setURL(config->readPathEntry("SpaceProfilePath", defaultICCPath));
- m_renderingIntentsCB->setCurrentItem(config->readNumEntry("RenderingIntent", m_renderingIntentsCB->defaultItem()));
- m_doSoftProofBox->setChecked(config->readBoolEntry("DoSoftProof", false));
- m_checkGamutBox->setChecked(config->readBoolEntry("CheckGamut", false));
- m_embeddProfileBox->setChecked(config->readBoolEntry("EmbeddProfile", true));
- m_BPCBox->setChecked(config->readBoolEntry("BPC", true));
- m_inProfileBG->setButton(config->readNumEntry("InputProfileMethod", 0));
- m_spaceProfileBG->setButton(config->readNumEntry("SpaceProfileMethod", 0));
- m_proofProfileBG->setButton(config->readNumEntry("ProofProfileMethod", 0));
- m_cInput->setValue(config->readNumEntry("ContrastAjustment", m_cInput->defaultValue()));
-
- for (int i = 0 ; i < 5 ; i++)
- m_curvesWidget->curves()->curvesChannelReset(i);
-
- m_curvesWidget->curves()->setCurveType(m_curvesWidget->m_channelType, ImageCurves::CURVE_SMOOTH);
- m_curvesWidget->reset();
-
- for (int j = 0 ; j < 17 ; j++)
- {
- TQPoint disable(-1, -1);
- TQPoint p = config->readPointEntry(TQString("CurveAjustmentPoint%1").arg(j), &disable);
-
- if (m_originalImage->sixteenBit() && p.x() != -1)
- {
- p.setX(p.x()*255);
- p.setY(p.y()*255);
- }
-
- m_curvesWidget->curves()->setCurvePoint(ImageHistogram::ValueChannel, j, p);
- }
-
- for (int i = 0 ; i < 5 ; i++)
- m_curvesWidget->curves()->curvesCalculateCurve(i);
-
- m_histogramWidget->reset();
- slotChannelChanged(m_channelCB->currentItem());
- slotScaleChanged(m_scaleBG->selectedId());
-}
-
-void ICCProofTool::writeSettings()
-{
- TDEConfig* config = kapp->config();
- config->setGroup("colormanagement Tool");
- config->writeEntry("Settings Tab", m_toolBoxWidgets->currentIndex());
- config->writeEntry("Histogram Channel", m_channelCB->currentItem());
- config->writeEntry("Histogram Scale", m_scaleBG->selectedId());
- config->writePathEntry("InputProfilePath", m_inProfilesPath->url());
- config->writePathEntry("ProofProfilePath", m_proofProfilePath->url());
- config->writePathEntry("SpaceProfilePath", m_spaceProfilePath->url());
- config->writeEntry("RenderingIntent", m_renderingIntentsCB->currentItem());
- config->writeEntry("DoSoftProof", m_doSoftProofBox->isChecked());
- config->writeEntry("CheckGamut", m_checkGamutBox->isChecked());
- config->writeEntry("EmbeddProfile", m_embeddProfileBox->isChecked());
- config->writeEntry("BPC", m_BPCBox->isChecked());
- config->writeEntry("InputProfileMethod", m_inProfileBG->selectedId());
- config->writeEntry("SpaceProfileMethod", m_spaceProfileBG->selectedId());
- config->writeEntry("ProofProfileMethod", m_proofProfileBG->selectedId());
- config->writeEntry("ContrastAjustment", m_cInput->value());
-
- for (int j = 0; j < 17; j++)
- {
- TQPoint p = m_curvesWidget->curves()->getCurvePoint(ImageHistogram::ValueChannel, j);
-
- if (m_originalImage->sixteenBit() && p.x() != -1)
- {
- p.setX(p.x() / 255);
- p.setY(p.y() / 255);
- }
-
- config->writeEntry(TQString("CurveAjustmentPoint%1").arg(j), p);
- }
-
- m_previewWidget->writeSettings();
- config->sync();
-}
-
-void ICCProofTool::processLCMSURL(const TQString& url)
-{
- TDEApplication::kApplication()->invokeBrowser(url);
-}
-
-void ICCProofTool::slotSpotColorChanged(const DColor &color)
-{
- m_curvesWidget->setCurveGuide(color);
-}
-
-void ICCProofTool::slotColorSelectedFromTarget( const DColor &color )
-{
- m_histogramWidget->setHistogramGuideByColor(color);
-}
-
-void ICCProofTool::slotChannelChanged( int channel )
-{
- switch (channel)
- {
- case LuminosityChannel:
- m_histogramWidget->m_channelType = HistogramWidget::ValueHistogram;
- m_hGradient->setColors(TQColor("black"), TQColor("white"));
- break;
-
- case RedChannel:
- m_histogramWidget->m_channelType = HistogramWidget::RedChannelHistogram;
- m_hGradient->setColors(TQColor("black"), TQColor("red"));
- break;
-
- case GreenChannel:
- m_histogramWidget->m_channelType = HistogramWidget::GreenChannelHistogram;
- m_hGradient->setColors(TQColor("black"), TQColor("green"));
- break;
-
- case BlueChannel:
- m_histogramWidget->m_channelType = HistogramWidget::BlueChannelHistogram;
- m_hGradient->setColors(TQColor("black"), TQColor("blue"));
- break;
- }
-
- m_histogramWidget->repaint(false);
-}
-
-void ICCProofTool::slotScaleChanged(int scale)
-{
- m_histogramWidget->m_scaleType = scale;
- m_histogramWidget->repaint(false);
-}
-
-void ICCProofTool::slotResetSettings()
-{
- m_cInput->blockSignals(true);
- m_renderingIntentsCB->blockSignals(true);
-
- m_cInput->slotReset();
- m_renderingIntentsCB->slotReset();
-
- for (int i = 0 ; i < 5 ; i++)
- m_curvesWidget->curves()->curvesChannelReset(i);
-
- m_curvesWidget->reset();
- m_cInput->blockSignals(false);
- m_renderingIntentsCB->blockSignals(false);
-}
-
-void ICCProofTool::slotEffect()
-{
- kapp->setOverrideCursor(KCursor::waitCursor());
- m_gboxSettings->enableButton(EditorToolSettings::Ok, true);
- m_histogramWidget->stopHistogramComputation();
-
- IccTransform transform;
-
- if (m_destinationPreviewData)
- delete [] m_destinationPreviewData;
-
- ImageIface *iface = m_previewWidget->imageIface();
- m_destinationPreviewData = iface->getPreviewImage();
- int w = iface->previewWidth();
- int h = iface->previewHeight();
- bool a = iface->previewHasAlpha();
- bool sb = iface->previewSixteenBit();
-
- DImg preview(w, h, sb, a, m_destinationPreviewData);
-
- TQString tmpInPath = TQString();
- TQString tmpProofPath = TQString();
- TQString tmpSpacePath = TQString();
-
- bool proofCondition = false;
- bool spaceCondition = false;
-
- //-- Input profile parameters ------------------
-
- if (useDefaultInProfile())
- {
- tmpInPath = m_inPath;
- }
- else if (useSelectedInProfile())
- {
- tmpInPath = m_inProfilesPath->url();
- TQFileInfo info(tmpInPath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>The selected ICC input profile path seems to be invalid.<p>"
- "Please check it."));
- return;
- }
- }
-
- //-- Proof profile parameters ------------------
-
- if (useDefaultProofProfile())
- {
- tmpProofPath = m_proofPath;
- }
- else
- {
- tmpProofPath = m_proofProfilePath->url();
- TQFileInfo info(tmpProofPath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>The selected ICC proof profile path seems to be invalid.<p>"
- "Please check it."));
- return;
- }
- }
-
- if (m_doSoftProofBox->isChecked())
- proofCondition = tmpProofPath.isEmpty();
-
- //-- Workspace profile parameters --------------
-
- if (useDefaultSpaceProfile())
- {
- tmpSpacePath = m_spacePath;
- }
- else
- {
- tmpSpacePath = m_spaceProfilePath->url();
- TQFileInfo info(tmpSpacePath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>Selected ICC workspace profile path seems to be invalid.<p>"
- "Please check it."));
- return;
- }
- }
-
- spaceCondition = tmpSpacePath.isEmpty();
-
- //-- Perform the color transformations ------------------
-
- transform.getTransformType(m_doSoftProofBox->isChecked());
-
- if (m_doSoftProofBox->isChecked())
- {
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.setProfiles(tmpSpacePath, tmpProofPath, true);
- }
- else
- {
- transform.setProfiles(tmpInPath, tmpSpacePath, tmpProofPath);
- }
- }
- else
- {
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.setProfiles(tmpSpacePath);
- }
- else
- {
- transform.setProfiles(tmpInPath, tmpSpacePath);
- }
- }
-
- if ( proofCondition || spaceCondition )
- {
- kapp->restoreOverrideCursor();
- TQString error = i18n("<p>Your settings are not sufficient.</p>"
- "<p>To apply a color transform, you need at least two ICC profiles:</p>"
- "<ul><li>An \"Input\" profile.</li>"
- "<li>A \"Workspace\" profile.</li></ul>"
- "<p>If you want to do a \"soft-proof\" transform, in addition to these profiles "
- "you need a \"Proof\" profile.</p>");
- KMessageBox::information(kapp->activeWindow(), error);
- m_gboxSettings->enableButton(EditorToolSettings::Ok, false);
- }
- else
- {
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.apply(preview, m_embeddedICC, m_renderingIntentsCB->currentItem(), useBPC(),
- m_checkGamutBox->isChecked(), useBuiltinProfile());
- }
- else
- {
- TQByteArray fakeProfile = TQByteArray();
- transform.apply(preview, fakeProfile, m_renderingIntentsCB->currentItem(), useBPC(),
- m_checkGamutBox->isChecked(), useBuiltinProfile());
- }
-
- //-- Calculate and apply the curve on image after transformation -------------
-
- DImg preview2(w, h, sb, a, 0, false);
- m_curvesWidget->curves()->curvesLutSetup(ImageHistogram::AlphaChannel);
- m_curvesWidget->curves()->curvesLutProcess(preview.bits(), preview2.bits(), w, h);
-
- //-- Adjust contrast ---------------------------------------------------------
-
- BCGModifier cmod;
- cmod.setContrast((double)(m_cInput->value()/100.0) + 1.00);
- cmod.applyBCG(preview2);
-
- iface->putPreviewImage(preview2.bits());
- m_previewWidget->updatePreview();
-
- //-- Update histogram --------------------------------------------------------
-
- memcpy(m_destinationPreviewData, preview2.bits(), preview2.numBytes());
- m_histogramWidget->updateData(m_destinationPreviewData, w, h, sb, 0, 0, 0, false);
- kapp->restoreOverrideCursor();
- }
-}
-
-void ICCProofTool::finalRendering()
-{
- if (!m_doSoftProofBox->isChecked())
- {
- kapp->setOverrideCursor( KCursor::waitCursor() );
-
- ImageIface *iface = m_previewWidget->imageIface();
- uchar *data = iface->getOriginalImage();
- int w = iface->originalWidth();
- int h = iface->originalHeight();
- bool a = iface->originalHasAlpha();
- bool sb = iface->originalSixteenBit();
-
- if (data)
- {
- IccTransform transform;
-
- DImg img(w, h, sb, a, data);
-
- TQString tmpInPath;
- TQString tmpProofPath;
- TQString tmpSpacePath;
- bool proofCondition;
-
- //-- Input profile parameters ------------------
-
- if (useDefaultInProfile())
- {
- tmpInPath = m_inPath;
- }
- else if (useSelectedInProfile())
- {
- tmpInPath = m_inProfilesPath->url();
- TQFileInfo info(tmpInPath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>Selected ICC input profile path seems "
- "to be invalid.<p>Please check it."));
- return;
- }
- }
-
- //-- Proof profile parameters ------------------
-
- if (useDefaultProofProfile())
- {
- tmpProofPath = m_proofPath;
- }
- else
- {
- tmpProofPath = m_proofProfilePath->url();
- TQFileInfo info(tmpProofPath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>The selected ICC proof profile path seems "
- "to be invalid.<p>Please check it."));
- return;
- }
- }
-
- if (tmpProofPath.isNull())
- proofCondition = false;
-
- //-- Workspace profile parameters --------------
-
- if (useDefaultSpaceProfile())
- {
- tmpSpacePath = m_spacePath;
- }
- else
- {
- tmpSpacePath = m_spaceProfilePath->url();
- TQFileInfo info(tmpSpacePath);
- if (!info.exists() || !info.isReadable() || !info.isFile())
- {
- KMessageBox::information(kapp->activeWindow(),
- i18n("<p>Selected ICC workspace profile path seems "
- "to be invalid.<p>Please check it."));
- return;
- }
- }
-
- //-- Perform the color transformations ------------------
-
- transform.getTransformType(m_doSoftProofBox->isChecked());
-
- if (m_doSoftProofBox->isChecked())
- {
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.setProfiles( tmpSpacePath, tmpProofPath, true );
- }
- else
- {
- transform.setProfiles( tmpInPath, tmpSpacePath, tmpProofPath);
- }
- }
- else
- {
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.setProfiles( tmpSpacePath );
- }
- else
- {
- transform.setProfiles( tmpInPath, tmpSpacePath );
- }
- }
-
- if (m_useEmbeddedProfile->isChecked())
- {
- transform.apply(img, m_embeddedICC, m_renderingIntentsCB->currentItem(), useBPC(),
- m_checkGamutBox->isChecked(), useBuiltinProfile());
- }
- else
- {
- TQByteArray fakeProfile = TQByteArray();
- transform.apply(img, fakeProfile, m_renderingIntentsCB->currentItem(), useBPC(),
- m_checkGamutBox->isChecked(), useBuiltinProfile());
- }
-
- //-- Embed the workspace profile if necessary --------------------------------
-
- if (m_embeddProfileBox->isChecked())
- {
- iface->setEmbeddedICCToOriginalImage(tmpSpacePath);
- DDebug() << k_funcinfo << TQFile::encodeName(tmpSpacePath) << endl;
- }
-
- //-- Calculate and apply the curve on image after transformation -------------
-
- DImg img2(w, h, sb, a, 0, false);
- m_curvesWidget->curves()->curvesLutSetup(ImageHistogram::AlphaChannel);
- m_curvesWidget->curves()->curvesLutProcess(img.bits(), img2.bits(), w, h);
-
- //-- Adjust contrast ---------------------------------------------------------
-
- BCGModifier cmod;
- cmod.setContrast((double)(m_cInput->value()/100.0) + 1.00);
- cmod.applyBCG(img2);
-
- iface->putOriginalImage("Color Management", img2.bits());
- delete [] data;
- }
-
- kapp->restoreOverrideCursor();
- }
-}
-
-void ICCProofTool::slotToggledWidgets( bool t)
-{
- m_useInDefaultProfile->setEnabled(t);
- m_useProofDefaultProfile->setEnabled(t);
- m_useSpaceDefaultProfile->setEnabled(t);
-}
-
-void ICCProofTool::slotInICCInfo()
-{
- if (useEmbeddedProfile())
- {
- getICCInfo(m_embeddedICC);
- }
- else if (useBuiltinProfile())
- {
- TQString message = i18n("<p>You have selected the \"Default builtin sRGB profile\"</p>");
- message.append(i18n("<p>This profile is built on the fly, so there is no relevant information "
- "about it.</p>"));
- KMessageBox::information(kapp->activeWindow(), message);
- }
- else if (useDefaultInProfile())
- {
- getICCInfo(m_inPath);
- }
- else if (useSelectedInProfile())
- {
- getICCInfo(m_inProfilesPath->url());
- }
-}
-
-void ICCProofTool::slotProofICCInfo()
-{
- if (useDefaultProofProfile())
- {
- getICCInfo(m_proofPath);
- }
- else
- {
- getICCInfo(m_proofProfilePath->url());
- }
-}
-
-void ICCProofTool::slotSpaceICCInfo()
-{
- if (useDefaultSpaceProfile())
- {
- getICCInfo(m_spacePath);
- }
- else
- {
- getICCInfo(m_spaceProfilePath->url());
- }
-}
-
-void ICCProofTool::getICCInfo(const TQString& profile)
-{
- if (profile.isEmpty())
- {
- KMessageBox::error(kapp->activeWindow(),
- i18n("Sorry, there is no selected profile"),
- i18n("Profile Error"));
- return;
- }
-
- ICCProfileInfoDlg infoDlg(kapp->activeWindow(), profile);
- infoDlg.exec();
-}
-
-void ICCProofTool::getICCInfo(const TQByteArray& profile)
-{
- if (profile.isNull())
- {
- KMessageBox::error(kapp->activeWindow(),
- i18n("Sorry, it seems there is no embedded profile"),
- i18n("Profile Error"));
- return;
- }
-
- ICCProfileInfoDlg infoDlg(kapp->activeWindow(), TQString(), profile);
- infoDlg.exec();
-}
-
-void ICCProofTool::slotCMDisabledWarning()
-{
- if (!m_cmEnabled)
- {
- TQString message = i18n("<p>You have not enabled Color Management in the digiKam preferences.</p>");
- message.append(i18n("<p>\"Use of default profile\" options will be disabled now.</p>"));
- KMessageBox::information(kapp->activeWindow(), message);
- slotToggledWidgets(false);
- }
-}
-
-//-- General Tab ---------------------------
-
-bool ICCProofTool::useBPC()
-{
- return m_BPCBox->isChecked();
-}
-
-bool ICCProofTool::doProof()
-{
- return m_doSoftProofBox->isChecked();
-}
-
-bool ICCProofTool::checkGamut()
-{
- return m_checkGamutBox->isChecked();
-}
-
-bool ICCProofTool::embedProfile()
-{
- return m_embeddProfileBox->isChecked();
-}
-
-//-- Input Tab ---------------------------
-
-bool ICCProofTool::useEmbeddedProfile()
-{
- return m_useEmbeddedProfile->isChecked();
-}
-
-bool ICCProofTool::useBuiltinProfile()
-{
- return m_useSRGBDefaultProfile->isChecked();
-}
-
-bool ICCProofTool::useDefaultInProfile()
-{
- return m_useInDefaultProfile->isChecked();
-}
-
-bool ICCProofTool::useSelectedInProfile()
-{
- return m_useInSelectedProfile->isChecked();
-}
-
-//-- Workspace Tab ---------------------------
-
-bool ICCProofTool::useDefaultSpaceProfile()
-{
- return m_useSpaceDefaultProfile->isChecked();
-}
-
-//-- Proofing Tab ---------------------------
-
-bool ICCProofTool::useDefaultProofProfile()
-{
- return m_useProofDefaultProfile->isChecked();
-}
-
-//-- Load all settings from file --------------------------------------
-
-void ICCProofTool::slotLoadSettings()
-{
- KURL loadColorManagementFile = KFileDialog::getOpenURL(TDEGlobalSettings::documentPath(),
- TQString("*"), kapp->activeWindow(),
- TQString(i18n("Color Management Settings File to Load")));
- if (loadColorManagementFile.isEmpty())
- return;
-
- TQFile file(loadColorManagementFile.path());
-
- if (file.open(IO_ReadOnly))
- {
- TQTextStream stream(&file);
-
- if (stream.readLine() != "# Color Management Configuration File")
- {
- KMessageBox::error(kapp->activeWindow(),
- i18n("\"%1\" is not a Color Management settings text file.")
- .arg(loadColorManagementFile.fileName()));
- file.close();
- return;
- }
-
- blockSignals(true);
-
- m_renderingIntentsCB->setCurrentItem(stream.readLine().toInt());
- m_doSoftProofBox->setChecked((bool) (stream.readLine().toUInt()));
- m_checkGamutBox->setChecked((bool) (stream.readLine().toUInt()));
- m_embeddProfileBox->setChecked((bool) (stream.readLine().toUInt()));
- m_BPCBox->setChecked((bool) (stream.readLine().toUInt()));
- m_inProfileBG->setButton(stream.readLine().toInt());
- m_spaceProfileBG->setButton(stream.readLine().toInt());
- m_proofProfileBG->setButton(stream.readLine().toInt());
- m_inProfilesPath->setURL(stream.readLine());
- m_proofProfilePath->setURL(stream.readLine());
- m_spaceProfilePath->setURL(stream.readLine());
- m_cInput->setValue(stream.readLine().toInt());
-
- for (int i = 0 ; i < 5 ; i++)
- m_curvesWidget->curves()->curvesChannelReset(i);
-
- m_curvesWidget->curves()->setCurveType(m_curvesWidget->m_channelType, ImageCurves::CURVE_SMOOTH);
- m_curvesWidget->reset();
-
- for (int j = 0; j < 17; j++)
- {
- TQPoint disable(-1, -1);
- TQPoint p;
- p.setX(stream.readLine().toInt());
- p.setY(stream.readLine().toInt());
-
- if (m_originalImage->sixteenBit() && p != disable)
- {
- p.setX(p.x() * 255);
- p.setY(p.y() * 255);
- }
-
- m_curvesWidget->curves()->setCurvePoint(ImageHistogram::ValueChannel, j, p);
- }
-
- blockSignals(false);
-
- for (int i = 0 ; i < 5 ; i++)
- m_curvesWidget->curves()->curvesCalculateCurve(i);
-
- m_histogramWidget->reset();
- slotEffect();
- }
- else
- KMessageBox::error(kapp->activeWindow(),
- i18n("Cannot load settings from the Color Management text file."));
-
- file.close();
-}
-
-//-- Save all settings to file ---------------------------------------
-
-void ICCProofTool::slotSaveAsSettings()
-{
- KURL saveColorManagementFile = KFileDialog::getSaveURL(TDEGlobalSettings::documentPath(),
- TQString( "*" ), kapp->activeWindow(),
- TQString(i18n("Color Management Settings File to Save")));
- if (saveColorManagementFile.isEmpty())
- return;
-
- TQFile file(saveColorManagementFile.path());
-
- if (file.open(IO_WriteOnly))
- {
- TQTextStream stream(&file);
- stream << "# Color Management Configuration File\n";
- stream << m_renderingIntentsCB->currentItem() << "\n";
- stream << m_doSoftProofBox->isChecked() << "\n";
- stream << m_checkGamutBox->isChecked() << "\n";
- stream << m_embeddProfileBox->isChecked() << "\n";
- stream << m_BPCBox->isChecked() << "\n";
- stream << m_inProfileBG->selectedId() << "\n";
- stream << m_spaceProfileBG->selectedId() << "\n";
- stream << m_proofProfileBG->selectedId() << "\n";
- stream << m_inProfilesPath->url() << "\n";
- stream << m_proofProfilePath->url() << "\n";
- stream << m_spaceProfilePath->url() << "\n";
- stream << m_cInput->value() << "\n";
-
- for (int j = 0; j < 17; j++)
- {
- TQPoint p = m_curvesWidget->curves()->getCurvePoint(ImageHistogram::ValueChannel, j);
- if (m_originalImage->sixteenBit())
- {
- p.setX(p.x() / 255);
- p.setY(p.y() / 255);
- }
- stream << p.x() << "\n";
- stream << p.y() << "\n";
- }
- }
- else
- KMessageBox::error(kapp->activeWindow(),
- i18n("Cannot save settings to the Color Management text file."));
-
- file.close();
-}
-
-} // NameSpace DigikamImagesPluginCore