Added abandoned KDE3 version of libkdcraw
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/libkdcraw@1076409 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
commit
a470f3e5f2
@ -0,0 +1,11 @@
|
||||
AUTHORS AND MAINTAINERS :
|
||||
|
||||
Caulier Gilles <caulier dot gilles at gmail dot com>
|
||||
Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
|
||||
CONTRIBUTORS:
|
||||
|
||||
Angelo Naselli <anaselli at linux dot it>
|
||||
Gerhard Kulzer <gerhard at kulzer dot net>
|
||||
Achim Bohnet <ach at mpe dot mpg dot de>
|
||||
Guillaume Castagnino <casta at xwing dot info>
|
@ -0,0 +1,181 @@
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
@ -0,0 +1,7 @@
|
||||
/** @mainpage KDE Extragear Libraries
|
||||
*
|
||||
* The extragear-libs module collects libraries that are shared by
|
||||
* more than one extragear application, or which are useful in their
|
||||
* own right.
|
||||
*
|
||||
*/
|
@ -0,0 +1,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.6.1
|
||||
|
||||
include admin/deps.am
|
||||
include admin/Doxyfile.am
|
||||
|
||||
COMPILE_FIRST = libkexiv2 libkipi libkdcraw
|
||||
SUBDIRS=$(TOPSUBDIRS)
|
@ -0,0 +1,6 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.6.1
|
||||
|
||||
include admin/deps.am
|
||||
include admin/Doxyfile.am
|
||||
|
||||
COMPILE_FIRST = libkexiv2 libkipi libkdcraw
|
@ -0,0 +1,14 @@
|
||||
all:
|
||||
@echo "This Makefile is only for the CVS repository"
|
||||
@echo "This will be deleted before making the distribution"
|
||||
@echo ""
|
||||
@if test ! -d admin; then \
|
||||
echo "Please recheckout this module!" ;\
|
||||
echo "for cvs: use checkout once and after that update again" ;\
|
||||
echo "for cvsup: checkout kde-common from cvsup and" ;\
|
||||
echo " link kde-common/admin to ./admin" ;\
|
||||
exit 1 ;\
|
||||
fi
|
||||
$(MAKE) -f admin/Makefile.common cvs
|
||||
|
||||
.SILENT:
|
@ -0,0 +1,53 @@
|
||||
0.1.4
|
||||
------------------------------------------------------------------------
|
||||
- updated dcraw to 8.83
|
||||
new cameras: Apple QuickTake 200, Fuji IS-1, Sony DSLR-A350, Pentax K20D,
|
||||
Nokia N95, Canon PowerShots A460, Canon PowerShots A530,
|
||||
Canon PowerShots A650.
|
||||
no new options introduced.
|
||||
- updated dcraw to 8.82
|
||||
new cameras: Sony DSLR-A200, Sony DSLR-A700, Sony XCD-SX910CR, STV680 VGA
|
||||
no new options introduced.
|
||||
|
||||
Bugs fixed from B.K.O (http://bugs.kde.org):
|
||||
001 ==> 142055 : Which whitebalance is used.
|
||||
|
||||
0.1.3
|
||||
------------------------------------------------------------------------
|
||||
- updated dcraw to 8.81
|
||||
new cameras: Canon G7, Fuji FinePix S9100/S9600, Olympus SP560UZ, Panasonic DMC-L10
|
||||
|
||||
- updated dcraw to 8.80
|
||||
new cameras: Hasselblad H3D, Olympus E-3, Canon EOS 40D, Canon PowerShot G9,
|
||||
Canon EOS-1Ds Mark III, AVT F-080C, Nikon D3, Nikon D300,
|
||||
Nikon Coolpix S6, Panasonic DMC-FZ18, Sony DSLR-A700
|
||||
|
||||
-m number_of_passes
|
||||
After interpolation, clean up color artifacts by repeatedly applying a 3x3
|
||||
median filter to the R-G and B-G channels.
|
||||
- Licence : is GPL compatible again == less wories)
|
||||
|
||||
0.1.2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
New features
|
||||
- updated internal dcraw from 8.60 to 8.77. API changed.
|
||||
- add new chromatic aberration reduction options (patch from Guillaume Castagnino).
|
||||
|
||||
0.1.1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
New features
|
||||
- API changed: * KDcraw destructor is now virtual.
|
||||
* Added DcrawSettingsContainer destructor.
|
||||
* Separate embedded JPEG preview extraction and half decoding methods
|
||||
to get a preview of RAW pictures.
|
||||
|
||||
Bugs fixed from B.K.O (http://bugs.kde.org):
|
||||
001 ==> 145482 : libkdraw compile fails on Cygwin.
|
||||
|
||||
0.1.0
|
||||
------------------------------------------------------------------------
|
||||
First implementation
|
||||
|
||||
For details and info about previous versions, see ChangeLog.
|
@ -0,0 +1,205 @@
|
||||
How to release kipi & co.
|
||||
----------------------------------------
|
||||
|
||||
1. Before the final release
|
||||
2. Release libkipi
|
||||
3. Release libkexiv2
|
||||
4. Release kipi-plugins
|
||||
5. Notes on svn2cl
|
||||
|
||||
|
||||
----------------------------------------
|
||||
1. Before the final release
|
||||
----------------------------------------
|
||||
|
||||
Some days before releasing the final, remember to announce
|
||||
the translations commit deadline to kde-i18-doc@kde.org.
|
||||
|
||||
----------------------------------------
|
||||
2. Release libkipi
|
||||
----------------------------------------
|
||||
|
||||
a) Update release info
|
||||
libkipi/libkipi.lsm
|
||||
libkipi/libkipi/version.h
|
||||
libkipi/libkipi.pc.in
|
||||
|
||||
To do that you can use the "prepare_libkipi.rb" script, change the
|
||||
release version ("version" and "version_n" fields) and run it.
|
||||
Don't forget to commit your changes :)
|
||||
|
||||
b) Update Changelog
|
||||
- to do that use the "release_kipi_changelog.sh" script
|
||||
release_kipi_changelog.sh libkipi oldest-revision-or-date new-release-version
|
||||
- edit Changelog and modify the wrong lines (if any)
|
||||
- Commit your changes
|
||||
|
||||
c) Build the source tarball
|
||||
- use the "release_libkipi.rb"
|
||||
edit the script and change the "version" field
|
||||
if you're releasing an svn snapshot set "usesvnver" to "yes"
|
||||
run it and get libkipiXXX.tar.bz2
|
||||
|
||||
d) Uncompress and test the tarball
|
||||
- check if all the files are right in
|
||||
- check if the file RELEASE.rev is in and with the right revision number
|
||||
- check if it builds correctly.
|
||||
- diff headerfiles installed in <incdir>/kde/libkipi/ with last release
|
||||
and check for binary compatibility (see e.g.,
|
||||
http://developer.kde.org/documentation/other/binarycompatibility.html)
|
||||
Every API change should be refleced in a changed version-info in
|
||||
libkipi/libkipi/Makefile.am (see e.g.,
|
||||
http://www.gnu.org/software/libtool/manual.html#Versioning)
|
||||
|
||||
e) Upload tarball for testing
|
||||
Before an official release upload the tarball for testing used sites are
|
||||
digikam3rdparty.free.fr or www.linux.it/~anaselli/kipi-plugins - depends
|
||||
on who is releasing :)
|
||||
Send a mail to kde-imaging@kde.org and digikam-devel@kde.org to have a
|
||||
feedback from pakagers before posting an offical release annoucement.
|
||||
|
||||
f) Upload tarbal on SF and update kipi site
|
||||
official site for uploading the release is http://sourceforge.net/projects/kipi
|
||||
web page to be update is http://extragear.kde.org/apps/kipi/
|
||||
to update this last you have to get, change and commit it from
|
||||
XXX@svn.kde.org/home/kde/trunk/www/areas/extragear/apps/kipi
|
||||
Send a mail to announce the official release.
|
||||
|
||||
----------------------------------------
|
||||
3. Release libkexiv2
|
||||
----------------------------------------
|
||||
|
||||
a) Update release info
|
||||
libkexiv2/libkexiv2.lsm
|
||||
libkexiv2/version.h
|
||||
libkexiv2/libkexiv2.pc.in
|
||||
libkexiv2/Makefile.am
|
||||
libkexiv2/ChangeLog
|
||||
|
||||
To do that you can use the "prepare_libkexiv2.rb" script, change the
|
||||
release version ("version", "version_n", "version_info" and "chlog_rev" fields)
|
||||
and run it.
|
||||
Don't forget to fix Changelog and commit your changes :)
|
||||
|
||||
c) Build the source tarball
|
||||
- use the "release_libkexiv2.rb"
|
||||
edit the script and change the "version" field
|
||||
if you're releasing an svn snapshot set "usesvnver" to "yes"
|
||||
run it and get libkexiv2XXX.tar.bz2
|
||||
|
||||
d) Uncompress and test the tarball
|
||||
- check if all the files are right in
|
||||
- check if the file RELEASE.rev is in and with the right revision number
|
||||
- check if it builds correctly.
|
||||
- diff headerfiles installed in <incdir>/kde/libkexiv2/ with last release
|
||||
and check for binary compatibility (see e.g.,
|
||||
http://developer.kde.org/documentation/other/binarycompatibility.html)
|
||||
Every API change should be refleced in a changed version-info in
|
||||
libkexiv2/Makefile.am (see e.g.,
|
||||
http://www.gnu.org/software/libtool/manual.html#Versioning)
|
||||
|
||||
e) Upload tarball for testing
|
||||
Before an official release upload the tarball for testing used sites are
|
||||
digikam3rdparty.free.fr or www.linux.it/~anaselli/kipi-plugins - depends
|
||||
on who is releasing :)
|
||||
Send a mail to kde-imaging@kde.org and digikam-devel@kde.org to have a
|
||||
feedback from pakagers before posting an offical release annoucement.
|
||||
|
||||
f) Upload tarbal on SF and update kipi site
|
||||
official site for uploading the release is http://sourceforge.net/projects/kipi
|
||||
web page to be update is http://extragear.kde.org/apps/kipi/
|
||||
to update this last you have to get, change and commit it from
|
||||
XXX@svn.kde.org/home/kde/trunk/www/areas/extragear/apps/kipi
|
||||
Send a mail to announce the official release.
|
||||
|
||||
----------------------------------------
|
||||
4. Release kipi-plugins
|
||||
----------------------------------------
|
||||
|
||||
a) Update release info
|
||||
kipi-plugins/kipi-plugins.lsm
|
||||
kipi-plugins/common/include/pluginsversion.h
|
||||
(kipi-plugins/ChangeLog)
|
||||
|
||||
To do that you can use the "prepare_kipiplugins.rb" script, change the
|
||||
release version ("version" field) and run it.
|
||||
|
||||
Using svn2cl (http://ch.tudelft.nl/~arthur/svn2cl/) you can
|
||||
add ChangeLog info with this script as well, to do that
|
||||
follow the instructions:
|
||||
- set usesv2cl to "yes"
|
||||
- set svn2cl, svnbase, svnroot according to your account
|
||||
- set chlog_rev to the last revision (+1) of the last release
|
||||
(look at ChangeLog file, last commit)
|
||||
- use the script as usual and skip step b)
|
||||
- edit ChangeLog and modify the wrong lines (if any)
|
||||
|
||||
|
||||
Don't forget to commit your changes.
|
||||
|
||||
b) Update ChangeLog
|
||||
- if you're using svn2cl you can do that at step a)
|
||||
- to do that use the "release_kipi_changelog.sh" script
|
||||
release_kipi_changelog.sh kipi-plugins oldest-revision-or-date new-release-version
|
||||
- edit Changelog and modify the wrong lines (if any)
|
||||
- Commit your changes
|
||||
|
||||
c) Build the source tarball
|
||||
- use the "release_kipi-plugins.rb"
|
||||
edit the script and change the "version" field and check the "addPo" one for po files
|
||||
if you're releasing an svn snapshot set "usesvnver" to "yes"
|
||||
run it and get kipi-pluginsXXX.tar.bz2
|
||||
|
||||
d) Uncompress and test the tarball
|
||||
- check if all the files are right in
|
||||
- check if the file RELEASE.rev is in and with the right revision number
|
||||
- check if it builds correctly.
|
||||
|
||||
e) Upload tarball for testing
|
||||
Before an official release upload the tarball for testing used sites are
|
||||
digikam3rdparty.free.fr or www.linux.it/~anaselli/kipi-plugins - depends
|
||||
on who is releasing :)
|
||||
Send a mail to kde-imaging@kde.org and digikam-devel@kde.org to have a
|
||||
feedback from pakagers before posting an offical release annoucement.
|
||||
|
||||
f) Upload tarbal on SF and update kipi site
|
||||
official site for uploading the release is http://sourceforge.net/projects/kipi
|
||||
web page to be update is http://extragear.kde.org/apps/kipi/
|
||||
to update this last you have to get, change and commit it from
|
||||
XXX@svn.kde.org/home/kde/trunk/www/areas/extragear/apps/kipi
|
||||
Send a mail to announce the official release at least to:
|
||||
- kde-extra-gear@kde.org
|
||||
- kde-announce@kde.org
|
||||
- kde-imaging@kde.org
|
||||
- digikam-devel@kde.org
|
||||
- gwenview-general@lists.sourceforge.net
|
||||
|
||||
|
||||
----------------------------------------
|
||||
5. Notes on svn2cl
|
||||
----------------------------------------
|
||||
|
||||
Latest versions (>= 0.9) of svn2cl offer the --ignore-message-starting option
|
||||
and --ignore-message-starting=SVN_SILENT should work.
|
||||
Programmers often write SVN_SILENT or CVS_SILENT (obsolete) everywhere
|
||||
in the commit comment, that means such an option could not work.
|
||||
Moreover it can be used only once, so just to skip SVN_SILENT or CVS_SILENT
|
||||
not both.
|
||||
|
||||
The easiest way was to to hack into svn2cl.xsl (mine is /usr/share/svn2cl/svn2cl.xsl).
|
||||
Add the following lines:
|
||||
|
||||
<!-- skip entries where the message contains SVN_SILENT -->
|
||||
<xsl:template match="logentry[contains(msg,'SVN_SILENT')]">
|
||||
</xsl:template>
|
||||
<!-- skip entries where the message contains SILENT -->
|
||||
<xsl:template match="logentry[contains(msg,'SILENT')]">
|
||||
</xsl:template>
|
||||
|
||||
just before the template:
|
||||
|
||||
<!-- format one entry from the log -->
|
||||
<xsl:template match="logentry">
|
||||
...
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
DCRAW program interface for KDE
|
||||
|
||||
This library is a part of Kipi-Plugins project (http://www.kipi-plugins.org)
|
||||
|
||||
|
||||
-- AUTHORS -----------------------------------------------------------
|
||||
|
||||
See AUTHORS file for details.
|
||||
|
||||
|
||||
-- ABOUT -------------------------------------------------------------
|
||||
|
||||
Libkdcraw is a C++ interface around dcraw binary program used to decode RAW
|
||||
picture files. The library documentation is available on header files.
|
||||
|
||||
This library is used by kipi-plugins, digiKam and others kipi host programs.
|
||||
|
||||
|
||||
|
||||
-- DEPENDENCIES -------------------------------------------------------
|
||||
|
||||
AutoConf >= 2.5.x http://www.gnu.org/software/autoconf
|
||||
AutoMake >= 1.7.x http://www.gnu.org/software/automake
|
||||
libqt >= 3.3.x http://www.trolltech.com
|
||||
libkde >= 3.4.x (>=3.5.x recommended) http://www.kde.org
|
||||
liblcms >= 1.14.x (used by dcraw.c) http://www.littlecms.com
|
||||
libjpeg >= 6b (used by dcraw.c) http://www.ijg.org
|
@ -0,0 +1,2 @@
|
||||
Last Changed Rev: 783789
|
||||
Last Changed Date: 2008-03-09 16:29:11 +0100 (Sun, 09 Mar 2008)
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,909 @@
|
||||
# generated automatically by aclocal 1.10 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_if(m4_PACKAGE_VERSION, [2.61],,
|
||||
[m4_fatal([this file was generated for autoconf 2.61.
|
||||
You have another version of autoconf. If you want to use that,
|
||||
you should regenerate the build system entirely.], [63])])
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.10'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.10], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
# _AM_AUTOCONF_VERSION(VERSION)
|
||||
# -----------------------------
|
||||
# aclocal traces this macro to find the Autoconf version.
|
||||
# This is a private macro too. Using m4_define simplifies
|
||||
# the logic in aclocal, which can simply ignore this definition.
|
||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.10])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])dnl
|
||||
AC_SUBST([$1_FALSE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 9
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 3
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[for mf in $CONFIG_FILES; do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 12
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||
# is not polluted with repeated "-I."
|
||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||
[_AM_DEPENDENCIES(OBJC)],
|
||||
[define([AC_PROG_OBJC],
|
||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$1 | $1:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_PROG_CC_C_O
|
||||
# --------------
|
||||
# Like AC_PROG_CC_C_O, but changed for automake.
|
||||
AC_DEFUN([AM_PROG_CC_C_O],
|
||||
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
|
||||
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([compile])dnl
|
||||
# FIXME: we rely on the cache variable name because
|
||||
# there is no other way.
|
||||
set dummy $CC
|
||||
ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
|
||||
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
dnl Make sure AC_PROG_CC is never called again, or it will override our
|
||||
dnl setting of CC.
|
||||
m4_define([AC_PROG_CC],
|
||||
[m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check for `mkdir -p'.
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
||||
dnl adjustment using top_builddir (which is defined more often than
|
||||
dnl MKDIR_P).
|
||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
||||
case $mkdir_p in
|
||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# ---------------------------
|
||||
# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
|
||||
# This macro is traced by Automake.
|
||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility.
|
||||
AM_MISSING_PROG([AMTAR], [tar])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([acinclude.m4])
|
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
make -f Makefile.cvs
|
||||
./configure --enable-debug=full
|
||||
|
@ -0,0 +1,249 @@
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
|
||||
#undef HAVE_CARBON_CARBON_H
|
||||
|
||||
/* Define if you have the CoreAudio API */
|
||||
#undef HAVE_COREAUDIO
|
||||
|
||||
/* Define to 1 if you have the <crt_externs.h> header file. */
|
||||
#undef HAVE_CRT_EXTERNS_H
|
||||
|
||||
/* Defines if your system has the crypt function */
|
||||
#undef HAVE_CRYPT
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if you have libjpeg */
|
||||
#undef HAVE_LIBJPEG
|
||||
|
||||
/* Define if you have libpng */
|
||||
#undef HAVE_LIBPNG
|
||||
|
||||
/* Define if you have a working libpthread (will enable threaded code) */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define if you have libz */
|
||||
#undef HAVE_LIBZ
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if your system needs _NSGetEnviron to set up the environment */
|
||||
#undef HAVE_NSGETENVIRON
|
||||
|
||||
/* Define if you have res_init */
|
||||
#undef HAVE_RES_INIT
|
||||
|
||||
/* Define if you have the res_init prototype */
|
||||
#undef HAVE_RES_INIT_PROTO
|
||||
|
||||
/* Define if you have a STL implementation by SGI */
|
||||
#undef HAVE_SGI_STL
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define if you have strlcat */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Define if you have the strlcat prototype */
|
||||
#undef HAVE_STRLCAT_PROTO
|
||||
|
||||
/* Define if you have strlcpy */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define if you have the strlcpy prototype */
|
||||
#undef HAVE_STRLCPY_PROTO
|
||||
|
||||
/* Define to 1 if you have the <sys/bitypes.h> header file. */
|
||||
#undef HAVE_SYS_BITYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Suffix for lib directories */
|
||||
#undef KDELIBSUFF
|
||||
|
||||
/* kdemacros.h usable */
|
||||
#undef KDEMACROS_USABLE
|
||||
|
||||
/* The correct header */
|
||||
#undef LCMS_HEADER
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of `char *', as computed by sizeof. */
|
||||
#undef SIZEOF_CHAR_P
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
#undef SIZEOF_SIZE_T
|
||||
|
||||
/* The size of `unsigned long', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_LONG
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Defined if compiling without arts */
|
||||
#undef WITHOUT_ARTS
|
||||
|
||||
/*
|
||||
* jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
|
||||
* headers and I'm too lazy to write a configure test as long as only
|
||||
* unixware is related
|
||||
*/
|
||||
#ifdef _UNIXWARE
|
||||
#define HAVE_BOOLEAN
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
|
||||
* that defines bzero.
|
||||
*/
|
||||
|
||||
#if defined(_AIX)
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
|
||||
# include <sys/time.h>
|
||||
# include <crt_externs.h>
|
||||
# define environ (*_NSGetEnviron())
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_RES_INIT_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
int res_init(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCAT_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcat(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCPY_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcpy(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* On HP-UX, the declaration of vsnprintf() is needed every time !
|
||||
*/
|
||||
|
||||
#if !defined(HAVE_VSNPRINTF) || defined(hpux)
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int snprintf(char *str, size_t n, char const *fmt, ...);
|
||||
#endif
|
||||
|
||||
|
||||
/* define to 1 if -fvisibility is supported */
|
||||
#undef __KDE_HAVE_GCC_VISIBILITY
|
||||
|
||||
|
||||
#if defined(__SVR4) && !defined(__svr4__)
|
||||
#define __svr4__ 1
|
||||
#endif
|
||||
|
||||
|
||||
/* type to use in place of socklen_t if not defined */
|
||||
#undef kde_socklen_t
|
||||
|
||||
/* type to use in place of socklen_t if not defined (deprecated, use
|
||||
kde_socklen_t) */
|
||||
#undef ksize_t
|
@ -0,0 +1,4 @@
|
||||
./admin/configure.in.min
|
||||
configure.in.in
|
||||
./libkdcraw/configure.in.bot
|
||||
./libkdcraw/configure.in.in
|
@ -0,0 +1,270 @@
|
||||
dnl =======================================================
|
||||
dnl FILE: ./admin/configure.in.min
|
||||
dnl =======================================================
|
||||
|
||||
dnl This file is part of the KDE libraries/packages
|
||||
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
|
||||
|
||||
dnl This file is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Library General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2 of the License, or (at your option) any later version.
|
||||
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Library General Public License for more details.
|
||||
|
||||
dnl You should have received a copy of the GNU Library General Public License
|
||||
dnl along with this library; see the file COPYING.LIB. If not, write to
|
||||
dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
dnl Boston, MA 02110-1301, USA.
|
||||
|
||||
# Original Author was Kalle@kde.org
|
||||
# I lifted it in some mater. (Stephan Kulow)
|
||||
# I used much code from Janos Farkas
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(acinclude.m4) dnl a source file from your sub dir
|
||||
|
||||
dnl This is so we can use kde-common
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
|
||||
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
|
||||
unset CDPATH
|
||||
|
||||
dnl Checking host/target/build systems, for make, install etc.
|
||||
AC_CANONICAL_SYSTEM
|
||||
dnl Perform program name transformation
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
dnl Automake doc recommends to do this only here. (Janos)
|
||||
AM_INIT_AUTOMAKE(libkdcraw-0.1.4, "3.5.9") dnl searches for some needed programs
|
||||
|
||||
KDE_SET_PREFIX
|
||||
|
||||
dnl generate the config header
|
||||
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_CHECK_COMPILERS
|
||||
AC_ENABLE_SHARED(yes)
|
||||
AC_ENABLE_STATIC(no)
|
||||
KDE_PROG_LIBTOOL
|
||||
|
||||
dnl for NLS support. Call them in this order!
|
||||
dnl WITH_NLS is for the po files
|
||||
AM_KDE_WITH_NLS
|
||||
|
||||
KDE_USE_QT(3.2)
|
||||
AC_PATH_KDE
|
||||
dnl =======================================================
|
||||
dnl FILE: configure.in.in
|
||||
dnl =======================================================
|
||||
|
||||
#MIN_CONFIG(3.2)
|
||||
CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
|
||||
|
||||
KDE_ENABLE_HIDDEN_VISIBILITY
|
||||
|
||||
KDE_INIT_DOXYGEN([KEG Libraries API Reference], [Version $VERSION])
|
||||
|
||||
dnl =======================================================
|
||||
dnl FILE: ./libkdcraw/configure.in.in
|
||||
dnl =======================================================
|
||||
|
||||
AC_ARG_VAR(PKGCONFIGFOUND, [Path to pkg-config])
|
||||
AC_CHECK_PROG(PKGCONFIGFOUND, pkg-config,[yes])
|
||||
|
||||
#-----------------------------------------------------------------
|
||||
# Library API version
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
ABI_MAJOR=3
|
||||
VERSION_INFO="3:0:0"
|
||||
|
||||
AC_SUBST(ABI_MAJOR)
|
||||
AC_SUBST(VERSION_INFO)
|
||||
|
||||
KDCRAW_DIR="\$(libdir)/libkdcraw\$(ABI_MAJOR)"
|
||||
AC_SUBST(KDCRAW_DIR)
|
||||
# AM_PROG_CC_C_O to avoid that automake complains for it
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# lcms check
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
have_lcms_header='no'
|
||||
KDE_CHECK_HEADER(lcms/lcms.h,have_lcms_header='yes',,)
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
AC_DEFINE(LCMS_HEADER, <lcms/lcms.h>, [The correct header])
|
||||
else
|
||||
# Alternative! Debian does it this way...
|
||||
KDE_CHECK_HEADER(lcms.h,have_lcms_header='yes',,)
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
AC_DEFINE(LCMS_HEADER, <lcms.h>, [The correct header])
|
||||
fi
|
||||
fi
|
||||
|
||||
LCMS_LIBS=''
|
||||
have_lcms='no'
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
saved_cflags="$CFLAGS"
|
||||
saved_ldflags="$LDFLAGS"
|
||||
saved_libs=$LIBS
|
||||
LIBS="$LIBS -llcms"
|
||||
CFLAGS="$CFLAGS $all_includes"
|
||||
LDFLAGS="$LDFLAGS $all_libraries"
|
||||
|
||||
AC_TRY_LINK([
|
||||
#define inline __inline /* gcc is in ansi mode */
|
||||
#include LCMS_HEADER
|
||||
#if LCMS_VERSION < 112
|
||||
choke!
|
||||
#endif
|
||||
], [
|
||||
cmsOpenProfileFromFile("foo", "r");
|
||||
],
|
||||
[LCMS_LIBS='-llcms'; have_lcms='yes'])
|
||||
LIBS=$saved_libs
|
||||
CFLAGS=$saved_cflags
|
||||
LDFLAGS=$saved_ldflags
|
||||
fi
|
||||
|
||||
if test -z "$LCMS_LIBS"; then
|
||||
DO_NOT_COMPILE="$DO_NOT_COMPILE libkdcraw"
|
||||
fi
|
||||
|
||||
AC_SUBST(LCMS_LIBS)
|
||||
|
||||
#AM_CONDITIONAL(compile_LIBKDCRAW, [test x$have_lcms != xyes])
|
||||
|
||||
AC_OUTPUT([ libkdcraw/libkdcraw.pc ])
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# enable hidden visibility only if kde >= 3.3.2 and kdelibs has
|
||||
# been compiled with visibility enabled
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
libkdcraw_kdemacros_cppflags=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $all_includes"
|
||||
AC_MSG_CHECKING([if kdemacros.h is usable])
|
||||
AC_COMPILE_IFELSE(
|
||||
[
|
||||
#include <kdemacros.h>
|
||||
#include <string>
|
||||
int other_func( void ) KDE_EXPORT;
|
||||
int other_func( void )
|
||||
{
|
||||
std::string s("KDE_EXPORT");
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(KDEMACROS_USABLE, 1, [kdemacros.h usable]) ],
|
||||
[ AC_MSG_RESULT([no]) ]
|
||||
)
|
||||
CPPFLAGS=$libkdcraw_kdemacros_cppflags
|
||||
AC_LANG_POP(C++)
|
||||
KDE_CREATE_SUBDIRSLIST
|
||||
AM_CONDITIONAL(libkexiv2_SUBDIR_included, test "x$libkexiv2_SUBDIR_included" = xyes)
|
||||
AM_CONDITIONAL(libkipi_SUBDIR_included, test "x$libkipi_SUBDIR_included" = xyes)
|
||||
AM_CONDITIONAL(libkdcraw_SUBDIR_included, test "x$libkdcraw_SUBDIR_included" = xyes)
|
||||
AM_CONDITIONAL(po_SUBDIR_included, test "x$po_SUBDIR_included" = xyes)
|
||||
AC_CONFIG_FILES([ Makefile ])
|
||||
AC_CONFIG_FILES([ libkdcraw/Makefile ])
|
||||
AC_CONFIG_FILES([ libkdcraw/dcraw/Makefile ])
|
||||
AC_CONFIG_FILES([ libkdcraw/icons/Makefile ])
|
||||
AC_CONFIG_FILES([ libkdcraw/libkdcraw/Makefile ])
|
||||
AC_CONFIG_FILES([ po/Makefile ])
|
||||
AC_CONFIG_FILES([ po/ca/Makefile ])
|
||||
AC_CONFIG_FILES([ po/da/Makefile ])
|
||||
AC_CONFIG_FILES([ po/de/Makefile ])
|
||||
AC_CONFIG_FILES([ po/el/Makefile ])
|
||||
AC_CONFIG_FILES([ po/es/Makefile ])
|
||||
AC_CONFIG_FILES([ po/et/Makefile ])
|
||||
AC_CONFIG_FILES([ po/is/Makefile ])
|
||||
AC_CONFIG_FILES([ po/it/Makefile ])
|
||||
AC_CONFIG_FILES([ po/ja/Makefile ])
|
||||
AC_CONFIG_FILES([ po/ms/Makefile ])
|
||||
AC_CONFIG_FILES([ po/nds/Makefile ])
|
||||
AC_CONFIG_FILES([ po/nl/Makefile ])
|
||||
AC_CONFIG_FILES([ po/pa/Makefile ])
|
||||
AC_CONFIG_FILES([ po/pt/Makefile ])
|
||||
AC_CONFIG_FILES([ po/sk/Makefile ])
|
||||
AC_CONFIG_FILES([ po/sr/Makefile ])
|
||||
AC_CONFIG_FILES([ po/sr@Latn/Makefile ])
|
||||
AC_CONFIG_FILES([ po/sv/Makefile ])
|
||||
AC_CONFIG_FILES([ po/th/Makefile ])
|
||||
AC_CONFIG_FILES([ po/uk/Makefile ])
|
||||
AC_OUTPUT
|
||||
dnl Put here things to be done at the very end - telling users
|
||||
dnl about additional packages to install.
|
||||
|
||||
echo ""
|
||||
echo "-- libkdcraw configure results -------------------"
|
||||
|
||||
if test "x$have_lcms" != "xyes"; then
|
||||
echo "-- lcms found..................... NO"
|
||||
echo ""
|
||||
echo "libkdcraw needs Lcms library. You need to install the lcms development package."
|
||||
echo "Lcms website is at http://www.littlecms.com"
|
||||
echo ""
|
||||
all_tests=bad
|
||||
else
|
||||
echo "-- lcms found..................... YES"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
|
||||
if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
|
||||
# And if so, warn when they don't match
|
||||
if test "$kde_libs_prefix" != "$given_prefix"; then
|
||||
# And if kde doesn't know about the prefix yet
|
||||
echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
|
||||
if test $? -ne 0; then
|
||||
echo ""
|
||||
echo "Warning: you chose to install this package in $given_prefix,"
|
||||
echo "but KDE was found in $kde_libs_prefix."
|
||||
echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
|
||||
echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
|
||||
echo "Then restart KDE."
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
|
||||
echo ""
|
||||
echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
|
||||
echo "was not included. Therefore, GCC symbol visibility support remains disabled."
|
||||
echo ""
|
||||
echo "For better performance, consider including the Qt visibility supporting patch"
|
||||
echo "located at:"
|
||||
echo ""
|
||||
echo "http://bugs.kde.org/show_bug.cgi?id=109386"
|
||||
echo ""
|
||||
echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
|
||||
echo "everything will continue to work just fine without it."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if test "$all_tests" = "bad"; then
|
||||
if test ! "$cache_file" = "/dev/null"; then
|
||||
echo ""
|
||||
echo "Please remove the file $cache_file after changing your setup"
|
||||
echo "so that configure will find the changes next time."
|
||||
echo ""
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "Good - your configure finished. Start make now"
|
||||
echo ""
|
||||
fi
|
@ -0,0 +1,7 @@
|
||||
#MIN_CONFIG(3.2)
|
||||
CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
|
||||
|
||||
KDE_ENABLE_HIDDEN_VISIBILITY
|
||||
|
||||
KDE_INIT_DOXYGEN([KEG Libraries API Reference], [Version $VERSION])
|
||||
|
@ -0,0 +1,15 @@
|
||||
Begin4
|
||||
Title: libkdcraw
|
||||
Version: 0.1.4
|
||||
Entered-date: 2008-03-09
|
||||
Description: An library to decode RAW picture files using dcraw command line program
|
||||
Keywords: kde image raw decode dcraw digikam kipi-plugins
|
||||
Author: caulier dot gilles at gmail dot com (Gilles Caulier)
|
||||
marcel dot wiesweg at gmx dot de (Marcel Wiesweg)
|
||||
Maintained-by:
|
||||
Primary-site: http://www.kipi-plugins.org
|
||||
Alternate-site:
|
||||
Original-site:
|
||||
Platforms:
|
||||
Copying-policy: GPL
|
||||
End
|
@ -0,0 +1,12 @@
|
||||
SUBDIRS = dcraw icons libkdcraw
|
||||
|
||||
libkdcrawpkgconfigdir = $(libdir)/pkgconfig
|
||||
libkdcrawpkgconfig_DATA = libkdcraw.pc
|
||||
EXTRA_DIST = libkdcraw.pc.in
|
||||
|
||||
# i18n translation messages
|
||||
messages:
|
||||
LIST=`find . -name \*.h -o -name \*.hh -o -name \*.H -o -name \*.hxx -o -name \*.hpp -o -name \*.cpp -o -name \*.cc -o -name \*.cxx -o -name \*.ecpp -o -name \*.C`; \
|
||||
if test -n "$$LIST"; then \
|
||||
$(XGETTEXT) $$LIST -o $(podir)/libkdcraw.pot; \
|
||||
fi
|
@ -0,0 +1,19 @@
|
||||
dnl Put here things to be done at the very end - telling users
|
||||
dnl about additional packages to install.
|
||||
|
||||
echo ""
|
||||
echo "-- libkdcraw configure results -------------------"
|
||||
|
||||
if test "x$have_lcms" != "xyes"; then
|
||||
echo "-- lcms found..................... NO"
|
||||
echo ""
|
||||
echo "libkdcraw needs Lcms library. You need to install the lcms development package."
|
||||
echo "Lcms website is at http://www.littlecms.com"
|
||||
echo ""
|
||||
all_tests=bad
|
||||
else
|
||||
echo "-- lcms found..................... YES"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -0,0 +1,98 @@
|
||||
AC_ARG_VAR(PKGCONFIGFOUND, [Path to pkg-config])
|
||||
AC_CHECK_PROG(PKGCONFIGFOUND, pkg-config,[yes])
|
||||
|
||||
#-----------------------------------------------------------------
|
||||
# Library API version
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
ABI_MAJOR=3
|
||||
VERSION_INFO="3:0:0"
|
||||
|
||||
AC_SUBST(ABI_MAJOR)
|
||||
AC_SUBST(VERSION_INFO)
|
||||
|
||||
KDCRAW_DIR="\$(libdir)/libkdcraw\$(ABI_MAJOR)"
|
||||
AC_SUBST(KDCRAW_DIR)
|
||||
# AM_PROG_CC_C_O to avoid that automake complains for it
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# lcms check
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
have_lcms_header='no'
|
||||
KDE_CHECK_HEADER(lcms/lcms.h,have_lcms_header='yes',,)
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
AC_DEFINE(LCMS_HEADER, <lcms/lcms.h>, [The correct header])
|
||||
else
|
||||
# Alternative! Debian does it this way...
|
||||
KDE_CHECK_HEADER(lcms.h,have_lcms_header='yes',,)
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
AC_DEFINE(LCMS_HEADER, <lcms.h>, [The correct header])
|
||||
fi
|
||||
fi
|
||||
|
||||
LCMS_LIBS=''
|
||||
have_lcms='no'
|
||||
if test "$have_lcms_header" = 'yes'
|
||||
then
|
||||
saved_cflags="$CFLAGS"
|
||||
saved_ldflags="$LDFLAGS"
|
||||
saved_libs=$LIBS
|
||||
LIBS="$LIBS -llcms"
|
||||
CFLAGS="$CFLAGS $all_includes"
|
||||
LDFLAGS="$LDFLAGS $all_libraries"
|
||||
|
||||
AC_TRY_LINK([
|
||||
#define inline __inline /* gcc is in ansi mode */
|
||||
#include LCMS_HEADER
|
||||
#if LCMS_VERSION < 112
|
||||
choke!
|
||||
#endif
|
||||
], [
|
||||
cmsOpenProfileFromFile("foo", "r");
|
||||
],
|
||||
[LCMS_LIBS='-llcms'; have_lcms='yes'])
|
||||
LIBS=$saved_libs
|
||||
CFLAGS=$saved_cflags
|
||||
LDFLAGS=$saved_ldflags
|
||||
fi
|
||||
|
||||
if test -z "$LCMS_LIBS"; then
|
||||
DO_NOT_COMPILE="$DO_NOT_COMPILE libkdcraw"
|
||||
fi
|
||||
|
||||
AC_SUBST(LCMS_LIBS)
|
||||
|
||||
#AM_CONDITIONAL(compile_LIBKDCRAW, [test x$have_lcms != xyes])
|
||||
|
||||
AC_OUTPUT([ libkdcraw/libkdcraw.pc ])
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# enable hidden visibility only if kde >= 3.3.2 and kdelibs has
|
||||
# been compiled with visibility enabled
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
libkdcraw_kdemacros_cppflags=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $all_includes"
|
||||
AC_MSG_CHECKING([if kdemacros.h is usable])
|
||||
AC_COMPILE_IFELSE(
|
||||
[
|
||||
#include <kdemacros.h>
|
||||
#include <string>
|
||||
int other_func( void ) KDE_EXPORT;
|
||||
int other_func( void )
|
||||
{
|
||||
std::string s("KDE_EXPORT");
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(KDEMACROS_USABLE, 1, [kdemacros.h usable]) ],
|
||||
[ AC_MSG_RESULT([no]) ]
|
||||
)
|
||||
CPPFLAGS=$libkdcraw_kdemacros_cppflags
|
||||
AC_LANG_POP(C++)
|
@ -0,0 +1,296 @@
|
||||
Adobe Digital Negative (DNG)
|
||||
Apple QuickTake 100
|
||||
Apple QuickTake 150
|
||||
Apple QuickTake 200
|
||||
AVT F-080C
|
||||
AVT F-145C
|
||||
AVT F-201C
|
||||
AVT F-510C
|
||||
AVT F-810C
|
||||
Canon PowerShot 600
|
||||
Canon PowerShot A5
|
||||
Canon PowerShot A5 Zoom
|
||||
Canon PowerShot A50
|
||||
Canon PowerShot A460 (CHDK hack)
|
||||
Canon PowerShot A530 (CHDK hack)
|
||||
Canon PowerShot A610 (CHDK hack)
|
||||
Canon PowerShot A620 (CHDK hack)
|
||||
Canon PowerShot A630 (CHDK hack)
|
||||
Canon PowerShot A640 (CHDK hack)
|
||||
Canon PowerShot A650 (CHDK hack)
|
||||
Canon PowerShot A710 IS (CHDK hack)
|
||||
Canon PowerShot A720 IS (CHDK hack)
|
||||
Canon PowerShot Pro70
|
||||
Canon PowerShot Pro90 IS
|
||||
Canon PowerShot G1
|
||||
Canon PowerShot G2
|
||||
Canon PowerShot G3
|
||||
Canon PowerShot G5
|
||||
Canon PowerShot G6
|
||||
Canon PowerShot G7 (CHDK hack)
|
||||
Canon PowerShot G9
|
||||
Canon PowerShot S2 IS (CHDK hack)
|
||||
Canon PowerShot S3 IS (CHDK hack)
|
||||
Canon PowerShot S5 IS (CHDK hack)
|
||||
Canon PowerShot S30
|
||||
Canon PowerShot S40
|
||||
Canon PowerShot S45
|
||||
Canon PowerShot S50
|
||||
Canon PowerShot S60
|
||||
Canon PowerShot S70
|
||||
Canon PowerShot Pro1
|
||||
Canon EOS D30
|
||||
Canon EOS D60
|
||||
Canon EOS 5D
|
||||
Canon EOS 10D
|
||||
Canon EOS 20D
|
||||
Canon EOS 30D
|
||||
Canon EOS 40D
|
||||
Canon EOS 300D / Digital Rebel / Kiss Digital
|
||||
Canon EOS 350D / Digital Rebel XT / Kiss Digital N
|
||||
Canon EOS 400D / Digital Rebel XTi / Kiss Digital X
|
||||
Canon EOS D2000C
|
||||
Canon EOS-1D
|
||||
Canon EOS-1DS
|
||||
Canon EOS-1D Mark II
|
||||
Canon EOS-1D Mark III
|
||||
Canon EOS-1D Mark II N
|
||||
Canon EOS-1Ds Mark II
|
||||
Canon EOS-1Ds Mark III
|
||||
Casio QV-2000UX
|
||||
Casio QV-3000EX
|
||||
Casio QV-3500EX
|
||||
Casio QV-4000
|
||||
Casio QV-5700
|
||||
Casio QV-R41
|
||||
Casio QV-R51
|
||||
Casio QV-R61
|
||||
Casio EX-S100
|
||||
Casio EX-Z4
|
||||
Casio EX-Z50
|
||||
Casio EX-Z55
|
||||
Casio Exlim Pro 505
|
||||
Casio Exlim Pro 600
|
||||
Casio Exlim Pro 700
|
||||
Contax N Digital
|
||||
Creative PC-CAM 600
|
||||
Epson R-D1
|
||||
Foculus 531C
|
||||
Fuji FinePix E550
|
||||
Fuji FinePix E900
|
||||
Fuji FinePix F700
|
||||
Fuji FinePix F710
|
||||
Fuji FinePix F800
|
||||
Fuji FinePix F810
|
||||
Fuji FinePix S2Pro
|
||||
Fuji FinePix S3Pro
|
||||
Fuji FinePix S5Pro
|
||||
Fuji FinePix S20Pro
|
||||
Fuji FinePix S5000
|
||||
Fuji FinePix S5100/S5500
|
||||
Fuji FinePix S5200/S5600
|
||||
Fuji FinePix S6000fd
|
||||
Fuji FinePix S7000
|
||||
Fuji FinePix S9000/S9500
|
||||
Fuji FinePix S9100/S9600
|
||||
Fuji IS-1
|
||||
Hasselblad CFV
|
||||
Hasselblad H3D
|
||||
Imacon Ixpress 16-megapixel
|
||||
Imacon Ixpress 22-megapixel
|
||||
Imacon Ixpress 39-megapixel
|
||||
ISG 2020x1520
|
||||
Kodak DC20 (see Oliver Hartman's page)
|
||||
Kodak DC25 (see Jun-ichiro Itoh's page)
|
||||
Kodak DC40
|
||||
Kodak DC50
|
||||
Kodak DC120 (also try kdc2tiff)
|
||||
Kodak DCS200
|
||||
Kodak DCS315C
|
||||
Kodak DCS330C
|
||||
Kodak DCS420
|
||||
Kodak DCS460
|
||||
Kodak DCS460A
|
||||
Kodak DCS520C
|
||||
Kodak DCS560C
|
||||
Kodak DCS620C
|
||||
Kodak DCS620X
|
||||
Kodak DCS660C
|
||||
Kodak DCS660M
|
||||
Kodak DCS720X
|
||||
Kodak DCS760C
|
||||
Kodak DCS760M
|
||||
Kodak EOSDCS1
|
||||
Kodak EOSDCS3B
|
||||
Kodak NC2000F
|
||||
Kodak ProBack
|
||||
Kodak PB645C
|
||||
Kodak PB645H
|
||||
Kodak PB645M
|
||||
Kodak DCS Pro 14n
|
||||
Kodak DCS Pro 14nx
|
||||
Kodak DCS Pro SLR/c
|
||||
Kodak DCS Pro SLR/n
|
||||
Kodak C330
|
||||
Kodak P850
|
||||
Kodak P880
|
||||
Kodak KAI-0340
|
||||
Konica KD-400Z
|
||||
Konica KD-510Z
|
||||
Leaf Aptus 17
|
||||
Leaf Aptus 22
|
||||
Leaf Aptus 54S
|
||||
Leaf Aptus 65
|
||||
Leaf Aptus 75
|
||||
Leaf Aptus 75S
|
||||
Leaf Cantare
|
||||
Leaf CatchLight
|
||||
Leaf CMost
|
||||
Leaf DCB2
|
||||
Leaf Valeo 6
|
||||
Leaf Valeo 11
|
||||
Leaf Valeo 17
|
||||
Leaf Valeo 22
|
||||
Leaf Volare
|
||||
Leica Digilux 2
|
||||
Leica Digilux 3
|
||||
Leica D-LUX2
|
||||
Leica D-LUX3
|
||||
Leica V-LUX1
|
||||
Logitech Fotoman Pixtura
|
||||
Mamiya ZD
|
||||
Micron 2010
|
||||
Minolta RD175
|
||||
Minolta DiMAGE 5
|
||||
Minolta DiMAGE 7
|
||||
Minolta DiMAGE 7i
|
||||
Minolta DiMAGE 7Hi
|
||||
Minolta DiMAGE A1
|
||||
Minolta DiMAGE A2
|
||||
Minolta DiMAGE A200
|
||||
Minolta DiMAGE G400
|
||||
Minolta DiMAGE G500
|
||||
Minolta DiMAGE G530
|
||||
Minolta DiMAGE G600
|
||||
Minolta DiMAGE Z2
|
||||
Minolta Alpha/Dynax/Maxxum 5D
|
||||
Minolta Alpha/Dynax/Maxxum 7D
|
||||
Nikon D1
|
||||
Nikon D1H
|
||||
Nikon D1X
|
||||
Nikon D2H
|
||||
Nikon D2Hs
|
||||
Nikon D2X
|
||||
Nikon D2Xs
|
||||
Nikon D3
|
||||
Nikon D40
|
||||
Nikon D40X
|
||||
Nikon D50
|
||||
Nikon D70
|
||||
Nikon D70s
|
||||
Nikon D80
|
||||
Nikon D100
|
||||
Nikon D200
|
||||
Nikon D300
|
||||
Nikon E700 ("DIAG RAW" hack)
|
||||
Nikon E800 ("DIAG RAW" hack)
|
||||
Nikon E880 ("DIAG RAW" hack)
|
||||
Nikon E900 ("DIAG RAW" hack)
|
||||
Nikon E950 ("DIAG RAW" hack)
|
||||
Nikon E990 ("DIAG RAW" hack)
|
||||
Nikon E995 ("DIAG RAW" hack)
|
||||
Nikon E2100 ("DIAG RAW" hack)
|
||||
Nikon E2500 ("DIAG RAW" hack)
|
||||
Nikon E3200 ("DIAG RAW" hack)
|
||||
Nikon E3700 ("DIAG RAW" hack)
|
||||
Nikon E4300 ("DIAG RAW" hack)
|
||||
Nikon E4500 ("DIAG RAW" hack)
|
||||
Nikon E5000
|
||||
Nikon E5400
|
||||
Nikon E5700
|
||||
Nikon E8400
|
||||
Nikon E8700
|
||||
Nikon E8800
|
||||
Nikon Coolpix S6 ("DIAG RAW" hack)
|
||||
Nokia N95
|
||||
Olympus C3030Z
|
||||
Olympus C5050Z
|
||||
Olympus C5060WZ
|
||||
Olympus C7070WZ
|
||||
Olympus C70Z,C7000Z
|
||||
Olympus C740UZ
|
||||
Olympus C770UZ
|
||||
Olympus C8080WZ
|
||||
Olympus E-1
|
||||
Olympus E-3
|
||||
Olympus E-10
|
||||
Olympus E-20
|
||||
Olympus E-300
|
||||
Olympus E-330
|
||||
Olympus E-400
|
||||
Olympus E-410
|
||||
Olympus E-500
|
||||
Olympus E-510
|
||||
Olympus SP310
|
||||
Olympus SP320
|
||||
Olympus SP350
|
||||
Olympus SP500UZ
|
||||
Olympus SP510UZ
|
||||
Olympus SP550UZ
|
||||
Olympus SP560UZ
|
||||
Panasonic DMC-FZ8
|
||||
Panasonic DMC-FZ18
|
||||
Panasonic DMC-FZ30
|
||||
Panasonic DMC-FZ50
|
||||
Panasonic DMC-L1
|
||||
Panasonic DMC-L10
|
||||
Panasonic DMC-LC1
|
||||
Panasonic DMC-LX1
|
||||
Panasonic DMC-LX2
|
||||
Pentax *ist D
|
||||
Pentax *ist DL
|
||||
Pentax *ist DL2
|
||||
Pentax *ist DS
|
||||
Pentax *ist DS2
|
||||
Pentax K10D
|
||||
Pentax K20D
|
||||
Pentax K100D
|
||||
Pentax K100D Super
|
||||
Pentax Optio S
|
||||
Pentax Optio S4
|
||||
Pentax Optio 33WR
|
||||
Pentax Optio 750Z
|
||||
Phase One LightPhase
|
||||
Phase One H 10
|
||||
Phase One H 20
|
||||
Phase One H 25
|
||||
Phase One P 20
|
||||
Phase One P 25
|
||||
Phase One P 30
|
||||
Phase One P 45
|
||||
Pixelink A782
|
||||
Polaroid x530
|
||||
Rollei d530flex
|
||||
RoverShot 3320af
|
||||
Samsung GX-1S
|
||||
Samsung GX-10
|
||||
Sarnoff 4096x5440
|
||||
Sigma SD9
|
||||
Sigma SD10
|
||||
Sigma SD14
|
||||
Sinar 3072x2048
|
||||
Sinar 4080x4080
|
||||
Sinar 4080x5440
|
||||
Sinar STI format
|
||||
SMaL Ultra-Pocket 3
|
||||
SMaL Ultra-Pocket 4
|
||||
SMaL Ultra-Pocket 5
|
||||
Sony DSC-F828
|
||||
Sony DSC-R1
|
||||
Sony DSC-V3
|
||||
Sony DSLR-A100
|
||||
Sony DSLR-A200
|
||||
Sony DSLR-A350
|
||||
Sony DSLR-A700
|
||||
Sony XCD-SX910CR
|
||||
STV680 VGA
|
@ -0,0 +1,38 @@
|
||||
# Requires by dcraw.c implementation.
|
||||
KDE_OPTIONS = nofinal
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
#-- dcraw binary -------------------------------------------------
|
||||
|
||||
# libkdcraw use a dedicaced dcraw binary program to run. This is mandatory
|
||||
# since dcraw author have broken the command line options
|
||||
# compatibility with the 8.x serie.
|
||||
# Also, dcraw is not available like a library.
|
||||
# The dcraw.c source code is just a copy of official implementation, but
|
||||
# this one have been completly tested with libkdcraw core.
|
||||
# Note: dcraw project page is http://cybercom.net/~dcoffin
|
||||
|
||||
bin_PROGRAMS = kdcraw
|
||||
bindir = $(KDCRAW_DIR)
|
||||
|
||||
# The manual page of binary program. (Don't install manpage of a library
|
||||
# internal helper app
|
||||
#man_MANS = kdcraw.1
|
||||
|
||||
# This line is require to prevent broken compilation with -std=iso9899:1990 gcc option.
|
||||
# In fact, dcraw.c use lcms.h witch use the "inline" keyword witch do not exist in pure C
|
||||
# implementation. The -Dinline option please compiler to see inline with this option.
|
||||
# Note : using -std-c99 instead -std=iso9899:1990 is not possible because some compiler
|
||||
# do not support it.
|
||||
# Thanks to Andras Mantia for this tip.
|
||||
kdcraw_CFLAGS = -Dinline= -w $(all_includes)
|
||||
|
||||
kdcraw_SOURCES = dcraw.c
|
||||
|
||||
kdcraw_LDFLAGS = $(all_libraries) $(LIBJPEG) $(LCMS_LIBS)
|
||||
|
||||
# Install Camera list supported by dcraw.
|
||||
cameralistdir = $(KDCRAW_DIR)
|
||||
cameralist_DATA = CAMERALIST
|
||||
|
@ -0,0 +1,64 @@
|
||||
DCRAW BACKPORT GUIDELINE.
|
||||
-----------------------------
|
||||
|
||||
1/ Backport "dcraw.c" source code.
|
||||
|
||||
The dcraw.c file must be updated periodically to support new RAW files format.
|
||||
The current implementation can be found at this url:
|
||||
|
||||
http://cybercom.net/~dcoffin/dcraw/dcraw.c
|
||||
|
||||
Following lines need to be changed in dcraw.c :
|
||||
|
||||
==> With "-i -v" options to report Make and Model identification properly using separate lines
|
||||
on the console a printf need to be added like this:
|
||||
|
||||
int CLASS main (int argc, char **argv)
|
||||
{
|
||||
...
|
||||
/* NOTE: digiKam Fix : separate output of "make" and "model" information.
|
||||
printf (_("Camera: %s %s\n"), make, model); */
|
||||
printf (_("Camera: %s\n"), make);
|
||||
printf (_("Model: %s\n"), model);
|
||||
...
|
||||
}
|
||||
|
||||
These information are used by KDcraw class to give some metadata with Exiv2 unsupported RAW file formats.
|
||||
|
||||
No others part in dcraw.c source must be changed. This is not the goal to libkdcraw to re-implement RAW file decoding algorithms.
|
||||
|
||||
Rename the old "dcraw.c" from svn to "dcraw-old.c" before to update it.
|
||||
|
||||
|
||||
2/ Backport "dcraw.1" man page.
|
||||
|
||||
wget http://www.cybercom.net/~dcoffin/dcraw/dcraw.1
|
||||
|
||||
Just copying the new dcraw man page from Dave Coffin web site. Renaming it to "kdcraw.1". Nothing must be changed in this file.
|
||||
|
||||
|
||||
3/ Check new options.
|
||||
|
||||
Look into "int CLASS main (int argc, char **argv)" method from new "dcraw.c".
|
||||
Compare it to "dcraw-old.c", about:
|
||||
|
||||
-the new options provided to decoding RAW file pictures. The option list is given on the console when kdcraw is invoked from command line without arguments. Look into the detailed description of all options using man page. The DcrawSettingsWidget, RawDecodingSettings, and KDcraw class need to be updated accordingly, especially the KDcraw::loadFromDcraw() method.
|
||||
|
||||
-the new information provided by -i -v command line options. The KDcraw::rawFileIdentify() method and the DcrawInfoContainer need to be updated accordingly.
|
||||
|
||||
|
||||
4/ Regression tests.
|
||||
|
||||
Recompile libkdcraw, Raw Converter kipi-plugin, and digiKam. All must work fine to use RAW file decoding into digiKam image editor and RAW Converter tool.
|
||||
|
||||
|
||||
5/ Clean up.
|
||||
|
||||
Remove the "dcraw-old.c" file. Not need to archive it in svn.
|
||||
|
||||
|
||||
6/ Update the internal dcraw version number returned by KDcraw::DcrawBinary::InternalVersion() method
|
||||
(Check the "#define VERSION ..." string from dcraw.c).
|
||||
|
||||
7/ On DCRaw project page (http://cybercom.net/~dcoffin/dcraw), extract the current camera list
|
||||
supported and update the file "CAMERALIST".
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,267 @@
|
||||
.\"
|
||||
.\" Man page for dcraw
|
||||
.\"
|
||||
.\" Copyright (c) 2008 by David Coffin
|
||||
.\"
|
||||
.\" You may distribute without restriction.
|
||||
.\"
|
||||
.\" David Coffin
|
||||
.\" dcoffin a cybercom o net
|
||||
.\" http://www.cybercom.net/~dcoffin
|
||||
.\"
|
||||
.TH dcraw 1 "February 6, 2008"
|
||||
.LO 1
|
||||
.SH NAME
|
||||
dcraw - command-line decoder for raw digital photos
|
||||
.SH SYNOPSIS
|
||||
.B dcraw
|
||||
[\fIOPTION\fR]... [\fIFILE\fR]...
|
||||
.SH DESCRIPTION
|
||||
.B dcraw
|
||||
decodes raw photos, displays metadata, and extracts thumbnails.
|
||||
.SH GENERAL OPTIONS
|
||||
.TP
|
||||
.B -v
|
||||
Print verbose messages, not just warnings and errors.
|
||||
.TP
|
||||
.B -c
|
||||
Write decoded images or thumbnails to standard output.
|
||||
.TP
|
||||
.B -e
|
||||
Extract the camera-generated thumbnail, not the raw image.
|
||||
You'll get either a JPEG or a PPM file, depending on the camera.
|
||||
.TP
|
||||
.B -z
|
||||
Change the access and modification times of an AVI, JPEG, TIFF or raw
|
||||
file to when the photo was taken, assuming that the camera clock
|
||||
was set to Universal Time.
|
||||
.TP
|
||||
.B -i
|
||||
Identify files but don't decode them.
|
||||
Exit status is 0 if
|
||||
.B dcraw
|
||||
can decode the last file, 1 if it can't.
|
||||
.B -i -v
|
||||
shows metadata.
|
||||
.TP
|
||||
.B ""
|
||||
.B dcraw
|
||||
cannot decode JPEG files!!
|
||||
.SH REPAIR OPTIONS
|
||||
.TP
|
||||
.B -P deadpixels.txt
|
||||
Read the dead pixel list from this file instead of ".badpixels".
|
||||
See
|
||||
.B FILES
|
||||
for a description of the format.
|
||||
.TP
|
||||
.B -K darkframe.pgm
|
||||
Subtract a dark frame from the raw data. To generate a
|
||||
dark frame, shoot a raw photo with no light and do
|
||||
.BR dcraw\ -D\ -4\ -j\ -t\ 0 .
|
||||
.TP
|
||||
.B -k darkness
|
||||
When shadows appear foggy, you need to raise the darkness level.
|
||||
To measure this, apply
|
||||
.B pamsumm -mean
|
||||
to the dark frame generated above.
|
||||
.TP
|
||||
.B -S saturation
|
||||
When highlights appear pink, you need to lower the saturation level.
|
||||
To measure this, take a picture of something shiny and do
|
||||
.B dcraw -D -4 -j -c
|
||||
photo.raw
|
||||
.B | pamsumm -max
|
||||
.TP
|
||||
.B ""
|
||||
The default darkness and saturation are usually correct.
|
||||
.TP
|
||||
.B -n noise_threshold
|
||||
Use wavelets to erase noise while preserving real detail.
|
||||
The best threshold should be somewhere between 100 and 1000.
|
||||
.TP
|
||||
.B -C red_mag blue_mag
|
||||
Enlarge the raw red and blue layers by the given factors,
|
||||
typically 0.999 to 1.001, to correct chromatic aberration.
|
||||
.TP
|
||||
.B -H 0
|
||||
Clip all highlights to solid white (default).
|
||||
.TP
|
||||
.B -H 1
|
||||
Leave highlights unclipped in various shades of pink.
|
||||
.TP
|
||||
.B -H 2
|
||||
Blend clipped and unclipped values together for a gradual fade
|
||||
to white.
|
||||
.TP
|
||||
.B -H 3+
|
||||
Reconstruct highlights. Low numbers favor whites; high numbers
|
||||
favor colors. Try
|
||||
.B -H 5
|
||||
as a compromise. If that's not good enough, do
|
||||
.BR -H\ 9 ,
|
||||
cut out the non-white highlights, and paste them into an image
|
||||
generated with
|
||||
.BR -H\ 3 .
|
||||
.SH COLOR OPTIONS
|
||||
By default,
|
||||
.B dcraw
|
||||
uses a fixed white balance based on a color chart illuminated
|
||||
with a standard D65 lamp.
|
||||
.TP
|
||||
.B -w
|
||||
Use the white balance specified by the camera.
|
||||
If this is not found, print a warning and use another method.
|
||||
.TP
|
||||
.B -a
|
||||
Calculate the white balance by averaging the entire image.
|
||||
.TP
|
||||
.B -A left top width height
|
||||
Calculate the white balance by averaging a rectangular area.
|
||||
First do
|
||||
.B dcraw\ -j\ -t\ 0
|
||||
and select an area of neutral grey color.
|
||||
.TP
|
||||
.B -r mul0 mul1 mul2 mul3
|
||||
Specify your own raw white balance.
|
||||
These multipliers can be cut and pasted from the output of
|
||||
.BR dcraw\ -v .
|
||||
.TP
|
||||
.BR +M " or " -M
|
||||
Use (or don't use) any color matrix from the camera metadata.
|
||||
The default is
|
||||
.B +M
|
||||
if
|
||||
.B -w
|
||||
is set,
|
||||
.B -M
|
||||
otherwise.
|
||||
This option only affects Olympus, Leaf, and Phase One cameras.
|
||||
.TP
|
||||
.B -o [0-5]
|
||||
Select the output colorspace when the
|
||||
.B -p
|
||||
option is not used:
|
||||
|
||||
.B \t0
|
||||
\ \ Raw color (unique to each camera)
|
||||
.br
|
||||
.B \t1
|
||||
\ \ sRGB D65 (default)
|
||||
.br
|
||||
.B \t2
|
||||
\ \ Adobe RGB (1998) D65
|
||||
.br
|
||||
.B \t3
|
||||
\ \ Wide Gamut RGB D65
|
||||
.br
|
||||
.B \t4
|
||||
\ \ Kodak ProPhoto RGB D65
|
||||
.br
|
||||
.B \t5
|
||||
\ \ XYZ
|
||||
.TP
|
||||
.BR -p\ camera.icm \ [\ -o\ output.icm \ ]
|
||||
Use ICC profiles to define the camera's raw colorspace and the
|
||||
desired output colorspace (sRGB by default).
|
||||
.TP
|
||||
.B -p embed
|
||||
Use the ICC profile embedded in the raw photo.
|
||||
.SH INTERPOLATION OPTIONS
|
||||
.TP
|
||||
.B -d
|
||||
Show the raw data as a grayscale image with no interpolation.
|
||||
Good for photographing black-and-white documents.
|
||||
.TP
|
||||
.B -D
|
||||
Same as
|
||||
.BR -d ,
|
||||
but totally raw (no color scaling).
|
||||
.TP
|
||||
.B -h
|
||||
Output a half-size color image. Twice as fast as
|
||||
.BR -q\ 0 .
|
||||
.TP
|
||||
.B -q 0
|
||||
Use high-speed, low-quality bilinear interpolation.
|
||||
.TP
|
||||
.B -q 1
|
||||
Use Variable Number of Gradients (VNG) interpolation.
|
||||
.TP
|
||||
.B -q 2
|
||||
Use Patterned Pixel Grouping (PPG) interpolation.
|
||||
.TP
|
||||
.B -q 3
|
||||
Use Adaptive Homogeneity-Directed (AHD) interpolation.
|
||||
.TP
|
||||
.B -f
|
||||
Interpolate RGB as four colors. Use this if the output shows
|
||||
false 2x2 meshes with VNG or mazes with AHD.
|
||||
.TP
|
||||
.B -m number_of_passes
|
||||
After interpolation, clean up color artifacts by repeatedly
|
||||
applying a 3x3 median filter to the R-G and B-G channels.
|
||||
.SH OUTPUT OPTIONS
|
||||
By default,
|
||||
.B dcraw
|
||||
writes PGM/PPM/PAM with 8-bit samples, a BT.709 gamma curve,
|
||||
a histogram-based white level, and no metadata.
|
||||
.TP
|
||||
.B -W
|
||||
Use a fixed white level, ignoring the image histogram.
|
||||
.TP
|
||||
.B -b brightness
|
||||
Divide the white level by this number, 1.0 by default.
|
||||
.TP
|
||||
.B -4
|
||||
Write 16-bit linear samples (fixed white level, no gamma).
|
||||
.TP
|
||||
.B -T
|
||||
Write TIFF with metadata instead of PGM/PPM/PAM.
|
||||
.TP
|
||||
.B -t [0-7,90,180,270]
|
||||
Flip the output image. By default,
|
||||
.B dcraw
|
||||
applies the flip specified by the camera.
|
||||
.B -t 0
|
||||
disables all flipping.
|
||||
.TP
|
||||
.B -j
|
||||
For Fuji\ Super\ CCD cameras, show the image tilted 45 degrees.
|
||||
For cameras with non-square pixels, do not stretch the image to
|
||||
its correct aspect ratio. In any case, this option guarantees
|
||||
that each output pixel corresponds to one raw pixel.
|
||||
.TP
|
||||
.BR "-s [0..N-1]" " or " "-s all"
|
||||
If a file contains N raw images, choose one or "all" to decode.
|
||||
For example, Fuji\ Super\ CCD\ SR cameras generate a second image
|
||||
underexposed four stops to show detail in the highlights.
|
||||
.SH FILES
|
||||
.TP
|
||||
\:./.badpixels, ../.badpixels, ../../.badpixels, ...
|
||||
List of your camera's dead pixels, so that
|
||||
.B dcraw
|
||||
can interpolate around them. Each line specifies the column,
|
||||
row, and UNIX time of death for one pixel. For example:
|
||||
.sp 1
|
||||
.nf
|
||||
962 91 1028350000 # died between August 1 and 4, 2002
|
||||
1285 1067 0 # don't know when this pixel died
|
||||
.fi
|
||||
.sp 1
|
||||
These coordinates are before any cropping or rotation, so use
|
||||
.B dcraw -j -t 0
|
||||
to locate dead pixels.
|
||||
.SH "SEE ALSO"
|
||||
.BR pgm (5),
|
||||
.BR ppm (5),
|
||||
.BR pam (5),
|
||||
.BR pamsumm (1),
|
||||
.BR pnmgamma (1),
|
||||
.BR pnmtotiff (1),
|
||||
.BR pnmtopng (1),
|
||||
.BR gphoto2 (1),
|
||||
.BR cjpeg (1),
|
||||
.BR djpeg (1)
|
||||
.SH AUTHOR
|
||||
Written by David Coffin, dcoffin a cybercom o net
|
@ -0,0 +1 @@
|
||||
KDE_ICON = kdcraw
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
@ -0,0 +1,213 @@
|
||||
<?xml version = '1.0'?>
|
||||
<kdevelop>
|
||||
<general>
|
||||
<author>Caulier Gilles</author>
|
||||
<email>caulier dot gilles at kdemail dot net</email>
|
||||
<version>$VERSION$</version>
|
||||
<projectmanagement>KDevAutoProject</projectmanagement>
|
||||
<primarylanguage>C</primarylanguage>
|
||||
<ignoreparts/>
|
||||
<projectdirectory>.</projectdirectory>
|
||||
<absoluteprojectpath>false</absoluteprojectpath>
|
||||
<description></description>
|
||||
<versioncontrol></versioncontrol>
|
||||
</general>
|
||||
<kdevautoproject>
|
||||
<general>
|
||||
<activetarget>src/libkdcraw</activetarget>
|
||||
<useconfiguration>default</useconfiguration>
|
||||
</general>
|
||||
<run>
|
||||
<mainprogram>/home/gilles/Documents/Devel/SVN/trunk/extragear/libs/libkdcraw/dcraw/kdcraw</mainprogram>
|
||||
<directoryradio>custom</directoryradio>
|
||||
<customdirectory>/home/gilles/Documents/Devel/SVN/trunk/extragear/libs/libkdcraw/dcraw/</customdirectory>
|
||||
<programargs>-v -5 ./photo.mrw</programargs>
|
||||
<terminal>false</terminal>
|
||||
<autocompile>true</autocompile>
|
||||
<envvars/>
|
||||
</run>
|
||||
<configurations>
|
||||
<optimized>
|
||||
<builddir>optimized</builddir>
|
||||
<ccompiler>GccOptions</ccompiler>
|
||||
<cxxcompiler>GppOptions</cxxcompiler>
|
||||
<f77compiler>G77Options</f77compiler>
|
||||
<cflags>-O2 -g0</cflags>
|
||||
</optimized>
|
||||
<debug>
|
||||
<configargs>--enable-debug=full</configargs>
|
||||
<builddir/>
|
||||
<ccompiler>kdevgccoptions</ccompiler>
|
||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
||||
<f77compiler>kdevpgf77options</f77compiler>
|
||||
<cflags>-O0 -g3</cflags>
|
||||
<envvars/>
|
||||
<topsourcedir>../</topsourcedir>
|
||||
<cppflags/>
|
||||
<ldflags/>
|
||||
<ccompilerbinary/>
|
||||
<cxxcompilerbinary/>
|
||||
<f77compilerbinary/>
|
||||
<cxxflags/>
|
||||
<f77flags/>
|
||||
</debug>
|
||||
<default>
|
||||
<envvars/>
|
||||
<configargs>--enable-debug=full</configargs>
|
||||
<builddir></builddir>
|
||||
<topsourcedir>../</topsourcedir>
|
||||
<cppflags></cppflags>
|
||||
<ldflags></ldflags>
|
||||
<ccompiler>kdevgccoptions</ccompiler>
|
||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
||||
<f77compiler>kdevpgf77options</f77compiler>
|
||||
<ccompilerbinary></ccompilerbinary>
|
||||
<cxxcompilerbinary></cxxcompilerbinary>
|
||||
<f77compilerbinary></f77compilerbinary>
|
||||
<cflags></cflags>
|
||||
<cxxflags></cxxflags>
|
||||
<f77flags></f77flags>
|
||||
</default>
|
||||
</configurations>
|
||||
<make>
|
||||
<envvars>
|
||||
<envvar value="1" name="WANT_AUTOCONF_2_5" />
|
||||
<envvar value="1" name="WANT_AUTOMAKE_1_6" />
|
||||
</envvars>
|
||||
<abortonerror>true</abortonerror>
|
||||
<runmultiplejobs>false</runmultiplejobs>
|
||||
<numberofjobs>1</numberofjobs>
|
||||
<dontact>false</dontact>
|
||||
<makebin></makebin>
|
||||
<prio>0</prio>
|
||||
</make>
|
||||
</kdevautoproject>
|
||||
<kdevdebugger>
|
||||
<general>
|
||||
<dbgshell>libtool</dbgshell>
|
||||
<programargs>-v -5 ./photo.mrw</programargs>
|
||||
<gdbpath></gdbpath>
|
||||
<configGdbScript></configGdbScript>
|
||||
<runShellScript></runShellScript>
|
||||
<runGdbScript></runGdbScript>
|
||||
<breakonloadinglibs>true</breakonloadinglibs>
|
||||
<separatetty>false</separatetty>
|
||||
<floatingtoolbar>false</floatingtoolbar>
|
||||
</general>
|
||||
<display>
|
||||
<staticmembers>false</staticmembers>
|
||||
<demanglenames>true</demanglenames>
|
||||
<outputradix>10</outputradix>
|
||||
</display>
|
||||
</kdevdebugger>
|
||||
<kdevdoctreeview>
|
||||
<ignoretocs>
|
||||
<toc>ada</toc>
|
||||
<toc>ada_bugs_gcc</toc>
|
||||
<toc>bash</toc>
|
||||
<toc>bash_bugs</toc>
|
||||
<toc>clanlib</toc>
|
||||
<toc>fortran_bugs_gcc</toc>
|
||||
<toc>gnome1</toc>
|
||||
<toc>gnustep</toc>
|
||||
<toc>gtk</toc>
|
||||
<toc>gtk_bugs</toc>
|
||||
<toc>haskell</toc>
|
||||
<toc>haskell_bugs_ghc</toc>
|
||||
<toc>java_bugs_gcc</toc>
|
||||
<toc>java_bugs_sun</toc>
|
||||
<toc>kde2book</toc>
|
||||
<toc>libstdc++</toc>
|
||||
<toc>opengl</toc>
|
||||
<toc>pascal_bugs_fp</toc>
|
||||
<toc>php</toc>
|
||||
<toc>php_bugs</toc>
|
||||
<toc>perl</toc>
|
||||
<toc>perl_bugs</toc>
|
||||
<toc>python</toc>
|
||||
<toc>python_bugs</toc>
|
||||
<toc>qt-kdev3</toc>
|
||||
<toc>ruby</toc>
|
||||
<toc>ruby_bugs</toc>
|
||||
<toc>sdl</toc>
|
||||
<toc>stl</toc>
|
||||
<toc>sw</toc>
|
||||
<toc>w3c-dom-level2-html</toc>
|
||||
<toc>w3c-svg</toc>
|
||||
<toc>w3c-uaag10</toc>
|
||||
<toc>wxwidgets_bugs</toc>
|
||||
</ignoretocs>
|
||||
<ignoreqt_xml>
|
||||
<toc>Guide to the Qt Translation Tools</toc>
|
||||
<toc>Qt Assistant Manual</toc>
|
||||
<toc>Qt Designer Manual</toc>
|
||||
<toc>Qt Reference Documentation</toc>
|
||||
<toc>qmake User Guide</toc>
|
||||
</ignoreqt_xml>
|
||||
<ignoredoxygen>
|
||||
<toc>KDE Libraries (Doxygen)</toc>
|
||||
</ignoredoxygen>
|
||||
</kdevdoctreeview>
|
||||
<kdevfilecreate>
|
||||
<filetypes/>
|
||||
<useglobaltypes>
|
||||
<type ext="c" />
|
||||
<type ext="h" />
|
||||
</useglobaltypes>
|
||||
</kdevfilecreate>
|
||||
<kdevcppsupport>
|
||||
<references/>
|
||||
<codecompletion>
|
||||
<includeGlobalFunctions>true</includeGlobalFunctions>
|
||||
<includeTypes>true</includeTypes>
|
||||
<includeEnums>true</includeEnums>
|
||||
<includeTypedefs>false</includeTypedefs>
|
||||
<automaticCodeCompletion>true</automaticCodeCompletion>
|
||||
<automaticArgumentsHint>true</automaticArgumentsHint>
|
||||
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
||||
<codeCompletionDelay>250</codeCompletionDelay>
|
||||
<argumentsHintDelay>400</argumentsHintDelay>
|
||||
<headerCompletionDelay>250</headerCompletionDelay>
|
||||
</codecompletion>
|
||||
<qt>
|
||||
<used>false</used>
|
||||
<version>3</version>
|
||||
<root>/usr/lib/qt3/</root>
|
||||
</qt>
|
||||
<creategettersetter>
|
||||
<prefixGet></prefixGet>
|
||||
<prefixSet>set</prefixSet>
|
||||
<prefixVariable>m_,_</prefixVariable>
|
||||
<parameterName>theValue</parameterName>
|
||||
<inlineGet>true</inlineGet>
|
||||
<inlineSet>true</inlineSet>
|
||||
</creategettersetter>
|
||||
</kdevcppsupport>
|
||||
<kdevfileview>
|
||||
<groups>
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<hidenonlocation>false</hidenonlocation>
|
||||
</groups>
|
||||
<tree>
|
||||
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
</tree>
|
||||
</kdevfileview>
|
||||
<cppsupportpart>
|
||||
<filetemplates>
|
||||
<interfacesuffix>.h</interfacesuffix>
|
||||
<implementationsuffix>.cpp</implementationsuffix>
|
||||
</filetemplates>
|
||||
</cppsupportpart>
|
||||
<kdevdocumentation>
|
||||
<projectdoc>
|
||||
<docsystem></docsystem>
|
||||
<docurl></docurl>
|
||||
<usermanualurl></usermanualurl>
|
||||
</projectdoc>
|
||||
</kdevdocumentation>
|
||||
<ctagspart>
|
||||
<customArguments></customArguments>
|
||||
<customTagfilePath></customTagfilePath>
|
||||
</ctagspart>
|
||||
</kdevelop>
|
@ -0,0 +1,12 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: libkdcraw
|
||||
Description: KDE interface library for dcraw command line program to decode RAW picture files
|
||||
URL: http://www.kipi-plugins.org
|
||||
Requires:
|
||||
Version: 0.1.4
|
||||
Libs: -L${libdir} -lkdcraw
|
||||
Cflags: -I${includedir}
|
@ -0,0 +1,18 @@
|
||||
METASOURCES = AUTO
|
||||
|
||||
KDE_CXXFLAGS = -DKDCRAW_DIR='"$(KDCRAW_DIR)"'
|
||||
|
||||
INCLUDES= $(all_includes)
|
||||
|
||||
lib_LTLIBRARIES = libkdcraw.la
|
||||
|
||||
libkdcraw_la_SOURCES = dcrawbinary.cpp kdcraw.cpp dcrawsettingswidget.cpp
|
||||
|
||||
libkdcraw_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) -version-info $(VERSION_INFO) -no-undefined
|
||||
libkdcraw_la_LIBADD = $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT)
|
||||
|
||||
libkdcrawinclude_HEADERS = rawdecodingsettings.h kdcraw.h dcrawbinary.h dcrawsettingswidget.h \
|
||||
dcrawinfocontainer.h rawfiles.h libkdcraw_export.h version.h
|
||||
|
||||
libkdcrawincludedir = $(includedir)/libkdcraw
|
||||
|
@ -0,0 +1,208 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-04-13
|
||||
* Description : detection of dcraw binary program
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
// Qt includes.
|
||||
|
||||
#include <qfileinfo.h>
|
||||
|
||||
// KDE includes
|
||||
|
||||
#include <kprocess.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <kapplication.h>
|
||||
#include <klocale.h>
|
||||
#include <kglobal.h>
|
||||
#include <kaboutdata.h>
|
||||
|
||||
// Local includes
|
||||
|
||||
#include "rawfiles.h"
|
||||
#include "dcrawbinary.h"
|
||||
#include "dcrawbinary.moc"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class DcrawBinaryPriv
|
||||
{
|
||||
public:
|
||||
|
||||
DcrawBinaryPriv()
|
||||
{
|
||||
available = false;
|
||||
version = QString::null;
|
||||
}
|
||||
|
||||
bool available;
|
||||
|
||||
QString version;
|
||||
};
|
||||
|
||||
DcrawBinary *DcrawBinary::m_instance = 0;
|
||||
|
||||
DcrawBinary::DcrawBinary()
|
||||
: QObject()
|
||||
{
|
||||
d = new DcrawBinaryPriv;
|
||||
}
|
||||
|
||||
DcrawBinary::~DcrawBinary()
|
||||
{
|
||||
m_instance = 0;
|
||||
delete d;
|
||||
}
|
||||
|
||||
DcrawBinary *DcrawBinary::instance()
|
||||
{
|
||||
if (!m_instance)
|
||||
m_instance = new DcrawBinary;
|
||||
return m_instance;
|
||||
}
|
||||
|
||||
void DcrawBinary::cleanUp()
|
||||
{
|
||||
delete m_instance;
|
||||
}
|
||||
|
||||
void DcrawBinary::checkSystem()
|
||||
{
|
||||
KProcess process;
|
||||
process.clearArguments();
|
||||
process << path();
|
||||
|
||||
connect(&process, SIGNAL(receivedStdout(KProcess *, char*, int)),
|
||||
this, SLOT(slotReadStdoutFromDcraw(KProcess*, char*, int)));
|
||||
|
||||
d->available = process.start(KProcess::Block, KProcess::Stdout);
|
||||
}
|
||||
|
||||
void DcrawBinary::slotReadStdoutFromDcraw(KProcess*, char* buffer, int buflen)
|
||||
{
|
||||
// The dcraw output looks like this : Raw photo decoder "dcraw" v8.54...
|
||||
QString dcrawHeader("Raw photo decoder \"dcraw\" v");
|
||||
|
||||
QString dcrawOut = QString::fromLocal8Bit(buffer, buflen);
|
||||
QString firstLine = dcrawOut.section('\n', 1, 1);
|
||||
|
||||
if (firstLine.startsWith(dcrawHeader))
|
||||
{
|
||||
d->version = firstLine.remove(0, dcrawHeader.length());
|
||||
qDebug("Found dcraw version: %s", version().ascii());
|
||||
}
|
||||
}
|
||||
|
||||
const char *DcrawBinary::path()
|
||||
{
|
||||
return KDCRAW_DIR "/kdcraw";
|
||||
}
|
||||
|
||||
const char *DcrawBinary::rawFiles()
|
||||
{
|
||||
return raw_file_extentions;
|
||||
}
|
||||
|
||||
bool DcrawBinary::isAvailable() const
|
||||
{
|
||||
return d->available;
|
||||
}
|
||||
|
||||
QString DcrawBinary::version() const
|
||||
{
|
||||
return d->version;
|
||||
}
|
||||
|
||||
QString DcrawBinary::internalVersion()
|
||||
{
|
||||
// The version of dcraw include with this library.
|
||||
// Look into dcraw/dcraw.c implementation.
|
||||
return QString("8.83");
|
||||
}
|
||||
|
||||
bool DcrawBinary::versionIsRight() const
|
||||
{
|
||||
if (d->version.isNull() || !isAvailable())
|
||||
return false;
|
||||
|
||||
if (d->version.toFloat() >= internalVersion().toFloat())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void DcrawBinary::checkReport()
|
||||
{
|
||||
QString appName = KGlobal::instance()->aboutData()->programName();
|
||||
|
||||
if (!isAvailable())
|
||||
{
|
||||
KMessageBox::information(
|
||||
kapp->activeWindow(),
|
||||
i18n("<qt><p>Unable to find the <b>%1</b> executable:<br>"
|
||||
"This binary program is required to support Raw file formats. "
|
||||
"You can continue, but you will not be able "
|
||||
"to handle any Raw images. "
|
||||
"Please check the installation of libkdcraw package on your computer.")
|
||||
.arg(path()),
|
||||
QString(),
|
||||
i18n("Do not show this message again"),
|
||||
KMessageBox::Notify | KMessageBox::AllowLink);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!versionIsRight())
|
||||
{
|
||||
KMessageBox::information(
|
||||
kapp->activeWindow(),
|
||||
i18n("<qt><p><b>%1</b> executable is not up to date:<br> "
|
||||
"The version %2 of this binary program have been found on your computer. "
|
||||
"This version is too old to run properly. "
|
||||
"You can continue, but you will not be able "
|
||||
"to handle any Raw images. "
|
||||
"Please check the installation of libkdcraw package on your computer.")
|
||||
.arg(path())
|
||||
.arg(version()),
|
||||
QString(),
|
||||
i18n("Do not show this message again"),
|
||||
KMessageBox::Notify | KMessageBox::AllowLink);
|
||||
}
|
||||
}
|
||||
|
||||
QStringList DcrawBinary::supportedCamera()
|
||||
{
|
||||
QFileInfo fi(path());
|
||||
QFile file(fi.dirPath() + QString("/CAMERALIST"));
|
||||
if ( !file.open(IO_ReadOnly) )
|
||||
return QStringList();
|
||||
|
||||
QByteArray data;
|
||||
data.resize(file.size());
|
||||
QDataStream stream( &file );
|
||||
stream.readRawBytes(data.data(), data.size());
|
||||
file.close();
|
||||
|
||||
QString tmp(data);
|
||||
QStringList list = QStringList::split('\n', tmp);
|
||||
return list;
|
||||
}
|
||||
|
||||
} // namespace KDcrawIface
|
@ -0,0 +1,99 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-04-13
|
||||
* Description : detection of dcraw binary program
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef DCRAW_BINARY_H
|
||||
#define DCRAW_BINARY_H
|
||||
|
||||
// Qt includes.
|
||||
|
||||
#include <qstring.h>
|
||||
#include <qobject.h>
|
||||
|
||||
// Local Includes.
|
||||
|
||||
#include "libkdcraw_export.h"
|
||||
|
||||
class KProcess;
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class DcrawBinaryPriv;
|
||||
|
||||
class LIBKDCRAW_EXPORT DcrawBinary : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
static DcrawBinary *instance();
|
||||
static void cleanUp();
|
||||
|
||||
/** Return the RAW decoding program name. */
|
||||
static const char *path();
|
||||
|
||||
/** Return the string of all RAW file type mime supported. */
|
||||
static const char *rawFiles();
|
||||
|
||||
/** Return the RAW decoding program version included in this library. */
|
||||
static QString internalVersion();
|
||||
|
||||
/** Return 'true' if RAW decoding program have be found in your system. */
|
||||
bool isAvailable() const;
|
||||
|
||||
/** Return the RAW decoding program version found in your system. */
|
||||
QString version() const;
|
||||
|
||||
/** Return 'true' if RAW decoding program version found in your system is
|
||||
the same than the version provided by this library. */
|
||||
bool versionIsRight() const;
|
||||
|
||||
/** Check your system to see if RAW decoding program is available. */
|
||||
void checkSystem();
|
||||
|
||||
/** Report any errors on a message box if RAW decoding program detection
|
||||
on your system failed. */
|
||||
void checkReport();
|
||||
|
||||
/** Provide a list of supported RAW Camera name. */
|
||||
QStringList supportedCamera();
|
||||
|
||||
private slots:
|
||||
|
||||
void slotReadStdoutFromDcraw(KProcess*, char*, int);
|
||||
|
||||
private:
|
||||
|
||||
DcrawBinary();
|
||||
~DcrawBinary();
|
||||
|
||||
private:
|
||||
|
||||
static DcrawBinary *m_instance;
|
||||
|
||||
DcrawBinaryPriv *d;
|
||||
};
|
||||
|
||||
} // namespace KDcrawIface
|
||||
|
||||
#endif // DCRAW_BINARY_H
|
@ -0,0 +1,135 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2007-05-02
|
||||
* Description : RAW file identification information container
|
||||
*
|
||||
* Copyright (C) 2007-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef DCRAW_INFO_CONTAINER_H
|
||||
#define DCRAW_INFO_CONTAINER_H
|
||||
|
||||
// QT includes.
|
||||
|
||||
#include <qstring.h>
|
||||
#include <qdatetime.h>
|
||||
#include <qsize.h>
|
||||
|
||||
// Local Includes.
|
||||
|
||||
#include "libkdcraw_export.h"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class LIBKDCRAW_EXPORT DcrawInfoContainer
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/** Standard constructor */
|
||||
DcrawInfoContainer()
|
||||
{
|
||||
sensitivity = -1;
|
||||
exposureTime = -1.0;
|
||||
aperture = -1.0;
|
||||
focalLength = -1.0;
|
||||
pixelAspectRatio = 1.0; // Default value. This can be unavailable (depending of camera model).
|
||||
rawColors = -1;
|
||||
hasIccProfile = false;
|
||||
isDecodable = false;
|
||||
hasSecondaryPixel = false;
|
||||
daylightMult[0] = 0.0;
|
||||
daylightMult[1] = 0.0;
|
||||
daylightMult[2] = 0.0;
|
||||
cameraMult[0] = 0.0;
|
||||
cameraMult[1] = 0.0;
|
||||
cameraMult[2] = 0.0;
|
||||
cameraMult[3] = 0.0;
|
||||
};
|
||||
|
||||
/** Standard destructor */
|
||||
virtual ~DcrawInfoContainer(){}
|
||||
|
||||
/** return 'true' if container is empty, else 'false' */
|
||||
bool isEmpty()
|
||||
{
|
||||
if ( make.isEmpty() &&
|
||||
model.isEmpty() &&
|
||||
filterPattern.isEmpty() &&
|
||||
DNGVersion.isEmpty() &&
|
||||
exposureTime == -1.0 &&
|
||||
aperture == -1.0 &&
|
||||
focalLength == -1.0 &&
|
||||
pixelAspectRatio == 1.0 &&
|
||||
sensitivity == -1 &&
|
||||
rawColors == -1 &&
|
||||
!dateTime.isValid() &&
|
||||
!imageSize.isValid() )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
};
|
||||
|
||||
/** True if camera sensor use a secondary pixel. */
|
||||
bool hasSecondaryPixel;
|
||||
/** True if RAW file include an ICC color profile. */
|
||||
bool hasIccProfile;
|
||||
/** True is RAW file is decodable by dcraw. */
|
||||
bool isDecodable;
|
||||
|
||||
/** The number of RAW colors. */
|
||||
int rawColors;
|
||||
|
||||
/** The sensitivity in ISO used by camera to take the picture. */
|
||||
long sensitivity;
|
||||
|
||||
/** ==> 1/exposureTime = exposure time in seconds. */
|
||||
float exposureTime;
|
||||
/** ==> Aperture value in APEX. */
|
||||
float aperture;
|
||||
/** ==> Focal Length value in mm. */
|
||||
float focalLength;
|
||||
/** The pixel Aspect Ratio if != 1.0. NOTE: if == 1.0, dcraw do not show this value. */
|
||||
float pixelAspectRatio;
|
||||
|
||||
/** White color balance settings. */
|
||||
double daylightMult[3];
|
||||
/** Camera multipliers used for White Balance adjustements */
|
||||
double cameraMult[4];
|
||||
|
||||
/** The camera maker. */
|
||||
QString make;
|
||||
/** The camera model. */
|
||||
QString model;
|
||||
/** The artist name who have picture owner. */
|
||||
QString owner;
|
||||
/** The demosaising filter pattern. */
|
||||
QString filterPattern;
|
||||
/** The DNG version. NOTE: its only show with DNG RAW files. */
|
||||
QString DNGVersion;
|
||||
|
||||
/** Date & time when have been taken the picture. */
|
||||
QDateTime dateTime;
|
||||
|
||||
/** The image dimensions in pixels. */
|
||||
QSize imageSize;
|
||||
};
|
||||
|
||||
} // namespace KDcrawIface
|
||||
|
||||
#endif /* DCRAW_INFO_CONTAINER_H */
|
@ -0,0 +1,835 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-09-13
|
||||
* Description : dcraw settings widgets
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
* Copyright (C) 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
// Qt includes.
|
||||
|
||||
#include <qcheckbox.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include <qstring.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qtabbar.h>
|
||||
|
||||
// KDE includes.
|
||||
|
||||
#include <kapplication.h>
|
||||
#include <kdialog.h>
|
||||
#include <klocale.h>
|
||||
#include <knuminput.h>
|
||||
#include <kurllabel.h>
|
||||
|
||||
// Local includes.
|
||||
|
||||
#include "dcrawbinary.h"
|
||||
#include "dcrawsettingswidget.h"
|
||||
#include "dcrawsettingswidget.moc"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class DcrawSettingsWidgetPriv
|
||||
{
|
||||
public:
|
||||
|
||||
DcrawSettingsWidgetPriv()
|
||||
{
|
||||
sixteenBitsImage = 0;
|
||||
fourColorCheckBox = 0;
|
||||
brightnessLabel = 0;
|
||||
brightnessSpinBox = 0;
|
||||
blackPointCheckBox = 0;
|
||||
blackPointSpinBox = 0;
|
||||
whiteBalanceComboBox = 0;
|
||||
whiteBalanceLabel = 0;
|
||||
customWhiteBalanceSpinBox = 0;
|
||||
customWhiteBalanceLabel = 0;
|
||||
customWhiteBalanceGreenSpinBox = 0;
|
||||
customWhiteBalanceGreenLabel = 0;
|
||||
unclipColorLabel = 0;
|
||||
dontStretchPixelsCheckBox = 0;
|
||||
RAWQualityComboBox = 0;
|
||||
RAWQualityLabel = 0;
|
||||
enableNoiseReduction = 0;
|
||||
NRThresholdSpinBox = 0;
|
||||
NRThresholdLabel = 0;
|
||||
enableCACorrection = 0;
|
||||
caRedMultSpinBox = 0;
|
||||
caBlueMultSpinBox = 0;
|
||||
caRedMultLabel = 0;
|
||||
caBlueMultLabel = 0;
|
||||
unclipColorComboBox = 0;
|
||||
reconstructLabel = 0;
|
||||
reconstructSpinBox = 0;
|
||||
outputColorSpaceLabel = 0;
|
||||
outputColorSpaceComboBox = 0;
|
||||
stdSettings = 0;
|
||||
advSettings = 0;
|
||||
}
|
||||
|
||||
QWidget *stdSettings;
|
||||
QWidget *advSettings;
|
||||
|
||||
QLabel *whiteBalanceLabel;
|
||||
QLabel *customWhiteBalanceLabel;
|
||||
QLabel *customWhiteBalanceGreenLabel;
|
||||
QLabel *brightnessLabel;
|
||||
QLabel *RAWQualityLabel;
|
||||
QLabel *NRThresholdLabel;
|
||||
QLabel *caRedMultLabel;
|
||||
QLabel *caBlueMultLabel;
|
||||
QLabel *unclipColorLabel;
|
||||
QLabel *reconstructLabel;
|
||||
QLabel *outputColorSpaceLabel;
|
||||
|
||||
QComboBox *whiteBalanceComboBox;
|
||||
QComboBox *RAWQualityComboBox;
|
||||
QComboBox *unclipColorComboBox;
|
||||
QComboBox *outputColorSpaceComboBox;
|
||||
|
||||
QCheckBox *blackPointCheckBox;
|
||||
QCheckBox *sixteenBitsImage;
|
||||
QCheckBox *fourColorCheckBox;
|
||||
QCheckBox *customWhiteBalanceCheckBox;
|
||||
QCheckBox *dontStretchPixelsCheckBox;
|
||||
QCheckBox *enableNoiseReduction;
|
||||
QCheckBox *enableCACorrection;
|
||||
|
||||
KIntNumInput *customWhiteBalanceSpinBox;
|
||||
KIntNumInput *reconstructSpinBox;
|
||||
KIntNumInput *blackPointSpinBox;
|
||||
KIntNumInput *NRThresholdSpinBox;
|
||||
|
||||
KDoubleNumInput *customWhiteBalanceGreenSpinBox;
|
||||
KDoubleNumInput *caRedMultSpinBox;
|
||||
KDoubleNumInput *caBlueMultSpinBox;
|
||||
KDoubleNumInput *brightnessSpinBox;
|
||||
};
|
||||
|
||||
DcrawSettingsWidget::DcrawSettingsWidget(QWidget *parent, bool sixteenBitsOption,
|
||||
bool outputColorSpaceOption, bool showAdvancedOptions)
|
||||
: KTabWidget(parent)
|
||||
{
|
||||
d = new DcrawSettingsWidgetPriv;
|
||||
setMargin(0);
|
||||
|
||||
d->stdSettings = new QWidget(this);
|
||||
QGridLayout* settingsBoxLayout = new QGridLayout(d->stdSettings, 11, 2, KDialog::spacingHint());
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
int line = 0;
|
||||
|
||||
d->sixteenBitsImage = new QCheckBox(i18n("16 bits color depth"), d->stdSettings);
|
||||
QWhatsThis::add( d->sixteenBitsImage, i18n("<p>If enabled, all RAW files will be decoded in 16-bit "
|
||||
"color depth using a linear gamma curve. To prevent dark "
|
||||
"picture rendering in the editor, it is recommended to use "
|
||||
"Color Management in this mode.<p>"
|
||||
"If disabled, all RAW files will be decoded in 8-bit "
|
||||
"color depth with a BT.709 gamma curve and a 99th-percentile "
|
||||
"white point. This mode is faster than 16-bit decoding."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->sixteenBitsImage, 0, 0, 0, 0);
|
||||
|
||||
if (sixteenBitsOption)
|
||||
{
|
||||
d->sixteenBitsImage->show();
|
||||
line = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
d->sixteenBitsImage->hide();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->fourColorCheckBox = new QCheckBox(i18n("Interpolate RGB as four colors"), d->stdSettings);
|
||||
QWhatsThis::add(d->fourColorCheckBox, i18n("<p><b>Interpolate RGB as four colors</b><p>"
|
||||
"The default is to assume that all green "
|
||||
"pixels are the same. If even-row green "
|
||||
"pixels are more sensitive to ultraviolet light "
|
||||
"than odd-row this difference causes a mesh "
|
||||
"pattern in the output; using this option solves "
|
||||
"this problem with minimal loss of detail.<p>"
|
||||
"To resume, this option blurs the image "
|
||||
"a little, but it eliminates false 2x2 mesh patterns "
|
||||
"with VNG quality method or mazes with AHD quality method."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->fourColorCheckBox, line, line, 0, 0);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
KURLLabel *dcrawVersion = new KURLLabel("http://cybercom.net/~dcoffin/dcraw", i18n("dcraw %1")
|
||||
.arg(DcrawBinary::internalVersion()), d->stdSettings);
|
||||
dcrawVersion->setAlignment(Qt::AlignRight);
|
||||
QToolTip::add(dcrawVersion, i18n("Visit dcraw project website"));
|
||||
settingsBoxLayout->addMultiCellWidget(dcrawVersion, 0, 0, 2, 2);
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->whiteBalanceLabel = new QLabel(i18n("White Balance:"), d->stdSettings);
|
||||
d->whiteBalanceComboBox = new QComboBox( false, d->stdSettings );
|
||||
d->whiteBalanceComboBox->insertItem( i18n("Default D65 White Balance"), 0 );
|
||||
d->whiteBalanceComboBox->insertItem( i18n("Camera White Balance"), 1 );
|
||||
d->whiteBalanceComboBox->insertItem( i18n("Automatic White Balance"), 2 );
|
||||
d->whiteBalanceComboBox->insertItem( i18n("Manual White balance"), 3 );
|
||||
QWhatsThis::add( d->whiteBalanceComboBox, i18n("<p><b>White Balance</b><p>"
|
||||
"Configure the raw white balance :<p>"
|
||||
"<b>Default D65 White Balance</b>: Use a standard daylight D65 white balance (dcraw defaults)<p>"
|
||||
"<b>Camera White Balance</b>: Use the white balance specified by the camera. "
|
||||
"If not available, reverts to default neutral white balance<p>"
|
||||
"<b>Automatic White Balance</b>: Calculates an automatic white balance "
|
||||
"averaging the entire image<p>"
|
||||
"<b>Manual White balance</b>: Set a custom temperature and green level values"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->whiteBalanceLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->whiteBalanceComboBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
d->customWhiteBalanceSpinBox = new KIntNumInput(d->stdSettings);
|
||||
d->customWhiteBalanceSpinBox->setRange(2000, 12000, 10, true);
|
||||
d->customWhiteBalanceLabel = new QLabel(i18n("Temperature (K):"), d->stdSettings);
|
||||
QWhatsThis::add( d->customWhiteBalanceSpinBox, i18n("<p><b>Temperature</b><p>"
|
||||
"Set here the color temperature."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->customWhiteBalanceLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->customWhiteBalanceSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
d->customWhiteBalanceGreenSpinBox = new KDoubleNumInput(d->stdSettings);
|
||||
d->customWhiteBalanceGreenSpinBox->setPrecision(2);
|
||||
d->customWhiteBalanceGreenSpinBox->setRange(0.2, 2.5, 0.01, true);
|
||||
d->customWhiteBalanceGreenLabel = new QLabel(i18n("Green:"), d->stdSettings);
|
||||
QWhatsThis::add( d->customWhiteBalanceGreenSpinBox, i18n("<p>Set here the green component to set magenta color "
|
||||
"cast removal level."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->customWhiteBalanceGreenLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->customWhiteBalanceGreenSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->unclipColorLabel = new QLabel(i18n("Highlights:"), d->stdSettings);
|
||||
d->unclipColorComboBox = new QComboBox( false, d->stdSettings );
|
||||
d->unclipColorComboBox->insertItem( i18n("Solid white"), 0 );
|
||||
d->unclipColorComboBox->insertItem( i18n("Unclip"), 1 );
|
||||
d->unclipColorComboBox->insertItem( i18n("Blend"), 2 );
|
||||
d->unclipColorComboBox->insertItem( i18n("Rebuild"), 3 );
|
||||
QWhatsThis::add( d->unclipColorComboBox, i18n("<p><b>Highlights</b><p>"
|
||||
"Select here the highlight clipping method:<p>"
|
||||
"<b>Solid white</b>: clip all highlights to solid white<p>"
|
||||
"<b>Unclip</b>: leave highlights unclipped in various "
|
||||
"shades of pink<p>"
|
||||
"<b>Blend</b>:Blend clipped and unclipped values together for a gradual fade to white<p>"
|
||||
"<b>Rebuild</b>: reconstruct highlights using a "
|
||||
"level value"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->unclipColorLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->unclipColorComboBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
d->reconstructLabel = new QLabel(i18n("Level:"), d->stdSettings);
|
||||
d->reconstructSpinBox = new KIntNumInput(d->stdSettings);
|
||||
d->reconstructSpinBox->setRange(0, 6, 1, true);
|
||||
QWhatsThis::add(d->reconstructSpinBox, i18n("<p><b>Level</b><p>"
|
||||
"Specify the reconstruct highlight level. "
|
||||
"Low values favor whites and high values favor colors."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->reconstructLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->reconstructSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->brightnessLabel = new QLabel(i18n("Brightness:"), d->stdSettings);
|
||||
d->brightnessSpinBox = new KDoubleNumInput(d->stdSettings);
|
||||
d->brightnessSpinBox->setPrecision(2);
|
||||
d->brightnessSpinBox->setRange(0.0, 10.0, 0.01, true);
|
||||
QWhatsThis::add(d->brightnessSpinBox, i18n("<p><b>Brighness</b><p>"
|
||||
"Specify the brightness level of output image."
|
||||
"The default value is 1.0 (works in 8-bit mode only).<p>"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->brightnessLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->brightnessSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->RAWQualityLabel = new QLabel(i18n("Quality (interpolation):"), d->stdSettings);
|
||||
d->RAWQualityComboBox = new QComboBox( false, d->stdSettings );
|
||||
d->RAWQualityComboBox->insertItem( i18n("Bilinear"), 0 );
|
||||
d->RAWQualityComboBox->insertItem( i18n("VNG"), 1 );
|
||||
d->RAWQualityComboBox->insertItem( i18n("PPG"), 2 );
|
||||
d->RAWQualityComboBox->insertItem( i18n("AHD"), 3 );
|
||||
QWhatsThis::add( d->RAWQualityComboBox, i18n("<p><b>Quality</b><p>"
|
||||
"Select here the demosaicing RAW images decoding "
|
||||
"interpolation method. A demosaicing algorithm is a digital image process used to "
|
||||
"interpolate a complete image from the partial raw data received from the color-filtered "
|
||||
"image sensor internal to many digital cameras in form of a matrix of colored pixels. "
|
||||
"Also known as CFA interpolation or color reconstruction, another common spelling "
|
||||
"is demosaicing. There are 3 methods to demosaicing RAW images:<p>"
|
||||
"<b>Bilinear</b>: use high-speed but low-quality bilinear "
|
||||
"interpolation (default - for slow computer). In this method, "
|
||||
"the red value of a non-red pixel is computed as the average of "
|
||||
"the adjacent red pixels, and similar for blue and green.<p>"
|
||||
"<b>VNG</b>: use Variable Number of Gradients interpolation. "
|
||||
"This method computes gradients near the pixel of interest and uses "
|
||||
"the lower gradients (representing smoother and more similar parts "
|
||||
"of the image) to make an estimate.<p>"
|
||||
"<b>PPG</b>: use Patterned Pixel Grouping interpolation. "
|
||||
"Pixel Grouping uses assumptions about natural scenery in making estimates. "
|
||||
"It has fewer color artifacts on natural images than the Variable Number of "
|
||||
"Gradients method.<p>"
|
||||
"<b>AHD</b>: use Adaptive Homogeneity-Directed interpolation. "
|
||||
"This method selects the direction of interpolation so as to "
|
||||
"maximize a homogeneity metric, thus typically minimizing color artifacts.<p>"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->RAWQualityLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->RAWQualityComboBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->enableNoiseReduction = new QCheckBox(i18n("Enable noise reduction"), d->stdSettings);
|
||||
QWhatsThis::add( d->enableNoiseReduction, i18n("<p><b>Enable Noise Reduction</b><p>"
|
||||
"Use wavelets to erase noise while preserving real detail.<p>"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->enableNoiseReduction, line, line, 0, 2);
|
||||
line++;
|
||||
|
||||
d->NRThresholdSpinBox = new KIntNumInput(d->stdSettings);
|
||||
d->NRThresholdSpinBox->setRange(10, 1000, 1, true);
|
||||
d->NRThresholdLabel = new QLabel(i18n("Threshold:"), d->stdSettings);
|
||||
QWhatsThis::add( d->NRThresholdSpinBox, i18n("<p><b>Threshold</b><p>"
|
||||
"Set here the noise reduction threshold value to use."));
|
||||
settingsBoxLayout->addMultiCellWidget(d->NRThresholdLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->NRThresholdSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->enableCACorrection = new QCheckBox(i18n("Enable Chromatic Aberration correction"), d->stdSettings);
|
||||
QWhatsThis::add( d->enableCACorrection, i18n("<p><b>Enable Chromatic Aberration correction</b><p>"
|
||||
"Enlarge the raw red and blue layers by the given factors, "
|
||||
"typically 0.999 to 1.001, to correct chromatic aberration.<p>"));
|
||||
settingsBoxLayout->addMultiCellWidget(d->enableCACorrection, line, line, 0, 2);
|
||||
line++;
|
||||
|
||||
d->caRedMultLabel = new QLabel(i18n("Red multiplier:"), d->stdSettings);
|
||||
d->caRedMultSpinBox = new KDoubleNumInput(d->stdSettings);
|
||||
d->caRedMultSpinBox->setPrecision(5);
|
||||
d->caRedMultSpinBox->setRange(0.00001, 2.0, 0.001, true);
|
||||
QWhatsThis::add( d->caRedMultSpinBox, i18n("<p><b>Red multiplier</b><p>"
|
||||
"Set here the magnification factor of the red layer"));
|
||||
|
||||
d->caBlueMultLabel = new QLabel(i18n("Blue multiplier:"), d->stdSettings);
|
||||
d->caBlueMultSpinBox = new KDoubleNumInput(d->stdSettings);
|
||||
d->caBlueMultSpinBox->setPrecision(5);
|
||||
d->caBlueMultSpinBox->setRange(0.00001, 2.0, 0.001, true);
|
||||
QWhatsThis::add( d->caBlueMultSpinBox, i18n("<p><b>Blue multiplier</b><p>"
|
||||
"Set here the magnification factor of the blue layer"));
|
||||
|
||||
settingsBoxLayout->addMultiCellWidget(d->caRedMultLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->caRedMultSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
settingsBoxLayout->addMultiCellWidget(d->caBlueMultLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->caBlueMultSpinBox, line, line, 1, 2);
|
||||
line++;
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->outputColorSpaceLabel = new QLabel(i18n("Color space:"), d->stdSettings);
|
||||
d->outputColorSpaceComboBox = new QComboBox( false, d->stdSettings );
|
||||
d->outputColorSpaceComboBox->insertItem( i18n("Raw (linear)"), 0 );
|
||||
d->outputColorSpaceComboBox->insertItem( i18n("sRGB"), 1 );
|
||||
d->outputColorSpaceComboBox->insertItem( i18n("Adobe RGB"), 2 );
|
||||
d->outputColorSpaceComboBox->insertItem( i18n("Wide Gamut"), 3 );
|
||||
d->outputColorSpaceComboBox->insertItem( i18n("Pro-Photo"), 4 );
|
||||
QWhatsThis::add( d->outputColorSpaceComboBox, i18n("<p><b>Color space</b><p>"
|
||||
"Select here the output color space used to decode RAW data.<p>"
|
||||
"<b>Raw (linear)</b>: in this mode, no output color space is used "
|
||||
"during RAW decoding.<p>"
|
||||
"<b>sRGB</b>: this is a RGB color space, created "
|
||||
"cooperatively by Hewlett-Packard and Microsoft. It is the "
|
||||
"best choice for images destined for the Web and portrait photography.<p>"
|
||||
"<b>Adobe RGB</b>: this color space is an extended RGB color space, developed by "
|
||||
"Adobe. It is used for photography applications such as advertising "
|
||||
"and fine art.<p>"
|
||||
"<b>Wide Gamut</b>: this color space is an expanded version of the "
|
||||
"Adobe RGB color space.<p>"
|
||||
"<b>Pro-Photo</b>: this color space is an RGB color space, developed by "
|
||||
"Kodak, that offers an especially large gamut designed for use with "
|
||||
"photographic outputs in mind."));
|
||||
|
||||
settingsBoxLayout->addMultiCellWidget(d->outputColorSpaceLabel, line, line, 0, 0);
|
||||
settingsBoxLayout->addMultiCellWidget(d->outputColorSpaceComboBox, line, line, 1, 2);
|
||||
|
||||
if (outputColorSpaceOption)
|
||||
{
|
||||
d->outputColorSpaceLabel->show();
|
||||
d->outputColorSpaceComboBox->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
d->outputColorSpaceLabel->hide();
|
||||
d->outputColorSpaceComboBox->hide();
|
||||
}
|
||||
|
||||
insertTab(d->stdSettings, i18n("Standard"));
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->advSettings = new QWidget(this);
|
||||
QGridLayout* settingsBoxLayout2 = new QGridLayout(d->advSettings, 7, 2, KDialog::spacingHint());
|
||||
|
||||
d->dontStretchPixelsCheckBox = new QCheckBox(i18n("Do not stretch or rotate pixels"), d->advSettings);
|
||||
QWhatsThis::add( d->dontStretchPixelsCheckBox, i18n("<p><b>Do not stretch or rotate pixels</b><p>"
|
||||
"For Fuji Super CCD cameras, show the image tilted 45 "
|
||||
"degrees. For cameras with non-square pixels, do not "
|
||||
"stretch the image to its correct aspect ratio. In any "
|
||||
"case, this option guarantees that each output pixel "
|
||||
"corresponds to one RAW pixel.<p>"));
|
||||
settingsBoxLayout2->addMultiCellWidget(d->dontStretchPixelsCheckBox, 0, 0, 0, 2);
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
d->blackPointCheckBox = new QCheckBox(i18n("Black point"), d->advSettings);
|
||||
QWhatsThis::add( d->blackPointCheckBox, i18n("<p><b>Black point</b><p>"
|
||||
"Use a specific black point value to decode RAW pictures. "
|
||||
"If you set this option to off, the Black Point value will be "
|
||||
"automatically computed.<p>"));
|
||||
d->blackPointSpinBox = new KIntNumInput(d->advSettings);
|
||||
d->blackPointSpinBox->setRange(0, 1000, 1, true);
|
||||
QWhatsThis::add(d->blackPointSpinBox, i18n("<p><b>Black point value</b><p>"
|
||||
"Specify specific black point value of the output image.<p>"));
|
||||
settingsBoxLayout2->addMultiCellWidget(d->blackPointCheckBox, 1, 1, 0, 0);
|
||||
settingsBoxLayout2->addMultiCellWidget(d->blackPointSpinBox, 1, 1, 1, 2);
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
settingsBoxLayout2->setRowStretch(7, 10);
|
||||
insertTab(d->advSettings, i18n("Advanced"));
|
||||
|
||||
if (!showAdvancedOptions)
|
||||
{
|
||||
removePage(d->advSettings);
|
||||
setTabBarHidden(true);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
connect(d->unclipColorComboBox, SIGNAL(activated(int)),
|
||||
this, SLOT(slotUnclipColorActivated(int)));
|
||||
|
||||
connect(d->whiteBalanceComboBox, SIGNAL(activated(int)),
|
||||
this, SLOT(slotWhiteBalanceToggled(int)));
|
||||
|
||||
connect(d->enableNoiseReduction, SIGNAL(toggled(bool)),
|
||||
this, SLOT(slotNoiseReductionToggled(bool)));
|
||||
|
||||
connect(d->enableCACorrection, SIGNAL(toggled(bool)),
|
||||
this, SLOT(slotCACorrectionToggled(bool)));
|
||||
|
||||
connect(d->blackPointCheckBox, SIGNAL(toggled(bool)),
|
||||
d->blackPointSpinBox, SLOT(setEnabled(bool)));
|
||||
|
||||
connect(d->sixteenBitsImage, SIGNAL(toggled(bool)),
|
||||
this, SLOT(slotsixteenBitsImageToggled(bool)));
|
||||
|
||||
connect(dcrawVersion, SIGNAL(leftClickedURL(const QString&)),
|
||||
this, SLOT(processDcrawURL(const QString&)));
|
||||
}
|
||||
|
||||
DcrawSettingsWidget::~DcrawSettingsWidget()
|
||||
{
|
||||
delete d;
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::processDcrawURL(const QString& url)
|
||||
{
|
||||
KApplication::kApplication()->invokeBrowser(url);
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setDefaultSettings()
|
||||
{
|
||||
setWhiteBalance(RawDecodingSettings::CAMERA);
|
||||
setCustomWhiteBalance(6500);
|
||||
setCustomWhiteBalanceGreen(1.0);
|
||||
setFourColor(false);
|
||||
setUnclipColor(0);
|
||||
setDontStretchPixels(false);
|
||||
setNoiseReduction(false);
|
||||
setUseCACorrection(false);
|
||||
setcaRedMultiplier(1.0);
|
||||
setcaBlueMultiplier(1.0);
|
||||
setBrightness(1.0);
|
||||
setUseBlackPoint(false);
|
||||
setBlackPoint(0);
|
||||
setNRThreshold(100);
|
||||
setQuality(RawDecodingSettings::BILINEAR);
|
||||
setOutputColorSpace(RawDecodingSettings::SRGB);
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::slotsixteenBitsImageToggled(bool b)
|
||||
{
|
||||
d->brightnessLabel->setDisabled(b);
|
||||
d->brightnessSpinBox->setDisabled(b);
|
||||
emit signalSixteenBitsImageToggled(d->sixteenBitsImage->isChecked());
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::slotWhiteBalanceToggled(int v)
|
||||
{
|
||||
if (v == 3)
|
||||
{
|
||||
d->customWhiteBalanceSpinBox->setEnabled(true);
|
||||
d->customWhiteBalanceGreenSpinBox->setEnabled(true);
|
||||
d->customWhiteBalanceLabel->setEnabled(true);
|
||||
d->customWhiteBalanceGreenLabel->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
d->customWhiteBalanceSpinBox->setEnabled(false);
|
||||
d->customWhiteBalanceGreenSpinBox->setEnabled(false);
|
||||
d->customWhiteBalanceLabel->setEnabled(false);
|
||||
d->customWhiteBalanceGreenLabel->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::slotUnclipColorActivated(int v)
|
||||
{
|
||||
if (v == 3) // Reconstruct Highlight method
|
||||
{
|
||||
d->reconstructLabel->setEnabled(true);
|
||||
d->reconstructSpinBox->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
d->reconstructLabel->setEnabled(false);
|
||||
d->reconstructSpinBox->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::slotNoiseReductionToggled(bool b)
|
||||
{
|
||||
d->NRThresholdSpinBox->setEnabled(b);
|
||||
d->NRThresholdLabel->setEnabled(b);
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::slotCACorrectionToggled(bool b)
|
||||
{
|
||||
d->caRedMultSpinBox->setEnabled(b);
|
||||
d->caBlueMultSpinBox->setEnabled(b);
|
||||
d->caRedMultLabel->setEnabled(b);
|
||||
d->caBlueMultLabel->setEnabled(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::sixteenBits()
|
||||
{
|
||||
return d->sixteenBitsImage->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setSixteenBits(bool b)
|
||||
{
|
||||
d->sixteenBitsImage->setChecked(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
RawDecodingSettings::WhiteBalance DcrawSettingsWidget::whiteBalance()
|
||||
{
|
||||
switch(d->whiteBalanceComboBox->currentItem())
|
||||
{
|
||||
case 1:
|
||||
return RawDecodingSettings::CAMERA;
|
||||
break;
|
||||
case 2:
|
||||
return RawDecodingSettings::AUTO;
|
||||
break;
|
||||
case 3:
|
||||
return RawDecodingSettings::CUSTOM;
|
||||
break;
|
||||
default:
|
||||
return RawDecodingSettings::NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setWhiteBalance(RawDecodingSettings::WhiteBalance v)
|
||||
{
|
||||
switch(v)
|
||||
{
|
||||
case RawDecodingSettings::CAMERA:
|
||||
d->whiteBalanceComboBox->setCurrentItem(1);
|
||||
break;
|
||||
case RawDecodingSettings::AUTO:
|
||||
d->whiteBalanceComboBox->setCurrentItem(2);
|
||||
break;
|
||||
case RawDecodingSettings::CUSTOM:
|
||||
d->whiteBalanceComboBox->setCurrentItem(3);
|
||||
break;
|
||||
default:
|
||||
d->whiteBalanceComboBox->setCurrentItem(0);
|
||||
break;
|
||||
}
|
||||
slotWhiteBalanceToggled(d->whiteBalanceComboBox->currentItem());
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
int DcrawSettingsWidget::customWhiteBalance()
|
||||
{
|
||||
return d->customWhiteBalanceSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setCustomWhiteBalance(int v)
|
||||
{
|
||||
d->customWhiteBalanceSpinBox->setValue(v);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
double DcrawSettingsWidget::customWhiteBalanceGreen()
|
||||
{
|
||||
return d->customWhiteBalanceGreenSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setCustomWhiteBalanceGreen(double v)
|
||||
{
|
||||
d->customWhiteBalanceGreenSpinBox->setValue(v);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::useFourColor()
|
||||
{
|
||||
return d->fourColorCheckBox->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setFourColor(bool b)
|
||||
{
|
||||
d->fourColorCheckBox->setChecked(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
int DcrawSettingsWidget::unclipColor()
|
||||
{
|
||||
switch(d->unclipColorComboBox->currentItem())
|
||||
{
|
||||
case 0:
|
||||
return 0;
|
||||
break;
|
||||
case 1:
|
||||
return 1;
|
||||
break;
|
||||
case 2:
|
||||
return 2;
|
||||
break;
|
||||
default: // Reconstruct Highlight method
|
||||
return d->reconstructSpinBox->value()+3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setUnclipColor(int v)
|
||||
{
|
||||
switch(v)
|
||||
{
|
||||
case 0:
|
||||
d->unclipColorComboBox->setCurrentItem(0);
|
||||
break;
|
||||
case 1:
|
||||
d->unclipColorComboBox->setCurrentItem(1);
|
||||
break;
|
||||
case 2:
|
||||
d->unclipColorComboBox->setCurrentItem(2);
|
||||
break;
|
||||
default: // Reconstruct Highlight method
|
||||
d->unclipColorComboBox->setCurrentItem(3);
|
||||
d->reconstructSpinBox->setValue(v-3);
|
||||
break;
|
||||
}
|
||||
|
||||
slotUnclipColorActivated(d->unclipColorComboBox->currentItem());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::useDontStretchPixels()
|
||||
{
|
||||
return d->dontStretchPixelsCheckBox->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setDontStretchPixels(bool b)
|
||||
{
|
||||
d->dontStretchPixelsCheckBox->setChecked(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
double DcrawSettingsWidget::brightness()
|
||||
{
|
||||
return d->brightnessSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setBrightness(double b)
|
||||
{
|
||||
d->brightnessSpinBox->setValue(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::useBlackPoint()
|
||||
{
|
||||
return d->blackPointCheckBox->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setUseBlackPoint(bool b)
|
||||
{
|
||||
d->blackPointCheckBox->setChecked(b);
|
||||
d->blackPointSpinBox->setEnabled(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
int DcrawSettingsWidget::blackPoint()
|
||||
{
|
||||
return d->blackPointSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setBlackPoint(int b)
|
||||
{
|
||||
d->blackPointSpinBox->setValue(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
RawDecodingSettings::DecodingQuality DcrawSettingsWidget::quality()
|
||||
{
|
||||
switch(d->RAWQualityComboBox->currentItem())
|
||||
{
|
||||
case 1:
|
||||
return RawDecodingSettings::VNG;
|
||||
break;
|
||||
case 2:
|
||||
return RawDecodingSettings::PPG;
|
||||
break;
|
||||
case 3:
|
||||
return RawDecodingSettings::AHD;
|
||||
break;
|
||||
default:
|
||||
return RawDecodingSettings::BILINEAR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setQuality(RawDecodingSettings::DecodingQuality q)
|
||||
{
|
||||
switch(q)
|
||||
{
|
||||
case RawDecodingSettings::VNG:
|
||||
d->RAWQualityComboBox->setCurrentItem(1);
|
||||
break;
|
||||
case RawDecodingSettings::PPG:
|
||||
d->RAWQualityComboBox->setCurrentItem(2);
|
||||
break;
|
||||
case RawDecodingSettings::AHD:
|
||||
d->RAWQualityComboBox->setCurrentItem(3);
|
||||
break;
|
||||
default:
|
||||
d->RAWQualityComboBox->setCurrentItem(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
RawDecodingSettings::OutputColorSpace DcrawSettingsWidget::outputColorSpace()
|
||||
{
|
||||
return (RawDecodingSettings::OutputColorSpace)(d->outputColorSpaceComboBox->currentItem());
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setOutputColorSpace(RawDecodingSettings::OutputColorSpace c)
|
||||
{
|
||||
d->outputColorSpaceComboBox->setCurrentItem((int)c);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::useNoiseReduction()
|
||||
{
|
||||
return d->enableNoiseReduction->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setNoiseReduction(bool b)
|
||||
{
|
||||
d->enableNoiseReduction->setChecked(b);
|
||||
slotNoiseReductionToggled(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
int DcrawSettingsWidget::NRThreshold()
|
||||
{
|
||||
return d->NRThresholdSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setNRThreshold(int b)
|
||||
{
|
||||
d->NRThresholdSpinBox->setValue(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool DcrawSettingsWidget::useCACorrection()
|
||||
{
|
||||
return d->enableCACorrection->isChecked();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setUseCACorrection(bool b)
|
||||
{
|
||||
d->enableCACorrection->setChecked(b);
|
||||
slotCACorrectionToggled(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
double DcrawSettingsWidget::caRedMultiplier()
|
||||
{
|
||||
return d->caRedMultSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setcaRedMultiplier(double b)
|
||||
{
|
||||
d->caRedMultSpinBox->setValue(b);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
double DcrawSettingsWidget::caBlueMultiplier()
|
||||
{
|
||||
return d->caBlueMultSpinBox->value();
|
||||
}
|
||||
|
||||
void DcrawSettingsWidget::setcaBlueMultiplier(double b)
|
||||
{
|
||||
d->caBlueMultSpinBox->setValue(b);
|
||||
}
|
||||
|
||||
} // NameSpace KDcrawIface
|
@ -0,0 +1,114 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-09-13
|
||||
* Description : dcraw settings widgets
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
* Copyright (C) 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef DCRAW_SETTINGS_WIDGET_H
|
||||
#define DCRAW_SETTINGS_WIDGET_H
|
||||
|
||||
// KDE includes.
|
||||
|
||||
#include <ktabwidget.h>
|
||||
|
||||
// Local Includes.
|
||||
|
||||
#include "libkdcraw_export.h"
|
||||
#include "rawdecodingsettings.h"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class DcrawSettingsWidgetPriv;
|
||||
|
||||
class LIBKDCRAW_EXPORT DcrawSettingsWidget : public KTabWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
DcrawSettingsWidget(QWidget *parent,
|
||||
bool sixteenBitsOption=false,
|
||||
bool outputColorSpaceOption=true,
|
||||
bool showAdvancedOptions=false);
|
||||
virtual ~DcrawSettingsWidget();
|
||||
|
||||
bool sixteenBits();
|
||||
int customWhiteBalance();
|
||||
double customWhiteBalanceGreen();
|
||||
bool useFourColor();
|
||||
bool useDontStretchPixels();
|
||||
bool useNoiseReduction();
|
||||
bool useCACorrection();
|
||||
bool useBlackPoint();
|
||||
int unclipColor();
|
||||
double brightness();
|
||||
int blackPoint();
|
||||
int NRThreshold();
|
||||
double caRedMultiplier();
|
||||
double caBlueMultiplier();
|
||||
|
||||
RawDecodingSettings::WhiteBalance whiteBalance();
|
||||
RawDecodingSettings::DecodingQuality quality();
|
||||
RawDecodingSettings::OutputColorSpace outputColorSpace();
|
||||
|
||||
void setSixteenBits(bool b);
|
||||
void setCameraWB(bool b);
|
||||
void setWhiteBalance(RawDecodingSettings::WhiteBalance v);
|
||||
void setCustomWhiteBalance(int v);
|
||||
void setCustomWhiteBalanceGreen(double v);
|
||||
void setFourColor(bool b);
|
||||
void setDontStretchPixels(bool b);
|
||||
void setNoiseReduction(bool b);
|
||||
void setUseCACorrection(bool b);
|
||||
void setUseBlackPoint(bool b);
|
||||
void setUnclipColor(int v);
|
||||
void setBrightness(double b);
|
||||
void setBlackPoint(int b);
|
||||
void setNRThreshold(int b);
|
||||
void setcaRedMultiplier(double b);
|
||||
void setcaBlueMultiplier(double b);
|
||||
void setQuality(RawDecodingSettings::DecodingQuality q);
|
||||
void setOutputColorSpace(RawDecodingSettings::OutputColorSpace c);
|
||||
|
||||
void setDefaultSettings();
|
||||
|
||||
signals:
|
||||
|
||||
void signalSixteenBitsImageToggled(bool);
|
||||
|
||||
private slots:
|
||||
|
||||
void slotWhiteBalanceToggled(int);
|
||||
void slotsixteenBitsImageToggled(bool);
|
||||
void slotUnclipColorActivated(int);
|
||||
void slotNoiseReductionToggled(bool);
|
||||
void slotCACorrectionToggled(bool);
|
||||
void processDcrawURL(const QString&);
|
||||
|
||||
private:
|
||||
|
||||
DcrawSettingsWidgetPriv* d;
|
||||
};
|
||||
|
||||
} // NameSpace KDcrawIface
|
||||
|
||||
#endif /* DCRAW_SETTINGS_WIDGET_H */
|
@ -0,0 +1,965 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-12-09
|
||||
* Description : a tread-safe dcraw program interface
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
* Copyright (C) 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
|
||||
*
|
||||
* NOTE: Do not use kdDebug() in this implementation because
|
||||
* it will be multithreaded. Use qDebug() instead.
|
||||
* See B.K.O #133026 for details.
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include <unistd.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
}
|
||||
|
||||
// C++ includes.
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <cmath>
|
||||
|
||||
// Qt Includes.
|
||||
|
||||
#include <qfile.h>
|
||||
#include <qtimer.h>
|
||||
#include <qcstring.h>
|
||||
#include <qfileinfo.h>
|
||||
#include <qapplication.h>
|
||||
#include <qmutex.h>
|
||||
#include <qwaitcondition.h>
|
||||
|
||||
// KDE includes.
|
||||
|
||||
#include <kprocess.h>
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
// Local includes.
|
||||
|
||||
#include "version.h"
|
||||
#include "dcrawbinary.h"
|
||||
#include "kdcraw.h"
|
||||
#include "kdcraw.moc"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class KDcrawPriv
|
||||
{
|
||||
public:
|
||||
|
||||
KDcrawPriv()
|
||||
{
|
||||
running = false;
|
||||
normalExit = false;
|
||||
process = 0;
|
||||
queryTimer = 0;
|
||||
data = 0;
|
||||
width = 0;
|
||||
height = 0;
|
||||
rgbmax = 0;
|
||||
dataPos = 0;
|
||||
}
|
||||
|
||||
bool running;
|
||||
bool normalExit;
|
||||
|
||||
uchar *data;
|
||||
|
||||
int dataPos;
|
||||
int width;
|
||||
int height;
|
||||
int rgbmax;
|
||||
|
||||
QString filePath;
|
||||
|
||||
QMutex mutex;
|
||||
|
||||
QWaitCondition condVar;
|
||||
|
||||
QTimer *queryTimer;
|
||||
|
||||
KProcess *process;
|
||||
|
||||
};
|
||||
|
||||
KDcraw::KDcraw()
|
||||
{
|
||||
d = new KDcrawPriv;
|
||||
m_cancel = false;
|
||||
}
|
||||
|
||||
KDcraw::~KDcraw()
|
||||
{
|
||||
cancel();
|
||||
delete d;
|
||||
}
|
||||
|
||||
QString KDcraw::version()
|
||||
{
|
||||
return QString(kdcraw_version);
|
||||
}
|
||||
|
||||
void KDcraw::cancel()
|
||||
{
|
||||
m_cancel = true;
|
||||
}
|
||||
|
||||
bool KDcraw::loadDcrawPreview(QImage& image, const QString& path)
|
||||
{
|
||||
// In first, try to extrcat the embedded JPEG preview. Very fast.
|
||||
bool ret = loadEmbeddedPreview(image, path);
|
||||
if (ret) return true;
|
||||
|
||||
// In second, decode and half size of RAW picture. More slow.
|
||||
return (loadHalfPreview(image, path));
|
||||
}
|
||||
|
||||
bool KDcraw::loadEmbeddedPreview(QImage& image, const QString& path)
|
||||
{
|
||||
FILE *f=NULL;
|
||||
QByteArray imgData;
|
||||
const int MAX_IPC_SIZE = (1024*32);
|
||||
char buffer[MAX_IPC_SIZE];
|
||||
QFile file;
|
||||
Q_LONG len;
|
||||
QCString command;
|
||||
|
||||
QFileInfo fileInfo(path);
|
||||
QString rawFilesExt(KDcrawIface::DcrawBinary::instance()->rawFiles());
|
||||
QString ext = fileInfo.extension(false).upper();
|
||||
|
||||
if (!fileInfo.exists() || ext.isEmpty() || !rawFilesExt.upper().contains(ext))
|
||||
return false;
|
||||
|
||||
// Try to extract embedded thumbnail using dcraw with options:
|
||||
// -c : write to stdout
|
||||
// -e : Extract the camera-generated thumbnail, not the raw image (JPEG or a PPM file).
|
||||
// Note : this code require at least dcraw version 8.x
|
||||
|
||||
command = DcrawBinary::path();
|
||||
command += " -c -e ";
|
||||
command += QFile::encodeName( KProcess::quote( path ) );
|
||||
qDebug("Running RAW decoding command: %s", (const char*)command);
|
||||
|
||||
f = popen( command.data(), "r" );
|
||||
|
||||
if ( f == NULL )
|
||||
return false;
|
||||
|
||||
file.open( IO_ReadOnly, f );
|
||||
|
||||
while ((len = file.readBlock(buffer, MAX_IPC_SIZE)) != 0)
|
||||
{
|
||||
if ( len == -1 )
|
||||
{
|
||||
file.close();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int oldSize = imgData.size();
|
||||
imgData.resize( imgData.size() + len );
|
||||
memcpy(imgData.data()+oldSize, buffer, len);
|
||||
}
|
||||
}
|
||||
|
||||
file.close();
|
||||
pclose( f );
|
||||
|
||||
if ( !imgData.isEmpty() )
|
||||
{
|
||||
if (image.loadFromData( imgData ))
|
||||
{
|
||||
qDebug("Using embedded RAW preview extraction");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool KDcraw::loadHalfPreview(QImage& image, const QString& path)
|
||||
{
|
||||
FILE *f=NULL;
|
||||
QByteArray imgData;
|
||||
const int MAX_IPC_SIZE = (1024*32);
|
||||
char buffer[MAX_IPC_SIZE];
|
||||
QFile file;
|
||||
Q_LONG len;
|
||||
QCString command;
|
||||
|
||||
QFileInfo fileInfo(path);
|
||||
QString rawFilesExt(KDcrawIface::DcrawBinary::instance()->rawFiles());
|
||||
QString ext = fileInfo.extension(false).upper();
|
||||
|
||||
if (!fileInfo.exists() || ext.isEmpty() || !rawFilesExt.upper().contains(ext))
|
||||
return false;
|
||||
|
||||
// Try to use simple RAW extraction method in 8 bits ppm output.
|
||||
// -c : write to stdout
|
||||
// -h : Half-size color image (3x faster than -q)
|
||||
// -a : Use automatic white balance
|
||||
// -w : Use camera white balance, if possible
|
||||
|
||||
f=NULL;
|
||||
command = DcrawBinary::path();
|
||||
command += " -c -h -w -a ";
|
||||
command += QFile::encodeName( KProcess::quote( path ) );
|
||||
qDebug("Running RAW decoding command: %s", (const char*)command);
|
||||
|
||||
f = popen( command.data(), "r" );
|
||||
|
||||
if ( f == NULL )
|
||||
return false;
|
||||
|
||||
file.open( IO_ReadOnly, f );
|
||||
|
||||
while ((len = file.readBlock(buffer, MAX_IPC_SIZE)) != 0)
|
||||
{
|
||||
if ( len == -1 )
|
||||
{
|
||||
file.close();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int oldSize = imgData.size();
|
||||
imgData.resize( imgData.size() + len );
|
||||
memcpy(imgData.data()+oldSize, buffer, len);
|
||||
}
|
||||
}
|
||||
|
||||
file.close();
|
||||
pclose( f );
|
||||
|
||||
if ( !imgData.isEmpty() )
|
||||
{
|
||||
if (image.loadFromData( imgData ))
|
||||
{
|
||||
qDebug("Using reduced RAW picture extraction");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool KDcraw::rawFileIdentify(DcrawInfoContainer& identify, const QString& path)
|
||||
{
|
||||
FILE *f=NULL;
|
||||
QByteArray txtData;
|
||||
const int MAX_IPC_SIZE = (1024*32);
|
||||
char buffer[MAX_IPC_SIZE];
|
||||
QFile file;
|
||||
Q_LONG len;
|
||||
QCString command;
|
||||
|
||||
QFileInfo fileInfo(path);
|
||||
QString rawFilesExt(KDcrawIface::DcrawBinary::instance()->rawFiles());
|
||||
QString ext = fileInfo.extension(false).upper();
|
||||
|
||||
if (!fileInfo.exists() || ext.isEmpty() || !rawFilesExt.upper().contains(ext))
|
||||
return false;
|
||||
|
||||
// Try to get camera maker/model using dcraw with options:
|
||||
// -i : identify files without decoding them.
|
||||
// -v : verbose mode.
|
||||
|
||||
command = DcrawBinary::path();
|
||||
command += " -i -v ";
|
||||
command += QFile::encodeName( KProcess::quote( path ) );
|
||||
qDebug("Running RAW decoding command: %s", (const char*)command);
|
||||
|
||||
f = popen( command.data(), "r" );
|
||||
|
||||
if ( f == NULL )
|
||||
{
|
||||
identify = DcrawInfoContainer();
|
||||
return false;
|
||||
}
|
||||
|
||||
file.open( IO_ReadOnly, f );
|
||||
|
||||
while ((len = file.readBlock(buffer, MAX_IPC_SIZE)) != 0)
|
||||
{
|
||||
if ( len == -1 )
|
||||
{
|
||||
identify = DcrawInfoContainer();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int oldSize = txtData.size();
|
||||
txtData.resize( txtData.size() + len );
|
||||
memcpy(txtData.data()+oldSize, buffer, len);
|
||||
}
|
||||
}
|
||||
|
||||
file.close();
|
||||
pclose( f );
|
||||
QString dcrawInfo(txtData);
|
||||
|
||||
if ( dcrawInfo.isEmpty() )
|
||||
{
|
||||
identify = DcrawInfoContainer();
|
||||
return false;
|
||||
}
|
||||
|
||||
int pos;
|
||||
|
||||
// Extract Time Stamp.
|
||||
QString timeStampHeader("Timestamp: ");
|
||||
pos = dcrawInfo.find(timeStampHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString timeStamp = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
timeStamp.remove(0, timeStampHeader.length());
|
||||
identify.dateTime = QDateTime::fromString(timeStamp);
|
||||
}
|
||||
|
||||
// Extract Camera Maker.
|
||||
QString makeHeader("Camera: ");
|
||||
pos = dcrawInfo.find(makeHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString make = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
make.remove(0, makeHeader.length());
|
||||
identify.make = make;
|
||||
}
|
||||
|
||||
// Extract Camera Model.
|
||||
QString modelHeader("Model: ");
|
||||
pos = dcrawInfo.find(modelHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString model = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
model.remove(0, modelHeader.length());
|
||||
identify.model = model;
|
||||
}
|
||||
|
||||
// Extract Picture Owner.
|
||||
QString ownerHeader("Owner: ");
|
||||
pos = dcrawInfo.find(ownerHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString owner = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
owner.remove(0, ownerHeader.length());
|
||||
identify.owner = owner;
|
||||
}
|
||||
|
||||
// Extract DNG Version.
|
||||
QString DNGVersionHeader("DNG Version: ");
|
||||
pos = dcrawInfo.find(DNGVersionHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString DNGVersion = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
DNGVersion.remove(0, DNGVersionHeader.length());
|
||||
identify.DNGVersion = DNGVersion;
|
||||
}
|
||||
|
||||
// Extract ISO Speed.
|
||||
QString isoSpeedHeader("ISO speed: ");
|
||||
pos = dcrawInfo.find(isoSpeedHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString isoSpeed = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
isoSpeed.remove(0, isoSpeedHeader.length());
|
||||
identify.sensitivity = isoSpeed.toLong();
|
||||
}
|
||||
|
||||
// Extract Shutter Speed.
|
||||
QString shutterSpeedHeader("Shutter: ");
|
||||
pos = dcrawInfo.find(shutterSpeedHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString shutterSpeed = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
shutterSpeed.remove(0, shutterSpeedHeader.length());
|
||||
|
||||
if (shutterSpeed.startsWith("1/"))
|
||||
shutterSpeed.remove(0, 2); // remove "1/" at start of string.
|
||||
|
||||
shutterSpeed.remove(shutterSpeed.length()-4, 4); // remove " sec" at end of string.
|
||||
identify.exposureTime = shutterSpeed.toFloat();
|
||||
}
|
||||
|
||||
// Extract Aperture.
|
||||
QString apertureHeader("Aperture: f/");
|
||||
pos = dcrawInfo.find(apertureHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString aperture = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
aperture.remove(0, apertureHeader.length());
|
||||
identify.aperture = aperture.toFloat();
|
||||
}
|
||||
|
||||
// Extract Focal Length.
|
||||
QString focalLengthHeader("Focal Length: ");
|
||||
pos = dcrawInfo.find(focalLengthHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString focalLength = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
focalLength.remove(0, focalLengthHeader.length());
|
||||
focalLength.remove(focalLength.length()-3, 3); // remove " mm" at end of string.
|
||||
identify.focalLength = focalLength.toFloat();
|
||||
}
|
||||
|
||||
// Extract Image Size.
|
||||
|
||||
QString imageSizeHeader("Image size: ");
|
||||
pos = dcrawInfo.find(imageSizeHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString imageSize = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
imageSize.remove(0, imageSizeHeader.length());
|
||||
int width = imageSize.section(" x ", 0, 0).toInt();
|
||||
int height = imageSize.section(" x ", 1, 1).toInt();
|
||||
identify.imageSize = QSize(width, height);
|
||||
}
|
||||
|
||||
// Extract "Has an embedded ICC profile" flag.
|
||||
|
||||
QString hasIccProfileHeader("Embedded ICC profile: ");
|
||||
pos = dcrawInfo.find(hasIccProfileHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString hasIccProfile = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
hasIccProfile.remove(0, hasIccProfileHeader.length());
|
||||
if (hasIccProfile.contains("yes"))
|
||||
identify.hasIccProfile = true;
|
||||
else
|
||||
identify.hasIccProfile = false;
|
||||
}
|
||||
|
||||
// Check if picture is decodable.
|
||||
|
||||
identify.isDecodable = true;
|
||||
pos = dcrawInfo.find("Cannot decode file");
|
||||
if (pos != -1)
|
||||
identify.isDecodable = false;
|
||||
|
||||
// Extract "Has Secondary Pixel" flag.
|
||||
|
||||
QString hasSecondaryPixelHeader("Secondary pixels: ");
|
||||
pos = dcrawInfo.find(hasSecondaryPixelHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString hasSecondaryPixel = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
hasSecondaryPixel.remove(0, hasSecondaryPixelHeader.length());
|
||||
if (hasSecondaryPixel.contains("yes"))
|
||||
identify.hasSecondaryPixel = true;
|
||||
else
|
||||
identify.hasSecondaryPixel = false;
|
||||
}
|
||||
|
||||
// Extract Pixel Aspect Ratio.
|
||||
QString aspectRatioHeader("Pixel Aspect Ratio: ");
|
||||
pos = dcrawInfo.find(aspectRatioHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString aspectRatio = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
aspectRatio.remove(0, aspectRatioHeader.length());
|
||||
identify.pixelAspectRatio = aspectRatio.toFloat();
|
||||
}
|
||||
|
||||
// Extract Raw Colors.
|
||||
QString rawColorsHeader("Raw colors: ");
|
||||
pos = dcrawInfo.find(rawColorsHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString rawColors = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
rawColors.remove(0, rawColorsHeader.length());
|
||||
identify.rawColors = rawColors.toInt();
|
||||
}
|
||||
|
||||
// Extract Filter Pattern.
|
||||
QString filterHeader("Filter pattern: ");
|
||||
pos = dcrawInfo.find(filterHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString filter = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
filter.remove(0, filterHeader.length());
|
||||
identify.filterPattern = filter;
|
||||
}
|
||||
|
||||
// Extract Daylight Multipliers.
|
||||
QString daylightMultHeader("Daylight multipliers: ");
|
||||
pos = dcrawInfo.find(daylightMultHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString daylightMult = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
daylightMult.remove(0, daylightMultHeader.length());
|
||||
identify.daylightMult[0] = daylightMult.section(" ", 0, 0).toDouble();
|
||||
identify.daylightMult[1] = daylightMult.section(" ", 1, 1).toDouble();
|
||||
identify.daylightMult[2] = daylightMult.section(" ", 2, 2).toDouble();
|
||||
}
|
||||
|
||||
// Extract Camera Multipliers.
|
||||
QString cameraMultHeader("Camera multipliers: ");
|
||||
pos = dcrawInfo.find(cameraMultHeader);
|
||||
if (pos != -1)
|
||||
{
|
||||
QString cameraMult = dcrawInfo.mid(pos).section('\n', 0, 0);
|
||||
cameraMult.remove(0, cameraMultHeader.length());
|
||||
identify.cameraMult[0] = cameraMult.section(" ", 0, 0).toDouble();
|
||||
identify.cameraMult[1] = cameraMult.section(" ", 1, 1).toDouble();
|
||||
identify.cameraMult[2] = cameraMult.section(" ", 2, 2).toDouble();
|
||||
identify.cameraMult[3] = cameraMult.section(" ", 3, 3).toDouble();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------
|
||||
|
||||
bool KDcraw::decodeHalfRAWImage(const QString& filePath, RawDecodingSettings rawDecodingSettings,
|
||||
QByteArray &imageData, int &width, int &height, int &rgbmax)
|
||||
{
|
||||
m_rawDecodingSettings = rawDecodingSettings;
|
||||
m_rawDecodingSettings.halfSizeColorImage = true;
|
||||
return (loadFromDcraw(filePath, imageData, width, height, rgbmax));
|
||||
}
|
||||
|
||||
bool KDcraw::decodeRAWImage(const QString& filePath, RawDecodingSettings rawDecodingSettings,
|
||||
QByteArray &imageData, int &width, int &height, int &rgbmax)
|
||||
{
|
||||
m_rawDecodingSettings = rawDecodingSettings;
|
||||
return (loadFromDcraw(filePath, imageData, width, height, rgbmax));
|
||||
}
|
||||
|
||||
bool KDcraw::checkToCancelWaitingData()
|
||||
{
|
||||
return m_cancel;
|
||||
}
|
||||
|
||||
bool KDcraw::checkToCancelRecievingData()
|
||||
{
|
||||
return m_cancel;
|
||||
}
|
||||
|
||||
void KDcraw::setWaitingDataProgress(double)
|
||||
{
|
||||
}
|
||||
|
||||
void KDcraw::setRecievingDataProgress(double)
|
||||
{
|
||||
}
|
||||
|
||||
bool KDcraw::loadFromDcraw(const QString& filePath, QByteArray &imageData,
|
||||
int &width, int &height, int &rgbmax)
|
||||
{
|
||||
m_cancel = false;
|
||||
d->dataPos = 0;
|
||||
d->filePath = filePath;
|
||||
d->running = true;
|
||||
d->normalExit = false;
|
||||
d->process = 0;
|
||||
d->data = 0;
|
||||
d->width = 0;
|
||||
d->height = 0;
|
||||
d->rgbmax = 0;
|
||||
|
||||
// trigger startProcess and loop to wait dcraw decoding
|
||||
QApplication::postEvent(this, new QCustomEvent(QEvent::User));
|
||||
|
||||
// The time from starting dcraw to when it first outputs something takes
|
||||
// much longer than the time while it outputs the data and the time while
|
||||
// we process the data.
|
||||
// We do not have progress information for this, but it is much more promising to the user
|
||||
// if there is progress which does not stay at a fixed value.
|
||||
// So we make up some progress (0% - 40%), using the file size as an indicator how long it might take.
|
||||
QTime dcrawStartTime = QTime::currentTime();
|
||||
int fileSize = QFileInfo(filePath).size();
|
||||
|
||||
// This is the magic number that describes how fast the function grows
|
||||
// It _should_ be dependent on how fast the computer is, but we do not have this piece of information
|
||||
// So this is a number that works well on my computer.
|
||||
double K50 = 3000.0*fileSize;
|
||||
double part = 0;
|
||||
int checkpointTime = 0;
|
||||
int checkpoint = 0;
|
||||
|
||||
// The shuttingDown is a hack needed to prevent hanging when this KProcess-based loader
|
||||
// is waiting for the process to finish, but the main thread is waiting
|
||||
// for the thread to finish and no KProcess events are delivered.
|
||||
// Remove when porting to Qt4.
|
||||
while (d->running && !checkToCancelRecievingData())
|
||||
{
|
||||
if (d->dataPos == 0)
|
||||
{
|
||||
int elapsedMsecs = dcrawStartTime.msecsTo(QTime::currentTime());
|
||||
if (elapsedMsecs > checkpointTime)
|
||||
checkpointTime += 300;
|
||||
|
||||
// What we do here is a sigmoidal curve, it starts slowly,
|
||||
// then grows more rapidly, slows down again and
|
||||
// get asymptotically closer to the maximum.
|
||||
// (this is the Hill Equation, 2.8 the Hill Coefficient, to pour some blood in this)
|
||||
double elapsedMsecsPow = pow(elapsedMsecs, 2.8);
|
||||
part = (elapsedMsecsPow) / (K50 + elapsedMsecsPow);
|
||||
|
||||
// While we waiting to receive data, progress from 0% to 40%
|
||||
setWaitingDataProgress(0.4*part);
|
||||
}
|
||||
else if (d->dataPos > checkpoint)
|
||||
{
|
||||
// While receiving data, progress from 40% to 70%
|
||||
double delta = 0.3 + 0.4 - 0.4*part;
|
||||
int imageSize = d->width * d->height * (m_rawDecodingSettings.sixteenBitsImage ? 6 : 3);
|
||||
checkpoint += (int)(imageSize / (20 * delta));
|
||||
setRecievingDataProgress(0.4*part + delta * (((float)d->dataPos)/((float)imageSize)));
|
||||
}
|
||||
|
||||
QMutexLocker lock(&d->mutex);
|
||||
d->condVar.wait(&d->mutex, 10);
|
||||
}
|
||||
|
||||
if (!d->normalExit || m_cancel)
|
||||
{
|
||||
delete [] d->data;
|
||||
d->data = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Copy decoded image data to byte array.
|
||||
width = d->width;
|
||||
height = d->height;
|
||||
rgbmax = d->rgbmax;
|
||||
imageData = QByteArray(d->width * d->height * (m_rawDecodingSettings.sixteenBitsImage ? 6 : 3));
|
||||
memcpy(imageData.data(), d->data, imageData.size());
|
||||
|
||||
delete [] d->data;
|
||||
d->data = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void KDcraw::customEvent(QCustomEvent *)
|
||||
{
|
||||
// KProcess (because of QSocketNotifier) is not reentrant.
|
||||
// We must only use it from the main thread.
|
||||
startProcess();
|
||||
|
||||
// set up timer to call continueQuery at regular intervals
|
||||
if (d->running)
|
||||
{
|
||||
d->queryTimer = new QTimer;
|
||||
connect(d->queryTimer, SIGNAL(timeout()),
|
||||
this, SLOT(slotContinueQuery()));
|
||||
d->queryTimer->start(30);
|
||||
}
|
||||
}
|
||||
|
||||
void KDcraw::slotContinueQuery()
|
||||
{
|
||||
// this is called from the timer
|
||||
|
||||
if (checkToCancelWaitingData())
|
||||
{
|
||||
d->process->kill();
|
||||
}
|
||||
}
|
||||
|
||||
void KDcraw::startProcess()
|
||||
{
|
||||
if (m_cancel)
|
||||
{
|
||||
d->running = false;
|
||||
d->normalExit = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// create KProcess and build argument list
|
||||
|
||||
d->process = new KProcess;
|
||||
|
||||
connect(d->process, SIGNAL(processExited(KProcess *)),
|
||||
this, SLOT(slotProcessExited(KProcess *)));
|
||||
|
||||
connect(d->process, SIGNAL(receivedStdout(KProcess *, char *, int)),
|
||||
this, SLOT(slotReceivedStdout(KProcess *, char *, int)));
|
||||
|
||||
connect(d->process, SIGNAL(receivedStderr(KProcess *, char *, int)),
|
||||
this, SLOT(slotReceivedStderr(KProcess *, char *, int)));
|
||||
|
||||
// run dcraw with options:
|
||||
// -c : write to stdout
|
||||
// -v : verboze mode.
|
||||
//
|
||||
// -4 : 16bit ppm output
|
||||
//
|
||||
// -f : Interpolate RGB as four colors. This blurs the image a little, but it eliminates false 2x2 mesh patterns.
|
||||
// -a : Use automatic white balance
|
||||
// -w : Use camera white balance, if possible
|
||||
// -n : Use wavelets to erase noise while preserving real detail.
|
||||
// -j : Do not stretch the image to its correct aspect ratio.
|
||||
// -q : Use an interpolation method.
|
||||
// -p : Use the input ICC profiles to define the camera's raw colorspace.
|
||||
// -o : Use ICC profiles to define the output colorspace.
|
||||
// -h : Output a half-size color image. Twice as fast as -q 0.
|
||||
// -b : set Brightness value.
|
||||
// -k : set Black Point value.
|
||||
// -r : set Raw Color Balance Multipliers.
|
||||
// -C : set Correct chromatic aberration correction.
|
||||
|
||||
*d->process << DcrawBinary::path();
|
||||
*d->process << "-c";
|
||||
*d->process << "-v";
|
||||
|
||||
if (m_rawDecodingSettings.sixteenBitsImage)
|
||||
*d->process << "-4";
|
||||
|
||||
if (m_rawDecodingSettings.halfSizeColorImage)
|
||||
*d->process << "-h";
|
||||
|
||||
if (m_rawDecodingSettings.RGBInterpolate4Colors)
|
||||
*d->process << "-f";
|
||||
|
||||
if (m_rawDecodingSettings.DontStretchPixels)
|
||||
*d->process << "-j";
|
||||
|
||||
*d->process << "-H";
|
||||
*d->process << QString::number(m_rawDecodingSettings.unclipColors);
|
||||
|
||||
*d->process << "-b";
|
||||
*d->process << QString::number(m_rawDecodingSettings.brightness);
|
||||
|
||||
if (m_rawDecodingSettings.enableBlackPoint)
|
||||
{
|
||||
*d->process << "-k";
|
||||
*d->process << QString::number(m_rawDecodingSettings.blackPoint);
|
||||
}
|
||||
|
||||
switch (m_rawDecodingSettings.whiteBalance)
|
||||
{
|
||||
case RawDecodingSettings::NONE:
|
||||
break;
|
||||
case RawDecodingSettings::CAMERA:
|
||||
*d->process << "-w";
|
||||
break;
|
||||
case RawDecodingSettings::AUTO:
|
||||
*d->process << "-a";
|
||||
break;
|
||||
case RawDecodingSettings::CUSTOM:
|
||||
/* Convert between Temperature and RGB.
|
||||
*/
|
||||
double T;
|
||||
double RGB[3];
|
||||
double xD, yD, X, Y, Z;
|
||||
DcrawInfoContainer identify;
|
||||
|
||||
T = m_rawDecodingSettings.customWhiteBalance;
|
||||
|
||||
/* Here starts the code picked and adapted from ufraw (0.12.1)
|
||||
to convert Temperature + green multiplier to RGB multipliers
|
||||
*/
|
||||
/* Convert between Temperature and RGB.
|
||||
* Base on information from http://www.brucelindbloom.com/
|
||||
* The fit for D-illuminant between 4000K and 12000K are from CIE
|
||||
* The generalization to 2000K < T < 4000K and the blackbody fits
|
||||
* are my own and should be taken with a grain of salt.
|
||||
*/
|
||||
const double XYZ_to_RGB[3][3] = {
|
||||
{ 3.24071, -0.969258, 0.0556352 },
|
||||
{-1.53726, 1.87599, -0.203996 },
|
||||
{-0.498571, 0.0415557, 1.05707 } };
|
||||
// Fit for CIE Daylight illuminant
|
||||
if (T <= 4000)
|
||||
{
|
||||
xD = 0.27475e9/(T*T*T) - 0.98598e6/(T*T) + 1.17444e3/T + 0.145986;
|
||||
}
|
||||
else if (T <= 7000)
|
||||
{
|
||||
xD = -4.6070e9/(T*T*T) + 2.9678e6/(T*T) + 0.09911e3/T + 0.244063;
|
||||
}
|
||||
else
|
||||
{
|
||||
xD = -2.0064e9/(T*T*T) + 1.9018e6/(T*T) + 0.24748e3/T + 0.237040;
|
||||
}
|
||||
yD = -3*xD*xD + 2.87*xD - 0.275;
|
||||
|
||||
X = xD/yD;
|
||||
Y = 1;
|
||||
Z = (1-xD-yD)/yD;
|
||||
RGB[0] = X*XYZ_to_RGB[0][0] + Y*XYZ_to_RGB[1][0] + Z*XYZ_to_RGB[2][0];
|
||||
RGB[1] = X*XYZ_to_RGB[0][1] + Y*XYZ_to_RGB[1][1] + Z*XYZ_to_RGB[2][1];
|
||||
RGB[2] = X*XYZ_to_RGB[0][2] + Y*XYZ_to_RGB[1][2] + Z*XYZ_to_RGB[2][2];
|
||||
/* End of the code picked to ufraw
|
||||
*/
|
||||
|
||||
RGB[1] = RGB[1] / m_rawDecodingSettings.customWhiteBalanceGreen;
|
||||
|
||||
/* By default, decraw override his default D65 WB
|
||||
We need to keep it as a basis : if not, colors with some
|
||||
DSLR will have a high dominant of color that will lead to
|
||||
a completly wrong WB
|
||||
*/
|
||||
if (rawFileIdentify (identify, d->filePath))
|
||||
{
|
||||
RGB[0] = identify.daylightMult[0] / RGB[0];
|
||||
RGB[1] = identify.daylightMult[1] / RGB[1];
|
||||
RGB[2] = identify.daylightMult[2] / RGB[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
RGB[0] = 1.0 / RGB[0];
|
||||
RGB[1] = 1.0 / RGB[1];
|
||||
RGB[2] = 1.0 / RGB[2];
|
||||
qDebug("Warning: cannot get daylight multipliers");
|
||||
}
|
||||
|
||||
*d->process << "-r";
|
||||
*d->process << QString::number(RGB[0], 'f', 5);
|
||||
*d->process << QString::number(RGB[1], 'f', 5);
|
||||
*d->process << QString::number(RGB[2], 'f', 5);
|
||||
*d->process << QString::number(RGB[1], 'f', 5);
|
||||
break;
|
||||
}
|
||||
|
||||
*d->process << "-q";
|
||||
*d->process << QString::number(m_rawDecodingSettings.RAWQuality);
|
||||
|
||||
if (m_rawDecodingSettings.enableNoiseReduction)
|
||||
{
|
||||
*d->process << "-n";
|
||||
*d->process << QString::number(m_rawDecodingSettings.NRThreshold);
|
||||
}
|
||||
|
||||
if (m_rawDecodingSettings.enableCACorrection)
|
||||
{
|
||||
*d->process << "-C";
|
||||
*d->process << QString::number(m_rawDecodingSettings.caMultiplier[0], 'f', 5);
|
||||
*d->process << QString::number(m_rawDecodingSettings.caMultiplier[1], 'f', 5);
|
||||
}
|
||||
|
||||
*d->process << "-o";
|
||||
*d->process << QString::number(m_rawDecodingSettings.outputColorSpace);
|
||||
|
||||
*d->process << QFile::encodeName(d->filePath);
|
||||
|
||||
QString args;
|
||||
for (uint i = 0 ; i < d->process->args().count(); i++)
|
||||
{
|
||||
args.append(d->process->args()[i]);
|
||||
args.append(QString(" "));
|
||||
}
|
||||
|
||||
qDebug("Running RAW decoding command: %s", args.ascii());
|
||||
|
||||
// actually start the process
|
||||
if ( !d->process->start(KProcess::NotifyOnExit,
|
||||
KProcess::Communication(KProcess::Stdout | KProcess::Stderr)) )
|
||||
{
|
||||
qWarning("Failed to start RAW decoding");
|
||||
delete d->process;
|
||||
d->process = 0;
|
||||
d->running = false;
|
||||
d->normalExit = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void KDcraw::slotProcessExited(KProcess *)
|
||||
{
|
||||
// set variables, clean up, wake up loader thread
|
||||
|
||||
QMutexLocker lock(&d->mutex);
|
||||
d->running = false;
|
||||
d->normalExit = d->process->normalExit() && d->process->exitStatus() == 0;
|
||||
delete d->process;
|
||||
d->process = 0;
|
||||
delete d->queryTimer;
|
||||
d->queryTimer = 0;
|
||||
d->condVar.wakeAll();
|
||||
}
|
||||
|
||||
void KDcraw::slotReceivedStdout(KProcess *, char *buffer, int buflen)
|
||||
{
|
||||
if (!d->data)
|
||||
{
|
||||
// first data packet:
|
||||
// Parse PPM header to find out size and allocate buffer
|
||||
|
||||
// PPM header is "P6 <width> <height> <maximum rgb value "
|
||||
// where the blanks are newline characters
|
||||
|
||||
QString magic = QString::fromAscii(buffer, 2);
|
||||
if (magic != "P6")
|
||||
{
|
||||
qWarning("Cannot parse header from RAW decoding: Magic is: %s", magic.ascii());
|
||||
d->process->kill();
|
||||
return;
|
||||
}
|
||||
|
||||
// Find the third newline that marks the header end in a dcraw generated ppm.
|
||||
int i = 0;
|
||||
int counter = 0;
|
||||
|
||||
while (i < buflen)
|
||||
{
|
||||
if (counter == 3) break;
|
||||
if (buffer[i] == '\n')
|
||||
{
|
||||
counter++;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
QStringList splitlist = QStringList::split("\n", QString::fromAscii(buffer, i));
|
||||
QStringList sizes = QStringList::split(" ", splitlist[1]);
|
||||
if (splitlist.size() < 3 || sizes.size() < 2)
|
||||
{
|
||||
qWarning("Cannot parse header from RAW decoding: Could not split");
|
||||
d->process->kill();
|
||||
return;
|
||||
}
|
||||
|
||||
d->width = sizes[0].toInt();
|
||||
d->height = sizes[1].toInt();
|
||||
d->rgbmax = splitlist[2].toInt();
|
||||
|
||||
#ifdef ENABLE_DEBUG_MESSAGES
|
||||
qDebug("Parsed PPM header: width %i height %i rgbmax %i", d->width, d->height, d->rgbmax);
|
||||
#endif
|
||||
|
||||
// cut header from data for memcpy below
|
||||
buffer += i;
|
||||
buflen -= i;
|
||||
|
||||
// allocate buffer
|
||||
d->data = new uchar[d->width * d->height * (m_rawDecodingSettings.sixteenBitsImage ? 6 : 3)];
|
||||
d->dataPos = 0;
|
||||
}
|
||||
|
||||
// copy data to buffer
|
||||
memcpy(d->data + d->dataPos, buffer, buflen);
|
||||
d->dataPos += buflen;
|
||||
}
|
||||
|
||||
void KDcraw::slotReceivedStderr(KProcess *, char *buffer, int buflen)
|
||||
{
|
||||
QCString message(buffer, buflen);
|
||||
qDebug("RAW decoding StdErr: %s", (const char*)message);
|
||||
}
|
||||
|
||||
} // namespace KDcrawIface
|
@ -0,0 +1,199 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-12-09
|
||||
* Description : a tread-safe dcraw program interface
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
* Copyright (C) 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef KDCRAW_H
|
||||
#define KDCRAW_H
|
||||
|
||||
// Qt Includes.
|
||||
|
||||
#include <qstring.h>
|
||||
#include <qobject.h>
|
||||
#include <qimage.h>
|
||||
|
||||
// Local includes.
|
||||
|
||||
#include "libkdcraw_export.h"
|
||||
#include "rawdecodingsettings.h"
|
||||
#include "dcrawinfocontainer.h"
|
||||
|
||||
class QCustomEvent;
|
||||
|
||||
class KProcess;
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class KDcrawPriv;
|
||||
|
||||
class LIBKDCRAW_EXPORT KDcraw : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
/** Standard constructor. */
|
||||
KDcraw();
|
||||
|
||||
/** Standard destructor. */
|
||||
virtual ~KDcraw();
|
||||
|
||||
public:
|
||||
|
||||
/** Return a string version of libkdcraw release */
|
||||
static QString version();
|
||||
|
||||
/** This is a non cancelable method witch do not require a class instance to run.
|
||||
It can loadEmbeddedPreview() in first and if it failed, call loadHalfPreview().
|
||||
*/
|
||||
static bool loadDcrawPreview(QImage& image, const QString& path);
|
||||
|
||||
/** Get the embedded JPEG preview image from RAW picture. This is a fast and non cancelable
|
||||
This method do not require a class instance to run.
|
||||
*/
|
||||
static bool loadEmbeddedPreview(QImage& image, const QString& path);
|
||||
|
||||
/** Get the half decode RAW picture. This is a more slower than loadEmbeddedPreview() method
|
||||
and non cancelable. This method do not require a class instance to run.
|
||||
*/
|
||||
static bool loadHalfPreview(QImage& image, const QString& path);
|
||||
|
||||
/** Get the camera settings witch have taken RAW file. Look into dcrawinfocontainer.h
|
||||
for more details. This is a fast and non cancelable method witch do not require
|
||||
a class instance to run.
|
||||
*/
|
||||
static bool rawFileIdentify(DcrawInfoContainer& identify, const QString& path);
|
||||
|
||||
public:
|
||||
|
||||
/** Extract a small size of decode RAW data from 'filePath' picture file using
|
||||
'rawDecodingSettings' settings. This is a cancelable method witch require
|
||||
a class instance to run because RAW pictures decoding can take a while.
|
||||
|
||||
This method return:
|
||||
|
||||
- A byte array container ('imageData') with picture data. Pixels order is RGB.
|
||||
Color depth can be 8 or 16. In 8 bits you can access to color component
|
||||
using (uchar*), in 16 bits using (ushort*).
|
||||
|
||||
- Size size of image in number of pixels ('width' and 'height').
|
||||
- The max average of RGB components from decoded picture.
|
||||
- 'false' is returned if decoding failed, else 'true'.
|
||||
*/
|
||||
bool decodeHalfRAWImage(const QString& filePath, RawDecodingSettings rawDecodingSettings,
|
||||
QByteArray &imageData, int &width, int &height, int &rgbmax);
|
||||
|
||||
/** Extract a full size of RAW data from 'filePath' picture file using
|
||||
'rawDecodingSettings' settings. This is a cancelable method witch require
|
||||
a class instance to run because RAW pictures decoding can take a while.
|
||||
|
||||
This method return:
|
||||
|
||||
- A byte array container ('imageData') with picture data. Pixels order is RGB.
|
||||
Color depth can be 8 or 16. In 8 bits you can access to color component
|
||||
using (uchar*), in 16 bits using (ushort*).
|
||||
|
||||
- Size size of image in number of pixels ('width' and 'height').
|
||||
- The max average of RGB components from decoded picture.
|
||||
- 'false' is returned if decoding failed, else 'true'.
|
||||
*/
|
||||
bool decodeRAWImage(const QString& filePath, RawDecodingSettings rawDecodingSettings,
|
||||
QByteArray &imageData, int &width, int &height, int &rgbmax);
|
||||
|
||||
/** To cancel 'decodeHalfRAWImage' and 'decodeRAWImage' methods running
|
||||
in a separate thread.
|
||||
*/
|
||||
void cancel();
|
||||
|
||||
protected:
|
||||
|
||||
/** Used internally to cancel RAW decoding operation. Normally, you don't need to use it
|
||||
directly, excepted if you derivated this class. Usual way is to use cancel() method
|
||||
*/
|
||||
bool m_cancel;
|
||||
|
||||
/** The settings container used to perform RAW pictures decoding. See 'rawdecodingsetting.h'
|
||||
for details.
|
||||
*/
|
||||
RawDecodingSettings m_rawDecodingSettings;
|
||||
|
||||
protected:
|
||||
|
||||
/** Re-implement this method to control the cancelisation of loop witch wait data
|
||||
from RAW decoding process with your propers envirronement.
|
||||
By default, this method check if m_cancel is true.
|
||||
|
||||
NOTE: RAW decoding is divided to 3 stages :
|
||||
|
||||
1-demosaising from dcraw. no progress feedback is available. We using a pseudo
|
||||
progress value. You can control this stage using checkToCancelWaitingData() and
|
||||
setWaitingDataProgress() methods.
|
||||
|
||||
2-decoding data reception from dcraw. You can control this stage using
|
||||
checkToCancelRecievingData() and setRecievingDataProgress() methods.
|
||||
|
||||
3-storage decoded data in your application using the QByteArray container.
|
||||
*/
|
||||
virtual bool checkToCancelWaitingData();
|
||||
|
||||
/** Re-implement this method to control the cancelisation of the loop which receives data
|
||||
from RAW decoding process with your proper environment.
|
||||
By default, this method check if m_cancel is true.
|
||||
*/
|
||||
virtual bool checkToCancelRecievingData();
|
||||
|
||||
/** Re-implement this method to control the pseudo progress value during RAW decoding (when dcraw run with an
|
||||
internal loop without feedback) with your proper environment. By default, this method do nothing.
|
||||
Progress value average for this stage is 0%-n%, with 'n' == 40% max (see setWaitingDataProgress() method).
|
||||
*/
|
||||
virtual void setWaitingDataProgress(double value);
|
||||
|
||||
/** Re-implement this method to control the progress value during RAW decoding (when dcraw return data)
|
||||
with your proper environment. By default, this method do nothing.
|
||||
Progress value average for this stage is n%-70%, with 'n' == 40% max (see setWaitingDataProgress() method).
|
||||
*/
|
||||
virtual void setRecievingDataProgress(double value);
|
||||
|
||||
private:
|
||||
|
||||
bool loadFromDcraw(const QString& filePath, QByteArray &imageData,
|
||||
int &width, int &height, int &rgbmax);
|
||||
void startProcess();
|
||||
|
||||
virtual void customEvent(QCustomEvent *);
|
||||
|
||||
private slots:
|
||||
|
||||
void slotProcessExited(KProcess *);
|
||||
void slotReceivedStdout(KProcess *, char *, int);
|
||||
void slotReceivedStderr(KProcess *, char *, int);
|
||||
void slotContinueQuery();
|
||||
|
||||
private:
|
||||
|
||||
KDcrawPriv *d;
|
||||
};
|
||||
|
||||
} // namespace KDcrawIface
|
||||
|
||||
#endif /* KDCRAW_H */
|
@ -0,0 +1,37 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2005-09-15
|
||||
* Description : dcraw program interface for KDE
|
||||
*
|
||||
* Copyright (C) 2005 by Laurent Montel <montel@kde.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef _LIBKDCRAW_EXPORT_H
|
||||
#define _LIBKDCRAW_EXPORT_H
|
||||
|
||||
#ifdef KDEMACROS_USABLE
|
||||
#include <kdemacros.h>
|
||||
#endif
|
||||
|
||||
#ifdef KDE_EXPORT
|
||||
#define LIBKDCRAW_EXPORT KDE_EXPORT
|
||||
#else
|
||||
#define LIBKDCRAW_EXPORT
|
||||
#endif
|
||||
|
||||
#endif /* _LIBKDCRAW_EXPORT_H */
|
||||
|
@ -0,0 +1,255 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2006-12-09
|
||||
* Description : Raw decoding settings
|
||||
*
|
||||
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
* Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
|
||||
* Copyright (C) 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef RAW_DECODING_SETTINGS_H
|
||||
#define RAW_DECODING_SETTINGS_H
|
||||
|
||||
// Local includes.
|
||||
|
||||
#include "libkdcraw_export.h"
|
||||
|
||||
namespace KDcrawIface
|
||||
{
|
||||
|
||||
class LIBKDCRAW_EXPORT RawDecodingSettings
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/** RAW decoding Interpolation methods
|
||||
|
||||
Bilinear: use high-speed but low-quality bilinear
|
||||
interpolation (default - for slow computer). In this method,
|
||||
the red value of a non-red pixel is computed as the average of
|
||||
the adjacent red pixels, and similar for blue and green.
|
||||
VNG: use Variable Number of Gradients interpolation.
|
||||
This method computes gradients near the pixel of interest and uses
|
||||
the lower gradients (representing smoother and more similar parts
|
||||
of the image) to make an estimate.
|
||||
PPG: use Patterned Pixel Grouping interpolation.
|
||||
Pixel Grouping uses assumptions about natural scenery in making estimates.
|
||||
It has fewer color artifacts on natural images than the Variable Number of
|
||||
Gradients method.
|
||||
AHD: use Adaptive Homogeneity-Directed interpolation.
|
||||
This method selects the direction of interpolation so as to
|
||||
maximize a homogeneity metric, thus typically minimizing color artifacts.
|
||||
*/
|
||||
enum DecodingQuality
|
||||
{
|
||||
BILINEAR = 0,
|
||||
VNG = 1,
|
||||
PPG = 2,
|
||||
AHD = 3
|
||||
};
|
||||
|
||||
/** White balances alternatives
|
||||
NONE: no white balance used : dcraw reverts to standard daylight D65 WB
|
||||
CAMERA: Use the camera embeded WB if available. Reverts to NONE if not
|
||||
AUTO: Averages an auto WB on the entire image
|
||||
CUSTOM: Let use set it's own temperature and green factor (later converted to RGBG factors)
|
||||
*/
|
||||
enum WhiteBalance
|
||||
{
|
||||
NONE = 0,
|
||||
CAMERA = 1,
|
||||
AUTO = 2,
|
||||
CUSTOM = 3
|
||||
};
|
||||
|
||||
/** Output RGB color space used to decoded image */
|
||||
enum OutputColorSpace
|
||||
{
|
||||
RAWCOLOR = 0,
|
||||
SRGB,
|
||||
ADOBERGB,
|
||||
WIDEGAMMUT,
|
||||
PROPHOTO
|
||||
};
|
||||
|
||||
/** Standard constructor with default settings */
|
||||
RawDecodingSettings()
|
||||
{
|
||||
sixteenBitsImage = false;
|
||||
brightness = 1.0;
|
||||
RAWQuality = BILINEAR;
|
||||
outputColorSpace = SRGB;
|
||||
RGBInterpolate4Colors = false;
|
||||
DontStretchPixels = false;
|
||||
unclipColors = 0;
|
||||
whiteBalance = CAMERA;
|
||||
customWhiteBalance = 6500;
|
||||
customWhiteBalanceGreen = 1.0;
|
||||
|
||||
halfSizeColorImage = false;
|
||||
|
||||
enableBlackPoint = false;
|
||||
blackPoint = 0;
|
||||
|
||||
enableNoiseReduction = false;
|
||||
NRThreshold = 100;
|
||||
|
||||
enableCACorrection = false;
|
||||
caMultiplier[0] = 1.0;
|
||||
caMultiplier[1] = 1.0;
|
||||
};
|
||||
|
||||
/** Compare for equality */
|
||||
bool operator==(const RawDecodingSettings &o) const
|
||||
{
|
||||
return sixteenBitsImage == o.sixteenBitsImage
|
||||
&& brightness == o.brightness
|
||||
&& RAWQuality == o.RAWQuality
|
||||
&& outputColorSpace == o.outputColorSpace
|
||||
&& RGBInterpolate4Colors == o.RGBInterpolate4Colors
|
||||
&& DontStretchPixels == o.DontStretchPixels
|
||||
&& unclipColors == o.unclipColors
|
||||
&& whiteBalance == o.whiteBalance
|
||||
&& customWhiteBalance == o.customWhiteBalance
|
||||
&& customWhiteBalanceGreen == o.customWhiteBalanceGreen
|
||||
&& halfSizeColorImage == o.halfSizeColorImage
|
||||
&& enableBlackPoint == o.enableBlackPoint
|
||||
&& blackPoint == o.blackPoint
|
||||
&& enableNoiseReduction == o.enableNoiseReduction
|
||||
&& NRThreshold == o.NRThreshold
|
||||
&& enableCACorrection == o.enableCACorrection
|
||||
&& caMultiplier[0] == o.caMultiplier[0]
|
||||
&& caMultiplier[1] == o.caMultiplier[1]
|
||||
;
|
||||
};
|
||||
|
||||
/** Standard destructor */
|
||||
virtual ~RawDecodingSettings(){};
|
||||
|
||||
/** Method to use a settings to optimize time loading, for exemple to compute image histogram */
|
||||
void optimizeTimeLoading(void)
|
||||
{
|
||||
sixteenBitsImage = true;
|
||||
brightness = 1.0;
|
||||
RAWQuality = BILINEAR;
|
||||
outputColorSpace = SRGB;
|
||||
RGBInterpolate4Colors = false;
|
||||
DontStretchPixels = false;
|
||||
unclipColors = 0;
|
||||
whiteBalance = CAMERA;
|
||||
customWhiteBalance = 6500;
|
||||
customWhiteBalanceGreen = 1.0;
|
||||
halfSizeColorImage = true;
|
||||
|
||||
enableBlackPoint = false;
|
||||
blackPoint = 0;
|
||||
|
||||
enableNoiseReduction = false;
|
||||
NRThreshold = 100;
|
||||
|
||||
enableCACorrection = false;
|
||||
caMultiplier[0] = 1.0;
|
||||
caMultiplier[1] = 1.0;
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
/** If true, decode RAW file in 16 bits per color per pixel else 8 bits.
|
||||
*/
|
||||
bool sixteenBitsImage;
|
||||
|
||||
/** Half-size color image decoding (twice as fast as "enableRAWQuality").
|
||||
Use this option to reduce time loading to render histogram for example,
|
||||
no to render an image to screen.
|
||||
*/
|
||||
bool halfSizeColorImage;
|
||||
|
||||
/** White balance type to use. See WhiteBalance values for detail
|
||||
*/
|
||||
WhiteBalance whiteBalance;
|
||||
|
||||
/** The temperature and the green multiplier of the custom white balance
|
||||
*/
|
||||
int customWhiteBalance;
|
||||
double customWhiteBalanceGreen;
|
||||
|
||||
/** RAW file decoding using RGB interpolation as four colors.
|
||||
*/
|
||||
bool RGBInterpolate4Colors;
|
||||
|
||||
/** For cameras with non-square pixels, do not stretch the image to its
|
||||
correct aspect ratio. In any case, this option guarantees that each
|
||||
output pixel corresponds to one RAW pixel.
|
||||
*/
|
||||
bool DontStretchPixels;
|
||||
|
||||
/** Unclip Highlight color level:
|
||||
0 = Clip all highlights to solid white.
|
||||
1 = Leave highlights unclipped in various shades of pink.
|
||||
2 = Blend clipped and unclipped values together for a gradual
|
||||
fade to white.
|
||||
3-9 = Reconstruct highlights. Low numbers favor whites; high numbers
|
||||
favor colors.
|
||||
*/
|
||||
int unclipColors;
|
||||
|
||||
/** RAW quality decoding factor value. See DecodingQuality values
|
||||
for details.
|
||||
*/
|
||||
DecodingQuality RAWQuality;
|
||||
|
||||
/** Use wavelets to erase noise while preserving real detail.
|
||||
*/
|
||||
bool enableNoiseReduction;
|
||||
|
||||
/** Noise reduction threshold value.
|
||||
The best threshold should be somewhere between 100 and 1000.
|
||||
*/
|
||||
int NRThreshold;
|
||||
|
||||
/** Use red and blue layer magnification to reduce chromatic aberrations
|
||||
*/
|
||||
bool enableCACorrection;
|
||||
|
||||
/** Magnification factor for Red and Blue layers
|
||||
- caMultiplier[0] = red multiplier
|
||||
- caMultiplier[1] = blue multiplier
|
||||
*/
|
||||
double caMultiplier[2];
|
||||
|
||||
/** Brightness of output image.
|
||||
*/
|
||||
float brightness;
|
||||
|
||||
/** Set on the black point setting to decode RAW image.
|
||||
*/
|
||||
bool enableBlackPoint;
|
||||
|
||||
/** Black Point value of output image.
|
||||
*/
|
||||
int blackPoint;
|
||||
|
||||
/** The output color space used to decoded RAW data. See OutputColorSpace
|
||||
values for details.
|
||||
*/
|
||||
OutputColorSpace outputColorSpace;
|
||||
};
|
||||
|
||||
} // namespace KDcrawIface
|
||||
|
||||
#endif /* RAW_DECODING_SETTINGS_H */
|
@ -0,0 +1,29 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2005-11-06
|
||||
* Description : list of RAW file extensions supported by
|
||||
* dcraw program.
|
||||
*
|
||||
* Copyright (C) 2005-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful *.
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef RAW_FILES_H
|
||||
#define RAW_FILES_H
|
||||
|
||||
static const char raw_file_extentions[] = "*.bay *.bmq *.cr2 *.crw *.cs1 *.dc2 *.dcr *.dng *.erf *.fff *.hdr *.k25 *.kdc *.mdc *.mos *.mrw *.nef *.orf *.pef *.pxn *.raf *.raw *.rdc *.sr2 *.srf *.x3f *.arw";
|
||||
|
||||
#endif // RAW_FILES_H
|
@ -0,0 +1,31 @@
|
||||
/* ============================================================
|
||||
*
|
||||
* This file is a part of kipi-plugins project
|
||||
* http://www.kipi-plugins.org
|
||||
*
|
||||
* Date : 2007-02-12
|
||||
* Description : dcraw program interface for KDE
|
||||
*
|
||||
* Copyright (C) 2007-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
*
|
||||
* This program is free software; you can redistribute it
|
||||
* and/or modify it under the terms of the GNU General
|
||||
* Public License as published by the Free Software Foundation;
|
||||
* either version 2, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* ============================================================ */
|
||||
|
||||
#ifndef KDCRAW_VERSION_H
|
||||
#define KDCRAW_VERSION_H
|
||||
|
||||
static const char kdcraw_version[] = "0.1.4";
|
||||
|
||||
#define KDCRAW_VERSION 0x000104
|
||||
|
||||
#endif // KDCRAW_VERSION_H
|
||||
|
@ -0,0 +1 @@
|
||||
SUBDIRS = $(AUTODIRS)
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = ca
|
||||
SUBDIRS = $(AUTODIRS)
|
||||
POFILES = AUTO
|
@ -0,0 +1,478 @@
|
||||
# Translation of libkdcraw.po to Catalan
|
||||
#
|
||||
# Josep Ma. Ferrer <txemaq@gmail.com>, 2007, 2008.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libkdcraw\n"
|
||||
"POT-Creation-Date: 2008-03-03 21:56+0100\n"
|
||||
"PO-Revision-Date: 2008-03-05 21:08+0100\n"
|
||||
"Last-Translator: Josep Ma. Ferrer <txemaq@gmail.com>\n"
|
||||
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:160
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p>Unable to find the <b>%1</b> executable:"
|
||||
"<br>This binary program is required to support Raw file formats. You can "
|
||||
"continue, but you will not be able to handle any Raw images. Please check the "
|
||||
"installation of libkdcraw package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>No s'ha pogut trobar l'executable <b>%1</b>:"
|
||||
"<br>cal aquest programa binari per treballar amb formats de fitxer RAW. Podeu "
|
||||
"continuar, però no podreu manipular les imatges RAW. Comproveu la instal·lació "
|
||||
"del paquet libkdcraw a l'ordinador."
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:176
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p><b>%1</b> executable is not up to date:"
|
||||
"<br> The version %2 of this binary program have been found on your computer. "
|
||||
"This version is too old to run properly. You can continue, but you will not be "
|
||||
"able to handle any Raw images. Please check the installation of libkdcraw "
|
||||
"package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>L'executable <b>%1</b> no està actualitzat:"
|
||||
"<br>s'ha trobat la versió %2 d'aquest programa binari a l'ordinador. Aquesta "
|
||||
"versió és massa antiga per funcionar correctament. Podeu continuar, però no "
|
||||
"podreu manipular les imatges RAW. Comproveu la instal·lació del paquet "
|
||||
"libkdcraw a l'ordinador."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:145
|
||||
msgid "16 bits color depth"
|
||||
msgstr "Profunditat de color de 16 bits"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:146
|
||||
msgid ""
|
||||
"<p>If enabled, all RAW files will be decoded in 16-bit color depth using a "
|
||||
"linear gamma curve. To prevent dark picture rendering in the editor, it is "
|
||||
"recommended to use Color Management in this mode."
|
||||
"<p>If disabled, all RAW files will be decoded in 8-bit color depth with a "
|
||||
"BT.709 gamma curve and a 99th-percentile white point. This mode is faster than "
|
||||
"16-bit decoding."
|
||||
msgstr ""
|
||||
"<p>Si està habilitat, tots els fitxers RAW es descodificaran amb una "
|
||||
"profunditat de color de 16 bits usant una corba gamma lineal. Per evitar la "
|
||||
"renderització de fotografies fosques a l'editor, es recomana usar la gestió de "
|
||||
"color en aquest mode."
|
||||
"<p>Si està deshabilitat, tots els fitxers RAW es descodificaran amb una "
|
||||
"profunditat de color de 8 bits usant una corba gamma BT.709 i un 99% de punt "
|
||||
"blanc. Aquest mode és més ràpidìd que la descodificació amb 16 bits."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:167
|
||||
msgid "Interpolate RGB as four colors"
|
||||
msgstr "Interpola el RGB com a quatre colors"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:168
|
||||
msgid ""
|
||||
"<p><b>Interpolate RGB as four colors</b>"
|
||||
"<p>The default is to assume that all green pixels are the same. If even-row "
|
||||
"green pixels are more sensitive to ultraviolet light than odd-row this "
|
||||
"difference causes a mesh pattern in the output; using this option solves this "
|
||||
"problem with minimal loss of detail."
|
||||
"<p>To resume, this option blurs the image a little, but it eliminates false 2x2 "
|
||||
"mesh patterns with VNG quality method or mazes with AHD quality method."
|
||||
msgstr ""
|
||||
"<p><b>Interpola el RGB com a quatre colors</b>"
|
||||
"<p>Per defecte, s'assumeix que tots els píxels verds són el mateix. Si els "
|
||||
"píxels verds de les files parells són més sensibles a la llum ultraviolada que "
|
||||
"els de les files senars, aquesta diferència provoca un patró mallat a la "
|
||||
"sortida; usant aquesta opció això es resol amb una pèrdua de detall mínima."
|
||||
"<p>Resumint, aquesta opció desenfoca una mica la imatge, però elimina el patró "
|
||||
"mallat 2x2 amb un mètode de qualitat VNG o amb un imbricat mètode de qualitat "
|
||||
"AHD."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:183
|
||||
#, c-format
|
||||
msgid "dcraw %1"
|
||||
msgstr "dcraw %1"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:186
|
||||
msgid "Visit dcraw project website"
|
||||
msgstr "Visiteu el lloc web del projecte dcraw"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:191
|
||||
msgid "White Balance:"
|
||||
msgstr "Balanç de blancs:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:193
|
||||
msgid "Default D65 White Balance"
|
||||
msgstr "Balanç de blancs D65 per omissió"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:194
|
||||
msgid "Camera White Balance"
|
||||
msgstr "Balanç de blancs de la càmera"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:195
|
||||
msgid "Automatic White Balance"
|
||||
msgstr "Balanç de blancs automàtic"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:196
|
||||
msgid "Manual White balance"
|
||||
msgstr "Balanç de blancs manual"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:197
|
||||
msgid ""
|
||||
"<p><b>White Balance</b>"
|
||||
"<p>Configure the raw white balance :"
|
||||
"<p><b>Default D65 White Balance</b>: Use a standard daylight D65 white balance "
|
||||
"(dcraw defaults)"
|
||||
"<p><b>Camera White Balance</b>: Use the white balance specified by the camera. "
|
||||
"If not available, reverts to default neutral white balance"
|
||||
"<p><b>Automatic White Balance</b>: Calculates an automatic white balance "
|
||||
"averaging the entire image"
|
||||
"<p><b>Manual White balance</b>: Set a custom temperature and green level values"
|
||||
msgstr ""
|
||||
"<p><b>Balanç de blancs</b>"
|
||||
"<p>Configureu el balanç de blancs cru:"
|
||||
"<p><b>Balanç de blancs D65 per omissió</b>: usa un balanç de blancs D65 de llum "
|
||||
"de dia estàndard (per omissió del dcraw)"
|
||||
"<p><b>Balanç de blancs de la càmera</b>: usa el balanç de blancs especificat "
|
||||
"per la càmera. Si no és disponible, retorna al balanç de blancs neutre per "
|
||||
"omissió"
|
||||
"<p><b>Balanç de blancs automàtic</b>: calcula un balanç de blancs automàtic de "
|
||||
"la mitja de tota la imatge"
|
||||
"<p><b>Balanç de blancs manual</b>: fixa uns valors de temperatura "
|
||||
"personalitzada i un nivell de verd"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:211
|
||||
msgid "Temperature (K):"
|
||||
msgstr "Temperatura (K):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:212
|
||||
msgid "<p><b>Temperature</b><p>Set here the color temperature."
|
||||
msgstr "<p><b>Temperatura</b><p>Indiqueu aquí la temperatura del color."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:221
|
||||
msgid "Green:"
|
||||
msgstr "Verd:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:222
|
||||
msgid ""
|
||||
"<p>Set here the green component to set magenta color cast removal level."
|
||||
msgstr ""
|
||||
"<p>Indiqueu aquí la component verda per a fixar el nivell d'eliminació de la "
|
||||
"conversió del color magenta."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:230
|
||||
msgid "Highlights:"
|
||||
msgstr "Llums intenses:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:232
|
||||
msgid "Solid white"
|
||||
msgstr "Blanc sòlid"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:233
|
||||
msgid "Unclip"
|
||||
msgstr "Sense escurçar"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:234
|
||||
msgid "Blend"
|
||||
msgstr "Combinació"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:235
|
||||
msgid "Rebuild"
|
||||
msgstr "Reconstrucció"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:236
|
||||
msgid ""
|
||||
"<p><b>Highlights</b>"
|
||||
"<p>Select here the highlight clipping method:"
|
||||
"<p><b>Solid white</b>: clip all highlights to solid white"
|
||||
"<p><b>Unclip</b>: leave highlights unclipped in various shades of pink"
|
||||
"<p><b>Blend</b>:Blend clipped and unclipped values together for a gradual fade "
|
||||
"to white"
|
||||
"<p><b>Rebuild</b>: reconstruct highlights using a level value"
|
||||
msgstr ""
|
||||
"<p><b>Llums intenses</b>"
|
||||
"<p>Seleccioneu aquí el mètode per escurçar les llums intenses:"
|
||||
"<p><b>Blanc sòlid</b>: escurça les llums intenses al blanc sòlid"
|
||||
"<p><b>Sense escurçar</b>: deixa les llums intenses en varis tonalitats de rosa"
|
||||
"<p><b>Combinació</b>: combina els valors escurçats i els no escurçats fent un "
|
||||
"encadenament gradual a blanc"
|
||||
"<p><b>Reconstrucció</b>: reconstrueix les llums intenses usant un valor de "
|
||||
"nivell"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:248
|
||||
msgid "Level:"
|
||||
msgstr "Nivell:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:251
|
||||
msgid ""
|
||||
"<p><b>Level</b>"
|
||||
"<p>Specify the reconstruct highlight level. Low values favor whites and high "
|
||||
"values favor colors."
|
||||
msgstr ""
|
||||
"<p><b>Nivell</b>"
|
||||
"<p>Indica el nivell de reconstrucció de les llums intenses. Els valors baixos "
|
||||
"afavoreixen els blancs i els valors alts afavoreixen els colors."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:260
|
||||
msgid "Brightness:"
|
||||
msgstr "Brillantor:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:264
|
||||
msgid ""
|
||||
"<p><b>Brighness</b>"
|
||||
"<p>Specify the brightness level of output image.The default value is 1.0 (works "
|
||||
"in 8-bit mode only)."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Brillantor</b>"
|
||||
"<p>Indica el nivell de brillantor de la imatge de sortida. El valor "
|
||||
"predeterminat és 1,0 (només treballa en el mode de 8 bits)."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:273
|
||||
msgid "Quality (interpolation):"
|
||||
msgstr "Qualitat (interpolació):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:275
|
||||
msgid "Bilinear"
|
||||
msgstr "Bilineal"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:276
|
||||
msgid "VNG"
|
||||
msgstr "VNG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:277
|
||||
msgid "PPG"
|
||||
msgstr "PPG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:278
|
||||
msgid "AHD"
|
||||
msgstr "AHD"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:279
|
||||
msgid ""
|
||||
"<p><b>Quality</b>"
|
||||
"<p>Select here the demosaicing RAW images decoding interpolation method. A "
|
||||
"demosaicing algorithm is a digital image process used to interpolate a complete "
|
||||
"image from the partial raw data received from the color-filtered image sensor "
|
||||
"internal to many digital cameras in form of a matrix of colored pixels. Also "
|
||||
"known as CFA interpolation or color reconstruction, another common spelling is "
|
||||
"demosaicing. There are 3 methods to demosaicing RAW images:"
|
||||
"<p><b>Bilinear</b>: use high-speed but low-quality bilinear interpolation "
|
||||
"(default - for slow computer). In this method, the red value of a non-red pixel "
|
||||
"is computed as the average of the adjacent red pixels, and similar for blue and "
|
||||
"green."
|
||||
"<p><b>VNG</b>: use Variable Number of Gradients interpolation. This method "
|
||||
"computes gradients near the pixel of interest and uses the lower gradients "
|
||||
"(representing smoother and more similar parts of the image) to make an "
|
||||
"estimate."
|
||||
"<p><b>PPG</b>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses "
|
||||
"assumptions about natural scenery in making estimates. It has fewer color "
|
||||
"artifacts on natural images than the Variable Number of Gradients method."
|
||||
"<p><b>AHD</b>: use Adaptive Homogeneity-Directed interpolation. This method "
|
||||
"selects the direction of interpolation so as to maximize a homogeneity metric, "
|
||||
"thus typically minimizing color artifacts."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Qualitat</b>"
|
||||
"<p>Seleccioneu aquí el mètode d'interpolació per a eliminar el mosaic en "
|
||||
"descodificar les imatges RAW. L'algorisme d'eliminació del mosaic és un procés "
|
||||
"digital de la imatge usat per interpolar una imatge completa des de dades "
|
||||
"parcials en brut rebudes del sensor d'imatge de filtrat per color intern de "
|
||||
"moltes càmeres digitals en forma d'una matriu de píxels de colors. També es "
|
||||
"coneix com interpolació CFA o reconstrucció del color; en anglès s'anomena "
|
||||
"normalment \"demosaicing\". Hi ha 3 mètodes d'eliminació del mosaic de les "
|
||||
"imatges RAW:"
|
||||
"<p><b>Bilineal</b>: usa una interpolació bilineal d'alta velocitat però baixa "
|
||||
"qualitat (predeterminat - per a un ordinador lent). En aquest mètode, el valor "
|
||||
"vermell d'un píxel no vermell és la mitjana dels píxels vermells adjacents, i "
|
||||
"el mateix pel blau i el verd."
|
||||
"<p><b>VNG</b>: usa la interpolació d'un nombre variable de gradients (Variable "
|
||||
"Number of Gradients). Aquest mètode calcula els gradients a prop del píxel "
|
||||
"d'interès i usa els gradients més baixos (que representen els suavitzats i les "
|
||||
"parts més semblants de la imatge) per fer una estimació."
|
||||
"<p> <b>AHD</b>: usa la interpolació adaptativa dirigida a la homogeneïtat "
|
||||
"(Adaptive Homogeneity-Directed). Aquest mètode selecciona la direcció de la "
|
||||
"interpolació per maximitzar una mètrica homogènia, de manera que es minimitzen "
|
||||
"els defectes dels colors."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:307
|
||||
msgid "Enable noise reduction"
|
||||
msgstr "Habilita la reducció de soroll"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:308
|
||||
msgid ""
|
||||
"<p><b>Enable Noise Reduction</b>"
|
||||
"<p>Use wavelets to erase noise while preserving real detail."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Habilita la reducció de soroll</b>"
|
||||
"<p>Utilitza ones petites per esborrar el soroll mentre es preserva el detall "
|
||||
"real."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:315
|
||||
msgid "Threshold:"
|
||||
msgstr "Llindar:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:316
|
||||
msgid ""
|
||||
"<p><b>Threshold</b>"
|
||||
"<p>Set here the noise reduction threshold value to use."
|
||||
msgstr ""
|
||||
"<p><b>Llindar</b>"
|
||||
"<p>Indiqueu aquí el valor del llindar de reducció de soroll a usar."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:324
|
||||
msgid "Enable Chromatic Aberration correction"
|
||||
msgstr "Habilita la correcció d'aberració cromàtica"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:325
|
||||
msgid ""
|
||||
"<p><b>Enable Chromatic Aberration correction</b>"
|
||||
"<p>Enlarge the raw red and blue layers by the given factors, typically 0.999 to "
|
||||
"1.001, to correct chromatic aberration."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Habilita la correcció d'aberració cromàtica</b>"
|
||||
"<p>Augmenta les capes RAW vermella i blava per un factor indicat, habitualment "
|
||||
"entre 0,999 a 1,001, per a corregir l'aberració cromàtica."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:331
|
||||
msgid "Red multiplier:"
|
||||
msgstr "Multiplicador de vermell:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:335
|
||||
msgid ""
|
||||
"<p><b>Red multiplier</b>"
|
||||
"<p>Set here the magnification factor of the red layer"
|
||||
msgstr ""
|
||||
"<p><b>Multiplicador de vermell</b>"
|
||||
"<p>Indiqueu aquí el factor d'augment de la capa vermella"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:338
|
||||
msgid "Blue multiplier:"
|
||||
msgstr "Multiplicador de blau:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:342
|
||||
msgid ""
|
||||
"<p><b>Blue multiplier</b>"
|
||||
"<p>Set here the magnification factor of the blue layer"
|
||||
msgstr ""
|
||||
"<p><b>Multiplicador de blau</b>"
|
||||
"<p>Indiqueu aquí el factor d'augment de la capa blava"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:354
|
||||
msgid "Color space:"
|
||||
msgstr "Espai de color:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:356
|
||||
msgid "Raw (linear)"
|
||||
msgstr "Cru (lineal)"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:357
|
||||
msgid "sRGB"
|
||||
msgstr "sRGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:358
|
||||
msgid "Adobe RGB"
|
||||
msgstr "Adobe RGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:359
|
||||
msgid "Wide Gamut"
|
||||
msgstr "Escala àmplia"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:360
|
||||
msgid "Pro-Photo"
|
||||
msgstr "Pro-Photo"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:361
|
||||
msgid ""
|
||||
"<p><b>Color space</b>"
|
||||
"<p>Select here the output color space used to decode RAW data."
|
||||
"<p><b>Raw (linear)</b>: in this mode, no output color space is used during RAW "
|
||||
"decoding."
|
||||
"<p><b>sRGB</b>: this is a RGB color space, created cooperatively by "
|
||||
"Hewlett-Packard and Microsoft. It is the best choice for images destined for "
|
||||
"the Web and portrait photography."
|
||||
"<p><b>Adobe RGB</b>: this color space is an extended RGB color space, developed "
|
||||
"by Adobe. It is used for photography applications such as advertising and fine "
|
||||
"art."
|
||||
"<p><b>Wide Gamut</b>: this color space is an expanded version of the Adobe RGB "
|
||||
"color space."
|
||||
"<p><b>Pro-Photo</b>: this color space is an RGB color space, developed by "
|
||||
"Kodak, that offers an especially large gamut designed for use with photographic "
|
||||
"outputs in mind."
|
||||
msgstr ""
|
||||
"<p><b>Espai de color</b>"
|
||||
"<p>Seleccioneu aquí l'espai de color de sortida usat per descodificar les dades "
|
||||
"RAW."
|
||||
"<p><b>RAW (lineal)</b>: es aquest mode, no s'usa cap espai de color de sortida "
|
||||
"durant la descodificació RAW."
|
||||
"<p> <b>sRGB</b>: aquest és un espai de color RGB, creat cooperativament per "
|
||||
"Hewlett-Packard i Microsoft. És la millor elecció per les imatges destinades a "
|
||||
"la Web i al retrat fotogràfic."
|
||||
"<p><b>Adobe RGB</b>: aquest espai de color és un espai de color RGB ampliat, "
|
||||
"desenvolupat per Adobe. S'utilitza en aplicacions fotogràfiques com la "
|
||||
"publicitat i l'art."
|
||||
"<p><b>Gama àmplia</b>: aquest espai de color és una versió expandida de l'espai "
|
||||
"de color RGB Adobe."
|
||||
"<p> <b>Pro-Photo</b>: aquest espai de color és un espai de color RGB, "
|
||||
"desenvolupat per Kodak, que ofereix una gama enorme i es va dissenyar en la "
|
||||
"seva concepció per ser utilitzada a les sortides fotogràfiques."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:391
|
||||
msgid "Standard"
|
||||
msgstr "Estàndard"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:398
|
||||
msgid "Do not stretch or rotate pixels"
|
||||
msgstr "No estiris o giris els píxels"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:399
|
||||
msgid ""
|
||||
"<p><b>Do not stretch or rotate pixels</b>"
|
||||
"<p>For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras "
|
||||
"with non-square pixels, do not stretch the image to its correct aspect ratio. "
|
||||
"In any case, this option guarantees that each output pixel corresponds to one "
|
||||
"RAW pixel."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>No estiris o giris els píxels</b>"
|
||||
"<p>A les càmeres Fuji Super CCD, mostra les imatges inclinades 45 graus. A les "
|
||||
"càmeres amb píxels no quadrats, no allarga la imatge a la seva relació "
|
||||
"d'aspecte correcta. En qualsevol cas, aquesta opció garanteix que cada píxel de "
|
||||
"la sortida correspon a un píxel RAW."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:409
|
||||
msgid "Black point"
|
||||
msgstr "Punt negre"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:410
|
||||
msgid ""
|
||||
"<p><b>Black point</b>"
|
||||
"<p>Use a specific black point value to decode RAW pictures. If you set this "
|
||||
"option to off, the Black Point value will be automatically computed."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Punt negre</b>"
|
||||
"<p>Usa un valor de punt negre específic per descodificar les fotografies RAW. "
|
||||
"Si heu desactivat aquesta opció, el valor del punt negre es calcularà "
|
||||
"automàticament."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:416
|
||||
msgid ""
|
||||
"<p><b>Black point value</b>"
|
||||
"<p>Specify specific black point value of the output image."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Valor del punt negre</b>"
|
||||
"<p>Indica el valor específic del punt negre de la imatge de sortida."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:424
|
||||
msgid "Advanced"
|
||||
msgstr "Avançat"
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = da
|
||||
SUBDIRS = $(AUTODIRS)
|
||||
POFILES = AUTO
|
@ -0,0 +1,478 @@
|
||||
# Danish translation of libkdcraw
|
||||
#
|
||||
# Erik Kjær Pedersen <erik@binghamton.edu>, 2007.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libkdcraw\n"
|
||||
"POT-Creation-Date: 2008-03-03 21:56+0100\n"
|
||||
"PO-Revision-Date: 2007-06-28 20:25-0400\n"
|
||||
"Last-Translator: Erik Kjær Pedersen <erik@binghamton.edu>\n"
|
||||
"Language-Team: Danish <dansk@klid.dk>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:160
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p>Unable to find the <b>%1</b> executable:"
|
||||
"<br>This binary program is required to support Raw file formats. You can "
|
||||
"continue, but you will not be able to handle any Raw images. Please check the "
|
||||
"installation of libkdcraw package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>Kan ikke finde den kørbare fil <b>%1</b>:"
|
||||
"<br>Dette binære program kræves for at understøtte ubehandlet filformat. Du kan "
|
||||
"fortsætte, men du kommer ikke til at kunne håndtere nogle ubehandlede billeder. "
|
||||
"Tjek installationen af pakken libkdcraw på computeren."
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:176
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p><b>%1</b> executable is not up to date:"
|
||||
"<br> The version %2 of this binary program have been found on your computer. "
|
||||
"This version is too old to run properly. You can continue, but you will not be "
|
||||
"able to handle any Raw images. Please check the installation of libkdcraw "
|
||||
"package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>Den kørbare fil <b>%1</b> er ikke uptodate:"
|
||||
"<br> Version %2 af dette binære program blev fundet på computeren. Denne "
|
||||
"version er for gammel til at køre på en rigtig måde. Du kan fortsætte, men du "
|
||||
"kommer ikke til at kunne håndtere nogle ubehandlede billeder. Tjek "
|
||||
"installationen af pakken libkdcraw på computeren."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:145
|
||||
msgid "16 bits color depth"
|
||||
msgstr "16 bits farvedybde"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:146
|
||||
msgid ""
|
||||
"<p>If enabled, all RAW files will be decoded in 16-bit color depth using a "
|
||||
"linear gamma curve. To prevent dark picture rendering in the editor, it is "
|
||||
"recommended to use Color Management in this mode."
|
||||
"<p>If disabled, all RAW files will be decoded in 8-bit color depth with a "
|
||||
"BT.709 gamma curve and a 99th-percentile white point. This mode is faster than "
|
||||
"16-bit decoding."
|
||||
msgstr ""
|
||||
"<p>Hvis aktiveret, afkodae alle ubehandlede filer til 16-bits farvedybde ved at "
|
||||
"bruge en lineær gammakurve. For at forhindre at et mørkt billede vises i "
|
||||
"editoren, anbefales at farvehåndtering bruges sammen med denne tilstand. "
|
||||
"<p>Hvis deaktiveret, afkodes alle ubehandlede filer til 8-bits farvedybde med "
|
||||
"en BT.709 gammakurve og en hvidpunkt i 99. procentilen. Denne tilstand er "
|
||||
"hurtigere end 16-bits afkodning."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:167
|
||||
msgid "Interpolate RGB as four colors"
|
||||
msgstr "Interpolér RGB som fire farver"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:168
|
||||
msgid ""
|
||||
"<p><b>Interpolate RGB as four colors</b>"
|
||||
"<p>The default is to assume that all green pixels are the same. If even-row "
|
||||
"green pixels are more sensitive to ultraviolet light than odd-row this "
|
||||
"difference causes a mesh pattern in the output; using this option solves this "
|
||||
"problem with minimal loss of detail."
|
||||
"<p>To resume, this option blurs the image a little, but it eliminates false 2x2 "
|
||||
"mesh patterns with VNG quality method or mazes with AHD quality method."
|
||||
msgstr ""
|
||||
"<p><b>Interpolér RGB som fire farver</b>"
|
||||
"<p>Standard er at antage at alle grønne pixler er ens. Selv hvis lige-rækker "
|
||||
"pixler er mere følsomme overfor ultraviolet lys end ulige-rækker. Denne forskel "
|
||||
"forårsager et gittermønster i uddata. Ved at bruge denne indstilling, løses "
|
||||
"dette problem med et minimalt detaljeringstab."
|
||||
"<p>For at opsummere, giver denne indstilling en lille udtværring, men "
|
||||
"eliminerer falsk 2x2 gittermønstre med VNG-kvalitet-metoden eller labyrinter "
|
||||
"med AHD-kvalitet-metoden."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:183
|
||||
#, c-format
|
||||
msgid "dcraw %1"
|
||||
msgstr "dcraw %1"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:186
|
||||
msgid "Visit dcraw project website"
|
||||
msgstr "Besøg dcraw-projektets hjemmeside"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:191
|
||||
msgid "White Balance:"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:193
|
||||
msgid "Default D65 White Balance"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:194
|
||||
#, fuzzy
|
||||
msgid "Camera White Balance"
|
||||
msgstr "Brug kameraets hvidbalance"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:195
|
||||
#, fuzzy
|
||||
msgid "Automatic White Balance"
|
||||
msgstr "Automatisk farvebalance"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:196
|
||||
#, fuzzy
|
||||
msgid "Manual White balance"
|
||||
msgstr "Brug kameraets hvidbalance"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:197
|
||||
msgid ""
|
||||
"<p><b>White Balance</b>"
|
||||
"<p>Configure the raw white balance :"
|
||||
"<p><b>Default D65 White Balance</b>: Use a standard daylight D65 white balance "
|
||||
"(dcraw defaults)"
|
||||
"<p><b>Camera White Balance</b>: Use the white balance specified by the camera. "
|
||||
"If not available, reverts to default neutral white balance"
|
||||
"<p><b>Automatic White Balance</b>: Calculates an automatic white balance "
|
||||
"averaging the entire image"
|
||||
"<p><b>Manual White balance</b>: Set a custom temperature and green level values"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:211
|
||||
msgid "Temperature (K):"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:212
|
||||
#, fuzzy
|
||||
msgid "<p><b>Temperature</b><p>Set here the color temperature."
|
||||
msgstr ""
|
||||
"<p><b>Tærskel</b>"
|
||||
"<p>Indstil støjreduceringens tærskelværdi som skal bruges her."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:221
|
||||
msgid "Green:"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:222
|
||||
msgid ""
|
||||
"<p>Set here the green component to set magenta color cast removal level."
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:230
|
||||
msgid "Highlights:"
|
||||
msgstr "Overbelyste områder:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:232
|
||||
msgid "Solid white"
|
||||
msgstr "Fuldstændig hvidt"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:233
|
||||
msgid "Unclip"
|
||||
msgstr "Unclip"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:234
|
||||
msgid "Blend"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:235
|
||||
msgid "Rebuild"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:236
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"<p><b>Highlights</b>"
|
||||
"<p>Select here the highlight clipping method:"
|
||||
"<p><b>Solid white</b>: clip all highlights to solid white"
|
||||
"<p><b>Unclip</b>: leave highlights unclipped in various shades of pink"
|
||||
"<p><b>Blend</b>:Blend clipped and unclipped values together for a gradual fade "
|
||||
"to white"
|
||||
"<p><b>Rebuild</b>: reconstruct highlights using a level value"
|
||||
msgstr ""
|
||||
"<p><b>Overbelysninger</b>"
|
||||
"<p>Vælg beskæringsmetoden for overbelyste områser her:"
|
||||
"<p><b>Helhvide</b>: beskærer alle overbelyste områder til helhvidt"
|
||||
"<p><b>Ubeskårne</b>: efterlad overbelysninger ubeskårne i forskellige rosa "
|
||||
"skygninger"
|
||||
"<p><b>Genoprettete</b>: genopret overbelysnigner ved brug af en niveauværdi."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:248
|
||||
msgid "Level:"
|
||||
msgstr "Niveau:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:251
|
||||
msgid ""
|
||||
"<p><b>Level</b>"
|
||||
"<p>Specify the reconstruct highlight level. Low values favor whites and high "
|
||||
"values favor colors."
|
||||
msgstr ""
|
||||
"<p><b>Niveau</b>"
|
||||
"<p>Angiv niveau for genoprettede overbelysninger i resultatbilledet. En lav "
|
||||
"værdi gør at hvidt foretrækkes, og en høj værdi gør at farver foretrækkes."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:260
|
||||
msgid "Brightness:"
|
||||
msgstr "Lysstyrke:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:264
|
||||
msgid ""
|
||||
"<p><b>Brighness</b>"
|
||||
"<p>Specify the brightness level of output image.The default value is 1.0 (works "
|
||||
"in 8-bit mode only)."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Lyshed</b>"
|
||||
"<p>Angiv resultatbilledets lyshet. Standardværdien er 1,0 (fungerer kun i "
|
||||
"8-bit-tilstand)."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:273
|
||||
msgid "Quality (interpolation):"
|
||||
msgstr "Kvalitet (interpoleret):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:275
|
||||
msgid "Bilinear"
|
||||
msgstr "Bilineær"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:276
|
||||
msgid "VNG"
|
||||
msgstr "VNG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:277
|
||||
msgid "PPG"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:278
|
||||
msgid "AHD"
|
||||
msgstr "AHD"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:279
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"<p><b>Quality</b>"
|
||||
"<p>Select here the demosaicing RAW images decoding interpolation method. A "
|
||||
"demosaicing algorithm is a digital image process used to interpolate a complete "
|
||||
"image from the partial raw data received from the color-filtered image sensor "
|
||||
"internal to many digital cameras in form of a matrix of colored pixels. Also "
|
||||
"known as CFA interpolation or color reconstruction, another common spelling is "
|
||||
"demosaicing. There are 3 methods to demosaicing RAW images:"
|
||||
"<p><b>Bilinear</b>: use high-speed but low-quality bilinear interpolation "
|
||||
"(default - for slow computer). In this method, the red value of a non-red pixel "
|
||||
"is computed as the average of the adjacent red pixels, and similar for blue and "
|
||||
"green."
|
||||
"<p><b>VNG</b>: use Variable Number of Gradients interpolation. This method "
|
||||
"computes gradients near the pixel of interest and uses the lower gradients "
|
||||
"(representing smoother and more similar parts of the image) to make an "
|
||||
"estimate."
|
||||
"<p><b>PPG</b>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses "
|
||||
"assumptions about natural scenery in making estimates. It has fewer color "
|
||||
"artifacts on natural images than the Variable Number of Gradients method."
|
||||
"<p><b>AHD</b>: use Adaptive Homogeneity-Directed interpolation. This method "
|
||||
"selects the direction of interpolation so as to maximize a homogeneity metric, "
|
||||
"thus typically minimizing color artifacts."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Kvalitet</b>"
|
||||
"<p>Vælg interpolationsmetode for afkodning af ubehandlede billeder for "
|
||||
"mosaikfjernelse. En algoritme for mosaikfjernelse er en digital billedproces "
|
||||
"som bruges til at interpolere et fuldstændigt billede fra partielt ubehandlede "
|
||||
"data i form af en matrix af farvede billedpunkter, som er modtaget fra den "
|
||||
"farvefiltrerede billedsensor som findes internt i mange digitalkameraer. Den er "
|
||||
"også kendt som CFA-interpolation eller farverekonstruktion. Der er tre metoder "
|
||||
"til at udføre mosaikfjernelse af ubehandlede billeder:"
|
||||
"<p><b>Bilineær</b>: Anvender en hurtig bilineær interpolation med lav kvalitet "
|
||||
"(standard for langsomme computerer). Med denne metoden beregnes den røde værdi "
|
||||
"af et billedpunkt som ikke er rødt som middelværdien af røde billedpunkter ved "
|
||||
"siden af, og på samme måde for blåt og grønt."
|
||||
"<p><b>VNG</b>: Anvend interpolation med variabelt antal overgange. Denne metode "
|
||||
"beregner overgange nær det interessante billedpunkt og bruger de laveste "
|
||||
"overgange (som repræsenterer jævnere og lignende dele af billedet) til at lave "
|
||||
"en vurdering."
|
||||
"<p><b>AHD</b>: Anvend adaptiv homogenstyret interpolation. Denne metode vælger "
|
||||
"interpolationens retning så at et homogenitetsmål maksimeres, og på den måde "
|
||||
"typisk minimeres farveafvigelser."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:307
|
||||
msgid "Enable noise reduction"
|
||||
msgstr "Aktivér støjreducering"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:308
|
||||
msgid ""
|
||||
"<p><b>Enable Noise Reduction</b>"
|
||||
"<p>Use wavelets to erase noise while preserving real detail."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Aktivér støjreducering</b>"
|
||||
"<p>Brug bølgeelement til at reducere støj samtidig med at rigtige detaljer "
|
||||
"bevares."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:315
|
||||
msgid "Threshold:"
|
||||
msgstr "Tærskel:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:316
|
||||
msgid ""
|
||||
"<p><b>Threshold</b>"
|
||||
"<p>Set here the noise reduction threshold value to use."
|
||||
msgstr ""
|
||||
"<p><b>Tærskel</b>"
|
||||
"<p>Indstil støjreduceringens tærskelværdi som skal bruges her."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:324
|
||||
#, fuzzy
|
||||
msgid "Enable Chromatic Aberration correction"
|
||||
msgstr "Aktivér støjreducering"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:325
|
||||
msgid ""
|
||||
"<p><b>Enable Chromatic Aberration correction</b>"
|
||||
"<p>Enlarge the raw red and blue layers by the given factors, typically 0.999 to "
|
||||
"1.001, to correct chromatic aberration."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:331
|
||||
msgid "Red multiplier:"
|
||||
msgstr "Multiplikationsfaktor for rødt:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:335
|
||||
msgid ""
|
||||
"<p><b>Red multiplier</b>"
|
||||
"<p>Set here the magnification factor of the red layer"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:338
|
||||
msgid "Blue multiplier:"
|
||||
msgstr "Multiplikationsfaktor for blåt:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:342
|
||||
msgid ""
|
||||
"<p><b>Blue multiplier</b>"
|
||||
"<p>Set here the magnification factor of the blue layer"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:354
|
||||
msgid "Color space:"
|
||||
msgstr "Farverum:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:356
|
||||
msgid "Raw (linear)"
|
||||
msgstr "Ubehandlet (lineær)"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:357
|
||||
msgid "sRGB"
|
||||
msgstr "sRGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:358
|
||||
msgid "Adobe RGB"
|
||||
msgstr "Adobe RGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:359
|
||||
msgid "Wide Gamut"
|
||||
msgstr "Stort toneomfang"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:360
|
||||
msgid "Pro-Photo"
|
||||
msgstr "Pro-foto"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:361
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"<p><b>Color space</b>"
|
||||
"<p>Select here the output color space used to decode RAW data."
|
||||
"<p><b>Raw (linear)</b>: in this mode, no output color space is used during RAW "
|
||||
"decoding."
|
||||
"<p><b>sRGB</b>: this is a RGB color space, created cooperatively by "
|
||||
"Hewlett-Packard and Microsoft. It is the best choice for images destined for "
|
||||
"the Web and portrait photography."
|
||||
"<p><b>Adobe RGB</b>: this color space is an extended RGB color space, developed "
|
||||
"by Adobe. It is used for photography applications such as advertising and fine "
|
||||
"art."
|
||||
"<p><b>Wide Gamut</b>: this color space is an expanded version of the Adobe RGB "
|
||||
"color space."
|
||||
"<p><b>Pro-Photo</b>: this color space is an RGB color space, developed by "
|
||||
"Kodak, that offers an especially large gamut designed for use with photographic "
|
||||
"outputs in mind."
|
||||
msgstr ""
|
||||
"<p><b>Farverum</b>"
|
||||
"<p>Vælg resultatets farverum som bruges til at afkode ubehandlede data her."
|
||||
"<p><b>Ubehandled (lineær)</b>: Med denne tilstand bruges ingen farverum for "
|
||||
"resultateter under afkodning af ubehandlede data."
|
||||
"<p><b>sRGB</b>: Dette farverum er et RGB-farverum, oprettet i samarbejde mellem "
|
||||
"Hewlett-Packard og Microsoft. Det er det bedste valg for billeder som er "
|
||||
"beregnede til for internettet og til portrætfotografering."
|
||||
"<p><b>Adobe RGB</b>: Dette farverum er et RGB-farverum, udvikled af Adobe. Det "
|
||||
"bruges til fotografiske tilpasninger såsom reklame og kunst."
|
||||
"<p><b>Stort toneomfang</b>: Dette farverum er en udvidet version af Adobes "
|
||||
"RGB-farverum."
|
||||
"<p><b>Pro-foto</b>: Dette farverum er et RGB-farverum, udviklet af Kodak, som "
|
||||
"tilbyder et særligt stort toneomfang konstrueret til brug med henblik på "
|
||||
"fotografiske resultater."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:391
|
||||
msgid "Standard"
|
||||
msgstr "Standard"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:398
|
||||
msgid "Do not stretch or rotate pixels"
|
||||
msgstr "Stræk eller rotér ikke billedpunkter"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:399
|
||||
msgid ""
|
||||
"<p><b>Do not stretch or rotate pixels</b>"
|
||||
"<p>For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras "
|
||||
"with non-square pixels, do not stretch the image to its correct aspect ratio. "
|
||||
"In any case, this option guarantees that each output pixel corresponds to one "
|
||||
"RAW pixel."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Stræk eller rotér ikke billedpunkter</b>"
|
||||
"<p>Vis billedet hældet 45 grader for Fuji Super CCD-kameraer. Stræk ikke "
|
||||
"billedet til at rette proportioner for kameraer med ikke-firkantede "
|
||||
"billedpunkter. Under alle omstndigheder garanterer dette at hvert billedpunkt i "
|
||||
"resultatet svarer til et ubehandlet billedpunkt."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:409
|
||||
msgid "Black point"
|
||||
msgstr "Sortpunkt"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:410
|
||||
msgid ""
|
||||
"<p><b>Black point</b>"
|
||||
"<p>Use a specific black point value to decode RAW pictures. If you set this "
|
||||
"option to off, the Black Point value will be automatically computed."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Sortpunkt</b>"
|
||||
"<p>Brug en specifik sortpunktværdi til at afkode ubehandlede billeder. Hvis du "
|
||||
"slå dette fra, beregnes sortpunktværdien automatisk."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:416
|
||||
msgid ""
|
||||
"<p><b>Black point value</b>"
|
||||
"<p>Specify specific black point value of the output image."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Sortpunktværdi</b>"
|
||||
"<p>Angiv en specifik sortpunktværdi for resultatbilledet."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:424
|
||||
msgid "Advanced"
|
||||
msgstr "Avanceret"
|
||||
|
||||
#~ msgid "<p><b>Use camera white balance</b><p>Use the camera's custom white-balance settings. If this can not be found, reverts to the default (which is to use fixed daylight values, calculated from sample images)."
|
||||
#~ msgstr "<p><b>Brug kameraets hvidbalance</b> <p>Brug kameraets egne indstillinger af hvidbalance. Hvis de ikke kan findes, går indstillingen tilbage til standardværdier (som er at bruge faste værdier for dagslys, beregnede fra eksempelbilleder)."
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "<p><b>Automatic color balance</b></p>Calculate the white balance by averaging the entire image."
|
||||
#~ msgstr "<p><b>Automatisk farvebalance</b></p>Standard er at bruge en fast farvebalance baseret på et hvidt kort fotograferet i sollys."
|
||||
|
||||
#~ msgid "Color balance multipliers"
|
||||
#~ msgstr "Farvebalancefaktorer"
|
||||
|
||||
#~ msgid "Green 1 multiplier:"
|
||||
#~ msgstr "Faktor for Grøn 1:"
|
||||
|
||||
#~ msgid "Green 2 multiplier:"
|
||||
#~ msgstr "Faktor for Grøn 2:"
|
||||
|
||||
#~ msgid "Reconstruct"
|
||||
#~ msgstr "Rekonstruér"
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = de
|
||||
SUBDIRS = $(AUTODIRS)
|
||||
POFILES = AUTO
|
@ -0,0 +1,484 @@
|
||||
# translation of libkdcraw.po to german
|
||||
# translation of libkdcraw.po to
|
||||
#
|
||||
# Oliver Dörr <kde@doerr-privat.de>, 2007, 2008.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libkdcraw\n"
|
||||
"POT-Creation-Date: 2008-03-03 21:56+0100\n"
|
||||
"PO-Revision-Date: 2008-03-06 18:54+0100\n"
|
||||
"Last-Translator: Oliver Dörr <kde@doerr-privat.de>\n"
|
||||
"Language-Team: german <kde-i18n-de@kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:160
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p>Unable to find the <b>%1</b> executable:"
|
||||
"<br>This binary program is required to support Raw file formats. You can "
|
||||
"continue, but you will not be able to handle any Raw images. Please check the "
|
||||
"installation of libkdcraw package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>Kann das Programm <b>%1</b> nicht finden:"
|
||||
"<br>Diese sProgramm wird für die Unterstützung von Rohdateiformaten benötigt. "
|
||||
"Sie können fortfahren, aber Sie können keine Rohbilder verwalten. Bitte "
|
||||
"überprüfen Sie dei Installation des libkdcraw Paketes auf Ihrem Rechner."
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:176
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p><b>%1</b> executable is not up to date:"
|
||||
"<br> The version %2 of this binary program have been found on your computer. "
|
||||
"This version is too old to run properly. You can continue, but you will not be "
|
||||
"able to handle any Raw images. Please check the installation of libkdcraw "
|
||||
"package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>Das Programm <b>%1</b> int nicht aktuell genug:"
|
||||
"<br> Die Version %2 wurde von dem Prpogramm auf Ihrem Rechner gefunden. Diese "
|
||||
"Version ist leider zu alt, um ordnungsgemäß zu funktionieren. Sie können "
|
||||
"fortfahren, aber Sie können keine Rohbilder verwalten. Bitte überprüfen Sie die "
|
||||
"Installation des libkdcraw Paketes auf Ihrem Rechner."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:145
|
||||
msgid "16 bits color depth"
|
||||
msgstr "16-Bit Farbtiefe"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:146
|
||||
msgid ""
|
||||
"<p>If enabled, all RAW files will be decoded in 16-bit color depth using a "
|
||||
"linear gamma curve. To prevent dark picture rendering in the editor, it is "
|
||||
"recommended to use Color Management in this mode."
|
||||
"<p>If disabled, all RAW files will be decoded in 8-bit color depth with a "
|
||||
"BT.709 gamma curve and a 99th-percentile white point. This mode is faster than "
|
||||
"16-bit decoding."
|
||||
msgstr ""
|
||||
"<p>Wenn die Option aktiviert wird, werden alle Rodateien mit 16-Bit Farbtiefe "
|
||||
"unter Benutzung einer linearen Gammakurve dekodiert. Um das Berechnen eines "
|
||||
"Schwarzbildes zu verhindern empfehlen wir Ihnen die Farbverwaltung in diesem "
|
||||
"Modus zu benutzen."
|
||||
"<p>Wenn die Option deaktiviert ist, werden alle Rohdateien mit 8-Bit Farbtiefe "
|
||||
"unter Benutzung einer BT.709 Gammakurve und einem 99% Weißpunkt dekodiert. "
|
||||
"Dieser Modus ist schneller als eine 16-Bit Dekodierung."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:167
|
||||
msgid "Interpolate RGB as four colors"
|
||||
msgstr "RGB als vier Farben interpolieren"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:168
|
||||
msgid ""
|
||||
"<p><b>Interpolate RGB as four colors</b>"
|
||||
"<p>The default is to assume that all green pixels are the same. If even-row "
|
||||
"green pixels are more sensitive to ultraviolet light than odd-row this "
|
||||
"difference causes a mesh pattern in the output; using this option solves this "
|
||||
"problem with minimal loss of detail."
|
||||
"<p>To resume, this option blurs the image a little, but it eliminates false 2x2 "
|
||||
"mesh patterns with VNG quality method or mazes with AHD quality method."
|
||||
msgstr ""
|
||||
"<p><b>Interpoliert RGB durch vier Farben.</b> "
|
||||
"<p>Die Voreinstellung ist es, anzunehmen, dass alle grünen Pixel identisch "
|
||||
"sind. Da eine ebenmäßige Reihe von grünen Pixeln empfindlicher auf "
|
||||
"ultraviolettes Licht reagiert als eine nicht ebenmäßige, wird normalerweise "
|
||||
"durch diesen Unterschied ein Netzmuster erzeugt. Diese Option löst dieses "
|
||||
"Problem mit einem minimalen Verlust von Details.\n"
|
||||
"<p>Diese Option verschmiert das Bild ein wenig, aber es verhindert fehlerhafte "
|
||||
"2x2 Gitter mit der VNG- oder der AHD-Qualitätsmethode."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:183
|
||||
#, c-format
|
||||
msgid "dcraw %1"
|
||||
msgstr "dcraw %1"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:186
|
||||
msgid "Visit dcraw project website"
|
||||
msgstr "Webseite des dcraw-Projektes besuchen"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:191
|
||||
msgid "White Balance:"
|
||||
msgstr "Weißabgleich:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:193
|
||||
msgid "Default D65 White Balance"
|
||||
msgstr "Standard D65 Weißabgleich"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:194
|
||||
msgid "Camera White Balance"
|
||||
msgstr "Kamera-Weißabgleich"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:195
|
||||
msgid "Automatic White Balance"
|
||||
msgstr "Automatischer Weißabgleich"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:196
|
||||
msgid "Manual White balance"
|
||||
msgstr "Manueller Weißabgleich"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:197
|
||||
msgid ""
|
||||
"<p><b>White Balance</b>"
|
||||
"<p>Configure the raw white balance :"
|
||||
"<p><b>Default D65 White Balance</b>: Use a standard daylight D65 white balance "
|
||||
"(dcraw defaults)"
|
||||
"<p><b>Camera White Balance</b>: Use the white balance specified by the camera. "
|
||||
"If not available, reverts to default neutral white balance"
|
||||
"<p><b>Automatic White Balance</b>: Calculates an automatic white balance "
|
||||
"averaging the entire image"
|
||||
"<p><b>Manual White balance</b>: Set a custom temperature and green level values"
|
||||
msgstr ""
|
||||
"<p><b>Weißabgleich</b>"
|
||||
"<p>Konfiguration des Roh_Weißabgleichs:"
|
||||
"<p><b>Standard D65 Weißabgleich</b>: Benutzt einen "
|
||||
"Standardtageslichtweißabgleich D65 (dcraw Standard)."
|
||||
"<p><b>Kamera-Weißabgleich</b>: Benutzt den Weißabgleich der vond er Kamera "
|
||||
"vorgegebne wurde. Wenn dieser nicht verfügbar ist, dann wird der Standard, der "
|
||||
"neutrale Weißabgleich benutzt."
|
||||
"<p><b>Automatischer Weißabgleich</b>: Berechnet einen automatischen "
|
||||
"Weißabgleich, der das gesamte Bild mittelt."
|
||||
"<p><b>Manueller Weißabgleich</b>: Setzt benutzerdefinierte Temperatur und "
|
||||
"Grünwerte."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:211
|
||||
msgid "Temperature (K):"
|
||||
msgstr "Temperatur (K):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:212
|
||||
msgid "<p><b>Temperature</b><p>Set here the color temperature."
|
||||
msgstr "<p><b>Temperatur</b><p>Setzen Sie hier die Farbtemperatur."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:221
|
||||
msgid "Green:"
|
||||
msgstr "Grün:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:222
|
||||
msgid ""
|
||||
"<p>Set here the green component to set magenta color cast removal level."
|
||||
msgstr ""
|
||||
"<p>Legen Sie hier die Grünkomponente fest, um den Grad der Magentaentfernung zu "
|
||||
"bestimmen."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:230
|
||||
msgid "Highlights:"
|
||||
msgstr "Spitzlichter:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:232
|
||||
msgid "Solid white"
|
||||
msgstr "Durchgehendes Weiß"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:233
|
||||
msgid "Unclip"
|
||||
msgstr "Lösen"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:234
|
||||
msgid "Blend"
|
||||
msgstr "Abmischen"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:235
|
||||
msgid "Rebuild"
|
||||
msgstr "Rekonstruieren"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:236
|
||||
msgid ""
|
||||
"<p><b>Highlights</b>"
|
||||
"<p>Select here the highlight clipping method:"
|
||||
"<p><b>Solid white</b>: clip all highlights to solid white"
|
||||
"<p><b>Unclip</b>: leave highlights unclipped in various shades of pink"
|
||||
"<p><b>Blend</b>:Blend clipped and unclipped values together for a gradual fade "
|
||||
"to white"
|
||||
"<p><b>Rebuild</b>: reconstruct highlights using a level value"
|
||||
msgstr ""
|
||||
"<p><b>Spitzlichter</b>"
|
||||
"<p>Wählen Sie hier Spitzlichterabschneidemethode:"
|
||||
"<p><b>Durchgehendes Weiß</b>: setzt alle Spitzlichter auf ein durchgehendes "
|
||||
"weiß."
|
||||
"<p><b>Lösen</b>: lässt alle Spitzlichter gelöst in verschiedenen Schattierungen "
|
||||
"von Rosa. "
|
||||
"<p><b>Abmischen</b>:Mischt gelöste und befestigte Werte zusammen für eine "
|
||||
"abgestufte Abblendung nach weiß."
|
||||
"<p><b>Rekonstruieren</b>: rekonstruiert alle Spitzlichter durch die Benutzung "
|
||||
"eines Levelwertes."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:248
|
||||
msgid "Level:"
|
||||
msgstr "Niveau:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:251
|
||||
msgid ""
|
||||
"<p><b>Level</b>"
|
||||
"<p>Specify the reconstruct highlight level. Low values favor whites and high "
|
||||
"values favor colors."
|
||||
msgstr ""
|
||||
"<p><b>Niveau</b>"
|
||||
"<p>Gibt das Spitzlichterniveau des Ausgabebildes für die Rekonstruktion. "
|
||||
"Niedrige Werte bevorzugen Weiss und hohe Werte Farben."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:260
|
||||
msgid "Brightness:"
|
||||
msgstr "Helligkeit:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:264
|
||||
msgid ""
|
||||
"<p><b>Brighness</b>"
|
||||
"<p>Specify the brightness level of output image.The default value is 1.0 (works "
|
||||
"in 8-bit mode only)."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Helligkeit</b>"
|
||||
"<p>Gibt das Helligkeitsniveau des Ausgabebildes an. Der Standardwert ist 1,0. "
|
||||
"Diese Funktion arbeitet nur im 8-Bit Modus."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:273
|
||||
msgid "Quality (interpolation):"
|
||||
msgstr "Qualität(Interpolation):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:275
|
||||
msgid "Bilinear"
|
||||
msgstr "Bilinear"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:276
|
||||
msgid "VNG"
|
||||
msgstr "VNG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:277
|
||||
msgid "PPG"
|
||||
msgstr "PPG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:278
|
||||
msgid "AHD"
|
||||
msgstr "AHD"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:279
|
||||
msgid ""
|
||||
"<p><b>Quality</b>"
|
||||
"<p>Select here the demosaicing RAW images decoding interpolation method. A "
|
||||
"demosaicing algorithm is a digital image process used to interpolate a complete "
|
||||
"image from the partial raw data received from the color-filtered image sensor "
|
||||
"internal to many digital cameras in form of a matrix of colored pixels. Also "
|
||||
"known as CFA interpolation or color reconstruction, another common spelling is "
|
||||
"demosaicing. There are 3 methods to demosaicing RAW images:"
|
||||
"<p><b>Bilinear</b>: use high-speed but low-quality bilinear interpolation "
|
||||
"(default - for slow computer). In this method, the red value of a non-red pixel "
|
||||
"is computed as the average of the adjacent red pixels, and similar for blue and "
|
||||
"green."
|
||||
"<p><b>VNG</b>: use Variable Number of Gradients interpolation. This method "
|
||||
"computes gradients near the pixel of interest and uses the lower gradients "
|
||||
"(representing smoother and more similar parts of the image) to make an "
|
||||
"estimate."
|
||||
"<p><b>PPG</b>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses "
|
||||
"assumptions about natural scenery in making estimates. It has fewer color "
|
||||
"artifacts on natural images than the Variable Number of Gradients method."
|
||||
"<p><b>AHD</b>: use Adaptive Homogeneity-Directed interpolation. This method "
|
||||
"selects the direction of interpolation so as to maximize a homogeneity metric, "
|
||||
"thus typically minimizing color artifacts."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Qualität</b>"
|
||||
"<p>Wählen Sie hier die Interpolationsmethode zum demosaicing der Rohbilder. Ein "
|
||||
"demosaicing Algorithmus ist der digitale Prozess der benutzt wird um ein "
|
||||
"komplettes Bild aus den Rohdaten des farbgefilterten Bildsensors zu "
|
||||
"interpolieren. Dieser Sensor ist in vielen Digitalkameras in Form einer Matrix "
|
||||
"von farbigen Pixeln enthalten. Demosaicing ist auch bekannt als CFA "
|
||||
"Interpolation, Farbfiltermatrix oder Farbrekonstruktion. Es gibt drei Methoden "
|
||||
"zur Farbrekonstruktion von Rohbildern:"
|
||||
"<p><b>Bilinear</b>: benutzt einen sehr schnellen bilineare Interpolation die "
|
||||
"eine schlechte Qualität erzeugt. Diese Methode ist der Standard für langsame "
|
||||
"Rechner. In der Methode wird der Rotwert eines nicht-roten Pixel als der "
|
||||
"Durchschnitt der benachbarten roten Pixel berechnet. Analog wird für den Blau- "
|
||||
"und Grünwert verfahren."
|
||||
"<p><b>VNG</b>: benutzt zur Interpolation eine Variable Nummer von Gradienten. "
|
||||
"Diese Methode berechnet Gradienten neben dem interessanten Pixel und benutzt "
|
||||
"die niedrigen Gradienten, die glattere und ähnlichere Teile des Bildes "
|
||||
"repräsentieren, um eine Schätzung für den Pixel zu machen. "
|
||||
"<p><b>PPG</b>: benutzt eine Patterned Pixel Grouping Interpolation. "
|
||||
"Pixelgruppierungen gehen von Annahmen über natürliche Szenen bei Ihren "
|
||||
"Schätzungen aus. Es erzeugt daher weniger Farbartefakte bei natürlichen Bildern "
|
||||
"als die VNG Methode."
|
||||
"<p><b>AHD</b>: benutzt eine adaptive homogenitäts-gerichtete Interpolation. "
|
||||
"Diese Methode wählt die Richtung der Interpolation, so dass eine "
|
||||
"Homogenitätsmetrik maximiert wird. Die minimiert typischerweise Farbartefakte."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:307
|
||||
msgid "Enable noise reduction"
|
||||
msgstr "Rauschminderung einschalten"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:308
|
||||
msgid ""
|
||||
"<p><b>Enable Noise Reduction</b>"
|
||||
"<p>Use wavelets to erase noise while preserving real detail."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Rauschminderung einschalten</b>"
|
||||
"<p>Benutzt Wavelets um Rauschen zu löschen und dabei die echten Details zu "
|
||||
"erhalten."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:315
|
||||
msgid "Threshold:"
|
||||
msgstr "Schwellwert:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:316
|
||||
msgid ""
|
||||
"<p><b>Threshold</b>"
|
||||
"<p>Set here the noise reduction threshold value to use."
|
||||
msgstr ""
|
||||
"<p><b>Schwellwert</b>"
|
||||
"<p>Geben Sie hier den Schwellwert ein, der für die Rauschminderung benutzt "
|
||||
"wird."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:324
|
||||
msgid "Enable Chromatic Aberration correction"
|
||||
msgstr "Farbabweichungskorrektur einschalten"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:325
|
||||
msgid ""
|
||||
"<p><b>Enable Chromatic Aberration correction</b>"
|
||||
"<p>Enlarge the raw red and blue layers by the given factors, typically 0.999 to "
|
||||
"1.001, to correct chromatic aberration."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Farbabweichungskorrektur einschalten</b>"
|
||||
"<p>Vergrößert die Rot- und Blau-Ebenen der Rohdaten, um einen gegebenen Faktor, "
|
||||
"üblicherweise zwischen 0,999 und 1,001, um farbabweichungen zu korrigieren."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:331
|
||||
msgid "Red multiplier:"
|
||||
msgstr "Rotmultiplikator:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:335
|
||||
msgid ""
|
||||
"<p><b>Red multiplier</b>"
|
||||
"<p>Set here the magnification factor of the red layer"
|
||||
msgstr ""
|
||||
"<p><b>Rotmultiplikator</b>"
|
||||
"<p>Geben Sie hier den Vergrößerungsfaktor der Rotebene."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:338
|
||||
msgid "Blue multiplier:"
|
||||
msgstr "Blaumultiplikator:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:342
|
||||
msgid ""
|
||||
"<p><b>Blue multiplier</b>"
|
||||
"<p>Set here the magnification factor of the blue layer"
|
||||
msgstr ""
|
||||
"<p><b>Rotmultiplikator</b>"
|
||||
"<p>Geben Sie hier den Vergrößerungsfaktor der Rotebene."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:354
|
||||
msgid "Color space:"
|
||||
msgstr "Farbraum:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:356
|
||||
msgid "Raw (linear)"
|
||||
msgstr "Roh (linear)"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:357
|
||||
msgid "sRGB"
|
||||
msgstr "sRGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:358
|
||||
msgid "Adobe RGB"
|
||||
msgstr "Adobe RGB"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:359
|
||||
msgid "Wide Gamut"
|
||||
msgstr "Wide Gamut"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:360
|
||||
msgid "Pro-Photo"
|
||||
msgstr "Pro-Foto"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:361
|
||||
msgid ""
|
||||
"<p><b>Color space</b>"
|
||||
"<p>Select here the output color space used to decode RAW data."
|
||||
"<p><b>Raw (linear)</b>: in this mode, no output color space is used during RAW "
|
||||
"decoding."
|
||||
"<p><b>sRGB</b>: this is a RGB color space, created cooperatively by "
|
||||
"Hewlett-Packard and Microsoft. It is the best choice for images destined for "
|
||||
"the Web and portrait photography."
|
||||
"<p><b>Adobe RGB</b>: this color space is an extended RGB color space, developed "
|
||||
"by Adobe. It is used for photography applications such as advertising and fine "
|
||||
"art."
|
||||
"<p><b>Wide Gamut</b>: this color space is an expanded version of the Adobe RGB "
|
||||
"color space."
|
||||
"<p><b>Pro-Photo</b>: this color space is an RGB color space, developed by "
|
||||
"Kodak, that offers an especially large gamut designed for use with photographic "
|
||||
"outputs in mind."
|
||||
msgstr ""
|
||||
"<p><b>Farbraum</b>"
|
||||
"<p>Wählen Sie hier den Ausgabefarbraum für die dekodierten Rohdaten."
|
||||
"<p><b>Roh (linear)</b>: in diesem Modus wird kein Ausgabefarbraum während der "
|
||||
"Rohdekodierung benutzt."
|
||||
"<p><b>sRGB</b>: dieser Farbraum ist ein RGB Farbraum, der in Kooperation "
|
||||
"zwischen Hewlett-Packard und Microsoft erstellt wurde. Er ist die beste Wahl "
|
||||
"für Bilder die für das Web oder als Portrait gedacht sind."
|
||||
"<p><b>Adobe RGB</b>: dieser Farbraum ist ein RGB Farbraum, der von Adobe "
|
||||
"entwickelt wurde. Er ist gedacht für Fotoanwendungen wie Werbung und Kunst."
|
||||
"<p><b>Wide-Gamut</b>: dieser Farbraum ist eine erweiterte Version des Adobe RGB "
|
||||
"Farbraums."
|
||||
"<p><b>Pro-Foto</b>: dieser Farbraum ist ein RGB Farbraum, der von Kodak "
|
||||
"entwickelt wurde. Er ermöglicht eine sehr große Farbskala (Gamut) und wurde für "
|
||||
"die fotographische Ausgabe designt."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:391
|
||||
msgid "Standard"
|
||||
msgstr "Standard"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:398
|
||||
msgid "Do not stretch or rotate pixels"
|
||||
msgstr "Pixel nicht dehnen oder drehen"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:399
|
||||
msgid ""
|
||||
"<p><b>Do not stretch or rotate pixels</b>"
|
||||
"<p>For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras "
|
||||
"with non-square pixels, do not stretch the image to its correct aspect ratio. "
|
||||
"In any case, this option guarantees that each output pixel corresponds to one "
|
||||
"RAW pixel."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Pixel nicht dehnen oder drehen</b>"
|
||||
"<p>Zeigt das Bild um 45 Grad gekippt für Fuji Super CCD Kameras. Für Kameras "
|
||||
"mit nicht-quadratischen Pixeln wird das Bild nicht auf das richtige "
|
||||
"Seitenverhältnis gedehnt. Diese Option sorgt also in allen Fälllen, dass jeder "
|
||||
"Ausgabepixel genau einem Rohpixel entspricht."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:409
|
||||
msgid "Black point"
|
||||
msgstr "Schwarzpunkt"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:410
|
||||
msgid ""
|
||||
"<p><b>Black point</b>"
|
||||
"<p>Use a specific black point value to decode RAW pictures. If you set this "
|
||||
"option to off, the Black Point value will be automatically computed."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Schwarzpunkt</b>"
|
||||
"<p>Benutzt einen spezifischen Schwarpunktwert, um die Rohbilder zu dekodieren. "
|
||||
"Wenn Sie diese Option ausschalten, dann wird der Schwarzpzunktwert automatisch "
|
||||
"berechnet."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:416
|
||||
msgid ""
|
||||
"<p><b>Black point value</b>"
|
||||
"<p>Specify specific black point value of the output image."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Schwarzpunktwert</b>"
|
||||
"<p>Geben Sie den spezifischen Schwarzpunktwert des Ausgabebildes an."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:424
|
||||
msgid "Advanced"
|
||||
msgstr "Erweitert"
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = el
|
||||
SUBDIRS = $(AUTODIRS)
|
||||
POFILES = AUTO
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = es
|
||||
SUBDIRS = $(AUTODIRS)
|
||||
POFILES = AUTO
|
@ -0,0 +1,496 @@
|
||||
# translation of libkdcraw.po to Español
|
||||
# Pablo Pita Leira <pablo.pita@kdemail.net>, 2007.
|
||||
# santi <santi@kde-es.org>, 2007.
|
||||
# Santiago Fernández Sancho <santi@kde-es.org>, 2007.
|
||||
# translation of libkdcraw.po to
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libkdcraw\n"
|
||||
"POT-Creation-Date: 2008-03-03 21:56+0100\n"
|
||||
"PO-Revision-Date: 2007-08-23 18:07+0200\n"
|
||||
"Last-Translator: Santiago Fernández Sancho <santi@kde-es.org>\n"
|
||||
"Language-Team: Español <kde-es@kybs.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-POFile-SpellExtra: CCD Adaptive Homogeneity CIELab VNG Fuji RAW Hewlett\n"
|
||||
"X-POFile-SpellExtra: Variable Directed Packard dcraw Kodak AHD libkdcraw\n"
|
||||
"X-POFile-SpellExtra: of Number CFA Gamute sRGB Photo Gradients BT\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:160
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p>Unable to find the <b>%1</b> executable:"
|
||||
"<br>This binary program is required to support Raw file formats. You can "
|
||||
"continue, but you will not be able to handle any Raw images. Please check the "
|
||||
"installation of libkdcraw package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>No se encontró el ejecutable <b>%1</b>:"
|
||||
"<br>Este programa binario es necesario para soportar los formatos de archivo "
|
||||
"RAW. Podrá continuar, pero no será capaz de trabajar con las imágenes RAW. "
|
||||
"Compruebe la instalación del paquete «libkdcraw» en su equipo."
|
||||
|
||||
#: libkdcraw/dcrawbinary.cpp:176
|
||||
msgid ""
|
||||
"<qt>"
|
||||
"<p><b>%1</b> executable is not up to date:"
|
||||
"<br> The version %2 of this binary program have been found on your computer. "
|
||||
"This version is too old to run properly. You can continue, but you will not be "
|
||||
"able to handle any Raw images. Please check the installation of libkdcraw "
|
||||
"package on your computer."
|
||||
msgstr ""
|
||||
"<qt>"
|
||||
"<p>El ejecutable <b>%1</b> no está actualizado:"
|
||||
"<br>Se ha encontrado la versión %2 de este programa binario en su equipo. Esta "
|
||||
"versión es demasiado antigua para funcionar correctamente. Podrá continuar, "
|
||||
"pero no será capaz de trabajar con las imágenes RAW. Compruebe la instalación "
|
||||
"del paquete «libkdcraw» en su equipo."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:145
|
||||
msgid "16 bits color depth"
|
||||
msgstr "Profundidad de color de 16 bits"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:146
|
||||
msgid ""
|
||||
"<p>If enabled, all RAW files will be decoded in 16-bit color depth using a "
|
||||
"linear gamma curve. To prevent dark picture rendering in the editor, it is "
|
||||
"recommended to use Color Management in this mode."
|
||||
"<p>If disabled, all RAW files will be decoded in 8-bit color depth with a "
|
||||
"BT.709 gamma curve and a 99th-percentile white point. This mode is faster than "
|
||||
"16-bit decoding."
|
||||
msgstr ""
|
||||
"<p>Si activa la opción, todos los archivos RAW serán descodificados para una "
|
||||
"profundidad de color de 16 bits, usando una curva de gamma linear. Para evitar "
|
||||
"el mostrar imágenes negras en el editor, se recomienda que use el gestor de "
|
||||
"colores en este modo. "
|
||||
"<p>Si desactivada, todos los archivos RAW serán descodificados para una "
|
||||
"profundidad de color de 8 bits, con una curva de gama BT.709 y un punto blanco "
|
||||
"en el percentil-99. Este modo es mas rápido que la descodificación de 16 bits."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:167
|
||||
msgid "Interpolate RGB as four colors"
|
||||
msgstr "Interpolar el RGB como cuatro colores"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:168
|
||||
msgid ""
|
||||
"<p><b>Interpolate RGB as four colors</b>"
|
||||
"<p>The default is to assume that all green pixels are the same. If even-row "
|
||||
"green pixels are more sensitive to ultraviolet light than odd-row this "
|
||||
"difference causes a mesh pattern in the output; using this option solves this "
|
||||
"problem with minimal loss of detail."
|
||||
"<p>To resume, this option blurs the image a little, but it eliminates false 2x2 "
|
||||
"mesh patterns with VNG quality method or mazes with AHD quality method."
|
||||
msgstr ""
|
||||
"<p><b>Interpolar el RGB como cuatro colores.</b>"
|
||||
"<p>De forma predeterminada se asume que todos los puntos verdes son lo mismo. "
|
||||
"Si los puntos verdes de las líneas pares fuesen más sensibles a la luz "
|
||||
"ultravioleta que los de las lineas impares esta diferencia causa un patrón "
|
||||
"reticular en el resultado; si se usa esta opción, se resuelve el problema con "
|
||||
"una mínima pérdida de detalle."
|
||||
"<p>En resumen, esta opción borra la imagen un poco, pero elimina los falsos "
|
||||
"patrones en malla 2x2 con el método de calidad VNG o los laberintos con el "
|
||||
"método AHD."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:183
|
||||
#, c-format
|
||||
msgid "dcraw %1"
|
||||
msgstr "dcraw %1"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:186
|
||||
msgid "Visit dcraw project website"
|
||||
msgstr "Visite el sitio web del proyecto «dcraw»"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:191
|
||||
msgid "White Balance:"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:193
|
||||
msgid "Default D65 White Balance"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:194
|
||||
#, fuzzy
|
||||
msgid "Camera White Balance"
|
||||
msgstr "Usar el balance de blancos de la cámara"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:195
|
||||
#, fuzzy
|
||||
msgid "Automatic White Balance"
|
||||
msgstr "Balance de colores automático"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:196
|
||||
#, fuzzy
|
||||
msgid "Manual White balance"
|
||||
msgstr "Usar el balance de blancos de la cámara"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:197
|
||||
msgid ""
|
||||
"<p><b>White Balance</b>"
|
||||
"<p>Configure the raw white balance :"
|
||||
"<p><b>Default D65 White Balance</b>: Use a standard daylight D65 white balance "
|
||||
"(dcraw defaults)"
|
||||
"<p><b>Camera White Balance</b>: Use the white balance specified by the camera. "
|
||||
"If not available, reverts to default neutral white balance"
|
||||
"<p><b>Automatic White Balance</b>: Calculates an automatic white balance "
|
||||
"averaging the entire image"
|
||||
"<p><b>Manual White balance</b>: Set a custom temperature and green level values"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:211
|
||||
msgid "Temperature (K):"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:212
|
||||
#, fuzzy
|
||||
msgid "<p><b>Temperature</b><p>Set here the color temperature."
|
||||
msgstr ""
|
||||
"<p><b>Multiplicador rojo</b>"
|
||||
"<p>Establezca aquí el factor de aumento de la capa roja"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:221
|
||||
msgid "Green:"
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:222
|
||||
msgid ""
|
||||
"<p>Set here the green component to set magenta color cast removal level."
|
||||
msgstr ""
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:230
|
||||
msgid "Highlights:"
|
||||
msgstr "Tonos claros:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:232
|
||||
msgid "Solid white"
|
||||
msgstr "Blanco puro"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:233
|
||||
msgid "Unclip"
|
||||
msgstr "No superponer"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:234
|
||||
msgid "Blend"
|
||||
msgstr "Mezclar"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:235
|
||||
msgid "Rebuild"
|
||||
msgstr "Reconstruir"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:236
|
||||
msgid ""
|
||||
"<p><b>Highlights</b>"
|
||||
"<p>Select here the highlight clipping method:"
|
||||
"<p><b>Solid white</b>: clip all highlights to solid white"
|
||||
"<p><b>Unclip</b>: leave highlights unclipped in various shades of pink"
|
||||
"<p><b>Blend</b>:Blend clipped and unclipped values together for a gradual fade "
|
||||
"to white"
|
||||
"<p><b>Rebuild</b>: reconstruct highlights using a level value"
|
||||
msgstr ""
|
||||
"<p><b>Tonos claros</b>"
|
||||
"<p>Seleccione aquí el método de recorte de los tonos claros:"
|
||||
"<p><b>Blanco puro</b>: ajusta todos los tonos claros hacia un blanco puro "
|
||||
"<p><b>No superponer</b>: Deja los tonos claros de las diferentes zonas en "
|
||||
"varios tonos de rosa"
|
||||
"<p><b>Mezclar</b>: Combina los valores de las diferentes zonas para conseguir "
|
||||
"una transición gradual hacia el blanco"
|
||||
"<p><b>Reconstruir</b>: reconstruye los tonos claros, usando un valor de nivel"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:248
|
||||
msgid "Level:"
|
||||
msgstr "Nivel:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:251
|
||||
msgid ""
|
||||
"<p><b>Level</b>"
|
||||
"<p>Specify the reconstruct highlight level. Low values favor whites and high "
|
||||
"values favor colors."
|
||||
msgstr ""
|
||||
"<p><b>Nivel</b>"
|
||||
"<p>Indica el nivel de tonos claros en la reconstrucción. Los valores bajo "
|
||||
"favorecen los blancos y los valores altos favorecen los colores."
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:260
|
||||
msgid "Brightness:"
|
||||
msgstr "Brillo:"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:264
|
||||
msgid ""
|
||||
"<p><b>Brighness</b>"
|
||||
"<p>Specify the brightness level of output image.The default value is 1.0 (works "
|
||||
"in 8-bit mode only)."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Brillo</b>"
|
||||
"<p>Indique el nivel de brillo de la imagen resultante. El valor predeterminado "
|
||||
"es 1,0 (solo funciona en el modo de 8-bit)."
|
||||
"<p>"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:273
|
||||
msgid "Quality (interpolation):"
|
||||
msgstr "Calidad (interpolación):"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:275
|
||||
msgid "Bilinear"
|
||||
msgstr "Bilinear"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:276
|
||||
msgid "VNG"
|
||||
msgstr "VNG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:277
|
||||
msgid "PPG"
|
||||
msgstr "PPG"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:278
|
||||
msgid "AHD"
|
||||
msgstr "AHD"
|
||||
|
||||
#: libkdcraw/dcrawsettingswidget.cpp:279
|
||||
msgid ""
|
||||
"<p><b>Quality</b>"
|
||||
"<p>Select here the demosaicing RAW images decoding interpolation method. A "
|
||||
"demosaicing algorithm is a digital image process used to interpolate a complete "
|
||||
"image from the partial raw data received from the color-filtered image sensor "
|
||||
"internal to many digital cameras in form of a matrix of colored pixels. Also "
|
||||
"known as CFA interpolation or color reconstruction, another common spelling is "
|
||||
"demosaicing. There are 3 methods to demosaicing RAW images:"
|
||||
"<p><b>Bilinear</b>: use high-speed but low-quality bilinear interpolation "
|
||||
"(default - for slow computer). In this method, the red value of a non-red pixel "
|
||||
"is computed as the average of the adjacent red pixels, and similar for blue and "
|
||||
"green."
|
||||
"<p><b>VNG</b>: use Variable Number of Gradients interpolation. This method "
|
||||
"computes gradients near the pixel of interest and uses the lower gradients "
|
||||
"(representing smoother and more similar parts of the image) to make an "
|
||||
"estimate."
|
||||
"<p><b>PPG</b>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses "
|
||||
"assumptions about natural scenery in making estimates. It has fewer color "
|
||||
"artifacts on natural images than the Variable Number of Gradients method."
|
||||
"<p><b>AHD</b>: use Adaptive Homogeneity-Directed interpolation. This method "
|
||||
"selects the direction of interpolation so as to maximize a homogeneity metric, "
|
||||
"thus typically minimizing color artifacts."
|
||||
"<p>"
|
||||
msgstr ""
|
||||
"<p><b>Calidad</b>"
|
||||
"<p>Seleccione aquí el método de interpolación en la decodificación para "
|
||||
"eliminar el mosaico de las imágenes RAW. Un algoritmo de borrado de mosaicos es "
|
||||
"un proceso digital sobre la imagen usado para interpolar una imagen completa a "
|
||||
"partir de los datos parciales en bruto que son recibidos desde el sensor de "
|
||||
"imagen con filtros de colores, sensor interno en muchas cámaras digitales en "
|
||||
"forma de una matriz de puntos coloreados. Se conoce también por interpolación "
|
||||
"CFA o reconstrucción de colores, siendo el otro término común el borrado de "
|
||||
"mosaicos. Existen 4 métodos para borrar los mosaicos de las imágenes RAW:"
|
||||
"<p><b>Bilinear</b>: usa la interpolación bilinear, rápida pero de baja calidad "
|
||||
"(predeterminado para máquinas lentas). En este método, el valor de rojo de un "
|
||||
"punto no-rojo se calcula como la media de los puntos rojos adyacentes, "
|
||||
"aplicándose el mismo principio para el verde y el azul."
|
||||
"<p><b>VNG</b>: usa la interpolación de número de gradientes variable (del "
|
||||
"inglés Variable Number of Gradients). Este método calcula los gradientes, "
|
||||
"próximos al punto de interés, y usa los gradientes menores (que representan las "
|
||||
"partes mas suaves y semejantes de la imagen) para hacer una estimación. "
|
||||
"<p><b>PPG</b>: utiliza la interpolación por agrupación de puntos en patrones "
|
||||
"(del inglés Patterned Pixel Grouping). La agrupación de puntos hace "
|
||||
"estimaciones para paisajes naturales. Existen pocos artefactos de color en las "
|
||||
"imágenes naturales en contraposición al método del número de gradientes "
|
||||
"variable."
|
||||
"<p><b>AHD</b>: usa la interpolación adaptativa y direccionada a la homogeneidad "
|
||||
"(del inglés Adaptive Homogeneity-Directed). Este método selecciona la dirección "
|
||||
"de interpol |