13e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian/*
23e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * Copyright 2013 The Android Open Source Project
33e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian *
43e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
53e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * you may not use this file except in compliance with the License.
63e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * You may obtain a copy of the License at
73e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian *
83e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
93e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian *
103e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * Unless required by applicable law or agreed to in writing, software
113e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
123e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * See the License for the specific language governing permissions and
143e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian * limitations under the License.
153e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian */
163e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
173e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian#ifndef ANDROID_SURFACE_FLINGER_COLORIZER_H
183e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian#define ANDROID_SURFACE_FLINGER_COLORIZER_H
193e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
20175a7206c5aea70236b916d7707ab25025eb9cd6Brian Anderson#include <utils/String8.h>
21175a7206c5aea70236b916d7707ab25025eb9cd6Brian Anderson
223e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopiannamespace android {
233e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
243e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian// ---------------------------------------------------------------------------
253e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
263e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopianclass Colorizer {
273e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    bool mEnabled;
283e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopianpublic:
293e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    enum color {
303e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        RED     = 31,
313e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        GREEN   = 32,
323e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        YELLOW  = 33,
333e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        BLUE    = 34,
343e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        MAGENTA = 35,
353e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        CYAN    = 36,
363e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        WHITE   = 37
373e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    };
383e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
39342b760763300593cd20b01dac8cef61e7b25b86Chih-Hung Hsieh    explicit Colorizer(bool enabled)
403e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        : mEnabled(enabled) {
413e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    }
423e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
433e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    void colorize(String8& out, color c) {
443e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        if (mEnabled) {
453e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian            out.appendFormat("\e[%dm", c);
463e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        }
473e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    }
483e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
493e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    void bold(String8& out) {
503e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        if (mEnabled) {
513e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian            out.append("\e[1m");
523e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        }
533e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    }
543e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
553e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    void reset(String8& out) {
563e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        if (mEnabled) {
573e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian            out.append("\e[0m");
583e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian        }
593e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian    }
603e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian};
613e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
623e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian// ---------------------------------------------------------------------------
633e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
643e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian}; // namespace android
653e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
663e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian
673e25fd8609b100a75721be82d1d499f0ae9083cbMathias Agopian#endif /* ANDROID_SURFACE_FLINGER_COLORIZER_H */
68