diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fd9e168f..41e621938 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,6 +99,11 @@ if(APPLE) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /usr/lib/libstdc++.6.dylib") message(STATUS "CMAKE_CXX_COMPILER is MacPorts GCC.\n CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") endif() + + # Set minimum system version + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.9") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.9") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -headerpad_max_install_names") endif() option(USE_EXPERIMENTAL_LANG_VERSIONS "Build with -std=c++0x" OFF) diff --git a/cmake/modules/FindMacIntegration.cmake b/cmake/modules/FindMacIntegration.cmake index 47cbc7f83..a67c31baa 100644 --- a/cmake/modules/FindMacIntegration.cmake +++ b/cmake/modules/FindMacIntegration.cmake @@ -12,7 +12,7 @@ # Copyright 2010 henrik andersson #============================================================================= -SET(MACINTEGRATION_FIND_REQUIRED ${MacIntegration_FIND_REQUIRED}) +set(MACINTEGRATION_FIND_REQUIRED ${MacIntegration_FIND_REQUIRED}) find_path(MACINTEGRATION_INCLUDE_DIR gtkosxapplication.h PATH_SUFFIXES gtkmacintegration gtkmacintegration-gtk3) mark_as_advanced(MACINTEGRATION_INCLUDE_DIR) @@ -26,7 +26,7 @@ mark_as_advanced(MACINTEGRATION_LIBRARY) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MACINTEGRATION DEFAULT_MSG MACINTEGRATION_LIBRARY MACINTEGRATION_INCLUDE_DIR) -IF(MACINTEGRATION_FOUND) - SET(MacIntegration_LIBRARIES ${MACINTEGRATION_LIBRARY}) - SET(MacIntegration_INCLUDE_DIRS ${MACINTEGRATION_INCLUDE_DIR}) -ENDIF(MACINTEGRATION_FOUND) +if(MACINTEGRATION_FOUND) + set(MacIntegration_LIBRARIES ${MACINTEGRATION_LIBRARY}) + set(MacIntegration_INCLUDE_DIRS ${MACINTEGRATION_INCLUDE_DIR}) +endif() diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index 0bb356172..e320969c3 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -1,69 +1,72 @@ -file (GLOB LANGUAGEFILES "languages/*") -file (GLOB SOUNDFILES "sounds/*") -file (GLOB INPUTICCFILES "iccprofiles/input/*") -file (GLOB OUTPUTICCFILES "iccprofiles/output/*") -file (GLOB DCPFILES "dcpprofiles/*") -file (GLOB FONTS "fonts/*") -set (PROFILESDIR "profiles") +file(GLOB LANGUAGEFILES "languages/*") +file(GLOB SOUNDFILES "sounds/*") +file(GLOB INPUTICCFILES "iccprofiles/input/*") +file(GLOB OUTPUTICCFILES "iccprofiles/output/*") +file(GLOB DCPFILES "dcpprofiles/*") +file(GLOB FONTS "fonts/*") + +set(PROFILESDIR "profiles") +set(IMAGESDIR "images") + # THEMEDIR includes subfolders for image resources for some themes; doing the normal glob won't work. -set (THEMEDIR "themes") -set (IMAGESDIR "images") +set(THEMEDIR "themes") -if (WIN32) +if(WIN32) set(OPTIONSFILE "options/options.win") -elseif (APPLE) +elseif(APPLE) set(OPTIONSFILE "options/options.osx") -else (WIN32) +else() set(OPTIONSFILE "options/options.lin") -endif (WIN32) +endif() -if (WIN32) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR}) -endif (WIN32) +if(WIN32) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR}) +endif() -if (UNIX) - configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/icons/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop") - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR}) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi16-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi24-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi32-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi48-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi128-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png) - install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi256-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png) -endif (UNIX) +if(UNIX) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/icons/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR}) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi16-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi24-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi32-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi48-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi128-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi256-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png) +endif() -install (FILES ${IMAGEFILES} DESTINATION "${DATADIR}/images") -install (FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages") -install (FILES ${SOUNDFILES} DESTINATION "${DATADIR}/sounds") -install (FILES ${INPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/input") -install (FILES ${OUTPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/output") -install (FILES ${DCPFILES} DESTINATION "${DATADIR}/dcpprofiles") -if (WIN32) - install (FILES ${FONTS} DESTINATION "${DATADIR}/fonts") -endif (WIN32) -install (DIRECTORY ${PROFILESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3") -install (DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}") -install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme") -install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png") -install (FILES ${OPTIONSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ RENAME options) +install(FILES ${IMAGEFILES} DESTINATION "${DATADIR}/images") +install(FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages") +install(FILES ${SOUNDFILES} DESTINATION "${DATADIR}/sounds") +install(FILES ${INPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/input") +install(FILES ${OUTPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/output") +install(FILES ${DCPFILES} DESTINATION "${DATADIR}/dcpprofiles") +install(FILES ${OPTIONSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ RENAME options) +if(WIN32) + install(FILES ${FONTS} DESTINATION "${DATADIR}/fonts") +endif() -if (APPLE) - # CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE='. - set (MACOSX_BUNDLE_COMMAND DUMMY_VARIABLE= +install(DIRECTORY ${PROFILESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3") +install(DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}") +install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme") +install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png") + +if(APPLE) + # CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE=' + set(MACOSX_BUNDLE_COMMAND DUMMY_VARIABLE= PROJECT_NAME="${PROJECT_NAME}" PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}" CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" GTK_PREFIX="${GTK_PREFIX}") - if (PROC_BIT_DEPTH MATCHES 32) - list (APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=32) - elseif (PROC_BIT_DEPTH MATCHES 64) - list (APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=64) - endif (PROC_BIT_DEPTH MATCHES 32) - list (APPEND MACOSX_BUNDLE_COMMAND sh "${PROJECT_SOURCE_DIR}/tools/osx/macosx_bundle.sh") + if(PROC_BIT_DEPTH MATCHES 32) + list(APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=32) + else() + list(APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=64) + endif() + list(APPEND MACOSX_BUNDLE_COMMAND sh "${PROJECT_SOURCE_DIR}/tools/osx/macosx_bundle.sh") add_custom_target(macosx_bundle COMMAND ${MACOSX_BUNDLE_COMMAND} WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - COMMENT "Creating Mac OS X bundle") -endif (APPLE) + COMMENT "Creating macOS bundle") +endif() diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 3553e09a0..74abb1d59 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -1,46 +1,141 @@ -include_directories (${EXTRA_INCDIR} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} - ${GLIBMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS} ${FFTW3F_INCLUDE_DIRS} - ${GTKMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS}) -link_directories ("${PROJECT_SOURCE_DIR}/rtexif" ${EXTRA_LIBDIR} ${GTHREAD_LIBRARY_DIRS} - ${GOBJECT_LIBRARY_DIRS} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} - ${IPTCDATA_LIBRARY_DIRS} ${LCMS_LIBRARY_DIRS} ${EXPAT_LIBRARY_DIRS} ${FFTW3F_LIBRARY_DIRS}) - -set (CAMCONSTSFILE "camconst.json") - -set (RTENGINESOURCEFILES colortemp.cc curves.cc flatcurves.cc diagonalcurves.cc dcraw.cc iccstore.cc color.cc - dfmanager.cc ffmanager.cc gauss.cc rawimage.cc image8.cc image16.cc imagefloat.cc imagedata.cc imageio.cc improcfun.cc init.cc dcrop.cc - loadinitial.cc procparams.cc rawimagesource.cc demosaic_algos.cc shmap.cc simpleprocess.cc refreshmap.cc - fast_demo.cc amaze_demosaic_RT.cc CA_correct_RT.cc cfa_linedn_RT.cc green_equil_RT.cc hilite_recon.cc expo_before_b.cc - stdimagesource.cc myfile.cc iccjpeg.cc improccoordinator.cc pipettebuffer.cc coord.cc - processingjob.cc rtthumbnail.cc utils.cc labimage.cc slicer.cc cieimage.cc iplocallab.cc - iplab2rgb.cc ipsharpen.cc iptransform.cc ipresize.cc ipvibrance.cc icons.cc - imagedimensions.cc jpeg_ijg/jpeg_memsrc.cc jdatasrc.cc iimage.cc - EdgePreservingDecomposition.cc cplx_wavelet_dec.cc FTblockDN.cc - PF_correct_RT.cc previewimage.cc ipwavelet.cc - dirpyr_equalizer.cc - calc_distort.cc lcp.cc dcp.cc ipretinex.cc - cJSON.c camconst.cc - klt/convolve.cc klt/error.cc klt/klt.cc klt/klt_util.cc klt/pnmio.cc klt/pyramid.cc klt/selectGoodFeatures.cc - klt/storeFeatures.cc klt/trackFeatures.cc klt/writeFeatures.cc - clutstore.cc - ciecam02.cc - pixelshift.cc +include_directories(${EXTRA_INCDIR} + ${EXPAT_INCLUDE_DIRS} + ${FFTW3F_INCLUDE_DIRS} + ${GLIB2_INCLUDE_DIRS} + ${GLIBMM_INCLUDE_DIRS} + ${GOBJECT_INCLUDE_DIRS} + ${GTHREAD_INCLUDE_DIRS} + ${GTKMM_INCLUDE_DIRS} + ${GTK_INCLUDE_DIRS} + ${IPTCDATA_INCLUDE_DIRS} + ${LCMS_INCLUDE_DIRS} ) -include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") +link_directories("${PROJECT_SOURCE_DIR}/rtexif" + ${EXPAT_LIBRARY_DIRS} + ${EXTRA_LIBDIR} + ${FFTW3F_LIBRARY_DIRS} + ${GLIB2_LIBRARY_DIRS} + ${GLIBMM_LIBRARY_DIRS} + ${GOBJECT_LIBRARY_DIRS} + ${GTHREAD_LIBRARY_DIRS} + ${IPTCDATA_LIBRARY_DIRS} + ${LCMS_LIBRARY_DIRS} + ) -add_library (rtengine ${RTENGINESOURCEFILES}) -add_dependencies (rtengine UpdateInfo) +set(CAMCONSTSFILE "camconst.json") -#It may be nice to store library version too -IF (BUILD_SHARED_LIBS) +set(RTENGINESOURCEFILES + CA_correct_RT.cc + EdgePreservingDecomposition.cc + FTblockDN.cc + PF_correct_RT.cc + amaze_demosaic_RT.cc + cJSON.c + calc_distort.cc + camconst.cc + cfa_linedn_RT.cc + ciecam02.cc + cieimage.cc + clutstore.cc + color.cc + colortemp.cc + coord.cc + cplx_wavelet_dec.cc + curves.cc + dcp.cc + dcraw.cc + dcrop.cc + demosaic_algos.cc + dfmanager.cc + diagonalcurves.cc + dirpyr_equalizer.cc + expo_before_b.cc + fast_demo.cc + ffmanager.cc + flatcurves.cc + gauss.cc + green_equil_RT.cc + hilite_recon.cc + iccjpeg.cc + iccstore.cc + icons.cc + iimage.cc + image16.cc + image8.cc + imagedata.cc + imagedimensions.cc + imagefloat.cc + imageio.cc + improccoordinator.cc + improcfun.cc + init.cc + iplab2rgb.cc + iplocallab.cc + ipresize.cc + ipretinex.cc + ipsharpen.cc + iptransform.cc + ipvibrance.cc + ipwavelet.cc + jdatasrc.cc + jpeg_ijg/jpeg_memsrc.cc + klt/convolve.cc + klt/error.cc + klt/klt.cc + klt/klt_util.cc + klt/pnmio.cc + klt/pyramid.cc + klt/selectGoodFeatures.cc + klt/storeFeatures.cc + klt/trackFeatures.cc + klt/writeFeatures.cc + labimage.cc + lcp.cc + loadinitial.cc + myfile.cc + pipettebuffer.cc + pixelshift.cc + previewimage.cc + processingjob.cc + procparams.cc + rawimage.cc + rawimagesource.cc + refreshmap.cc + rtthumbnail.cc + shmap.cc + simpleprocess.cc + slicer.cc + stdimagesource.cc + utils.cc + ) + +include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") + +add_library(rtengine ${RTENGINESOURCEFILES}) +add_dependencies(rtengine UpdateInfo) + +# It may be nice to store library version too +if(BUILD_SHARED_LIBS) install (TARGETS rtengine DESTINATION ${LIBDIR}) -ENDIF (BUILD_SHARED_LIBS) +endif() -set_target_properties (rtengine PROPERTIES COMPILE_FLAGS "${RTENGINE_CXX_FLAGS}") +set_target_properties(rtengine PROPERTIES COMPILE_FLAGS "${RTENGINE_CXX_FLAGS}") -target_link_libraries (rtengine rtexif ${EXTRA_LIB} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} - ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${LCMS_LIBRARIES} ${EXPAT_LIBRARIES} ${FFTW3F_LIBRARIES} ${IPTCDATA_LIBRARIES} - ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${TIFF_LIBRARIES} ${ZLIB_LIBRARIES}) +target_link_libraries(rtengine rtexif + ${EXPAT_LIBRARIES} + ${EXTRA_LIB} + ${FFTW3F_LIBRARIES} + ${GLIB2_LIBRARIES} + ${GLIBMM_LIBRARIES} + ${GOBJECT_LIBRARIES} + ${GTHREAD_LIBRARIES} + ${IPTCDATA_LIBRARIES} + ${JPEG_LIBRARIES} + ${LCMS_LIBRARIES} + ${PNG_LIBRARIES} + ${TIFF_LIBRARIES} + ${ZLIB_LIBRARIES} + ) -install (FILES ${CAMCONSTSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) +install(FILES ${CAMCONSTSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 89090ce21..3bcc8515e 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -302,6 +302,8 @@ public: if (loadAll) { loadProfiles(stdProfilesDir, nullptr, nullptr, &fileStdProfilesFileNames, true); } + + defaultMonitorProfile = settings->monitorProfile; } cmsHPROFILE workingSpace(const Glib::ustring& name) const @@ -534,6 +536,16 @@ public: return getProofIntents(getProfile(name)); } + Glib::ustring getDefaultMonitorProfileName() const + { + return defaultMonitorProfile; + } + + void setDefaultMonitorProfileName(const Glib::ustring &name) + { + defaultMonitorProfile = name; + } + private: using ProfileMap = std::map; using MatrixMap = std::map; @@ -617,6 +629,18 @@ rtengine::ProfileContent rtengine::ICCStore::getContent(const Glib::ustring& nam return implementation->getContent(name); } + +Glib::ustring rtengine::ICCStore::getDefaultMonitorProfileName() const +{ + return implementation->getDefaultMonitorProfileName(); +} + + +void rtengine::ICCStore::setDefaultMonitorProfileName(const Glib::ustring &name) +{ + implementation->setDefaultMonitorProfileName(name); +} + cmsHPROFILE rtengine::ICCStore::getXYZProfile() const { return implementation->getXYZProfile(); diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h index 6231e22ae..48efae087 100644 --- a/rtengine/iccstore.h +++ b/rtengine/iccstore.h @@ -78,6 +78,9 @@ public: cmsHPROFILE getStdProfile(const Glib::ustring& name) const; ProfileContent getContent(const Glib::ustring& name) const; + Glib::ustring getDefaultMonitorProfileName() const; + void setDefaultMonitorProfileName(const Glib::ustring &name); + cmsHPROFILE getXYZProfile() const; cmsHPROFILE getsRGBProfile() const; diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index d2d18b7d8..e367633f2 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -28,11 +28,18 @@ #include #endif +#include "settings.h" using namespace std; using namespace rtengine; +namespace rtengine { + +extern const Settings* settings; + +} + LCPModelCommon::LCPModelCommon() : foc_len_x(-1.0f), foc_len_y(-1.0f), @@ -603,7 +610,9 @@ void LCPProfile::calcParams(int mode, float focalLength, float focusDist, float //printf("LCP mode=%i, dist: %g found frames: Fno %g-%g; FocLen %g-%g; Dist %g-%g with weight %g\n", mode, focusDist, pLow->aperture, pHigh->aperture, pLow->focLen, pHigh->focLen, pLow->focDist, pHigh->focDist, facLow); } else { - printf("Error: LCP file contained no %s parameters\n", mode == 0 ? "vignette" : mode == 1 ? "distortion" : "CA" ); + if (settings->verbose) { + printf("Error: LCP file contained no %s parameters\n", mode == 0 ? "vignette" : mode == 1 ? "distortion" : "CA" ); + } } } diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 2c4067c1b..6e6177278 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1040,7 +1040,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei ImProcFunctions ipf (¶ms, false); ipf.setScale (sqrt(double(fw * fw + fh * fh)) / sqrt(double(thumbImg->getWidth() * thumbImg->getWidth() + thumbImg->getHeight() * thumbImg->getHeight()))*scale); - ipf.updateColorProfiles (options.rtSettings.monitorProfile, options.rtSettings.monitorIntent, false, false); + ipf.updateColorProfiles (ICCStore::getInstance()->getDefaultMonitorProfileName(), options.rtSettings.monitorIntent, false, false); LUTu hist16 (65536); diff --git a/rtexif/CMakeLists.txt b/rtexif/CMakeLists.txt index 7dad67006..0309996f8 100644 --- a/rtexif/CMakeLists.txt +++ b/rtexif/CMakeLists.txt @@ -1,23 +1,19 @@ -add_library (rtexif rtexif.cc stdattribs.cc nikonattribs.cc canonattribs.cc pentaxattribs.cc fujiattribs.cc sonyminoltaattribs.cc olympusattribs.cc kodakattribs.cc) -add_dependencies (rtexif UpdateInfo) +add_library(rtexif rtexif.cc stdattribs.cc nikonattribs.cc canonattribs.cc pentaxattribs.cc fujiattribs.cc sonyminoltaattribs.cc olympusattribs.cc kodakattribs.cc) +add_dependencies(rtexif UpdateInfo) -IF (WIN32) - set_target_properties (rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations") - include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} - ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) - link_directories (. "${PROJECT_SOURCE_DIR}/rtexif" ${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} - ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS}) +if(WIN32) + set_target_properties(rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations") + include_directories(${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) + link_directories(. "${PROJECT_SOURCE_DIR}/rtexif" ${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS}) #set_target_properties (rth PROPERTIES LINK_FLAGS "-mwindows") -ELSE (WIN32) - set_target_properties (rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations -fPIC") - include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} - ${GLIBMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) - link_directories (${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} - ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS}) -ENDIF (WIN32) +else() + set_target_properties(rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations -fPIC") + include_directories(${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) + link_directories(${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS}) +endif() -include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") +include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") -IF (BUILD_SHARED_LIBS) - INSTALL(TARGETS rtexif DESTINATION ${LIBDIR}) -ENDIF (BUILD_SHARED_LIBS) +if(BUILD_SHARED_LIBS) + install(TARGETS rtexif DESTINATION ${LIBDIR}) +endif() diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 293d2634e..9514ab6c4 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -1,93 +1,276 @@ -# common source files for both CLI and non-CLI execautables -set (CLISOURCEFILES - paramsedited.cc options.cc multilangmgr.cc pathutils.cc edit.cc threadutils.cc - main-cli.cc) +# Common source files for both CLI and non-CLI execautables +set(CLISOURCEFILES + edit.cc + main-cli.cc + multilangmgr.cc + options.cc + paramsedited.cc + pathutils.cc + threadutils.cc + ) -set (NONCLISOURCEFILES - editwindow.cc batchtoolpanelcoord.cc paramsedited.cc cropwindow.cc previewhandler.cc previewwindow.cc navigator.cc indclippedpanel.cc previewmodepanel.cc filterpanel.cc - exportpanel.cc cursormanager.cc rtwindow.cc renamedlg.cc recentbrowser.cc placesbrowser.cc filepanel.cc editorpanel.cc batchqueuepanel.cc checkbox.cc - ilabel.cc thumbbrowserbase.cc adjuster.cc filebrowserentry.cc filebrowser.cc filethumbnailbuttonset.cc - cachemanager.cc cacheimagedata.cc shcselector.cc perspective.cc thresholdselector.cc thresholdadjuster.cc - clipboard.cc thumbimageupdater.cc bqentryupdater.cc lensgeom.cc coloredbar.cc edit.cc coordinateadjuster.cc - coarsepanel.cc cacorrection.cc chmixer.cc blackwhite.cc - resize.cc icmpanel.cc crop.cc shadowshighlights.cc - impulsedenoise.cc dirpyrdenoise.cc epd.cc - exifpanel.cc toolpanel.cc lensprofile.cc lockablecolorpicker.cc - sharpening.cc vibrance.cc rgbcurves.cc colortoning.cc - whitebalance.cc vignetting.cc gradient.cc pcvignette.cc rotate.cc distortion.cc - crophandler.cc dirbrowser.cc - curveeditor.cc curveeditorgroup.cc diagonalcurveeditorsubgroup.cc flatcurveeditorsubgroup.cc - filecatalog.cc extprog.cc - previewloader.cc rtimage.cc inspector.cc - histogrampanel.cc history.cc imagearea.cc - imageareapanel.cc iptcpanel.cc labcurve.cc main.cc - multilangmgr.cc mycurve.cc myflatcurve.cc mydiagonalcurve.cc options.cc retinex.cc - preferences.cc profilepanel.cc saveasdlg.cc - saveformatpanel.cc soundman.cc splash.cc - thumbnail.cc tonecurve.cc toolbar.cc - pathutils.cc guiutils.cc threadutils.cc zoompanel.cc toolpanelcoord.cc - thumbbrowserentrybase.cc batchqueueentry.cc - batchqueue.cc lwbutton.cc lwbuttonset.cc - batchqueuebuttonset.cc browserfilter.cc exiffiltersettings.cc - profilestore.cc partialpastedlg.cc - sensorbayer.cc sensorxtrans.cc preprocess.cc bayerpreprocess.cc bayerprocess.cc bayerrawexposure.cc xtransprocess.cc xtransrawexposure.cc - darkframe.cc flatfield.cc rawcacorrection.cc rawexposure.cc wavelet.cc - dirpyrequalizer.cc hsvequalizer.cc defringe.cc - popupcommon.cc popupbutton.cc popuptogglebutton.cc sharpenedge.cc sharpenmicro.cc colorappearance.cc locallab.cc - filmsimulation.cc prsharpening.cc - dynamicprofile.cc dynamicprofilepanel.cc) +set(NONCLISOURCEFILES + adjuster.cc + batchqueue.cc + batchqueuebuttonset.cc + batchqueueentry.cc + batchqueuepanel.cc + batchtoolpanelcoord.cc + bayerpreprocess.cc + bayerprocess.cc + bayerrawexposure.cc + blackwhite.cc + bqentryupdater.cc + browserfilter.cc + cacheimagedata.cc + cachemanager.cc + cacorrection.cc + checkbox.cc + chmixer.cc + clipboard.cc + coarsepanel.cc + colorappearance.cc + coloredbar.cc + colortoning.cc + coordinateadjuster.cc + crop.cc + crophandler.cc + cropwindow.cc + cursormanager.cc + curveeditor.cc + curveeditorgroup.cc + darkframe.cc + defringe.cc + diagonalcurveeditorsubgroup.cc + dirbrowser.cc + dirpyrdenoise.cc + dirpyrequalizer.cc + distortion.cc + dynamicprofile.cc + dynamicprofilepanel.cc + edit.cc + editorpanel.cc + editwindow.cc + epd.cc + exiffiltersettings.cc + exifpanel.cc + exportpanel.cc + extprog.cc + filebrowser.cc + filebrowserentry.cc + filecatalog.cc + filepanel.cc + filethumbnailbuttonset.cc + filmsimulation.cc + filterpanel.cc + flatcurveeditorsubgroup.cc + flatfield.cc + gradient.cc + guiutils.cc + histogrampanel.cc + history.cc + hsvequalizer.cc + icmpanel.cc + ilabel.cc + imagearea.cc + imageareapanel.cc + impulsedenoise.cc + indclippedpanel.cc + inspector.cc + iptcpanel.cc + labcurve.cc + lensgeom.cc + lensprofile.cc + locallab.cc + lockablecolorpicker.cc + lwbutton.cc + lwbuttonset.cc + main.cc + multilangmgr.cc + mycurve.cc + mydiagonalcurve.cc + myflatcurve.cc + navigator.cc + options.cc + paramsedited.cc + partialpastedlg.cc + pathutils.cc + pcvignette.cc + perspective.cc + placesbrowser.cc + popupbutton.cc + popupcommon.cc + popuptogglebutton.cc + preferences.cc + preprocess.cc + previewhandler.cc + previewloader.cc + previewmodepanel.cc + previewwindow.cc + profilepanel.cc + profilestore.cc + prsharpening.cc + rawcacorrection.cc + rawexposure.cc + recentbrowser.cc + renamedlg.cc + resize.cc + retinex.cc + rgbcurves.cc + rotate.cc + rtimage.cc + rtwindow.cc + saveasdlg.cc + saveformatpanel.cc + sensorbayer.cc + sensorxtrans.cc + shadowshighlights.cc + sharpenedge.cc + sharpening.cc + sharpenmicro.cc + shcselector.cc + soundman.cc + splash.cc + threadutils.cc + thresholdadjuster.cc + thresholdselector.cc + thumbbrowserbase.cc + thumbbrowserentrybase.cc + thumbimageupdater.cc + thumbnail.cc + tonecurve.cc + toolbar.cc + toolpanel.cc + toolpanelcoord.cc + vibrance.cc + vignetting.cc + wavelet.cc + whitebalance.cc + xtransprocess.cc + xtransrawexposure.cc + zoompanel.cc + ) -include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") +include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") -if (APPLE) - find_package (MacIntegration REQUIRED) - # At the time of writing Cmake has no module finder for gtkmacintegration so here we have it hard-coded, if installed via macports it should be in /opt/local/... - set (EXTRA_LIB_RTGUI ${MacIntegration_LIBRARIES}) - set (EXTRA_INCDIR ${EXTRA_INCDIR} ${MacIntegration_INCLUDE_DIRS}) -endif (APPLE) -if (WIN32) - set (EXTRA_SRC_CLI myicon.rc) - set (EXTRA_SRC_NONCLI myicon.rc windirmonitor.cc) - set (EXTRA_LIB_RTGUI winmm) - include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} - ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS}) - link_directories (. "${PROJECT_SOURCE_DIR}/rtexif" ${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} - ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${GIO_LIBRARY_DIRS} ${GIOMM_LIBRARY_DIRS}) - #set_target_properties (rth PROPERTIES LINK_FLAGS "-mwindows") -else (WIN32) - include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} - ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} - ${LCMS_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} - ${CANBERRA-GTK_INCLUDE_DIRS}) - link_directories (${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} - ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${GIO_LIBRARY_DIRS} ${GIOMM_LIBRARY_DIRS} ${IPTCDATA_LIBRARY_DIRS} - ${LCMS_LIBRARY_DIRS} ${EXPAT_LIBRARY_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_LIBRARY_DIRS} ${GOBJECT_LIBRARY_DIRS} - ${CANBERRA-GTK_LIBRARY_DIRS}) -endif (WIN32) -# create config.h which defines where data are stored -configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") +if(APPLE) + find_package(MacIntegration REQUIRED) + # At the time of writing CMake has no module finder for gtkmacintegration so here we have it hard-coded, if installed via macports it should be in /opt/local/... + set(EXTRA_LIB_RTGUI ${MacIntegration_LIBRARIES}) + set(EXTRA_INCDIR ${EXTRA_INCDIR} ${MacIntegration_INCLUDE_DIRS}) +endif() -# create new executables targets -add_executable (rth ${EXTRA_SRC_NONCLI} ${NONCLISOURCEFILES}) -#add_executable (rth-cli ${EXTRA_SRC_CLI} ${CLISOURCEFILES}) +if(WIN32) + set(EXTRA_SRC_CLI myicon.rc) + set(EXTRA_SRC_NONCLI myicon.rc windirmonitor.cc) + set(EXTRA_LIB_RTGUI winmm) + include_directories(${EXTRA_INCDIR} + ${GIOMM_INCLUDE_DIRS} + ${GIO_INCLUDE_DIRS} + ${GLIB2_INCLUDE_DIRS} + ${GLIBMM_INCLUDE_DIRS} + ${GTKMM_INCLUDE_DIRS} + ${GTK_INCLUDE_DIRS} + ) + link_directories(. "${PROJECT_SOURCE_DIR}/rtexif" + ${EXTRA_LIBDIR} + ${GIOMM_LIBRARY_DIRS} + ${GIO_LIBRARY_DIRS} + ${GLIB2_LIBRARY_DIRS} + ${GLIBMM_LIBRARY_DIRS} + ${GTKMM_LIBRARY_DIRS} + ${GTK_LIBRARY_DIRS} + ) + #set_target_properties(rth PROPERTIES LINK_FLAGS "-mwindows") +else() + include_directories(${EXTRA_INCDIR} + ${CANBERRA-GTK_INCLUDE_DIRS} + ${EXPAT_INCLUDE_DIRS} + ${FFTW3F_LIBRARY_DIRS} + ${GIOMM_INCLUDE_DIRS} + ${GIO_INCLUDE_DIRS} + ${GLIB2_INCLUDE_DIRS} + ${GLIBMM_INCLUDE_DIRS} + ${GOBJECT_INCLUDE_DIRS} + ${GTHREAD_INCLUDE_DIRS} + ${GTKMM_INCLUDE_DIRS} + ${GTK_INCLUDE_DIRS} + ${IPTCDATA_INCLUDE_DIRS} + ${LCMS_INCLUDE_DIRS} + ) + link_directories(${EXTRA_LIBDIR} + ${CANBERRA-GTK_LIBRARY_DIRS} + ${EXPAT_LIBRARY_DIRS} + ${FFTW3F_LIBRARY_DIRS} + ${GIOMM_LIBRARY_DIRS} + ${GIO_LIBRARY_DIRS} + ${GLIB2_LIBRARY_DIRS} + ${GLIBMM_LIBRARY_DIRS} + ${GOBJECT_LIBRARY_DIRS} + ${GTHREAD_LIBRARY_DIRS} + ${GTKMM_LIBRARY_DIRS} + ${GTK_LIBRARY_DIRS} + ${IPTCDATA_LIBRARY_DIRS} + ${LCMS_LIBRARY_DIRS} + ) +endif() -# add dependencies to executables targets -add_dependencies (rth UpdateInfo) -#add_dependencies (rth-cli UpdateInfo) +# Create config.h which defines where data are stored +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") -# set executables targets properties, i.e. output filename and compile flags -set_target_properties (rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee) -#set_target_properties (rth-cli PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee-cli) +# Create new executables targets +add_executable(rth ${EXTRA_SRC_NONCLI} ${NONCLISOURCEFILES}) +#add_executable(rth-cli ${EXTRA_SRC_CLI} ${CLISOURCEFILES}) -# add linked libraries dependencies to executables targets -target_link_libraries (rth rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} - ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${GTK_LIBRARIES} ${GTKMM_LIBRARIES} ${GIO_LIBRARIES} ${GIOMM_LIBRARIES} ${LCMS_LIBRARIES} ${EXPAT_LIBRARIES} - ${FFTW3F_LIBRARIES} ${IPTCDATA_LIBRARIES} ${CANBERRA-GTK_LIBRARIES} ${EXTRA_LIB_RTGUI}) +# Add dependencies to executables targets +add_dependencies(rth UpdateInfo) +#add_dependencies(rth-cli UpdateInfo) -#target_link_libraries (rth-cli rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} -# ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${CAIROMM_LIBRARIES} ${GIO_LIBRARIES} ${GIOMM_LIBRARIES} ${LCMS_LIBRARIES} ${EXPAT_LIBRARIES} -# ${FFTW3F_LIBRARIES} ${IPTCDATA_LIBRARIES} ${EXTRA_LIB_RTGUI}) +# Set executables targets properties, i.e. output filename and compile flags +set_target_properties(rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee) +#set_target_properties(rth-cli PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee-cli) -# install executables -install (TARGETS rth DESTINATION ${BINDIR}) -#install (TARGETS rth-cli DESTINATION ${BINDIR}) +# Add linked libraries dependencies to executables targets +target_link_libraries(rth rtengine + ${CANBERRA-GTK_LIBRARIES} + ${EXPAT_LIBRARIES} + ${EXTRA_LIB_RTGUI} + ${FFTW3F_LIBRARIES} + ${GIOMM_LIBRARIES} + ${GIO_LIBRARIES} + ${GLIB2_LIBRARIES} + ${GLIBMM_LIBRARIES} + ${GOBJECT_LIBRARIES} + ${GTHREAD_LIBRARIES} + ${GTKMM_LIBRARIES} + ${GTK_LIBRARIES} + ${IPTCDATA_LIBRARIES} + ${JPEG_LIBRARIES} + ${LCMS_LIBRARIES} + ${PNG_LIBRARIES} + ${TIFF_LIBRARIES} + ${ZLIB_LIBRARIES} + ) + +#target_link_libraries(rth-cli rtengine +# ${CAIROMM_LIBRARIES} +# ${EXPAT_LIBRARIES} +# ${EXTRA_LIB_RTGUI} +# ${FFTW3F_LIBRARIES} +# ${GIOMM_LIBRARIES} +# ${GIO_LIBRARIES} +# ${GLIB2_LIBRARIES} +# ${GLIBMM_LIBRARIES} +# ${GOBJECT_LIBRARIES} +# ${GTHREAD_LIBRARIES} +# ${IPTCDATA_LIBRARIES} +# ${JPEG_LIBRARIES} +# ${LCMS_LIBRARIES} +# ${PNG_LIBRARIES} +# ${TIFF_LIBRARIES} +# ${ZLIB_LIBRARIES} +# ) + +# Install executables +install(TARGETS rth DESTINATION ${BINDIR}) +#install(TARGETS rth-cli DESTINATION ${BINDIR}) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 55db072a4..459abbe5b 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -160,7 +160,12 @@ private: Glib::ustring defprofname; if (find_default_monitor_profile(profileBox.get_root_window()->gobj(), defprof, defprofname)) { profileBox.append (M ("MONITOR_PROFILE_SYSTEM") + " (" + defprofname + ")"); - profileBox.set_active (options.rtSettings.autoMonitorProfile ? 1 : 0); + if (options.rtSettings.autoMonitorProfile) { + rtengine::ICCStore::getInstance()->setDefaultMonitorProfileName(defprof); + profileBox.set_active(1); + } else { + profileBox.set_active(0); + } } else { profileBox.set_active (0); } @@ -402,7 +407,7 @@ public: ConnectionBlocker profileBlocker (profileConn); if (!defprof.empty() && options.rtSettings.autoMonitorProfile) { - setActiveTextOrIndex (profileBox, options.rtSettings.monitorProfile, 1); + profileBox.set_active(1); } else { setActiveTextOrIndex (profileBox, options.rtSettings.monitorProfile, 0); } @@ -426,6 +431,23 @@ public: updateParameters (); } + void defaultMonitorProfileChanged(const Glib::ustring &profile_name, bool auto_monitor_profile) + { + ConnectionBlocker profileBlocker (profileConn); + + if (auto_monitor_profile && !defprof.empty()) { + rtengine::ICCStore::getInstance()->setDefaultMonitorProfileName(defprof); +#ifndef __APPLE__ + profileBox.set_active(1); +#endif + } else { + rtengine::ICCStore::getInstance()->setDefaultMonitorProfileName(profile_name); +#ifndef __APPLE__ + setActiveTextOrIndex(profileBox, profile_name, 0); +#endif + } + } + }; EditorPanel::EditorPanel (FilePanel* filePanel) @@ -2214,3 +2236,10 @@ void EditorPanel::updateHistogramPosition (int oldPosition, int newPosition) iareapanel->imageArea->setPointerMotionHListener (histogramPanel); } + + +void EditorPanel::defaultMonitorProfileChanged(const Glib::ustring &profile_name, bool auto_monitor_profile) +{ + colorMgmtToolBar->defaultMonitorProfileChanged(profile_name, auto_monitor_profile); +} + diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 4434a660e..6cfedb634 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -129,6 +129,8 @@ public: void updateTabsUsesIcons (bool useIcons); void updateHistogramPosition (int oldPosition, int newPosition); + void defaultMonitorProfileChanged(const Glib::ustring &profile_name, bool auto_monitor_profile); + Gtk::Paned* catalogPane; private: diff --git a/rtgui/lensgeom.cc b/rtgui/lensgeom.cc index 5bcbf5494..fc1b0a1bd 100644 --- a/rtgui/lensgeom.cc +++ b/rtgui/lensgeom.cc @@ -119,28 +119,3 @@ void LensGeometry::setBatchMode (bool batchMode) removeIfThere (this, autoCrop); } -void LensGeometry::disableAutoFillIfActive () -{ - const auto func = [](gpointer data) -> gboolean { - GThreadLock lock; // Is this really needed? - - LensGeometry* const instance = static_cast(data); - - if (!instance->batchMode) { - if (instance->fill->get_active()) { - instance->fillConn.block(true); - instance->fill->set_active(false); - - if (instance->listener) { - instance->listener->panelChanged (EvTransAutoFill, M("GENERAL_DISABLED")); - } - - instance->fillConn.block(false); - } - } - - return FALSE; - }; - - idle_register.add(func, this); -} diff --git a/rtgui/lensgeom.h b/rtgui/lensgeom.h index 697fc73ce..29b0c7f20 100644 --- a/rtgui/lensgeom.h +++ b/rtgui/lensgeom.h @@ -54,7 +54,6 @@ public: { rlistener = l; } - void disableAutoFillIfActive (); private: IdleRegister idle_register; diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 2f4526cad..79a0dc19f 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -48,7 +48,10 @@ LensProfilePanel::LensProfilePanel () : FoldableToolPanel(this, "lensprof", M("T fcbLCPFile->set_show_hidden(true); // ProgramData is hidden on Windows #endif fcbLCPFile->set_current_folder(defDir); + } else if (!options.lastLensProfileDir.empty()) { + fcbLCPFile->set_current_folder(options.lastLensProfileDir); } + bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); hbLCPFile->pack_start(*fcbLCPFile); @@ -89,8 +92,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa fcbLCPFile->unselect_filename(fname); } else { Glib::ustring lastFolder = fcbLCPFile->get_current_folder(); - fcbLCPFile->set_filename(""); fcbLCPFile->set_current_folder(lastFolder); + fcbLCPFile->set_filename(lastFolder + "/."); + bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); } updateDisabled(false); @@ -144,10 +148,6 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited void LensProfilePanel::onLCPFileChanged() { - - // Disable Auto-Fill when enabling LCP Distortion Correction, #1791 - lensgeomLcpFill->disableAutoFillIfActive(); - lcpFileChanged = true; updateDisabled(lcpStore->isValidLCPFileName(fcbLCPFile->get_filename())); @@ -170,12 +170,6 @@ void LensProfilePanel::onLCPFileReset() void LensProfilePanel::onUseDistChanged() { - - // Disable Auto-Fill when enabling LCP Distortion Correction, #1791 - if (ckbUseDist->get_active()) { - lensgeomLcpFill->disableAutoFillIfActive(); - } - useDistChanged = true; if (listener) { diff --git a/rtgui/options.cc b/rtgui/options.cc index f6848a093..916b3a494 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -727,6 +727,7 @@ void Options::setDefaults () lastVibranceCurvesDir = ""; lastProfilingReferenceDir = ""; lastBWCurvesDir = ""; + lastLensProfileDir = ""; maxRecentFolders = 15; } @@ -1853,6 +1854,7 @@ int Options::readFromFile (Glib::ustring fname) safeDirGet (keyFile, "Dialogs", "LastToneCurvesDir", lastToneCurvesDir); safeDirGet (keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); safeDirGet (keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); + safeDirGet (keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir); } // -------------------------------------------------------------------------------------------------------- @@ -2218,6 +2220,7 @@ int Options::saveToFile (Glib::ustring fname) keyFile.set_string ("Dialogs", "LastToneCurvesDir", lastToneCurvesDir); keyFile.set_string ("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); keyFile.set_string ("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); + keyFile.set_string ("Dialogs", "LastLensProfileDir", lastLensProfileDir); keyData = keyFile.to_data (); diff --git a/rtgui/options.h b/rtgui/options.h index a3d03cd74..f032b05b9 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -309,6 +309,7 @@ public: Glib::ustring lastVibranceCurvesDir; Glib::ustring lastProfilingReferenceDir; Glib::ustring lastBWCurvesDir; + Glib::ustring lastLensProfileDir; size_t maxRecentFolders; // max. number of recent folders stored in options file std::vector recentFolders; // List containing all recent folders diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 4164f265a..f397877e1 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -780,7 +780,9 @@ Gtk::Widget* Preferences::getColorManagementPanel () const std::vector profiles = rtengine::ICCStore::getInstance ()->getProfiles (rtengine::ICCStore::ProfileType::MONITOR); for (const auto profile : profiles) { - monProfile->append (profile); + if (profile.find("file:") != 0) { + monProfile->append (profile); + } } // same order as the enum diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index b9209a38b..ccf0b26e2 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -657,6 +657,12 @@ void RTWindow::showPreferences () delete pref; fpanel->optionsChanged (); + if (epanel) { + epanel->defaultMonitorProfileChanged(options.rtSettings.monitorProfile, options.rtSettings.autoMonitorProfile); + } + for (const auto &p : epanels) { + p.second->defaultMonitorProfileChanged(options.rtSettings.monitorProfile, options.rtSettings.autoMonitorProfile); + } } void RTWindow::setProgress (double p)