Merge n.6

Includes some memory leaks fixes, dcraw update
This commit is contained in:
ffsup2 2011-06-10 20:23:50 +02:00
commit bc0a8d56f4
13 changed files with 1027 additions and 1441 deletions

View File

@ -18,3 +18,4 @@ rm -v ./rtgui/Makefile
rm -v ./rtengine/librtengine.so
rm -v ./rtgui/rt
rm -v ./rtexif/librtexif.a
exit 0

File diff suppressed because it is too large Load Diff

View File

@ -474,13 +474,13 @@ PREFERENCES_CACHECLEARPROFILES;Ripulisci i profili
PREFERENCES_CACHECLEARTHUMBS;Ripulisci le miniature
PREFERENCES_CACHEFORMAT1;Proprietario (più rapido e di migliore qualità)
PREFERENCES_CACHEFORMAT2;JPEG (minore impatto sul disco)
PREFERENCES_CACHEMAXENTRIES;Numero massimo di oggetti conservati in memoria
PREFERENCES_CACHEMAXENTRIES;Massima quantità di miniature in cache
PREFERENCES_CACHEOPTS;Opzioni per il precaricamento
PREFERENCES_CACHESTRAT1;Privilegia la rapidità al minore consumo di memoria
PREFERENCES_CACHESTRAT2;Privilegia il minore consumo di memoria alla rapidità
PREFERENCES_CACHESTRAT;Strategia di precaricamento
PREFERENCES_CACHETHUMBFORM;Formato delle miniature precaricate
PREFERENCES_CACHETHUMBHEIGHT;Massima quantità di miniature
PREFERENCES_CACHETHUMBHEIGHT;Massima altezza miniature
PREFERENCES_CLEARDLG_LINE1;Ripulitura dati in memoria
PREFERENCES_CLEARDLG_LINE2;Questa operazione potrebbe impiegare alcuni secondi.
PREFERENCES_CLEARDLG_TITLE;Prego attendere

View File

