Beispiel #1
0
String Color::serialized() const
{
    if (!hasAlpha()) {
        StringBuilder builder;
        builder.reserveCapacity(7);
        builder.append('#');
        appendByteAsHex(red(), builder, Lowercase);
        appendByteAsHex(green(), builder, Lowercase);
        appendByteAsHex(blue(), builder, Lowercase);
        return builder.toString();
    }

    StringBuilder result;
    result.reserveCapacity(28);

    result.appendLiteral("rgba(");
    result.appendNumber(red());
    result.appendLiteral(", ");
    result.appendNumber(green());
    result.appendLiteral(", ");
    result.appendNumber(blue());
    result.appendLiteral(", ");

    if (!alpha())
        result.append('0');
    else {
        result.append(Decimal::fromDouble(alpha() / 255.0).toString());
    }

    result.append(')');
    return result.toString();
}
Beispiel #2
0
void CurlCacheEntry::generateBaseFilename(const CString& url)
{
    MD5 md5;
    md5.addBytes(reinterpret_cast<const uint8_t*>(url.data()), url.length());

    Vector<uint8_t, 16> sum;
    md5.checksum(sum);
    uint8_t* rawdata = sum.data();

    for (unsigned i = 0; i < 16; i++)
        appendByteAsHex(rawdata[i], m_basename, Lowercase);
}
// FIXME: More this into the front-end?
// Create human-readable binary representation, like "01:23:45:67:89:AB:CD:EF".
static String createReadableStringFromBinary(const unsigned char* value, size_t length)
{
    ASSERT(length > 0);
    StringBuilder builder;
    builder.reserveCapacity(length * 3 - 1);
    for (size_t i = 0; i < length; ++i) {
        if (i > 0)
            builder.append(':');
        appendByteAsHex(value[i], builder);
    }
    return builder.toString();
}
Beispiel #4
0
void CurlCacheEntry::generateBaseFilename(const CString& url)
{
    MD5 md5;
    md5.addBytes(reinterpret_cast<const uint8_t*>(url.data()), url.length());

    MD5::Digest sum;
    md5.checksum(sum);
    uint8_t* rawdata = sum.data();

    for (size_t i = 0; i < MD5::hashSize; i++)
        appendByteAsHex(rawdata[i], m_basename, Lowercase);
}
String Color::serialized() const
{
    if (!hasAlpha()) {
        StringBuilder builder;
        builder.reserveCapacity(7);
        builder.append('#');
        appendByteAsHex(red(), builder, Lowercase);
        appendByteAsHex(green(), builder, Lowercase);
        appendByteAsHex(blue(), builder, Lowercase);
        return builder.toString();
    }

    Vector<LChar> result;
    result.reserveInitialCapacity(28);
    const char commaSpace[] = ", ";
    const char rgbaParen[] = "rgba(";

    result.append(rgbaParen, 5);
    appendNumber(result, red());
    result.append(commaSpace, 2);
    appendNumber(result, green());
    result.append(commaSpace, 2);
    appendNumber(result, blue());
    result.append(commaSpace, 2);

    if (!alpha())
        result.append('0');
    else {
        NumberToLStringBuffer buffer;
        unsigned length = DecimalNumber(alpha() / 255.0).toStringDecimal(buffer, WTF::NumberToStringBufferLength);
        result.append(buffer, length);
    }

    result.append(')');
    return String::adopt(result);
}
String encodeForFileName(const String& inputString)
{
    StringBuilder result;
    StringImpl* stringImpl = inputString.impl();
    unsigned length = inputString.length();
    for (unsigned i = 0; i < length; ++i) {
        UChar character = (*stringImpl)[i];
        if (shouldEscapeUChar(character)) {
            result.append('%');
            appendByteAsHex(character, result);
        } else
            result.append(character);
    }

    return result.toString();
}