Copyright (c) 1994, 2008, Oracle and/or its affiliates. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
#include <X11/Xmu/XmuSolaris.h>
Status
XSolarisGetVisualGamma\^(\^Display *display\f1, int screen_number\f1,
Visual *visual\f1, double *gamma\f1\^);
IntensityOut\f1 = (FramebufferColor\f1)**gamma\f1
(i.e. the color in the frame buffer raised to the power of gamma).
FramebufferColor\f1 refers to the the RGB values stored in the frame buffer pixel store and processed by any color mapping LUTs that are in the output path.
Gamma correction is necessary because of the way color intensities are perceived by the human eye. Without gamma correction, the eye interprets changes to the color intensity incorrectly. Small changes to low intensity light appear to have more effect than the equivalent change to higher intensity light. This distorts the appearance of graphical entities which depend on accurate color, such as images, anti-aliased lines and transparent polygons.
Gamma correction results in a linear mapping between color values and percieved intensity. Gamma corrected visuals are also called linear visuals for this reason. Linear visuals have a gamma value of 1.0.
Note: the term "gamma" used here refers the mapping applied along the entire path (that is, the value percieved by the end user), not merely the exponent of the gamma correction function.
The gamma value returned defines the color-to-intensity mapping for all three channels: red, green, and blue.
A status of \f3Success\f1 is returned if the function was able to determine the gamma successfully. If a request failure occured while calling the function, a \f3BadAccess \f1 error code is returned. If there is an internal inconsistency (e.g. the gamma value for one of the color channels is different from the others) a \f3BadMatch\f1 error code is returned. Whenever an error code is returned, the argument gamma\f1 is left untouched.
The gamma value returned represents the best information available on the intensity response of the visual. Depending on the device, it may or may not include the actual monitor characteristics (some devices have no way of determining the type of monitor so they may assume a default monitor gamma). As such, it represents the system's "best guess" about the intensity response. Since this function gets its information from the same property used by Solaris color managment systems, if more accurate information on the monitor response is configured or calibrated through these systems, this function will return a more accurate value for gamma.
If the intensity mapping is not a power function, the returned gamma value may only be approximate. This should usually happen only when the device gamma correction has been incorrectly configured.
To use this function, an application should link with \f3libXmu\f1.
(Visuals and Display Devices chapter)