* Speed up preview when inpaint opposed enabled Only reprocess from raw if the white balance is changed. Otherwise, a cache from later in the pipeline can be used. * Remove unused code * Fix refresh map bit positions * Make WB & inpaint opposed refresh less brittle Co-authored-by: Hombre57 <natureh.510@gmail.com> --------- Co-authored-by: Hombre57 <natureh.510@gmail.com>
105 lines
5.5 KiB
C++
105 lines
5.5 KiB
C++
/*
|
|
* This file is part of RawTherapee.
|
|
*
|
|
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
|
*
|
|
* RawTherapee 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 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* RawTherapee 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
#pragma once
|
|
|
|
#include <unordered_map>
|
|
|
|
#include "procevents.h"
|
|
|
|
// Use M_VOID if you wish to update the proc params without updating the preview at all !
|
|
#define M_VOID (1<<20)
|
|
// Use M_MINUPDATE if you wish to update the preview without modifying the image (think about it like a "refreshPreview")
|
|
// Must NOT be used with other event (i.e. will be used for MINUPDATE only)
|
|
#define M_MINUPDATE (1<<19)
|
|
// Force high quality
|
|
#define M_HIGHQUAL (1<<18)
|
|
|
|
// Elementary functions that can be done to
|
|
// the preview image when an event occurs
|
|
#define M_WB (1<<17)
|
|
#define M_SPOT (1<<16)
|
|
#define M_CSHARP (1<<15)
|
|
#define M_MONITOR (1<<14)
|
|
#define M_RETINEX (1<<13)
|
|
#define M_CROP (1<<12)
|
|
#define M_PREPROC (1<<11)
|
|
#define M_RAW (1<<10)
|
|
#define M_INIT (1<<9)
|
|
#define M_LINDENOISE (1<<8)
|
|
#define M_HDR (1<<7)
|
|
#define M_TRANSFORM (1<<6)
|
|
#define M_BLURMAP (1<<5)
|
|
#define M_AUTOEXP (1<<4)
|
|
#define M_RGBCURVE (1<<3)
|
|
#define M_LUMACURVE (1<<2)
|
|
#define M_LUMINANCE (1<<1)
|
|
#define M_COLOR (1<<0)
|
|
|
|
// Bitfield of functions to do to the preview image when an event occurs
|
|
// Use those or create new ones for your new events
|
|
#define FIRST (M_PREPROC|M_RAW|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR|M_MONITOR) // without HIGHQUAL
|
|
#define ALL (M_PREPROC|M_RAW|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) // without HIGHQUAL
|
|
#define DARKFRAME (M_PREPROC|M_RAW|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define FLATFIELD (M_PREPROC|M_RAW|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define DEMOSAIC (M_RAW|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define WB (M_WB|M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define ALLNORAW (M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define CAPTURESHARPEN (M_INIT|M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR|M_CSHARP)
|
|
#define HDR (M_SPOT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define SPOTADJUST (M_SPOT|M_HDR|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define TRANSFORM (M_SPOT|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define AUTOEXP (M_SPOT|M_HDR|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define RGBCURVE (M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define LUMINANCECURVE (M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
|
#define SHARPENING (M_LUMINANCE|M_COLOR)
|
|
#define IMPULSEDENOISE (M_LUMINANCE|M_COLOR)
|
|
#define DEFRINGE (M_LUMINANCE|M_COLOR)
|
|
#define DIRPYRDENOISE (M_LUMINANCE|M_COLOR)
|
|
#define DIRPYREQUALIZER (M_LUMINANCE|M_COLOR)
|
|
#define GAMMA M_VOID //M_MONITOR
|
|
#define CROP M_CROP
|
|
#define RESIZE M_VOID
|
|
#define EXIF M_VOID
|
|
#define IPTC M_VOID
|
|
#define MINUPDATE M_MINUPDATE
|
|
#define RETINEX (M_RETINEX|ALLNORAW)
|
|
#define MONITORTRANSFORM M_MONITOR
|
|
#define OUTPUTPROFILE M_MONITOR
|
|
|
|
extern int refreshmap[];
|
|
|
|
namespace rtengine
|
|
{
|
|
|
|
class RefreshMapper {
|
|
public:
|
|
static RefreshMapper *getInstance();
|
|
ProcEvent newEvent();
|
|
void mapEvent(ProcEvent event, int action);
|
|
int getAction(ProcEvent event) const;
|
|
|
|
private:
|
|
RefreshMapper();
|
|
|
|
int next_event_;
|
|
std::unordered_map<int, int> actions_;
|
|
};
|
|
|
|
} // namespace rtengine
|