/*
    Copyright (c) 2026 Christian Schoenebeck

    This file is part of "gigedit" and released under the terms of the
    GNU General Public License version 2.
*/

#ifndef GIGEDIT_COLOR_H
#define GIGEDIT_COLOR_H

#include "compat.h"

/** @brief Unifies color objects in Gigedit.
 *
 * Gtkmm uses a bunch of different classes that can represent a color. It would
 * be quite unhandy to manage a central list of application colors in numerous
 * different classes.
 *
 * Intention of this class is therefore to unify this by using only this class
 * instead, which automatically casts to the various, respective objects that
 * are needed for different parts of the Gtkmm API.
 */
class GEColor {
public:
    GEColor(Glib::ustring bright, Glib::ustring dark);
    operator Gdk::RGBA() const;
    operator Glib::ustring() const;
private:
    Glib::ustring m_bright;
    Glib::ustring m_dark;
};

/** @brief Predefined colors for the Gigedit application.
 *
 * Central place for all colors used by the Gigedit application. This should
 * be used instead of hard coding colors at various places of the application.
 */
namespace GEColors {
    // direct colors ...
    extern const GEColor bronze;

    // by usage ...
    extern const GEColor comboTextColor;
    extern const GEColor multipleValuesColor;
};

#endif // GIGEDIT_COLOR_H
