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 41 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