15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* From private/ppb_display_color_profile_private.idl, 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * modified Mon Dec 16 20:53:23 2013. 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPB_DISPLAY_COLOR_PROFILE_PRIVATE_H_ 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPAPI_C_PRIVATE_PPB_DISPLAY_COLOR_PROFILE_PRIVATE_H_ 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_array_output.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPB_DISPLAYCOLORPROFILE_PRIVATE_INTERFACE_0_1 \ 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "PPB_DisplayColorProfile_Private;0.1" 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPB_DISPLAYCOLORPROFILE_PRIVATE_INTERFACE \ 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PPB_DISPLAYCOLORPROFILE_PRIVATE_INTERFACE_0_1 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @file 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This file defines the <code>PPB_DisplayColorProfile</code> struct used for 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * getting the color profile of the display. 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @addtogroup Interfaces 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @{ 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PPB_DisplayColorProfile_Private</code> defines the methods for getting 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * the display color profile and monitoring its changes. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <strong>Setup:<strong> 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @code 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_ArrayOutput output = { MyAllocatorFunction, color_profile_data }; 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_Resource display_cp = display_cp_interface->Create(instance); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * display_cp_interface->GetColorProfile(display_cp, 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * output, 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * completion_callback); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @endcode 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PPB_DisplayColorProfile_Private_0_1 { 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Create() creates a display color profile resource. 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] instance The module instance. 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return A <code>PP_Resource</code> containing a display color profile 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource. 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Resource (*Create)(PP_Instance instance); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * IsDisplayColorProfile() determines if the given resource is a valid 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>DisplayColorProfile</code> resource. 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] resource A <code>DisplayColorProfile</code> context resource. 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return Returns: 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * - <code>PP_TRUE</code> if the given resource is a valid 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>DisplayColorProfile</code> 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * - <code>PP_FALSE</code> if it is an invalid resource or is a resource 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * of another type. 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Bool (*IsDisplayColorProfile)(PP_Resource resource); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * GetColorProfile() enqueues a request for the current display color profile. 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This method is intended for getting the color profile data of the display 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * on which the browser window resides. [However currently Chrome only 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * considers the system's primary display color profile when doing its color 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * management. For consistency this method will also return the color profile 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * that Chrome uses for its browser window.] 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] display_color_profile_res The display color profile resource. 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] color_profile A <code>PP_OutputArray</code> which on success 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * will receive a byte array containing the ICC color profile data (see 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * www.color.org for a reference to the ICC color profile specification 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * and versions). The returned color profile version is the one supported by 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * the host system. 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] callback The completion callback to be called once the display 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * color profile data is available. 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return Returns an error code from <code>pp_errors.h</code>. 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t (*GetColorProfile)(PP_Resource display_color_profile_res, 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_ArrayOutput color_profile, 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_CompletionCallback callback); 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * RegisterColorProfileChangeCallback() registers a callback to be called next 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * time the color profile for the browser window in which the plugin resides 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * changes. In order to get notifications for all color profile changes a call 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * to RegisterColorProfileChangeCallback() function should be done when the 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * previous notification was fired. 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * There might be 2 scenarios in which the color profile for a window changes: 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * a) The window is moved from one display to another; 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * b) The user changes the display color space from the system settings. 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] display_color_profile_res The display color profile resource. 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] callback The callback to be invoked next time the display 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * color profile changes. 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return Returns an error code from <code>pp_errors.h</code>. 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t (*RegisterColorProfileChangeCallback)( 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Resource display_color_profile_res, 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_CompletionCallback callback); 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef struct PPB_DisplayColorProfile_Private_0_1 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PPB_DisplayColorProfile_Private; 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @} 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif /* PPAPI_C_PRIVATE_PPB_DISPLAY_COLOR_PROFILE_PRIVATE_H_ */ 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 124