/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkFloatToDecimal_DEFINED
#define SkFloatToDecimal_DEFINED

namespace pdfium {
namespace skia {

constexpr unsigned kMaximumSkFloatToDecimalLength = 49;

/** \fn SkFloatToDecimal
    Convert a float into a decimal string.

    The resulting string will be in the form `[-]?([0-9]*\.)?[0-9]+` (It does
    not use scientific notation.) and `sscanf(output, "%f", &x)` will return
    the original value if the value is finite. This function accepts all
    possible input values.

    INFINITY and -INFINITY are rounded to FLT_MAX and -FLT_MAX.

    NAN values are converted to 0.

    This function will always add a terminating '\0' to the output.

    @param value  Any floating-point number
    @param output The buffer to write the string into.  Must be non-null.

    @return strlen(output)
*/
unsigned SkFloatToDecimal(float value, char output[kMaximumSkFloatToDecimalLength]);

}  // namespace skia
}  // namespace pdfium

#endif  // SkFloatToDecimal_DEFINED
