LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/core - SkDeviceProfile.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 1 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2012 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef SkDeviceProfile_DEFINED
       9             : #define SkDeviceProfile_DEFINED
      10             : 
      11             : #include "SkRefCnt.h"
      12             : 
      13           0 : class SkDeviceProfile : public SkRefCnt {
      14             : public:
      15             : 
      16             : 
      17             :     enum LCDConfig {
      18             :         kNone_LCDConfig,   // disables LCD text rendering, uses A8 instead
      19             :         kRGB_Horizontal_LCDConfig,
      20             :         kBGR_Horizontal_LCDConfig,
      21             :         kRGB_Vertical_LCDConfig,
      22             :         kBGR_Vertical_LCDConfig
      23             :     };
      24             : 
      25             :     enum FontHintLevel {
      26             :         kNone_FontHintLevel,
      27             :         kSlight_FontHintLevel,
      28             :         kNormal_FontHintLevel,
      29             :         kFull_FontHintLevel,
      30             :         kAuto_FontHintLevel
      31             :     };
      32             : 
      33             :     /**
      34             :      *  gammaExp is typically between 1.0 and 2.2. For no gamma adjustment,
      35             :      *  specify 1.0
      36             :      *
      37             :      *  contrastScale will be pinned between 0.0 and 1.0. For no contrast
      38             :      *  adjustment, specify 0.0
      39             :      *
      40             :      *  @param config   Describes the LCD layout for this device. If this is set
      41             :      *                  to kNone, then all requests for LCD text will be
      42             :      *                  devolved to A8 antialiasing.
      43             :      *
      44             :      *  @param level    The hinting level to be used, IF the paint specifies
      45             :      *                  "default". Otherwise the paint's hinting level will be
      46             :      *                  respected.
      47             :      */
      48             :     static SkDeviceProfile* Create(float gammaExp,
      49             :                                    float contrastScale,
      50             :                                    LCDConfig,
      51             :                                    FontHintLevel);
      52             : 
      53             :     /**
      54             :      *  Returns the global default profile, that is used if no global profile is
      55             :      *  specified with SetGlobal(), or if nullptr is specified to SetGlobal().
      56             :      *  The references count is *not* incremented, and the caller should not
      57             :      *  call unref().
      58             :      */
      59             :     static SkDeviceProfile* GetDefault();
      60             : 
      61             :     /**
      62             :      *  Return the current global profile (or the default if no global had yet
      63             :      *  been set) and increment its reference count. The call *must* call unref()
      64             :      *  when it is done using it.
      65             :      */
      66             :     static SkDeviceProfile* RefGlobal();
      67             : 
      68             :     /**
      69             :      *  Make the specified profile be the global value for all subsequently
      70             :      *  instantiated devices. Does not affect any existing devices.
      71             :      *  Increments the reference count on the profile.
      72             :      *  Specify nullptr for the "identity" profile (where there is no gamma or
      73             :      *  contrast correction).
      74             :      */
      75             :     static void SetGlobal(SkDeviceProfile*);
      76             : 
      77             :     float getFontGammaExponent() const { return fGammaExponent; }
      78             :     float getFontContrastScale() const { return fContrastScale; }
      79             : 
      80             :     /**
      81             :      *  Given a luminance byte (0 for black, 0xFF for white), generate a table
      82             :      *  that applies the gamma/contrast settings to linear coverage values.
      83             :      */
      84             :     void generateTableForLuminanceByte(U8CPU lumByte, uint8_t table[256]) const;
      85             : 
      86             : private:
      87             :     SkDeviceProfile(float gammaExp, float contrastScale, LCDConfig,
      88             :                     FontHintLevel);
      89             : 
      90             :     float           fGammaExponent;
      91             :     float           fContrastScale;
      92             :     LCDConfig       fLCDConfig;
      93             :     FontHintLevel   fFontHintLevel;
      94             : 
      95             :     typedef SkRefCnt INHERITED;
      96             : };
      97             : 
      98             : #endif

Generated by: LCOV version 1.13