1
2 /*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10 #include "SkDisplayNumber.h"
11
12 enum SkDisplayNumber_Properties {
13 SK_PROPERTY(MAX_VALUE),
14 SK_PROPERTY(MIN_VALUE),
15 SK_PROPERTY(NEGATIVE_INFINITY),
16 SK_PROPERTY(NaN),
17 SK_PROPERTY(POSITIVE_INFINITY)
18 };
19
20 #if SK_USE_CONDENSED_INFO == 0
21
22 const SkMemberInfo SkDisplayNumber::fInfo[] = {
23 SK_MEMBER_PROPERTY(MAX_VALUE, Float),
24 SK_MEMBER_PROPERTY(MIN_VALUE, Float),
25 SK_MEMBER_PROPERTY(NEGATIVE_INFINITY, Float),
26 SK_MEMBER_PROPERTY(NaN, Float),
27 SK_MEMBER_PROPERTY(POSITIVE_INFINITY, Float)
28 };
29
30 #endif
31
32 DEFINE_GET_MEMBER(SkDisplayNumber);
33
34 #if defined _WIN32
35 #pragma warning ( push )
36 // we are intentionally causing an overflow here
37 // (warning C4756: overflow in constant arithmetic)
38 #pragma warning ( disable : 4756 )
39 #endif
40
getProperty(int index,SkScriptValue * value) const41 bool SkDisplayNumber::getProperty(int index, SkScriptValue* value) const {
42 SkScalar constant;
43 switch (index) {
44 case SK_PROPERTY(MAX_VALUE):
45 constant = SK_ScalarMax;
46 break;
47 case SK_PROPERTY(MIN_VALUE):
48 constant = SK_ScalarMin;
49 break;
50 case SK_PROPERTY(NEGATIVE_INFINITY):
51 constant = -SK_ScalarInfinity;
52 break;
53 case SK_PROPERTY(NaN):
54 constant = SK_ScalarNaN;
55 break;
56 case SK_PROPERTY(POSITIVE_INFINITY):
57 constant = SK_ScalarInfinity;
58 break;
59 default:
60 SkASSERT(0);
61 return false;
62 }
63 value->fOperand.fScalar = constant;
64 value->fType = SkType_Float;
65 return true;
66 }
67
68 #if defined _WIN32
69 #pragma warning ( pop )
70 #endif
71