Updated translations

Corrected bug for displaying correct WB
Reintroduced progress bar
bugfix for correction of badpixel
This commit is contained in:
ffsup2
2010-10-07 23:46:16 +02:00
parent 0c6a7a3c06
commit 9b2767f154
8 changed files with 95 additions and 39 deletions

View File

@@ -79,6 +79,9 @@ FILEBROWSER_PROCESSINGSETTINGS;Settings
FILEBROWSER_PROCESSINGSETTINGSHINT;Set the file format and output directory
FILEBROWSER_RENAMEDLGLABEL;Rename file
FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to:
FILEBROWSER_AUTODARKFRAME;Auto dark frame
FILEBROWSER_MOVETODARKFDIR;Move to dark frames directory
FILEBROWSER_SELECTDARKFRAME;Select dark frame...
FILEBROWSER_SHOWDIRHINT;Show all images of the directory <b>D</b>
FILEBROWSER_SHOWEXIFINFO;Show EXIF info <b>i</b>
FILEBROWSER_SHOWQUEUEHINT;Show content of the processing queue
@@ -400,6 +403,7 @@ PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
PREFERENCES_CLEARDLG_TITLE;Please wait
PREFERENCES_CLIPPINGIND;Clipping indication
PREFERENCES_CMETRICINTENT;Colorimetric Intent
PREFERENCES_DARKFRAME;Dark frame
PREFERENCES_DATEFORMAT;Date Format
PREFERENCES_DATEFORMATHINT;<i>You can use the following formatting strings:</i>\n<b>%y</b><i> : year</i>\n<b>%m</b><i> : month</i>\n<b>%d</b><i> : day</i>\n<i>\nFor example, the hungarian date format is:</i>\n<b>%y/%m/%d</b>
PREFERENCES_DCBENHANCE;Apply DCB enhancement step
@@ -407,6 +411,7 @@ PREFERENCES_DCBITERATIONS;Number of DCB iterations
PREFERENCES_DEFAULTLANG;Default language
PREFERENCES_DEFAULTTHEME;Default theme
PREFERENCES_DEMOSAICINGALGO;Demosaicing Algorithm
PREFERENCES_DIRDARKFRAMES;Dark frames directory
PREFERENCES_DIRHOME;Home directory
PREFERENCES_DIRLAST;Last visited directory
PREFERENCES_DIROTHER;Other
@@ -632,6 +637,8 @@ TP_LUMADENOISE_RADIUS;Radius
TP_PERSPECTIVE_HORIZONTAL;Horizontal
TP_PERSPECTIVE_LABEL;Perspective
TP_PERSPECTIVE_VERTICAL;Vertical
TP_PREPROCESS_DARKFRAME;Dark frame
TP_PREPROCESS_DFAUTOSELECT;Auto selection
TP_RESIZE_BICUBIC;Bicubic
TP_RESIZE_BICUBICSF;Bicubic (Softer)
TP_RESIZE_BICUBICSH;Bicubic (Sharper)

View File

@@ -225,13 +225,15 @@ void DFManager::init( Glib::ustring pathname )
i.pathNames.push_back( i.pathname );
i.pathname.clear();
}
if( !i.pathname.empty() )
printf( "%s: %s\n",i.key().c_str(),i.pathname.c_str());
else{
printf( "%s: MEAN of \n ",i.key().c_str());
for( std::list<Glib::ustring>::iterator iter = i.pathNames.begin(); iter != i.pathNames.end();iter++ )
printf( "%s, ", iter->c_str() );
printf("\n");
if( settings->verbose ){
if( !i.pathname.empty() )
printf( "%s: %s\n",i.key().c_str(),i.pathname.c_str());
else{
printf( "%s: MEAN of \n ",i.key().c_str());
for( std::list<Glib::ustring>::iterator iter = i.pathNames.begin(); iter != i.pathNames.end();iter++ )
printf( "%s, ", iter->c_str() );
printf("\n");
}
}
}
currentPath = pathname;

View File

