Oyranos Color Management System API - Version 0.9.6
tutorial1.c

Show how to obtain and use a monitor profile.

Show how to obtain and use a monitor profile.

#include <oyranos.h>
#include <oyConversion_s.h>
#include <stdio.h>
int main( int argc, char ** argv ) {
oyConfigs_s * devices = NULL;
oyConfig_s * monitor = NULL;
oyOptions_s * options = NULL;
oyProfile_s * monitor_icc = NULL;
const char * monitor_icc_dscr = NULL;
// get all monitors
oyDevicesGet( NULL, "monitor", NULL, &devices );
// just pick the first monitor
monitor = oyConfigs_Get( devices, 0 );
/* get XCM_ICC_COLOR_SERVER_TARGET_PROFILE_IN_X_BASE */
oyOptions_SetFromText( &options,
"//"OY_TYPE_STD"/config/icc_profile.x_color_region_target", "yes", OY_CREATE_NEW );
oyDeviceGetProfile( monitor, options, &monitor_icc );
// get the profiles internal name
monitor_icc_dscr = oyProfile_GetText( monitor_icc, oyNAME_DESCRIPTION );
printf( "first monitor has profile: %s\n", monitor_icc_dscr );
// now convert some colors from sRGB to monitor space
// find the appropriate profile flags
uint32_t icc_profile_flags =oyICCProfileSelectionFlagsFromOptions( OY_CMM_STD,
"//" OY_TYPE_STD "/icc_color", NULL, 0 );
oyProfile_s * srgb = oyProfile_FromStd( oyASSUMED_WEB, icc_profile_flags, 0 );
float rgb_in[9] = {0,0,0, 0.5,0.5,0.5, 1,1,1};
float rgb_moni[9];
// setup the color context
oyConversion_s * cc = oyConversion_CreateBasicPixelsFromBuffers(
srgb, rgb_in, OY_TYPE_123_FLOAT,
monitor_icc, rgb_moni, OY_TYPE_123_FLOAT,
NULL, 3 );
// convert by running the conversion graph
oyConversion_RunPixels( cc, NULL );
// show the source colors and the converted colors
int i;
for(i = 0; i < 3; ++i)
printf("%.02f %.02f %.02f -> %.05f %.05f %.05f\n",
rgb_in[3*i+0],rgb_in[3*i+1],rgb_in[3*i+2], rgb_moni[3*i+0],rgb_moni[3*i+1],rgb_moni[3*i+2]);
return 0;
}
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
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
OYAPI int OYEXPORT oyDeviceGetProfile(oyConfig_s *device, oyOptions_s *options, oyProfile_s **profile)
order a device profile
Definition oyranos_devices.c:805
#define OY_TYPE_123_FLOAT
Definition oyranos_image.h:157
#define OY_CREATE_NEW
Definition oyOptions_s.h:52
The API header for general users to include in your application.
@ oyASSUMED_WEB
Definition oyranos.h:206
@ oyNAME_DESCRIPTION
Definition oyranos_core.h:75
#define OY_TYPE_STD
Definition oyranos_definitions.h:118
#define OY_CMM_STD
Definition oyranos_definitions.h:131
A group of options for a device.
Definition oyConfig_s.h:66
A Configs list.
Definition oyConfigs_s.h:69
A filter chain or graph to manipulate a image.
Definition oyConversion_s.h:184
generic Options
Definition oyOptions_s.h:80
A profile and its attributes.
Definition oyProfile_s.h:95