Files
libgphoto2/camlibs/pentax/pslr_enum.c
2017-04-04 20:18:10 +02:00

304 lines
8.6 KiB
C

/*
pkTriggerCord
Copyright (C) 2011-2017 Andras Salamon <andras.salamon@melda.info>
Remote control of Pentax DSLR cameras.
Support for K200D added by Jens Dreyer <jens.dreyer@udo.edu> 04/2011
Support for K-r added by Vincenc Podobnik <vincenc.podobnik@gmail.com> 06/2011
Support for K-30 added by Camilo Polymeris <cpolymeris@gmail.com> 09/2012
Support for K-01 added by Ethan Queen <ethanqueen@gmail.com> 01/2013
Support for K-3 added by Tao Wang <twang2218@gmail.com> 01/2016
based on:
PK-Remote
Remote control of Pentax DSLR cameras.
Copyright (C) 2008 Pontus Lidman <pontus@lysator.liu.se>
PK-Remote for Windows
Copyright (C) 2010 Tomasz Kos
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, 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 Lesser General Public License for more details.
You should have received a copy of the GNU General Public License
and GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pslr_enum.h"
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
const char* pslr_color_space_str[PSLR_COLOR_SPACE_MAX] = {
"sRGB",
"AdobeRGB"
};
const char* pslr_af_mode_str[PSLR_AF_MODE_MAX] = {
"MF",
"AF.S",
"AF.C",
"AF.A"
};
const char* pslr_ae_metering_str[PSLR_AE_METERING_MAX] = {
"Multi",
"Center",
"Spot"
};
const char* pslr_flash_mode_str[PSLR_FLASH_MODE_MAX] = {
"Manual",
"Manual-RedEye",
"Slow",
"Slow-RedEye",
"TrailingCurtain",
"Auto",
"Auto-RedEye",
"TrailingCurtain", // maybe in manual mode??
"Wireless"
};
const char* pslr_drive_mode_str[PSLR_DRIVE_MODE_MAX] = {
"Single", // Bracketing also returns Single
"Continuous-HI",
"SelfTimer-12",
"SelfTimer-2",
"Remote",
"Remote-3",
"Continuous-LO"
};
const char* pslr_af_point_sel_str[PSLR_AF_POINT_SEL_MAX] = {
"Auto-5",
"Select",
"Spot",
"Auto-11"
};
const char* pslr_jpeg_image_tone_str[PSLR_JPEG_IMAGE_TONE_MAX] = {
"Natural",
"Bright",
"Portrait",
"Landscape",
"Vibrant",
"Monochrome",
"Muted",
"ReversalFilm",
"BleachBypass",
"Radiant",
"CrossProcessing",
"Flat",
"Auto"
};
const char* pslr_white_balance_mode_str[PSLR_WHITE_BALANCE_MODE_MAX] = {
"Auto",
"Daylight",
"Shade",
"Cloudy",
"Fluorescent_D",
"Fluorescent_N",
"Fluorescent_W",
"Tungsten",
"Flash",
"Manual", // sometimes called Manual1
"Manual2",
"Manual3",
"Kelvin1",
"Kelvin2",
"Kelvin3",
"Fluorescent_L",
"CTE",
"MultiAuto"
};
const char* pslr_custom_ev_steps_str[PSLR_CUSTOM_EV_STEPS_MAX] = {
"1/2",
"1/3"
};
const char* pslr_image_format_str[PSLR_IMAGE_FORMAT_MAX] = {
"JPEG",
"RAW",
"RAW+"
};
const char* pslr_raw_format_str[PSLR_RAW_FORMAT_MAX] = {
"PEF",
"DNG"
};
const char* pslr_scene_mode_str[PSLR_SCENE_MODE_MAX] = {
"NONE",
"HISPEED",
"DOF",
"MTF",
"STANDARD",
"PORTRAIT",
"LANDSCAPE",
"MACRO",
"SPORT",
"NIGHTSCENEPORTRAIT",
"NOFLASH",//10
"NIGHTSCENE",
"SURFANDSNOW",
"TEXT",
"SUNSET",
"KIDS",
"PET",
"CANDLELIGHT",
"MUSEUM",
"19", // ?
"FOOD",
"STAGE",
"NIGHTSNAP",
"SWALLOWDOF",
"24", // ?
"NIGHTSCENEHDR",
"BLUESKY",
"FOREST",
"28", // ?
"BLACKLIGHTSILHOUETTE"
};
// case insenstive comparison
// strnicmp
int str_comparison_i (const char *s1, const char *s2, int n) {
if ( s1 == NULL ) {
return s2 == NULL ? 0 : -(*s2);
}
if (s2 == NULL) {
return *s1;
}
char c1='\0', c2='\0';
int length=0;
while ( length<n && (c1 = tolower (*s1)) == (c2 = tolower (*s2))) {
if (*s1 == '\0') {
break;
}
++s1;
++s2;
++length;
}
return c1 - c2;
}
int find_in_array( const char** array, int length, char* str ) {
int i;
int found_index=-1;
size_t found_index_length=0;
size_t string_length;
for ( i = 0; i<length; ++i ) {
string_length = strlen(array[i]);
if ( (str_comparison_i( array[i], str, string_length ) == 0) && (string_length > found_index_length) ) {
found_index_length = string_length;
found_index = i;
}
}
return found_index;
}
const char *get_pslr_str( const char** array, int length, int value ) {
if (value >=0 && value < length) {
return array[value];
} else {
char *ret = malloc(128);
sprintf (ret, "Unknown value: %d", value);
return ret;
}
}
pslr_color_space_t get_pslr_color_space( char *str ) {
return find_in_array( pslr_color_space_str, sizeof(pslr_color_space_str)/sizeof(pslr_color_space_str[0]),str);
}
const char *get_pslr_color_space_str( pslr_color_space_t value ) {
return get_pslr_str( pslr_color_space_str, sizeof(pslr_color_space_str)/sizeof(pslr_color_space_str[0]),value);
}
pslr_af_mode_t get_pslr_af_mode( char *str ) {
return find_in_array( pslr_af_mode_str, sizeof(pslr_af_mode_str)/sizeof(pslr_af_mode_str[0]),str);
}
const char *get_pslr_af_mode_str( pslr_af_mode_t value ) {
return get_pslr_str( pslr_af_mode_str, sizeof(pslr_af_mode_str)/sizeof(pslr_af_mode_str[0]),value);
}
pslr_ae_metering_t get_pslr_ae_metering( char *str ) {
return find_in_array( pslr_ae_metering_str, sizeof(pslr_ae_metering_str)/sizeof(pslr_ae_metering_str[0]),str);
}
const char *get_pslr_ae_metering_str( pslr_ae_metering_t value ) {
return get_pslr_str( pslr_ae_metering_str, sizeof(pslr_ae_metering_str)/sizeof(pslr_ae_metering_str[0]),value);
}
pslr_flash_mode_t get_pslr_flash_mode( char *str ) {
return find_in_array( pslr_flash_mode_str, sizeof(pslr_flash_mode_str)/sizeof(pslr_flash_mode_str[0]),str);
}
const char *get_pslr_flash_mode_str( pslr_flash_mode_t value ) {
return get_pslr_str( pslr_flash_mode_str, sizeof(pslr_flash_mode_str)/sizeof(pslr_flash_mode_str[0]),value);
}
pslr_drive_mode_t get_pslr_drive_mode( char *str ) {
return find_in_array( pslr_drive_mode_str, sizeof(pslr_drive_mode_str)/sizeof(pslr_drive_mode_str[0]),str);
}
const char *get_pslr_drive_mode_str( pslr_drive_mode_t value ) {
return get_pslr_str( pslr_drive_mode_str, sizeof(pslr_drive_mode_str)/sizeof(pslr_drive_mode_str[0]),value);
}
pslr_af_point_sel_t get_pslr_af_point_sel( char *str ) {
return find_in_array( pslr_af_point_sel_str, sizeof(pslr_af_point_sel_str)/sizeof(pslr_af_point_sel_str[0]),str);
}
const char *get_pslr_af_point_sel_str( pslr_af_point_sel_t value ) {
return get_pslr_str( pslr_af_point_sel_str, sizeof(pslr_af_point_sel_str)/sizeof(pslr_af_point_sel_str[0]),value);
}
pslr_jpeg_image_tone_t get_pslr_jpeg_image_tone( char *str ) {
return find_in_array( pslr_jpeg_image_tone_str, sizeof(pslr_jpeg_image_tone_str)/sizeof(pslr_jpeg_image_tone_str[0]),str);
}
const char *get_pslr_jpeg_image_tone_str( pslr_jpeg_image_tone_t value ) {
return get_pslr_str( pslr_jpeg_image_tone_str, sizeof(pslr_jpeg_image_tone_str)/sizeof(pslr_jpeg_image_tone_str[0]),value);
}
pslr_white_balance_mode_t get_pslr_white_balance_mode( char *str ) {
return find_in_array( pslr_white_balance_mode_str, sizeof(pslr_white_balance_mode_str)/sizeof(pslr_white_balance_mode_str[0]),str);
}
const char *get_pslr_white_balance_mode_str( pslr_white_balance_mode_t value ) {
return get_pslr_str( pslr_white_balance_mode_str, sizeof(pslr_white_balance_mode_str)/sizeof(pslr_white_balance_mode_str[0]),value);
}
const char *get_pslr_custom_ev_steps_str( pslr_custom_ev_steps_t value ) {
return get_pslr_str( pslr_custom_ev_steps_str, sizeof(pslr_custom_ev_steps_str)/sizeof(pslr_custom_ev_steps_str[0]),value);
}
const char *get_pslr_image_format_str( pslr_image_format_t value ) {
return get_pslr_str( pslr_image_format_str, sizeof(pslr_image_format_str)/sizeof(pslr_image_format_str[0]),value);
}
const char *get_pslr_raw_format_str( pslr_raw_format_t value ) {
return get_pslr_str( pslr_raw_format_str, sizeof(pslr_raw_format_str)/sizeof(pslr_raw_format_str[0]),value);
}
const char *get_pslr_scene_mode_str( pslr_scene_mode_t value ) {
return get_pslr_str( pslr_scene_mode_str, sizeof(pslr_scene_mode_str)/sizeof(pslr_scene_mode_str[0]),value);
}