@@ -349,7 +349,7 @@ int RawImageSource::cfaCleanFromMap( BYTE* bitmapBads )
if (bitmapBads[ (row+dy) *bmpW + (col+dx)/8] & (1<<(col+dx)%8)) continue;
sum += rawData[row+dy][col+dx];
tot++;
if (bitmapBads[ (row-dy) *bmpW + (col-dx)/8] & (1<<(col+dx)%8)) continue;
if (bitmapBads[ (row-dy) *bmpW + (col-dx)/8] & (1<<(col-dx)%8)) continue;
double dirwt = 1/( fabs( rawData[row+dy][col+dx]- rawData[row-dy][col-dx])+eps);
wtdsum += dirwt* rawData[row+dy][col+dx];
@@ -731,8 +731,9 @@ int RawImageSource::load (Glib::ustring fname) {
int res = ri->loadRaw ();
if (res)
return res;
plistener=NULL; //\TODO must be reintroduced
if (plistener) {
plistener->setProgress (0.8);
}
/***** Copy once constant data extracted from raw *******/
W = ri->width;
H = ri->height;
@@ -764,19 +765,13 @@ int RawImageSource::load (Glib::ustring fname) {
int val, dark, sat;
double dsum[8], dmin, dmax;
float pre_mul[4];
bool use_camera_wb=true;
bool use_auto_wb=false;
bool highlight=true;
for (int c = 0; c < 4; c++){
cblack[c] = ri->cblack[c] + ri->black_point;
pre_mul[c] = ri->pre_mul[c];
}
/*
if (user_mul[0])
memcpy(pre_mul, user_mul, sizeof pre_mul);*/
if (use_auto_wb || (use_camera_wb && ri->cam_mul[0] == -1)) {
if ( ri->cam_mul[0] == -1 ) {
memset(dsum, 0, sizeof dsum);
for (row = 0; row < H; row += 8)
for (col = 0; col < W; col += 8) {
@@ -806,7 +801,7 @@ skip_block: ;
if (dsum[c])
pre_mul[c] = dsum[c + 4] / dsum[c];
}
if (use_camera_wb && ri->cam_mul[0] != -1) {
if ( ri->cam_mul[0] != -1) {
memset(sum, 0, sizeof sum);
for (row = 0; row < 8; row++)
for (col = 0; col < 8; col++) {
@@ -834,8 +829,7 @@ skip_block: ;
if (dmax < pre_mul[c])
dmax = pre_mul[c];
}
if (!highlight)
dmax = dmin;
dmax = dmin;
for (c = 0; c < 4; c++)
scale_mul[c] = (pre_mul[c] /= dmax) * 65535.0 / sat;
if (settings->verbose) {
@@ -873,6 +867,10 @@ skip_block: ;
blue = allocArray<unsigned short>(W,H);
hpmap = allocArray<char>(W, H);
if (plistener) {
plistener->setProgress (1.0);
}
plistener=NULL; // This must be reset, because only load() is called through progressConnector
return 0; // OK!
}
@@ -894,9 +892,10 @@ void RawImageSource::preprocess (const RAWParams &raw)
size_t dimBitmap = widthBitmap*ri->height;
BYTE *bitmapBads = new BYTE [ dimBitmap ];
int totBP=0; // Hold count of bad pixels to correct
std::list<badPix> *bp = dfm.getBadPixels( ri->make, ri->model, std::string("") );
if( bp ){
for(std::list<badPix>::iterator iter = bp->begin(); iter != bp->end(); iter++)
for(std::list<badPix>::iterator iter = bp->begin(); iter != bp->end(); iter++,totBP++)
bitmapBads[ widthBitmap * (iter->y) + (iter->x)/8] |= 1<<(iter->x%8);
if( settings->verbose ){
printf( "Correcting %u pixels from .badpixels\n",bp->size());
@@ -908,7 +907,7 @@ void RawImageSource::preprocess (const RAWParams &raw)
}else if( raw.dark_frame.size()>0 )
bp = dfm.getHotPixels( raw.dark_frame );
if(bp){
for(std::list<badPix>::iterator iter = bp->begin(); iter != bp->end(); iter++)
for(std::list<badPix>::iterator iter = bp->begin(); iter != bp->end(); iter++,totBP++)
bitmapBads[ widthBitmap *iter->y + iter->x/8] |= 1<<(iter->x%8);
if( settings->verbose && bp->size()>0){
printf( "Correcting %u hotpixels from darkframe\n",bp->size());
@@ -925,11 +924,13 @@ void RawImageSource::preprocess (const RAWParams &raw)
plistener->setProgress (0.0);
}
int nFound =findHotDeadPixel( bitmapBads,0.1 );
totBP += nFound;
if( settings->verbose && nFound>0){
printf( "Correcting %d hot/dead pixels found inside image\n",nFound );
}
}
cfaCleanFromMap( bitmapBads );
if( totBP )
cfaCleanFromMap( bitmapBads );
delete [] bitmapBads;
// check if it is an olympus E camera, if yes, compute G channel pre-compensation factors

View File

@@ -23,6 +23,7 @@
#include <guiutils.h>
#include <procparamchangers.h>
#include <safegtk.h>
#include <imagesource.h>
using namespace rtengine::procparams;
@@ -333,7 +334,8 @@ void EditorPanel::open (Thumbnail* tmb, rtengine::InitialImage* isrc) {
ldprof = new ProcParams ();
*ldprof = openThm->getProcParams ();
}
rtengine::ImageSource* is=isrc->getImageSource();
is->setProgressListener( this );
// initialize profile
if (openThm->getType()!=FT_Raw)
profilep->initProfile (options.defProfImg, ldprof, NULL);
@@ -426,6 +428,48 @@ void EditorPanel::setProgressState (int state) {
g_idle_add (setprocstate, p);
}
struct spparams {
double val;
Glib::ustring str;
rtengine::ProgressListener* progListener;
};
int _setprogress( void *p )
{
spparams *s= (spparams*)p;
gdk_threads_enter ();
s->progListener->setProgress( s->val );
gdk_threads_leave ();
delete s;
return 0;
}
int _setprogressStr( void *p )
{
spparams *s= (spparams*)p;
gdk_threads_enter ();
s->progListener->setProgressStr( s->str );
gdk_threads_leave ();
delete s;
return 0;
}
void EditorPanel::setProgress (double p)
{
spparams *s=new spparams;
s->val = p;
s->progListener = parent;
g_idle_add (_setprogress, s);
}
void EditorPanel::setProgressStr (Glib::ustring str)
{
spparams *s=new spparams;
s->str = str;
s->progListener = parent;
g_idle_add (_setprogressStr, s);
}
void EditorPanel::refreshProcessingState (bool state) {
// Set proc params of thumbnail. It saves it into the cache and updates the file browser.

View File

@@ -112,6 +112,8 @@ class EditorPanel : public Gtk::VBox,
void setParent (RTWindow* p) { parent = p; }
// progresslistener interface
void setProgress (double p);
void setProgressStr (Glib::ustring str);
void setProgressState (int state);
void error (Glib::ustring descr);
void refreshProcessingState (bool state); // this is called by setProcessingState in the gtk thread

View File

@@ -59,9 +59,9 @@ FileBrowser::FileBrowser ()
pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++;
pmenu->attach (*(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++;
pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++;
pmenu->attach (*(selectDF = new Gtk::MenuItem ("Select Dark Frame...")), 0, 1, p, p+1); p++;
pmenu->attach (*(autoDF = new Gtk::MenuItem ("Auto Dark Frame")), 0, 1, p, p+1); p++;
pmenu->attach (*(thisIsDF = new Gtk::MenuItem ("Move to Dark Frames folder")), 0, 1, p, p+1); p++;
pmenu->attach (*(selectDF = new Gtk::MenuItem (M("FILEBROWSER_SELECTDARKFRAME"))), 0, 1, p, p+1); p++;
pmenu->attach (*(autoDF = new Gtk::MenuItem (M("FILEBROWSER_AUTODARKFRAME"))), 0, 1, p, p+1); p++;
pmenu->attach (*(thisIsDF = new Gtk::MenuItem (M("FILEBROWSER_MOVETODARKFDIR"))), 0, 1, p, p+1); p++;
pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++;
pmenu->attach (*(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++;
pmenu->attach (*(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++;

View File

@@ -253,10 +253,10 @@ Gtk::Widget* Preferences::getProcParamsPanel () {
fdp->add (*vbdp);
mvbpp->pack_start (*fdp, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fdf = Gtk::manage (new Gtk::Frame ("Dark Frame") );
Gtk::Frame* fdf = Gtk::manage (new Gtk::Frame (M("PREFERENCES_DARKFRAME")) );
Gtk::HBox* hb42 = Gtk::manage (new Gtk::HBox ());
darkFrameDir = Gtk::manage(new Gtk::FileChooserButton( "Dark frames directory", Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
Gtk::Label *dfLab = Gtk::manage(new Gtk::Label("Dark Frames directory"));
darkFrameDir = Gtk::manage(new Gtk::FileChooserButton(M("PREFERENCES_DIRDARKFRAMES"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
Gtk::Label *dfLab = Gtk::manage(new Gtk::Label(M("PREFERENCES_DIRDARKFRAMES")));
hb42->pack_start(*dfLab , Gtk::PACK_SHRINK, 4 );
hb42->pack_start(*darkFrameDir);
dfLabel = Gtk::manage(new Gtk::Label("Found:"));

View File

@@ -25,14 +25,14 @@ using namespace rtengine::procparams;
PreProcess::PreProcess ()
{
hbdf = Gtk::manage(new Gtk::HBox());
darkFrameFile = Gtk::manage(new Gtk::FileChooserButton(M("PREFERENCES_DARKFRAME"), Gtk::FILE_CHOOSER_ACTION_OPEN));
dfLabel = Gtk::manage(new Gtk::Label("Dark Frame"));
darkFrameFile = Gtk::manage(new Gtk::FileChooserButton(M("TP_PREPROCESS_DARKFRAME"), Gtk::FILE_CHOOSER_ACTION_OPEN));
dfLabel = Gtk::manage(new Gtk::Label(M("TP_PREPROCESS_DARKFRAME")));
btnReset = Gtk::manage(new Gtk::Button());
btnReset->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-cancel"), Gtk::ICON_SIZE_BUTTON)));
hbdf->pack_start(*dfLabel, Gtk::PACK_SHRINK, 4);
hbdf->pack_start(*darkFrameFile);
hbdf->pack_start(*btnReset, Gtk::PACK_SHRINK, 4);
dfAuto = Gtk::manage(new Gtk::CheckButton(("Auto selection")));
dfAuto = Gtk::manage(new Gtk::CheckButton((M("TP_PREPROCESS_DFAUTOSELECT"))));
caAutocorrect = Gtk::manage(new Gtk::CheckButton((M("PREFERENCES_CACORRECTION"))));
hotDeadPixel = Gtk::manage(new Gtk::CheckButton((M("PREFERENCES_HOTDEADPIXFILT"))));
@@ -163,7 +163,7 @@ void PreProcess::caCorrectionChanged()
lastCA = caAutocorrect->get_active ();
}
if (listener)
listener->panelChanged (EvPreProcess, Glib::ustring("CA autocorrection ")+ (caAutocorrect->get_active()?"ON":"OFF") );
listener->panelChanged (EvPreProcess, Glib::ustring(M("PREFERENCES_CACORRECTION"))+"="+(caAutocorrect->get_active()?"ON":"OFF") );
}
void PreProcess::dfAutoChanged()
@@ -182,7 +182,7 @@ void PreProcess::dfAutoChanged()
}
hbdf->set_sensitive( !dfAuto->get_active() );
if (listener)
listener->panelChanged (EvPreProcess, Glib::ustring("Dark Frame autoselection")+ (dfAuto->get_active()?"ON":"OFF") );
listener->panelChanged (EvPreProcess, Glib::ustring(M("TP_PREPROCESS_DFAUTOSELECT"))+"="+(dfAuto->get_active()?"ON":"OFF") );
}
void PreProcess::hotDeadPixelChanged ()
@@ -200,13 +200,13 @@ void PreProcess::hotDeadPixelChanged ()
lastHot = hotDeadPixel->get_active ();
}
if (listener)
listener->panelChanged (EvPreProcess, Glib::ustring("Hot Dead Pixel ")+(hotDeadPixel->get_active()?"ON":"OFF") );
listener->panelChanged (EvPreProcess, Glib::ustring(M("PREFERENCES_HOTDEADPIXFILT"))+"="+(hotDeadPixel->get_active()?"ON":"OFF") );
}
void PreProcess::darkFrameChanged()
{
dfChanged=true;
if (listener)
listener->panelChanged (EvPreProcess, Glib::ustring("Dark Framet set to ")+darkFrameFile->get_filename());
listener->panelChanged (EvPreProcess, Glib::ustring(M("TP_PREPROCESS_DARKFRAME"))+"="+darkFrameFile->get_filename());
}
void PreProcess::darkFrameReset()
@@ -215,6 +215,6 @@ void PreProcess::darkFrameReset()
darkFrameFile->set_current_name("");
darkFrameFile->set_filename ("");
if (listener)
listener->panelChanged (EvPreProcess, Glib::ustring("Dark Framet reset"));
listener->panelChanged (EvPreProcess, Glib::ustring(M("TP_PREPROCESS_DARKFRAME"))+"=0" );
}