blob: 6f5699c8053ea5a610962fa5e9e9d841f75210c1 [file] [log] [blame]
robertphillips@google.com4991b8f2013-01-28 20:21:59 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkString.h"
9#include "SkStringUtils.h"
10
11void SkAddFlagToString(SkString* string, bool flag, const char* flagStr, bool* needSeparator) {
12 if (flag) {
13 if (*needSeparator) {
14 string->append("|");
15 }
16 string->append(flagStr);
17 *needSeparator = true;
18 }
19}
reede05fed02014-12-15 07:59:53 -080020
21void SkAppendScalar(SkString* str, SkScalar value, SkScalarAsStringType asType) {
22 switch (asType) {
23 case kHex_SkScalarAsStringType:
24 str->appendf("SkBits2Float(0x%08x)", SkFloat2Bits(value));
25 break;
26 case kDec_SkScalarAsStringType: {
27 SkString tmp;
28 tmp.printf("%g", value);
29 if (tmp.contains('.')) {
30 tmp.appendUnichar('f');
31 }
32 str->append(tmp);
33 break;
34 }
35 }
36}
37
bsalomon53469832015-08-18 09:20:09 -070038SkString SkTabString(const SkString& string, int tabCnt) {
39 if (tabCnt <= 0) {
40 return string;
41 }
42 SkString tabs;
43 for (int i = 0; i < tabCnt; ++i) {
44 tabs.append("\t");
45 }
46 SkString result;
47 static const char newline[] = "\n";
48 const char* input = string.c_str();
49 int nextNL = SkStrFind(input, newline);
50 while (nextNL >= 0) {
51 if (nextNL > 0) {
52 result.append(tabs);
53 }
54 result.append(input, nextNL + 1);
55 input += nextNL + 1;
56 nextNL = SkStrFind(input, newline);
57 }
58 if (*input != '\0') {
59 result.append(tabs);
bsalomon5ea03632015-08-18 10:33:30 -070060 result.append(input);
bsalomon53469832015-08-18 09:20:09 -070061 }
bsalomon53469832015-08-18 09:20:09 -070062 return result;
63}