@ -1,467 +0,0 @@
# Set GtkSettings color scheme property.
# This can be overriden (via an xsetting) with eg. the gnome-appearance-properties.
gtk_color_scheme = "fg_color:#0A0A0A\nbg_color:#A1A1A1\nbase_color:#dddddd\ntext_color:#000\nselected_bg_color:#666\nselected_fg_color:#fff\ntooltip_bg_color:#F5F5B5\ntooltip_fg_color:#000"
style "clearlooks-default"
{
########
# Style Properties
########
GtkFrame ::shadow-type = 2
GtkButton ::child-displacement-x = 1
GtkButton ::child-displacement-y = 1
GtkButton ::default-border = { 0, 0, 0, 0 }
GtkCheckButton ::indicator-size = 12
GtkPaned ::handle-size = 3
GtkRange ::trough-border = 0
GtkRange ::slider-width = 8
GtkRange ::stepper-size = 12
GtkScale ::slider-width = 6
GtkScale ::slider-length = 15
GtkScale ::trough-side-details = 1
GtkScrollbar ::min-slider-length = 30
GtkScrollbar ::slider-width = 12
GtkMenuBar ::internal-padding = 0
GtkExpander ::expander-size = 11
GtkToolbar ::internal-padding = 0
GtkTreeView ::expander-size = 10
GtkTreeView ::vertical-separator = 0
GtkMenu ::horizontal-padding = 0
GtkMenu ::vertical-padding = 0
GtkNotebook ::tab-curvature = 0
# Glow the tasklist by changing the color, instead of overlaying it with a rectangle
WnckTasklist ::fade-overlay-rect = 0
xthickness = 1
ythickness = 1
fg[NORMAL] = @fg_color
fg[PRELIGHT] = @fg_color
fg[SELECTED] = @selected_fg_color
fg[ACTIVE] = @fg_color
fg[INSENSITIVE] = darker (@bg_color)
bg[NORMAL] = @bg_color
bg[PRELIGHT] = shade (0.88, @bg_color)#shade (1.02, @bg_color)
bg[SELECTED] = @selected_bg_color
bg[INSENSITIVE] = @bg_color
bg[ACTIVE] = shade (0.9, @bg_color)
base[NORMAL] = @base_color
base[PRELIGHT] = shade (0.95, @bg_color)
base[ACTIVE] = shade (0.9, @selected_bg_color)
base[SELECTED] = @selected_bg_color
base[INSENSITIVE] = @bg_color
text[NORMAL] = @text_color
text[PRELIGHT] = @text_color
text[ACTIVE] = @selected_fg_color
text[SELECTED] = @selected_fg_color
text[INSENSITIVE] = darker (@bg_color)
engine "clearlooks"
{
colorize_scrollbar = TRUE
reliefstyle = 1
menubarstyle = 2 # 0 = flat, 1 = sunken, 2 = flat gradient
toolbarstyle = 1 # 0 = flat, 1 = enable effects
animation = FALSE
style = GUMMY
radius = 4.0
# Set a hint to disable backward compatibility fallbacks.
hint = "use-hints"
}
}
style "clearlooks-wide"
{
xthickness = 2
ythickness = 2
}
style "clearlooks-wider"
{
xthickness = 3
ythickness = 3
}
style "clearlooks-button"
{
xthickness = 1
ythickness = 1
bg[NORMAL] = shade (1.07, @bg_color)
bg[PRELIGHT] = shade (1.09, @bg_color)
bg[ACTIVE] = shade (0.85, @bg_color)
engine "clearlooks"
{
hint = "scrollbar"
radius = 5.0
}
}
style "clearlooks-notebook-bg"
{
bg[NORMAL] = shade (1.05, @bg_color)
bg[ACTIVE] = shade (0.98, @bg_color)
}
style "clearlooks-notebook" = "clearlooks-notebook-bg"
{
xthickness = 1
ythickness = 1
}
style "clearlooks-tasklist"
{
xthickness = 5
ythickness = 3
}
style "clearlooks-menu"
{
xthickness = 0
ythickness = 0
bg[NORMAL] = shade (1.09, @bg_color)
# Radius of the menu items (inside menus)
engine "clearlooks"
{
radius = 0.0
}
}
style "clearlooks-menu-item"
{
xthickness = 2
ythickness = 3
fg[PRELIGHT] = @selected_fg_color
}
style "clearlooks-separator-menu-item"
{
GtkSeparatorMenuItem::horizontal-padding = 0
# We are setting the desired height by using wide-separators
# There is no other way to get the odd height ...
GtkWidget::wide-separators = 1
GtkWidget::separator-width = 1
GtkWidget::separator-height = 5
xthickness = 1
ythickness = 0
}
style "clearlooks-treeview"
{
engine "clearlooks" {
hint = "treeview"
}
}
# Based on the default style so that the colors from the button
# style are overriden again.
style "clearlooks-treeview-header" = "clearlooks-default"
{
xthickness = 2
ythickness = 1
bg[NORMAL] = shade (1.07, @bg_color)
engine "clearlooks" {
hint = "treeview-header"
}
}
style "clearlooks-frame-title"
{
fg[NORMAL] = lighter (@fg_color)
}
style "clearlooks-panel" = "clearlooks-default"
{
xthickness = 3
ythickness = 3
}
style "clearlooks-tooltips"
{
xthickness = 4
ythickness = 4
bg[NORMAL] = @tooltip_bg_color
fg[NORMAL] = @tooltip_fg_color
}
style "clearlooks-progressbar"
{
xthickness = 1
ythickness = 1
fg[PRELIGHT] = @selected_fg_color
engine "clearlooks"
{
# Explicitly set the radius, for progress
# bars inside menuitems
radius = 3.0
hint = "progressbar"
}
}
style "clearlooks-statusbar"
{
engine "clearlooks"
{
hint = "statusbar"
}
}
style "clearlooks-comboboxentry"
{
# NOTE:
# If you set the appears-as-list option on comboboxes in the theme
# you should set this hint on the combobox instead.
engine "clearlooks"
{
hint = "comboboxentry"
}
}
style "clearlooks-spinbutton"
{
engine "clearlooks"
{
hint = "spinbutton"
}
}
style "clearlooks-scale-bg"
{
xthickness = 3
ythickness = 3
bg[NORMAL] = shade (1.07, @bg_color)
bg[PRELIGHT] = shade (1.09, @bg_color)
}
style "clearlooks-scale" = "clearlooks-scale-bg"
{
engine "clearlooks"
{
hint = "scale"
}
}
style "clearlooks-hscale" = "clearlooks-scale-bg"
{
engine "clearlooks"
{
hint = "hscale"
}
}
style "clearlooks-vscale" = "clearlooks-scale-bg"
{
engine "clearlooks"
{
hint = "vscale"
}
}
style "clearlooks-scrollbar"
{
bg[NORMAL] = shade (1.07, @bg_color)
engine "clearlooks"
{
hint = "scrollbar"
}
}
style "clearlooks-hscrollbar"
{
engine "clearlooks"
{
hint = "hscrollbar"
}
}
style "clearlooks-vscrollbar"
{
engine "clearlooks"
{
hint = "vscrollbar"
}
}
style "clearlooks-toolbar"
{
bg[NORMAL] = shade (1.07, @bg_color)
engine "clearlooks" {
contrast = 1.16
}
}
style "clearlooks-menubar"
{
engine "clearlooks"
{
contrast = 1.1
hint = "menubar"
}
}
style "clearlooks-nautilus-location"
{
bg[NORMAL] = mix(0.60, shade (1.05,@bg_color), @selected_bg_color)
}
#########################################
# Matches
#########################################
# Clearlooks default style is applied to every widget
class "GtkWidget" style "clearlooks-default"
# Increase the x/ythickness in some widgets
class "GtkToolbar" style "clearlooks-toolbar"
#class "GtkRange" style "clearlooks-wide"
#class "GtkFrame" style "clearlooks-wide"
#class "GtkSeparator" style "clearlooks-wide"
#class "GtkEntry" style "clearlooks-wider"
class "GtkSpinButton" style "clearlooks-spinbutton"
class "GtkScale" style "clearlooks-scale"
class "GtkVScale" style "clearlooks-vscale"
class "GtkHScale" style "clearlooks-hscale"
class "GtkScrollbar" style "clearlooks-scrollbar"
class "GtkVScrollbar" style "clearlooks-vscrollbar"
class "GtkHScrollbar" style "clearlooks-hscrollbar"
# General matching following, the order is choosen so that the right styles override each other
# eg. progressbar needs to be more important then the menu match.
# This is not perfect, it could be done better
# (That is modify *every* widget in the notebook, and change those back that
# we really don't want changed)
widget_class "*<GtkNotebook>*<GtkEventBox>" style "clearlooks-notebook-bg"
widget_class "*<GtkNotebook>*<GtkDrawingArea>" style "clearlooks-notebook-bg"
widget_class "*<GtkNotebook>*<GtkLayout>" style "clearlooks-notebook-bg"
widget_class "*<GtkButton>" style "clearlooks-button"
widget_class "*<GtkNotebook>" style "clearlooks-notebook"
widget_class "*<GtkStatusbar>*" style "clearlooks-statusbar"
widget_class "*<GtkComboBoxEntry>*" style "clearlooks-comboboxentry"
widget_class "*<GtkCombo>*" style "clearlooks-comboboxentry"
widget_class "*<GtkMenuBar>*" style "clearlooks-menubar"
widget_class "*<GtkMenu>*" style "clearlooks-menu"
widget_class "*<GtkMenuItem>*" style "clearlooks-menu-item"
widget_class "*<GtkSeparatorMenuItem>*" style "clearlooks-separator-menu-item"
widget_class "*.<GtkFrame>.<GtkLabel>" style "clearlooks-frame-title"
widget_class "*.<GtkTreeView>*" style "clearlooks-treeview"
widget_class "*<GtkProgressBar>" style "clearlooks-progressbar"
# Treeview header
widget_class "*.<GtkTreeView>.<GtkButton>" style "clearlooks-treeview-header"
widget_class "*.<GtkCTree>.<GtkButton>" style "clearlooks-treeview-header"
widget_class "*.<GtkList>.<GtkButton>" style "clearlooks-treeview-header"
widget_class "*.<GtkCList>.<GtkButton>" style "clearlooks-treeview-header"
# Workarounds for Evolution
widget_class "*.ETable.ECanvas" style "clearlooks-treeview-header"
widget_class "*.ETree.ECanvas" style "clearlooks-treeview-header"
# The window of the tooltip is called "gtk-tooltip"
################################
# FIXME:
# This will not work if one embeds eg. a button into the tooltip.
# As far as I can tell right now we will need to rework the theme
# quite a bit to get this working correctly.
# (It will involve setting different priorities, etc.)
################################
widget "gtk-tooltip*" style "clearlooks-tooltips"
###################################################
# Special cases and work arounds
###################################################
# Special case the nautilus-extra-view-widget
# ToDo: A more generic approach for all applications that have a widget like this.
widget "*.nautilus-extra-view-widget" style : highest "clearlooks-nautilus-location"
# Work around for http://bugzilla.gnome.org/show_bug.cgi?id=382646
# Note that the work around assumes that the combobox is _not_ in
# appears-as-list mode.
# Similar hack also in the menuitem style.
# This style does not affect GtkComboBoxEntry, it does have an effect
# on comboboxes in appears-as-list mode though.
style "clearlooks-text-is-fg-color-workaround"
{
text[NORMAL] = @fg_color
text[PRELIGHT] = @fg_color
text[SELECTED] = @selected_fg_color
text[ACTIVE] = @fg_color
text[INSENSITIVE] = darker (@bg_color)
}
widget_class "*.<GtkComboBox>.<GtkCellView>" style "clearlooks-text-is-fg-color-workaround"
style "clearlooks-menuitem-text-is-fg-color-workaround"
{
text[NORMAL] = @fg_color
text[PRELIGHT] = @selected_fg_color
text[SELECTED] = @selected_fg_color
text[ACTIVE] = @fg_color
text[INSENSITIVE] = darker (@bg_color)
}
widget "*.gtk-combobox-popup-menu.*" style "clearlooks-menuitem-text-is-fg-color-workaround"
# Work around the usage of GtkLabel inside GtkListItems to display text.
# This breaks because the label is shown on a background that is based on the
# base color set.
style "clearlooks-fg-is-text-color-workaround"
{
fg[NORMAL] = @text_color
fg[PRELIGHT] = @text_color
fg[ACTIVE] = @selected_fg_color
fg[SELECTED] = @selected_fg_color
fg[INSENSITIVE] = darker (@bg_color)
}
widget_class "*<GtkListItem>*" style "clearlooks-fg-is-text-color-workaround"
# The same problem also exists for GtkCList and GtkCTree
# Only match GtkCList and not the parent widgets, because that would also change the headers.
widget_class "*<GtkCList>" style "clearlooks-fg-is-text-color-workaround"
# Work around the evolution "New" button bug by making the toolbar flat.
# http://bugzilla.gnome.org/show_bug.cgi?id=446953
# Maybe remove this workaround in unstable releases.
style "clearlooks-evo-new-button-workaround"
{
GtkMenuBar ::shadow-type = GTK_SHADOW_NONE
GtkToolbar ::shadow-type = GTK_SHADOW_NONE
bg[NORMAL] = @bg_color
engine "clearlooks"
{
toolbarstyle = 0
}
}
widget_class "EShellWindow.GtkVBox.BonoboDock.BonoboDockBand.BonoboDockItem*" style "clearlooks-evo-new-button-workaround"

