view examples/font/main.cpp @ 158:4b292c20124c

Misc: update copyrights
author David Demelier <markand@malikania.fr>
date Tue, 09 Jan 2018 13:15:07 +0100
parents 119bcc5a727e
children a99a7db489bd
line wrap: on
line source

/*
 * main.cpp -- test Font
 *
 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include <chrono>
#include <iostream>
#include <thread>

#include <malikania/client/loader.hpp>
#include <malikania/client/color.hpp>
#include <malikania/client/font.hpp>
#include <malikania/client/point.hpp>
#include <malikania/client/window.hpp>
#include <malikania/locator.hpp>

using namespace std::chrono_literals;

void topleft(mlk::client::window& window, mlk::client::font& font)
{
    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("top left", font, mlk::client::point(10, 10));
    window.present();

    std::this_thread::sleep_for(1s);
}

void topright(mlk::client::window& window, mlk::client::font& font)
{
    auto dim = font.clip("top right");

    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("top right", font, mlk::client::point(400 - dim.width() - 10, 10));
    window.present();

    std::this_thread::sleep_for(1s);
}

void bottomleft(mlk::client::window& window, mlk::client::font& font)
{
    auto dim = font.clip("bottom left");

    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("bottom left", font, mlk::client::point(10, 400 - dim.height() - 10));
    window.present();

    std::this_thread::sleep_for(1s);
}

void bottomright(mlk::client::window& window, mlk::client::font& font)
{
    auto dim = font.clip("bottom right");

    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("bottom right", font, mlk::client::point(400 - dim.width() - 10, 400 - dim.height() - 10));
    window.present();

    std::this_thread::sleep_for(1s);
}

void center(mlk::client::window& window, mlk::client::font& font)
{
    auto dim = font.clip("center");

    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("center", font, mlk::client::point(200 - (dim.width() / 2), 200 - (dim.height() -2)));
    window.present();

    std::this_thread::sleep_for(1s);
}

void center2(mlk::client::window& window, mlk::client::font& font)
{
    auto dim = font.clip("The world is Malikania.");

    window.set_drawing_color(mlk::client::color("black"));
    window.clear();
    window.set_drawing_color(mlk::client::color("white"));
    window.draw_text("The world is Malikania.", font, mlk::client::point(200 - (dim.width() / 2), 200 - (dim.height() -2)));
    window.present();

    std::this_thread::sleep_for(3s);
}

int main()
{
    try {
        mlk::client::window window(400, 400);
        mlk::directory_locator locator(SOURCE_DIRECTORY);
        mlk::client::loader loader(locator);
        mlk::client::font font = loader.load_font("DejaVuSans.ttf", 10);

        topleft(window, font);
        topright(window, font);
        bottomleft(window, font);
        bottomright(window, font);
        center(window, font);
        center2(window, font);
    } catch (const std::exception& ex) {
        std::cerr << ex.what() << std::endl;
        return 1;
    }
}