|
Packit Service |
48484a |
/*
|
|
Packit Service |
48484a |
Test for database search functions.
|
|
Packit Service |
48484a |
*/
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
#include "lensfun.h"
|
|
Packit Service |
48484a |
#include <glib.h>
|
|
Packit Service |
48484a |
#include <getopt.h>
|
|
Packit Service |
48484a |
#include <locale.h>
|
|
Packit Service |
48484a |
#include <stdio.h>
|
|
Packit Service |
48484a |
#include <stdlib.h>
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void DisplayVersion ()
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("Lensfun version %d.%d.%d: test database search routines\n",
|
|
Packit Service |
48484a |
LF_VERSION_MAJOR, LF_VERSION_MINOR, LF_VERSION_MICRO);
|
|
Packit Service |
48484a |
g_print ("Copyright (C) 2007 Andrew Zabolotny\n\n");
|
|
Packit Service |
48484a |
g_print ("For distribution rules and conditions of use see the file\n");
|
|
Packit Service |
48484a |
g_print ("COPYING which is part of the distribution.\n");
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void DisplayUsage ()
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
DisplayVersion ();
|
|
Packit Service |
48484a |
g_print ("\nIf no options are given, some standard tests will be run.\n");
|
|
Packit Service |
48484a |
g_print ("Command-line options:\n\n");
|
|
Packit Service |
48484a |
g_print (" -L# --lens=# Use calibration data for this lens\n");
|
|
Packit Service |
48484a |
g_print (" -m# --max=# Limit the amount results\n");
|
|
Packit Service |
48484a |
g_print (" -f --fuzzy More fuzzy search algorithm\n");
|
|
Packit Service |
48484a |
g_print (" -V --version Display program version and exit\n");
|
|
Packit Service |
48484a |
g_print (" -h --help Display this help text\n");
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void PrintMount (const lfMount *mount)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("Mount: %s\n", lf_mlstr_get (mount->Name));
|
|
Packit Service |
48484a |
if (mount->Compat)
|
|
Packit Service |
48484a |
for (int j = 0; mount->Compat [j]; j++)
|
|
Packit Service |
48484a |
g_print ("\tCompat: %s\n", mount->Compat [j]);
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void PrintCamera (const lfCamera *camera, const lfDatabase *ldb)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("Camera: %s / %s %s%s%s\n",
|
|
Packit Service |
48484a |
lf_mlstr_get (camera->Maker),
|
|
Packit Service |
48484a |
lf_mlstr_get (camera->Model),
|
|
Packit Service |
48484a |
camera->Variant ? "(" : "",
|
|
Packit Service |
48484a |
camera->Variant ? lf_mlstr_get (camera->Variant) : "",
|
|
Packit Service |
48484a |
camera->Variant ? ")" : "");
|
|
Packit Service |
48484a |
g_print ("\tMount: %s\n", lf_db_mount_name (ldb, camera->Mount));
|
|
Packit Service |
48484a |
g_print ("\tCrop factor: %g\n", camera->CropFactor);
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void PrintLens (const lfLens *lens, const lfDatabase *ldb)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("Lens: %s / %s\n",
|
|
Packit Service |
48484a |
lf_mlstr_get (lens->Maker),
|
|
Packit Service |
48484a |
lf_mlstr_get (lens->Model));
|
|
Packit Service |
48484a |
g_print ("\tCrop factor: %g\n", lens->CropFactor);
|
|
Packit Service |
48484a |
g_print ("\tAspect ratio: %g\n", lens->AspectRatio);
|
|
Packit Service |
48484a |
g_print ("\tFocal: %g-%g\n", lens->MinFocal, lens->MaxFocal);
|
|
Packit Service |
48484a |
g_print ("\tAperture: %g-%g\n", lens->MinAperture, lens->MaxAperture);
|
|
Packit Service |
48484a |
g_print ("\tCenter: %g,%g\n", lens->CenterX, lens->CenterY);
|
|
Packit Service |
48484a |
if (lens->Mounts)
|
|
Packit Service |
48484a |
for (int j = 0; lens->Mounts [j]; j++)
|
|
Packit Service |
48484a |
g_print ("\tMount: %s\n", lf_db_mount_name (ldb, lens->Mounts [j]));
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void PrintCameras (const lfCamera **cameras, const lfDatabase *ldb, int maxEntries=-1)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
if (cameras)
|
|
Packit Service |
48484a |
for (int i = 0; cameras [i]; i++)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("--- camera %d: ---\n", i + 1);
|
|
Packit Service |
48484a |
PrintCamera (cameras [i], ldb);
|
|
Packit Service |
48484a |
if ((maxEntries > 0) && (i>=maxEntries-1))
|
|
Packit Service |
48484a |
break;
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
else
|
|
Packit Service |
48484a |
g_print ("\t- failed\n");
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static void PrintLenses (const lfLens **lenses, const lfDatabase *ldb, int maxEntries=-1)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
if (lenses)
|
|
Packit Service |
48484a |
for (int i = 0; lenses [i]; i++)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("--- lens %d, score %d: ---\n", i + 1, lenses [i]->Score);
|
|
Packit Service |
48484a |
PrintLens (lenses [i], ldb);
|
|
Packit Service |
48484a |
if ((maxEntries > 0) && (i>=maxEntries-1))
|
|
Packit Service |
48484a |
break;
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
else
|
|
Packit Service |
48484a |
g_print ("\t- failed\n");
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
int main (int argc, char **argv)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static struct option long_options[] =
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
{"lens", required_argument, NULL, 'L'},
|
|
Packit Service |
48484a |
{"max", required_argument, NULL, 'm'},
|
|
Packit Service |
48484a |
{"fuzzy", no_argument, NULL, 'f'},
|
|
Packit Service |
48484a |
{"help", no_argument, NULL, 'h'},
|
|
Packit Service |
48484a |
{"version", no_argument, NULL, 'V'},
|
|
Packit Service |
48484a |
{0, 0, 0, 0}
|
|
Packit Service |
48484a |
};
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
static struct
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
int maxResults;
|
|
Packit Service |
48484a |
bool fuzzySearch;
|
|
Packit Service |
48484a |
const char *Lens;
|
|
Packit Service |
48484a |
} opts =
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
-1,
|
|
Packit Service |
48484a |
0,
|
|
Packit Service |
48484a |
NULL,
|
|
Packit Service |
48484a |
};
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
setlocale (LC_ALL, "");
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
int c;
|
|
Packit Service |
48484a |
while ((c = getopt_long (argc, argv, "L:m:fhV", long_options, NULL)) != EOF)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
switch (c)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
case'L':
|
|
Packit Service |
48484a |
opts.Lens = optarg;
|
|
Packit Service |
48484a |
break;
|
|
Packit Service |
48484a |
case 'm':
|
|
Packit Service |
48484a |
opts.maxResults = atoi(optarg);
|
|
Packit Service |
48484a |
break;
|
|
Packit Service |
48484a |
case 'f':
|
|
Packit Service |
48484a |
opts.fuzzySearch = LF_SEARCH_LOOSE;
|
|
Packit Service |
48484a |
break;
|
|
Packit Service |
48484a |
case 'h':
|
|
Packit Service |
48484a |
DisplayUsage();
|
|
Packit Service |
48484a |
return 0;
|
|
Packit Service |
48484a |
case 'V':
|
|
Packit Service |
48484a |
DisplayVersion ();
|
|
Packit Service |
48484a |
return 0;
|
|
Packit Service |
48484a |
default:
|
|
Packit Service |
48484a |
return -1;
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
lfDatabase *ldb = lf_db_new ();
|
|
Packit Service |
48484a |
ldb->Load ();
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
if (opts.Lens == NULL)
|
|
Packit Service |
48484a |
{
|
|
Packit Service |
48484a |
g_print ("No lens name is given\n");
|
|
Packit Service |
48484a |
DisplayUsage();
|
|
Packit Service |
48484a |
ldb->Destroy ();
|
|
Packit Service |
48484a |
return -1;
|
|
Packit Service |
48484a |
}
|
|
Packit Service |
48484a |
g_print (">>> Looking for lens '%s' %d\n", opts.Lens, opts.fuzzySearch);
|
|
Packit Service |
48484a |
const lfLens **lenses = ldb->FindLenses (NULL, NULL, opts.Lens, opts.fuzzySearch);
|
|
Packit Service |
48484a |
PrintLenses (lenses, ldb, opts.maxResults);
|
|
Packit Service |
48484a |
lf_free (lenses);
|
|
Packit Service |
48484a |
|
|
Packit Service |
48484a |
ldb->Destroy ();
|
|
Packit Service |
48484a |
return 0;
|
|
Packit Service |
48484a |
}
|