View File

@ -19,11 +19,11 @@
*If you have not modified dcraw.c in any way, a link to my
homepage qualifies as "full source code".
$Revision: 1.442 $
$Date: 2011/04/01 23:30:09 $
$Revision: 1.443 $
$Date: 2011/05/11 03:09:54 $
*/
#define VERSION "9.07"
#define VERSION "9.08"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@ -897,6 +897,8 @@ void CLASS lossless_jpeg_load_raw()
for (jrow=0; jrow < jh.high; jrow++) {
rp = ljpeg_row (jrow, &jh);
if (load_flags & 1)
row = jrow & 1 ? height-1-jrow/2 : jrow/2;
for (jcol=0; jcol < jwide; jcol++) {
val = *rp++;
if (jh.bits <= 12)
@ -4406,10 +4408,12 @@ void CLASS parse_makernote (int base, int uptag)
base = ftell(ifp)-10;
fseek (ifp, -2, SEEK_CUR);
order = get2(); get2();
} else if (!strncmp (buf,"FUJIFILM",8) ||
!strncmp (buf,"SONY",4) ||
} else if (!strncmp (buf,"SONY",4) ||
!strcmp (buf,"Panasonic")) {
order = 0x4949;
goto nf;
} else if (!strncmp (buf,"FUJIFILM",8)) {
base = ftell(ifp)-10;
nf: order = 0x4949;
fseek (ifp, 2, SEEK_CUR);
} else if (!strcmp (buf,"OLYMP") ||
!strcmp (buf,"LEICA") ||
@ -4429,7 +4433,7 @@ void CLASS parse_makernote (int base, int uptag)
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
tag |= uptag << 16;
if (tag == 2 && strstr(make,"NIKON"))
if (tag == 2 && strstr(make,"NIKON") && !iso_speed)
iso_speed = (get2(),get2());
if (tag == 4 && len > 26 && len < 35) {
if ((i=(get4(),get2())) != 0x7fff && !iso_speed)
@ -4739,7 +4743,8 @@ void CLASS parse_mos (int offset)
static const char *mod[] =
{ "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22",
"Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65",
"Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7" };
"Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7",
"","","","","","","","","","","","","","","","","","AFi-II 12" };
float romm_cam[3][3];
fseek (ifp, offset, SEEK_SET);
@ -4789,6 +4794,8 @@ void CLASS parse_mos (int offset)
FORC4 fscanf (ifp, "%d", neut+c);
FORC3 cam_mul[c] = (float) neut[0] / neut[c+1];
}
if (!strcmp(data,"Rows_data"))
load_flags = get4();
parse_mos (from);
fseek (ifp, skip+from, SEEK_SET);
}
@ -4910,6 +4917,11 @@ int CLASS parse_tiff_ifd (int base)
tiff_ifd[ifd].samples = len & 7;
tiff_ifd[ifd].bps = getint(type);
break;
case 61446:
raw_height = 0;
load_raw = &CLASS packed_load_raw;
load_flags = 16 | (get4() && (filters=0x16161616)) << 3;
break;
case 259: /* Compression */
tiff_ifd[ifd].comp = get2();
break;
@ -5814,22 +5826,14 @@ void CLASS parse_fuji (int offset)
} else if (tag == 0x2ff0) {
FORC4 cam_mul[c ^ 1] = get2();
} else if (tag == 0xc000) {
raw_height = order;
c = order;
order = 0x4949;
width = get4();
height = get4();
order = raw_height;
raw_height = 1;
load_raw = &CLASS packed_load_raw;
load_flags = 16;
order = c;
}
fseek (ifp, save+len, SEEK_SET);
}
if (!raw_height) {
filters = 0x16161616;
load_raw = &CLASS packed_load_raw;
load_flags = 24;
}
height <<= fuji_layout;
width >>= fuji_layout;
}
@ -6117,12 +6121,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 4763,712,-646,-6821,14399,2640,-1921,3276,6561 } },
{ "Canon EOS 550D", 0, 0x3dd7,
{ 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } },
{ "Canon EOS 600D", 0, 0x3510, /* DJC */
{ 5589,-1476,-292,-3401,9372,4030,-706,2038,6350 } },
{ "Canon EOS 600D", 0, 0x3510,
{ 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } },
{ "Canon EOS 1000D", 0, 0xe43,
{ 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } },
{ "Canon EOS 1100D", 0, 0x3510, /* DJC */
{ 5193,-1423,-226,-3414,9273,4142,-679,2103,6808 } },
{ "Canon EOS 1100D", 0, 0x3510,
{ 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } },
{ "Canon EOS-1Ds Mark III", 0, 0x3bb0,
{ 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } },
{ "Canon EOS-1Ds Mark II", 0, 0xe80,
@ -6234,7 +6238,7 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ "FUJIFILM FinePix S100FS", 514, 0,
{ 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } },
{ "FUJIFILM FinePix S200EXR", 512, 0x3fff,
{ 0 } },
{ 11401,-4498,-1312,-5088,12751,2613,-838,1568,5941 } },
{ "FUJIFILM FinePix S20Pro", 0, 0,
{ 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } },
{ "FUJIFILM FinePix S2Pro", 128, 0,
@ -6271,6 +6275,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } },
{ "FUJIFILM FinePix HS10 HS11", 0, 0xf68,
{ 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } },
{ "FUJIFILM FinePix HS20EXR", 0, 0,
{ 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "FUJIFILM FinePix F550EXR", 0, 0,
{ 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "FUJIFILM FinePix X100", 0, 0,
{ 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } },
{ "Imacon Ixpress", 0, 0, /* DJC */
{ 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },
{ "KODAK NC2000", 0, 0,
@ -6321,6 +6331,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 11313,-3559,-1101,-3893,11891,2257,-1214,2398,4908 } },
{ "KODAK EasyShare Z981", 0, 0,
{ 12729,-4717,-1188,-1367,9187,2582,274,860,4411 } },
{ "KODAK EasyShare Z990", 0, 0xfed,
{ 11749,-4048,-1309,-1867,10572,1489,-138,1449,4522 } },
{ "KODAK EASYSHARE Z1015", 0, 0xef1,
{ 11265,-4286,-992,-4694,12343,2647,-1090,1523,5447 } },
{ "Leaf CMost", 0, 0,
@ -6391,6 +6403,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 6992,-1668,-806,-8138,15748,2543,-874,850,7897 } },
{ "NIKON D5000", 0, 0xf00,
{ 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } },
{ "NIKON D5100", 0, 0x3de6,
{ 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
{ "NIKON D50", 0, 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D60", 0, 0,
@ -6483,8 +6497,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } },
{ "OLYMPUS E-P2", 0, 0xffd,
{ 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } },
{ "OLYMPUS E-PL1s", 0, 0,
{ 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } },
{ "OLYMPUS E-PL1", 0, 0,
{ 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } },
{ "OLYMPUS E-PL2", 0, 0,
{ 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } },
{ "OLYMPUS SP350", 0, 0,
{ 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } },
{ "OLYMPUS SP3", 0, 0,
@ -6499,6 +6517,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } },
{ "OLYMPUS SP570UZ", 0, 0,
{ 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } },
{ "OLYMPUS XZ-1", 0, 0,
{ 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } },
{ "PENTAX *ist DL2", 0, 0,
{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
{ "PENTAX *ist DL", 0, 0,
@ -6601,7 +6621,7 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },
{ "SAMSUNG EX1", 0, 0x3e00,
{ 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } },
{ "SAMSUNG NX10", 0, 0,
{ "SAMSUNG NX1", 0, 0,
{ 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
{ "SAMSUNG WB2000", 0, 0xfff,
{ 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } },
@ -6619,6 +6639,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } },
{ "SONY DSLR-A100", 0, 0xfeb,
{ 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } },
{ "SONY DSLR-A290", 0, 0,
{ 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } },
{ "SONY DSLR-A2", 0, 0,
{ 9847,-3091,-928,-8485,16345,2225,-715,595,7103 } },
{ "SONY DSLR-A300", 0, 0,
@ -6924,9 +6946,11 @@ void CLASS identify()
} else if (!strcmp (head, "qktk")) {
strcpy (make, "Apple");
strcpy (model,"QuickTake 100");
load_raw = &CLASS quicktake_100_load_raw;
} else if (!strcmp (head, "qktn")) {
strcpy (make, "Apple");
strcpy (model,"QuickTake 150");
load_raw = &CLASS kodak_radc_load_raw;
} else if (!memcmp (head,"FUJIFILM",8)) {
fseek (ifp, 84, SEEK_SET);
thumb_offset = get4();
@ -6939,7 +6963,7 @@ void CLASS identify()
if (is_raw == 2 && shot_select)
parse_fuji (i);
}
fseek (ifp, 100, SEEK_SET);
fseek (ifp, 100+28*(shot_select > 0), SEEK_SET);
parse_tiff (data_offset = get4());
parse_tiff (thumb_offset+12);
apply_tiff();
@ -7401,7 +7425,8 @@ canon_cr2:
left_margin = 2;
} else if (!strcmp(model,"D5000")) {
width -= 42;
} else if (!strcmp(model,"D7000")) {
} else if (!strcmp(model,"D5100") ||
!strcmp(model,"D7000")) {
width -= 44;
} else if (!strcmp(model,"D3100")) {
width -= 28;
@ -7433,6 +7458,8 @@ canon_cr2:
} else if (!strncmp(model,"COOLPIX P",9)) {
load_flags = 24;
filters = 0x94949494;
if (model[9] == '7' && iso_speed >= 400)
black = 255;
} else if (fsize == 1581060) {
height = 963;
width = 1287;
@ -7538,14 +7565,14 @@ cp_e2500:
width = 2880;
flip = 6;
} else if (load_raw != &CLASS packed_load_raw)
maximum = 0x3e00;
if (is_raw == 2 && shot_select)
maximum = 0x2f00;
maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00;
top_margin = (raw_height - height) >> 2 << 1;
left_margin = (raw_width - width ) >> 2 << 1;
if (is_raw == 2)
data_offset += (shot_select > 0) * ( fuji_layout ?
(raw_width *= 2) : raw_height*raw_width*2 );
if (width == 3328) {
width = 3262;
left_margin = 34;
}
if (fuji_layout) raw_width *= is_raw;
if (load_raw == &CLASS fuji_load_raw) {
fuji_width = width >> !fuji_layout;
width = (height >> fuji_layout) + fuji_width;
@ -7642,8 +7669,8 @@ konica_400z:
raw_width = fsize/height/2;
order = 0x4d4d;
load_raw = &CLASS unpacked_load_raw;
} else if (!strcmp(model,"NX10")) {
height -= top_margin = 4;
} else if (!strncmp(model,"NX1",3)) {
height -= top_margin = 8;
width -= 2 * (left_margin = 8);
load_flags = 32;
} else if (!strcmp(model,"EX1")) {
@ -7952,7 +7979,7 @@ c603:
} else gamma_curve (0, 3.875, 1, 255);
load_raw = &CLASS eight_bit_load_raw;
} else if (!strncasecmp(model,"EasyShare",9)) {
data_offset = 0x15000;
data_offset = data_offset < 0x15000 ? 0x15000 : 0x17000;
load_raw = &CLASS packed_load_raw;
} else if (!strcasecmp(make,"KODAK")) {
if (filters == UINT_MAX) filters = 0x61616161;
@ -8046,7 +8073,8 @@ c603:
load_raw = &CLASS kodak_radc_load_raw;
filters = 0x61616161;
simple_coeff(2);
} else if (!strcmp(model,"QuickTake 100")) {
} else if (!strncmp(model,"QuickTake",9)) {
if (head[5]) strcpy (model+10, "200");
fseek (ifp, 544, SEEK_SET);
height = get2();
width = get2();
@ -8056,14 +8084,6 @@ c603:
fseek (ifp, data_offset-6, SEEK_SET);
flip = ~get2() & 3 ? 5:6;
}
load_raw = &CLASS quicktake_100_load_raw;
filters = 0x61616161;
} else if (!strcmp(model,"QuickTake 150")) {
data_offset = 738 - head[5];
if (head[5]) strcpy (model+10, "200");
load_raw = &CLASS kodak_radc_load_raw;
height = 480;
width = 640;
filters = 0x61616161;
} else if (!strcmp(make,"Rollei") && !load_raw) {
switch (raw_width) {

View File

@ -28,11 +28,11 @@
*If you have not modified dcraw.c in any way, a link to my
homepage qualifies as "full source code".
$Revision: 1.442 $
$Date: 2011/04/01 23:30:09 $
$Revision: 1.443 $
$Date: 2011/05/11 03:09:54 $
*/
#define VERSION "9.07"
#define VERSION "9.08"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@ -908,6 +908,8 @@ void CLASS lossless_jpeg_load_raw()
for (jrow=0; jrow < jh.high; jrow++) {
rp = ljpeg_row (jrow, &jh);
if (load_flags & 1)
row = jrow & 1 ? height-1-jrow/2 : jrow/2;
for (jcol=0; jcol < jwide; jcol++) {
val = *rp++;
if (jh.bits <= 12)
@ -4417,10 +4419,12 @@ void CLASS parse_makernote (int base, int uptag)
base = ftell(ifp)-10;
fseek (ifp, -2, SEEK_CUR);
order = get2(); get2();
} else if (!strncmp (buf,"FUJIFILM",8) ||
!strncmp (buf,"SONY",4) ||
} else if (!strncmp (buf,"SONY",4) ||
!strcmp (buf,"Panasonic")) {
order = 0x4949;
goto nf;
} else if (!strncmp (buf,"FUJIFILM",8)) {
base = ftell(ifp)-10;
nf: order = 0x4949;
fseek (ifp, 2, SEEK_CUR);
} else if (!strcmp (buf,"OLYMP") ||
!strcmp (buf,"LEICA") ||
@ -4440,7 +4444,7 @@ void CLASS parse_makernote (int base, int uptag)
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
tag |= uptag << 16;
if (tag == 2 && strstr(make,"NIKON"))
if (tag == 2 && strstr(make,"NIKON") && !iso_speed)
iso_speed = (get2(),get2());
if (tag == 4 && len > 26 && len < 35) {
if ((i=(get4(),get2())) != 0x7fff && !iso_speed)
@ -4750,7 +4754,8 @@ void CLASS parse_mos (int offset)
static const char *mod[] =
{ "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22",
"Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65",
"Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7" };
"Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7",
"","","","","","","","","","","","","","","","","","AFi-II 12" };
float romm_cam[3][3];
fseek (ifp, offset, SEEK_SET);
@ -4800,6 +4805,8 @@ void CLASS parse_mos (int offset)
FORC4 fscanf (ifp, "%d", neut+c);
FORC3 cam_mul[c] = (float) neut[0] / neut[c+1];
}
if (!strcmp(data,"Rows_data"))
load_flags = get4();
parse_mos (from);
fseek (ifp, skip+from, SEEK_SET);
}
@ -4924,6 +4931,11 @@ int CLASS parse_tiff_ifd (int base)
tiff_ifd[ifd].samples = len & 7;
tiff_ifd[ifd].bps = getint(type);
break;
case 61446:
raw_height = 0;
load_raw = &CLASS packed_load_raw;
load_flags = 16 | (get4() && (filters=0x16161616)) << 3;
break;
case 259: /* Compression */
tiff_ifd[ifd].comp = get2();
break;
@ -4947,7 +4959,7 @@ int CLASS parse_tiff_ifd (int base)
case 513: /* JpegIFOffset */
case 61447:
tiff_ifd[ifd].offset = get4()+base;
if (!tiff_ifd[ifd].bps && tiff_ifd[ifd].offset > 0) {
if (!tiff_ifd[ifd].bps && tiff_ifd[ifd].offset > 0) {
fseek (ifp, tiff_ifd[ifd].offset, SEEK_SET);
if (ljpeg_start (&jh, 1)) {
tiff_ifd[ifd].comp = 6;
@ -5832,22 +5844,14 @@ void CLASS parse_fuji (int offset)
} else if (tag == 0x2ff0) {
FORC4 cam_mul[c ^ 1] = get2();
} else if (tag == 0xc000) {
raw_height = order;
c = order;
order = 0x4949;
width = get4();
height = get4();
order = raw_height;
raw_height = 1;
load_raw = &CLASS packed_load_raw;
load_flags = 16;
order = c;
}
fseek (ifp, save+len, SEEK_SET);
}
if (!raw_height) {
filters = 0x16161616;
load_raw = &CLASS packed_load_raw;
load_flags = 24;
}
height <<= fuji_layout;
width >>= fuji_layout;
}
@ -6139,12 +6143,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 4763,712,-646,-6821,14399,2640,-1921,3276,6561 } },
{ "Canon EOS 550D", 0, 0x3dd7,
{ 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } },
{ "Canon EOS 600D", 0, 0x3510, /* DJC */
{ 5589,-1476,-292,-3401,9372,4030,-706,2038,6350 } },
{ "Canon EOS 600D", 0, 0x3510,
{ 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } },
{ "Canon EOS 1000D", 0, 0xe43,
{ 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } },
{ "Canon EOS 1100D", 0, 0x3510, /* DJC */
{ 5193,-1423,-226,-3414,9273,4142,-679,2103,6808 } },
{ "Canon EOS 1100D", 0, 0x3510,
{ 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } },
{ "Canon EOS-1Ds Mark III", 0, 0x3bb0,
{ 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } },
{ "Canon EOS-1Ds Mark II", 0, 0xe80,
@ -6256,7 +6260,7 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ "FUJIFILM FinePix S100FS", 514, 0,
{ 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } },
{ "FUJIFILM FinePix S200EXR", 512, 0x3fff,
{ 0 } },
{ 11401,-4498,-1312,-5088,12751,2613,-838,1568,5941 } },
{ "FUJIFILM FinePix S20Pro", 0, 0,
{ 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } },
{ "FUJIFILM FinePix S2Pro", 128, 0,
@ -6293,6 +6297,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } },
{ "FUJIFILM FinePix HS10 HS11", 0, 0xf68,
{ 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } },
{ "FUJIFILM FinePix HS20EXR", 0, 0,
{ 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "FUJIFILM FinePix F550EXR", 0, 0,
{ 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "FUJIFILM FinePix X100", 0, 0,
{ 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } },
{ "Imacon Ixpress", 0, 0, /* DJC */
{ 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },
{ "KODAK NC2000", 0, 0,
@ -6343,6 +6353,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 11313,-3559,-1101,-3893,11891,2257,-1214,2398,4908 } },
{ "KODAK EasyShare Z981", 0, 0,
{ 12729,-4717,-1188,-1367,9187,2582,274,860,4411 } },
{ "KODAK EasyShare Z990", 0, 0xfed,
{ 11749,-4048,-1309,-1867,10572,1489,-138,1449,4522 } },
{ "KODAK EASYSHARE Z1015", 0, 0xef1,
{ 11265,-4286,-992,-4694,12343,2647,-1090,1523,5447 } },
{ "Leaf CMost", 0, 0,
@ -6413,6 +6425,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 6992,-1668,-806,-8138,15748,2543,-874,850,7897 } },
{ "NIKON D5000", 0, 0xf00,
{ 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } },
{ "NIKON D5100", 0, 0x3de6,
{ 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
{ "NIKON D50", 0, 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D60", 0, 0,
@ -6505,8 +6519,12 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } },
{ "OLYMPUS E-P2", 0, 0xffd,
{ 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } },
{ "OLYMPUS E-PL1s", 0, 0,
{ 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } },
{ "OLYMPUS E-PL1", 0, 0,
{ 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } },
{ "OLYMPUS E-PL2", 0, 0,
{ 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } },
{ "OLYMPUS SP350", 0, 0,
{ 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } },
{ "OLYMPUS SP3", 0, 0,
@ -6521,6 +6539,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } },
{ "OLYMPUS SP570UZ", 0, 0,
{ 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } },
{ "OLYMPUS XZ-1", 0, 0,
{ 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } },
{ "PENTAX *ist DL2", 0, 0,
{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
{ "PENTAX *ist DL", 0, 0,
@ -6623,7 +6643,7 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },
{ "SAMSUNG EX1", 0, 0x3e00,
{ 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } },
{ "SAMSUNG NX10", 0, 0,
{ "SAMSUNG NX1", 0, 0,
{ 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
{ "SAMSUNG WB2000", 0, 0xfff,
{ 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } },
@ -6641,6 +6661,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } },
{ "SONY DSLR-A100", 0, 0xfeb,
{ 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } },
{ "SONY DSLR-A290", 0, 0,
{ 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } },
{ "SONY DSLR-A2", 0, 0,
{ 9847,-3091,-928,-8485,16345,2225,-715,595,7103 } },
{ "SONY DSLR-A300", 0, 0,
@ -6954,9 +6976,11 @@ void CLASS identify()
} else if (!strcmp (head, "qktk")) {
strcpy (make, "Apple");
strcpy (model,"QuickTake 100");
load_raw = &CLASS quicktake_100_load_raw;
} else if (!strcmp (head, "qktn")) {
strcpy (make, "Apple");
strcpy (model,"QuickTake 150");
load_raw = &CLASS kodak_radc_load_raw;
} else if (!memcmp (head,"FUJIFILM",8)) {
fseek (ifp, 84, SEEK_SET);
thumb_offset = get4();
@ -6969,7 +6993,7 @@ void CLASS identify()
if (is_raw == 2 && shot_select)
parse_fuji (i);
}
fseek (ifp, 100, SEEK_SET);
fseek (ifp, 100+28*(shot_select > 0), SEEK_SET);
parse_tiff (data_offset = get4());
parse_tiff (thumb_offset+12);
/*RT*/ exif_base = thumb_offset+12;
@ -7432,7 +7456,8 @@ canon_cr2:
left_margin = 2;
} else if (!strcmp(model,"D5000")) {
width -= 42;
} else if (!strcmp(model,"D7000")) {
} else if (!strcmp(model,"D5100") ||
!strcmp(model,"D7000")) {
width -= 44;
} else if (!strcmp(model,"D3100")) {
width -= 28;
@ -7464,6 +7489,8 @@ canon_cr2:
} else if (!strncmp(model,"COOLPIX P",9)) {
load_flags = 24;
filters = 0x94949494;
if (model[9] == '7' && iso_speed >= 400)
black = 255;
} else if (fsize == 1581060) {
height = 963;
width = 1287;
@ -7569,14 +7596,14 @@ cp_e2500:
width = 2880;
flip = 6;
} else if (load_raw != &CLASS packed_load_raw)
maximum = 0x3e00;
if (is_raw == 2 && shot_select)
maximum = 0x2f00;
maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00;
top_margin = (raw_height - height) >> 2 << 1;
left_margin = (raw_width - width ) >> 2 << 1;
if (is_raw == 2)
data_offset += (shot_select > 0) * ( fuji_layout ?
(raw_width *= 2) : raw_height*raw_width*2 );
if (width == 3328) {
width = 3262;
left_margin = 34;
}
if (fuji_layout) raw_width *= is_raw;
if (load_raw == &CLASS fuji_load_raw) {
fuji_width = width >> !fuji_layout;
width = (height >> fuji_layout) + fuji_width;
@ -7673,8 +7700,8 @@ konica_400z:
raw_width = fsize/height/2;
order = 0x4d4d;
load_raw = &CLASS unpacked_load_raw;
} else if (!strcmp(model,"NX10")) {
height -= top_margin = 4;
} else if (!strncmp(model,"NX1",3)) {
height -= top_margin = 8;
width -= 2 * (left_margin = 8);
load_flags = 32;
} else if (!strcmp(model,"EX1")) {
@ -7983,7 +8010,7 @@ c603:
} else gamma_curve (0, 3.875, 1, 255);
load_raw = &CLASS eight_bit_load_raw;
} else if (!strncasecmp(model,"EasyShare",9)) {
data_offset = 0x15000;
data_offset = data_offset < 0x15000 ? 0x15000 : 0x17000;
load_raw = &CLASS packed_load_raw;
} else if (!strcasecmp(make,"KODAK")) {
if (filters == UINT_MAX) filters = 0x61616161;
@ -8077,7 +8104,8 @@ c603:
load_raw = &CLASS kodak_radc_load_raw;
filters = 0x61616161;
simple_coeff(2);
} else if (!strcmp(model,"QuickTake 100")) {
} else if (!strncmp(model,"QuickTake",9)) {
if (head[5]) strcpy (model+10, "200");
fseek (ifp, 544, SEEK_SET);
height = get2();
width = get2();
@ -8087,14 +8115,6 @@ c603:
fseek (ifp, data_offset-6, SEEK_SET);
flip = ~get2() & 3 ? 5:6;
}
load_raw = &CLASS quicktake_100_load_raw;
filters = 0x61616161;
} else if (!strcmp(model,"QuickTake 150")) {
data_offset = 738 - head[5];
if (head[5]) strcpy (model+10, "200");
load_raw = &CLASS kodak_radc_load_raw;
height = 480;
width = 640;
filters = 0x61616161;
} else if (!strcmp(make,"Rollei") && !load_raw) {
switch (raw_width) {

View File

@ -135,9 +135,9 @@ ImageIO::~ImageIO () {
if (embProfile)
cmsCloseProfile(embProfile);
delete loadedProfileData;
delete [] loadedProfileData;
delete exifRoot;
delete profileData;
delete [] profileData;
}
void png_read_data(png_struct_def *png_ptr, unsigned char *data, size_t length);
@ -294,9 +294,11 @@ int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize)
//jpeg_memory_src (&cinfo,buffer,bufsize);
jpeg_read_header(&cinfo, TRUE);
unsigned int proflen;
delete loadedProfileData;
loadedProfileData = NULL;
unsigned int proflen;
if( loadedProfileData ){
delete [] loadedProfileData;
loadedProfileData = NULL;
}
bool hasprofile = read_icc_profile (&cinfo, (JOCTET**)&loadedProfileData, (unsigned int*)&loadedProfileLength);
if (hasprofile)
embProfile = cmsOpenProfileFromMem (loadedProfileData, loadedProfileLength);
@ -450,8 +452,10 @@ int ImageIO::loadTIFF (Glib::ustring fname) {
}
char* profdata;
delete loadedProfileData;
loadedProfileData = NULL;
if( loadedProfileData ){
delete [] loadedProfileData;
loadedProfileData = NULL;
}
if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &loadedProfileLength, &profdata)) {
embProfile = cmsOpenProfileFromMem (profdata, loadedProfileLength);
loadedProfileData = new char [loadedProfileLength];

View File

@ -53,7 +53,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
inTabMode=false;
// construct and initialize thumbnail browsers
fileBrowser = new FileBrowser();
fileBrowser = Gtk::manage( new FileBrowser() );
fileBrowser->setFileBrowserListener (this);
fileBrowser->setArrangement (ThumbBrowserBase::TB_Vertical);
fileBrowser->show ();

View File

@ -36,9 +36,9 @@ FilePanel::FilePanel () : parent(NULL) {
dirpaned = Gtk::manage ( new Gtk::HPaned () );
dirpaned->set_position (options.dirBrowserWidth);
dirBrowser = new DirBrowser ();
placesBrowser = new PlacesBrowser ();
recentBrowser = new RecentBrowser ();
dirBrowser = Gtk::manage ( new DirBrowser () );
placesBrowser = Gtk::manage ( new PlacesBrowser () );
recentBrowser = Gtk::manage ( new RecentBrowser () );
placespaned = Gtk::manage ( new Gtk::VPaned () );
placespaned->set_size_request(50,100);
@ -54,7 +54,7 @@ FilePanel::FilePanel () : parent(NULL) {
dirpaned->pack1 (*placespaned, false, true);
tpc = new BatchToolPanelCoordinator (this);
fileCatalog = new FileCatalog (tpc->coarse, tpc->getToolBar(), this);
fileCatalog = Gtk::manage ( new FileCatalog (tpc->coarse, tpc->getToolBar(),this) );
ribbonPane = Gtk::manage ( new Gtk::Paned() );
ribbonPane->add(*fileCatalog);
ribbonPane->set_size_request(50,150);
@ -73,7 +73,7 @@ FilePanel::FilePanel () : parent(NULL) {
rightNotebook = Gtk::manage ( new Gtk::Notebook () );
//Gtk::VBox* taggingBox = Gtk::manage ( new Gtk::VBox () );
history = new History (false);
history = Gtk::manage ( new History (false) );
tpc->addPParamsChangeListener (history);
history->setProfileChangeListener (tpc);

View File

@ -61,6 +61,7 @@ PopUpCommon::~PopUpCommon () {
}
if (menu) delete menu;
if (buttonImage) delete buttonImage;
delete buttonGroup;
}
PopUpCommon::type_signal_changed PopUpCommon::signal_changed() {

View File

@ -34,7 +34,7 @@ public:
Gtk::HBox* buttonGroup; // this is the widget to be packed
PopUpCommon (Gtk::Button* button, const Glib::ustring& label = "");
~PopUpCommon ();
virtual ~PopUpCommon ();
bool addEntry (Glib::ustring imagePath, Glib::ustring label);
bool setSelected (int entryNum);
int getSelected () { return selected; }

View File

@ -28,7 +28,7 @@ SaveFormatPanel::SaveFormatPanel () : listener (NULL) {
pngcompr = new Adjuster (M("SAVEDLG_PNGCOMPR"), 0, 6, 1, 6);
pngcompr->setAdjusterListener (this);
pngcompr->show ();
tiffuncompressed = Gtk::manage (new Gtk::CheckButton (M("SAVEDLG_TIFFUNCOMPRESSED")));
tiffuncompressed = new Gtk::CheckButton (M("SAVEDLG_TIFFUNCOMPRESSED"));
tiffuncompressed->signal_toggled().connect( sigc::mem_fun(*this,&SaveFormatPanel::formatChanged));
tiffuncompressed->show();
@ -64,6 +64,12 @@ SaveFormatPanel::SaveFormatPanel () : listener (NULL) {
fstr[3] = "png";
fstr[4] = "png";
}
SaveFormatPanel::~SaveFormatPanel ()
{
delete jpegqual;
delete pngcompr;
delete tiffuncompressed;
}
void SaveFormatPanel::init (SaveFormat &sf) {

View File

@ -47,6 +47,7 @@ class SaveFormatPanel : public Gtk::VBox, public AdjusterListener {
public:
SaveFormatPanel ();
~SaveFormatPanel ();
void setListener (FormatChangeListener* l) { listener = l; }
void init (SaveFormat& sf);