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