/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkString.h" #include "SkStringUtils.h" void SkAddFlagToString(SkString* string, bool flag, const char* flagStr, bool* needSeparator) { if (flag) { if (*needSeparator) { string->append("|"); } string->append(flagStr); *needSeparator = true; } } void SkAppendScalar(SkString* str, SkScalar value, SkScalarAsStringType asType) { switch (asType) { case kHex_SkScalarAsStringType: str->appendf("SkBits2Float(0x%08x)", SkFloat2Bits(value)); break; case kDec_SkScalarAsStringType: { SkString tmp; tmp.printf("%g", value); if (tmp.contains('.')) { tmp.appendUnichar('f'); } str->append(tmp); break; } } } SkString SkTabString(const SkString& string, int tabCnt) { if (tabCnt <= 0) { return string; } SkString tabs; for (int i = 0; i < tabCnt; ++i) { tabs.append("\t"); } SkString result; static const char newline[] = "\n"; const char* input = string.c_str(); int nextNL = SkStrFind(input, newline); while (nextNL >= 0) { if (nextNL > 0) { result.append(tabs); } result.append(input, nextNL + 1); input += nextNL + 1; nextNL = SkStrFind(input, newline); } if (*input != '\0') { result.append(tabs); result.append(input); } return result; }