1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.ide.eclipse.gltrace.state;
18 
19 import com.android.annotations.NonNull;
20 import com.android.annotations.Nullable;
21 import com.android.utils.SdkUtils;
22 
23 public class StatePrettyPrinter {
24     private static final int SPACES_PER_INDENT = 4;
25     private final String mLineSeparator = SdkUtils.getLineSeparator();
26 
27     private StringBuilder mSb = new StringBuilder(1000);
28     private int mIndentLevel = 0;
29 
prettyPrint(@onNull GLStateType name, @Nullable String value)30     public void prettyPrint(@NonNull GLStateType name, @Nullable String value) {
31         indentLine(mIndentLevel * SPACES_PER_INDENT);
32 
33         mSb.append(name.toString());
34 
35         if (value != null) {
36             mSb.append(':');
37             mSb.append(value);
38         }
39         mSb.append(mLineSeparator);
40     }
41 
prettyPrint(@onNull String s)42     public void prettyPrint(@NonNull String s) {
43         indentLine(mIndentLevel * SPACES_PER_INDENT);
44 
45         mSb.append(s);
46         mSb.append(mLineSeparator);
47     }
48 
indentLine(int spaces)49     private void indentLine(int spaces) {
50         for (int i = 0; i < spaces; i++) {
51             mSb.append(' ');
52         }
53     }
54 
incrementIndentLevel()55     public void incrementIndentLevel() {
56         mIndentLevel++;
57     }
58 
decrementIndentLevel()59     public void decrementIndentLevel() {
60         mIndentLevel--;
61     }
62 
63     @Override
toString()64     public String toString() {
65         return mSb.toString();
66     }
67 }
68