| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 ********************************************************************** | |
| 3 * Copyright (c) 2014, International Business Machines | |
| 4 * Corporation and others. All Rights Reserved. | |
| 5 ********************************************************************** | |
| 6 */ | |
| 7 #ifndef SCIFORMATHELPER_H | |
| 8 #define SCIFORMATHELPER_H | |
| 9 | |
| 10 #include "unicode/utypes.h" | |
| 11 | |
| 12 #if !UCONFIG_NO_FORMATTING | |
| 13 | |
| 14 #ifndef U_HIDE_DRAFT_API | |
| 15 | |
| 16 #include "unicode/unistr.h" | |
| 17 | |
| 18 /** | |
| 19 * \file | |
| 20 * \brief C++ API: Formatter for measure objects. | |
| 21 */ | |
| 22 | |
| 23 U_NAMESPACE_BEGIN | |
| 24 | |
| 25 class DecimalFormatSymbols; | |
| 26 class FieldPositionIterator; | |
| 27 class DecimalFormatStaticSets; | |
| 28 | |
| 29 /** | |
| 30 * A helper class for formatting numbers in standard scientific notation | |
| 31 * instead of E notation. | |
| 32 * | |
| 33 * Sample code: | |
| 34 * <pre> | |
| 35 * UErrorCode status = U_ZERO_ERROR; | |
| 36 * DecimalFormat *decfmt = (DecimalFormat *) | |
| 37 * NumberFormat::createScientificInstance("en", status); | |
| 38 * UnicodeString appendTo; | |
| 39 * FieldPositionIterator fpositer; | |
| 40 * decfmt->format(1.23456e-78, appendTo, &fpositer, status); | |
| 41 * ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status); | |
| 42 * UnicodeString result; | |
| 43 * | |
| 44 * // result = "1.23456x10<sup>-78</sup>" | |
| 45 * helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, status)); | |
| 46 * </pre> | |
| 47 * | |
| 48 * @see NumberFormat | |
| 49 * @draft ICU 54 | |
| 50 */ | |
| 51 class U_I18N_API ScientificFormatHelper : public UObject { | |
| 52 public: | |
| 53 /** | |
| 54 * Constructor. | |
| 55 * @param symbols comes from DecimalFormat instance used for default | |
| 56 * scientific notation. | |
| 57 * @param status any error reported here. | |
| 58 * @draft ICU 54 | |
| 59 */ | |
| 60 ScientificFormatHelper(const DecimalFormatSymbols &symbols, UErrorCode& stat
us); | |
| 61 | |
| 62 /** | |
| 63 * Copy constructor. | |
| 64 * @draft ICU 54 | |
| 65 */ | |
| 66 ScientificFormatHelper(const ScientificFormatHelper &other); | |
| 67 | |
| 68 /** | |
| 69 * Assignment operator. | |
| 70 * @draft ICU 54 | |
| 71 */ | |
| 72 ScientificFormatHelper &operator=(const ScientificFormatHelper &other); | |
| 73 | |
| 74 /** | |
| 75 * Destructor. | |
| 76 * @draft ICU 54 | |
| 77 */ | |
| 78 virtual ~ScientificFormatHelper(); | |
| 79 | |
| 80 /** | |
| 81 * Formats standard scientific notation by surrounding exponent with | |
| 82 * html to make it superscript. | |
| 83 * @param s the original formatted scientific notation | |
| 84 * e.g "6.02e23". s is output from | |
| 85 * NumberFormat::createScientificInstance()->format(). | |
| 86 * @param fpi the FieldPositionIterator from the format call. | |
| 87 * fpi is output from | |
| 88 * NumberFormat::createScientificInstance()->format(). | |
| 89 * @param beginMarkup the start html for the exponent e.g "<sup>" | |
| 90 * @param endMarkup the end html for the exponent e.g "</sup>" | |
| 91 * @param result standard scientific notation appended here. | |
| 92 * @param status any error returned here. When status is set to a | |
| 93 * non-zero error, the value of result is unspecified, | |
| 94 * and client should fallback to using s for scientific | |
| 95 * notation. | |
| 96 * @return the value stored in result. | |
| 97 * @draft ICU 54 | |
| 98 */ | |
| 99 UnicodeString &insertMarkup( | |
| 100 const UnicodeString &s, | |
| 101 FieldPositionIterator &fpi, | |
| 102 const UnicodeString &beginMarkup, | |
| 103 const UnicodeString &endMarkup, | |
| 104 UnicodeString &result, | |
| 105 UErrorCode &status) const; | |
| 106 | |
| 107 /** | |
| 108 * Formats standard scientific notation by using superscript unicode | |
| 109 * points 0..9. | |
| 110 * @param s the original formatted scientific notation | |
| 111 * e.g "6.02e23". s is output from | |
| 112 * NumberFormat::createScientificInstance()->format(). | |
| 113 * @param fpi the FieldPositionIterator from the format call. | |
| 114 * fpi is output from | |
| 115 * NumberFormat::createScientificInstance()->format(). | |
| 116 * @param result standard scientific notation appended here. | |
| 117 * @param status any error returned here. When status is set to a | |
| 118 * non-zero error, the value of result is unspecified, | |
| 119 * and client should fallback to using s for scientific | |
| 120 * notation. | |
| 121 * @return the value stored in result. | |
| 122 * @draft ICU 54 | |
| 123 */ | |
| 124 UnicodeString &toSuperscriptExponentDigits( | |
| 125 const UnicodeString &s, | |
| 126 FieldPositionIterator &fpi, | |
| 127 UnicodeString &result, | |
| 128 UErrorCode &status) const; | |
| 129 private: | |
| 130 UnicodeString fPreExponent; | |
| 131 const DecimalFormatStaticSets *fStaticSets; | |
| 132 }; | |
| 133 | |
| 134 U_NAMESPACE_END | |
| 135 | |
| 136 #endif /* U_HIDE_DRAFT_API */ | |
| 137 | |
| 138 #endif /* !UCONFIG_NO_FORMATTING */ | |
| 139 #endif | |
| OLD | NEW |