Oyranos Color Management System API - Version 0.9.6
tutorial_taxi.c

Obtain a profile for the first monitor from Online Taxi DB.

#include <string.h>
#include <stdio.h> /* sprintf() */
#include <oyConfig_s.h>
#include <oyOptions_s.h>
int main ( int argc, char ** argv )
{
// get a device
oyConfig_s * device = 0;
oyConfigs_s * ds = 0;
oyDevicesGet( 0, "monitor", 0, &ds );
device = oyConfigs_Get( ds, 0 ); oyConfigs_Release( &ds );
// get all Taxi DB entries for a device
oyConfigs_s * taxi_devices = 0;
int error;
error = oyDevicesFromTaxiDB( device, 0, &taxi_devices, 0 );
// see how many are included
int n = oyConfigs_Count( taxi_devices ),
i;
char * id = calloc( sizeof(char), 1024 );
for(i = 0; i < n; ++i)
{
int32_t rank = 0;
oyOptions_s * options = NULL;
oyConfig_s * taxi_device = oyConfigs_Get( taxi_devices, i );
error = oyConfig_Compare( device, taxi_device, &rank );
// get first profile from Taxi DB
if(i == 0)
{
// select the first assigned profile in position zero
snprintf( id, 1024, "%s/0", oyOptions_FindString(
*oyConfig_GetOptions(taxi_device,"db"),
"TAXI_id", 0 ));
error = oyOptions_SetFromText( &options,
"//" OY_TYPE_STD "/db/TAXI_id",
id,
ip = oyProfile_FromTaxiDB( options, NULL );
oyOptions_Release( &options );
if(rank > 0)
{
error = oyOptions_SetFromText( &options,
"////device", "1",
error = oyProfile_Install( ip, scope, options );
oyOptions_Release( &options );
if(!ip)
printf( "No valid Profile obtained: %s\n", id );
printf( "Profile already installed: %s\n", oyProfile_GetText( ip, oyNAME_DESCRIPTION ));
else if(error == oyERROR_DATA_WRITE)
printf( "User Path can not be written\n" );
else if(error == oyCORRUPTED)
printf( "Profile not useable: %s\n", oyProfile_GetText( ip, oyNAME_DESCRIPTION ) );
else if(error > 0)
printf( "%s - %d","Internal Error", error );
else
{
uint32_t icc_profile_flags = 0;
const char * filename = oyProfile_GetFileName( ip, -1 );
/* select profiles matching actual capabilities */
"//" OY_TYPE_STD "/icc_color", NULL, 0 );
printf( "installed -> %s\n", filename );
// store new settings in the Oyranos data base
oyDeviceSetProfile( device, oySCOPE_USER, strrchr( filename, OY_SLASH_C ) + 1 );
// remove any device entries
oyDeviceUnset( device );
// update the device from the newly added Oyranos data base settings
error = oyOptions_SetFromInt( &options,
"//" OY_TYPE_STD "/icc_profile_flags",
icc_profile_flags, 0, OY_CREATE_NEW );
error = oyOptions_SetFromText( &options,
"//"OY_TYPE_STD"/config/skip_ask_for_profile", "yes", OY_CREATE_NEW );
oyDeviceSetup( device, options );
printf( "assigned -> %s\n", strrchr( filename, OY_SLASH_C ) + 1 );
}
}
}
if(rank > 0)
{
const char * t = oyConfig_FindString(taxi_device, "TAXI_profile_description", 0);
printf( "rank[%d] %s\n", rank, t?t:"" );
}
}
// release data
oyConfigs_Release( &taxi_devices );
return 0;
}
oyOptions_s.h
oySCOPE_e
oySCOPE_e
Select Scope for Installation or Configurations.
Definition: oyranos.h:47
oyConfig_s::oyConfig_Compare
int oyConfig_Compare(oyConfig_s *module_device, oyConfig_s *db_pattern, int32_t *rank_value)
Check for matching to a given pattern.
Definition: oyConfig_s.c:465
oyConfig_s.h
oyConfig_s::oyConfig_FindString
OYAPI const char *OYEXPORT oyConfig_FindString(oyConfig_s *config, const char *key, const char *value)
Search in data sets for a key/value.
Definition: oyConfig_s.c:715
oyOptions_s::oyOptions_SetFromText
int oyOptions_SetFromText(oyOptions_s **obj, const char *registration, const char *value, uint32_t flags)
change a value
Definition: oyOptions_s.c:1514
OY_TYPE_STD
#define OY_TYPE_STD
Definition: oyranos_definitions.h:118
oyConfigs_s
A Configs list.
Definition: oyConfigs_s.h:69
oyNAME_DESCRIPTION
@ oyNAME_DESCRIPTION
Definition: oyranos_core.h:75
oyConfig_s
A group of options for a device.
Definition: oyConfig_s.h:66
oyranos_devices.h
oyDeviceSetProfile
int oyDeviceSetProfile(oyConfig_s *device, oySCOPE_e scope, const char *profile_name)
set the device profile
Definition: oyranos_devices.c:980
oyranos_conversion.h
oyProfile_s::oyProfile_FromTaxiDB
OYAPI oyProfile_s *OYEXPORT oyProfile_FromTaxiDB(oyOptions_s *options, oyObject_s object)
look up a profile of a device from Taxi DB
Definition: oyProfile_s.c:589
oyICCProfileSelectionFlagsFromOptions
uint32_t oyICCProfileSelectionFlagsFromOptions(const char *db_base_key, const char *base_pattern, oyOptions_s *options, int select_core)
Get valid profile selection flags from node options and fallbacks.
Definition: oyranos_devices.c:3323
oyConfigs_s::oyConfigs_Count
OYAPI int OYEXPORT oyConfigs_Count(oyConfigs_s *list)
count the elements in a Configs list
Definition: oyConfigs_s.c:221
oyConfigs_s::oyConfigs_Release
OYAPI int OYEXPORT oyConfigs_Release(oyConfigs_s **configs)
release and possibly deallocate a oyConfigs_s object
Definition: oyConfigs_s.c:91
oyDevicesFromTaxiDB
OYAPI int OYEXPORT oyDevicesFromTaxiDB(oyConfig_s *device, oyOptions_s *options, oyConfigs_s **devices, oyObject_s obj)
search a calibration state in the taxi DB for a device
Definition: oyranos_devices.c:1686
oyOptions_s
generic Options
Definition: oyOptions_s.h:80
oyConfig_s::oyConfig_GetOptions
OYAPI oyOptions_s **OYEXPORT oyConfig_GetOptions(oyConfig_s *config, const char *source)
Get options from a source.
Definition: oyConfig_s.c:912
oyProfile_s::oyProfile_GetText
OYAPI const oyChar *OYEXPORT oyProfile_GetText(oyProfile_s *profile, oyNAME_e type)
Get a presentable name.
Definition: oyProfile_s.c:1315
oySCOPE_USER
@ oySCOPE_USER
Definition: oyranos.h:49
oyOptions_s::oyOptions_Release
OYAPI int OYEXPORT oyOptions_Release(oyOptions_s **options)
release and possibly deallocate a oyOptions_s object
Definition: oyOptions_s.c:91
oyDevicesGet
OYAPI int OYEXPORT oyDevicesGet(const char *device_type, const char *device_class, oyOptions_s *options, oyConfigs_s **devices)
get all devices matching to a device class and type
Definition: oyranos_devices.c:112
oyOptions_s::oyOptions_FindString
const char * oyOptions_FindString(oyOptions_s *options, const char *registration, const char *value)
search for a certain option key and possibly value
Definition: oyOptions_s.c:1441
oyProfile_s::oyProfile_Install
OYAPI int OYEXPORT oyProfile_Install(oyProfile_s *profile, oySCOPE_e scope, oyOptions_s *options)
Install a ICC profile.
Definition: oyProfile_s.c:655
oyERROR_DATA_WRITE
@ oyERROR_DATA_WRITE
Definition: oyranos_object.h:343
oyConfigs_s::oyConfigs_Get
OYAPI oyConfig_s *OYEXPORT oyConfigs_Get(oyConfigs_s *list, int pos)
get a element of a Configs list
Definition: oyConfigs_s.c:192
oyProfile_s
A profile and its attributes.
Definition: oyProfile_s.h:95
oyProfile_s::oyProfile_GetFileName
OYAPI const char *OYEXPORT oyProfile_GetFileName(oyProfile_s *profile, int dl_pos)
Get the ICC profile location in the filesystem.
Definition: oyProfile_s.c:1862
oyDeviceSetup
OYAPI int OYEXPORT oyDeviceSetup(oyConfig_s *device, oyOptions_s *options)
activate the device using the stored configuration
Definition: oyranos_devices.c:323
OY_SLASH_C
#define OY_SLASH_C
Definition: oyranos_definitions.h:108
oyOptions_s::oyOptions_SetFromInt
int oyOptions_SetFromInt(oyOptions_s **obj, const char *registration, int32_t value, int pos, uint32_t flags)
change a value
Definition: oyOptions_s.c:1632
oyDeviceUnset
int oyDeviceUnset(oyConfig_s *device)
unset the device profile
Definition: oyranos_devices.c:543
oyERROR_DATA_AMBIGUITY
@ oyERROR_DATA_AMBIGUITY
Definition: oyranos_object.h:344
OY_CREATE_NEW
#define OY_CREATE_NEW
Definition: oyOptions_s.h:52
OY_CMM_STD
#define OY_CMM_STD
Definition: oyranos_definitions.h:131