robik / ConsoleD

Because colors are awesome.
63 stars 11 forks source link

ConsoleD

License

This library is licensed under Boost License.

About

ConsoleD is open-source, small library written in D Programming Language that helps you add colors and formatting to your console output. Work on both Windows and Posix operating systems.

Important notes:

Featues

Todo

Examples

Adding colors

import std.stdio, consoled;

void main()
{
    foreground = Color.red;
    writeln("foo"); // Fg: Red | Bg: Default

    background = Color.blue;
    writeln("foo"); // Fg: Red | Bg: Blue

    resetColors(); // Bring back initial state
}

or:

import std.stdio, consoled;

void main()
{
    setColors(Fg.red, Bg.blue); /// Order does not matter as long parameters are Fg or Bg.
    writeln("foo"); // Color: Red | Bg: Blue

    resetColors(); // Bring back initial state
}

Current Foreground/Background

To get current foreground and background colors, simply use foreground or background properties

import std.stdio, consoled;

void main()
{
    auto currentFg = foreground;
    auto currentBg = background;
}

Font Styles

You can change font styles, like strikethrough, underline and bold. This feature is Posix only, when called on windows, nothing happens.

import std.stdio, consoled;

void main()
{
    fontStyle = FontStyle.underline | FontStyle.strikethrough | FontStyle.bold;
    writeln("foo");
    resetFontStyle(); // Or just fontStyle = FontStyle.none;
}

Easy colored messages

You can use helper function writec or writecln to easily colored messages.

import std.stdio, consoled;

void main()
{
    writecln("Hello ", Fg.blue, FontStyle.bold, "World", Bg.red, "!");
    resetColors();
}

Console Size

You can get console size using size property which return tuple containg width and height of the console.

import std.stdio, consoled;

void main()
{
    writeln(size);
}

Cursor manipulation

You can set cursor position using setCursorPos():

import std.stdio, consoled;

void main()
{
    // 6 is half of "insert coin" length.
    setCursorPos(size.x / 2 - 6, size.y / 2);
    writeln("Insert coin");
}

Clearing the screen

You can clear console screen using clearScreen() function:

import std.stdio, consoled, core.thread;

void main()
{
    // Fill whole screen with hashes
    fillArea(ConsolePoint(0, 0), size, '#');

    // Wait 3 seconds
    Thread.sleep(dur!"seconds"(3));

    // Clear the screen
    clearScreen();
}

Setting the title

To set console title, use title property:

import std.stdio, consoled;

void main()
{
    title = "My new title";
}

Setting exit handler

It is possible to handle some close events, such as Ctrl+C key combination using addCloseHandler():

import std.stdio, consoled;
void main()
{   
    setCloseHandler((i){
        switch(i.type)
        {
            case CloseType.Other:
                writeln("Other");
            break;

            case CloseType.Interrupt:
                writeln("Ctrl+C");
            break;

            // Ctrl+Break for windows, Ctrl+Z for posix
            case CloseType.Stop:
                writeln("Ctrl+Break or Ctrl+Z");
            break;

            // Posix only
            case CloseType.Quit:
                writeln(`Ctrl+\`);
            break;

            default:
        }

        writeln(i.isBlockable);
    });

    while(true){}
}

Color themes

You can easy write colored messages with Color themes:

import std.stdio, consoled;

alias Error = ColorTheme!(Color.red, Color.black);

void main()
{
    writeln(Error("foobar error"));
}