Home | History | Annotate | Download | only in core
      1 /*
      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 
     11 void 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 }
     20 
     21 void 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 
     38 SkString 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);
     60         result.append(input);
     61     }
     62     return result;
     63 }
     64