aboutsummaryrefslogtreecommitdiff
path: root/src/colour.hh
blob: e66d6ff2765ebf83045a02ce7fe2caddde8cbe5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* vim: set sw=4 sts=4 et foldmethod=syntax : */

/*
 * Copyright (c) 2006 Ciaran McCreesh <ciaranm@gentoo.org>
 *
 * This file is part of the Paludis package manager. Paludis is free software;
 * you can redistribute it and/or modify it under the terms of the GNU General
 * Public License as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 *
 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef PALUDIS_GUARD_SRC_COLOUR_HH
#define PALUDIS_GUARD_SRC_COLOUR_HH 1

#include <string>
#include <paludis/stringify.hh>
#include "src/command_line.hh"

enum Colour
{
    cl_red           = 31,
    cl_green         = 32,
    cl_blue          = 34,

    cl_bold_red      = cl_red + 100,
    cl_bold_green    = cl_green + 100,
    cl_bold_blue     = cl_blue + 100,

    cl_package_name  = cl_bold_blue,
    cl_flag_on       = cl_green,
    cl_flag_off      = cl_red,
    cl_slot          = cl_blue,
    cl_visible       = cl_flag_on,
    cl_masked        = cl_flag_off
};

bool use_colour() PALUDIS_ATTRIBUTE((pure));

template <typename T_>
std::string colour(Colour colour, const T_ & s)
{
    if (CommandLine::get_instance()->a_no_color.specified() || ! use_colour())
        return paludis::stringify(s);
    else
        return "\033[" + paludis::stringify(static_cast<unsigned>(colour) / 100) + ";"
            + paludis::stringify(static_cast<unsigned>(colour) % 100) + "m" + paludis::stringify(s)
            + "\033[0;0m";
}

#endif