1
2
3 #include "SkDeviceProfile.h"
4
5 #define DEFAULT_GAMMAEXP 2.2
6 #define DEFAULT_CONTRASTSCALE 0.5
7 #define DEFAULT_LCDCONFIG SkDeviceProfile::kNone_LCDConfig
8 #define DEFAULT_FONTHINTLEVEL SkDeviceProfile::kSlight_FontHintLevel
9
pin(float value,float min,float max)10 static float pin(float value, float min, float max) {
11 if (value < min) {
12 value = min;
13 } else if (value > max) {
14 value = max;
15 }
16 return value;
17 }
18
SkDeviceProfile(float gammaExp,float contrast,LCDConfig config,FontHintLevel level)19 SkDeviceProfile::SkDeviceProfile(float gammaExp, float contrast,
20 LCDConfig config, FontHintLevel level) {
21 fGammaExponent = pin(gammaExp, 0, 10);
22 fContrastScale = pin(contrast, 0, 1);
23 fLCDConfig = config;
24 fFontHintLevel = level;
25 }
26
generateTableForLuminanceByte(U8CPU lumByte,uint8_t table[256]) const27 void SkDeviceProfile::generateTableForLuminanceByte(U8CPU lumByte,
28 uint8_t table[256]) const {
29 }
30
31 ///////////////////////////////////////////////////////////////////////////////
32
Create(float gammaExp,float contrast,LCDConfig config,FontHintLevel level)33 SkDeviceProfile* SkDeviceProfile::Create(float gammaExp,
34 float contrast,
35 LCDConfig config,
36 FontHintLevel level) {
37 return SkNEW_ARGS(SkDeviceProfile, (gammaExp, contrast, config, level));
38 }
39
40 static SkMutex gMutex;
41 static SkDeviceProfile* gDefaultProfile;
42 static SkDeviceProfile* gGlobalProfile;
43
GetDefault()44 SkDeviceProfile* SkDeviceProfile::GetDefault() {
45 SkAutoMutexAcquire amc(gMutex);
46
47 if (NULL == gDefaultProfile) {
48 gDefaultProfile = SkDeviceProfile::Create(DEFAULT_GAMMAEXP,
49 DEFAULT_CONTRASTSCALE,
50 DEFAULT_LCDCONFIG,
51 DEFAULT_FONTHINTLEVEL);
52 }
53 return gDefaultProfile;
54 }
55
RefGlobal()56 SkDeviceProfile* SkDeviceProfile::RefGlobal() {
57 SkAutoMutexAcquire amc(gMutex);
58
59 if (NULL == gGlobalProfile) {
60 gGlobalProfile = SkDeviceProfile::GetDefault();
61 }
62 gGlobalProfile->ref();
63 return gGlobalProfile;
64 }
65
SetGlobal(SkDeviceProfile * profile)66 void SkDeviceProfile::SetGlobal(SkDeviceProfile* profile) {
67 SkAutoMutexAcquire amc(gMutex);
68
69 SkRefCnt_SafeAssign(gGlobalProfile, profile);
70 }
71
72
73