blob: ed533f832997d5ff49c1aeb47f333b6f709d1b7d [file] [log] [blame]
* Copyright 2012 Google Inc.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
#ifndef SkDeviceProfile_DEFINED
#define SkDeviceProfile_DEFINED
#include "SkRefCnt.h"
class SkDeviceProfile : public SkRefCnt {
enum LCDConfig {
kNone_LCDConfig, // disables LCD text rendering, uses A8 instead
enum FontHintLevel {
* gammaExp is typically between 1.0 and 2.2. For no gamma adjustment,
* specify 1.0
* contrastScale will be pinned between 0.0 and 1.0. For no contrast
* adjustment, specify 0.0
* @param config Describes the LCD layout for this device. If this is set
* to kNone, then all requests for LCD text will be
* devolved to A8 antialiasing.
* @param level The hinting level to be used, IF the paint specifies
* "default". Otherwise the paint's hinting level will be
* respected.
static SkDeviceProfile* Create(float gammaExp,
float contrastScale,
* Returns the global default profile, that is used if no global profile is
* specified with SetGlobal(), or if nullptr is specified to SetGlobal().
* The references count is *not* incremented, and the caller should not
* call unref().
static SkDeviceProfile* GetDefault();
* Return the current global profile (or the default if no global had yet
* been set) and increment its reference count. The call *must* call unref()
* when it is done using it.
static SkDeviceProfile* RefGlobal();
* Make the specified profile be the global value for all subsequently
* instantiated devices. Does not affect any existing devices.
* Increments the reference count on the profile.
* Specify nullptr for the "identity" profile (where there is no gamma or
* contrast correction).
static void SetGlobal(SkDeviceProfile*);
float getFontGammaExponent() const { return fGammaExponent; }
float getFontContrastScale() const { return fContrastScale; }
* Given a luminance byte (0 for black, 0xFF for white), generate a table
* that applies the gamma/contrast settings to linear coverage values.
void generateTableForLuminanceByte(U8CPU lumByte, uint8_t table[256]) const;
SkDeviceProfile(float gammaExp, float contrastScale, LCDConfig,
float fGammaExponent;
float fContrastScale;
LCDConfig fLCDConfig;
FontHintLevel fFontHintLevel;
typedef SkRefCnt INHERITED;