#include "widget.h"
#include <iostream>

/// ---------------------------------------- Konstruktorok ----------------------------------------------------------
widget::widget(int x0, int y0, unsigned int width0, unsigned int height0)
{
    x = x0; y = y0;
    width = width0; height = height0;
    focus = false;
    visible = true;
}
/// -----------------------------------------------------------------------------------------------------------------


/// -------------------------------------- Események fogadása --------------------------------------------------------
bool widget::event (genv::event &ev)
{
    if (!visible) return false;

    // akkor is meg kell kapnia a felengedés eseményt, ha már nincs fölötte az egér, de fókuszban van, és csak ő kapja meg
    if (focus && ev.type == genv::ev_mouse && ev.button < 0)
    {
        onMouseUp(ev.pos_x, ev.pos_y, -ev.button);
        return true;
    }
    else if (ev.type == genv::ev_mouse && x <= ev.pos_x && ev.pos_x <= x+width && y <= ev.pos_y && ev.pos_y <= y+height)
    {
        if (ev.button == 0) { onMouseMove(ev.pos_x, ev.pos_y); return false; }
        else if (ev.button > 0) onClick(ev.pos_x, ev.pos_y, ev.button);
        return true;
    }
    else if (ev.type == genv::ev_key && focus)
    {
        if (ev.keycode < 0) onKeyUp(-ev.keycode);
        if (ev.keycode > 0) onKeyPress(ev.keycode);
        return true;
    }
    else if (ev.type == genv::ev_timer)
    {
        onTick();
        return false;
    }
    return false;
}

/// ----------------------------------------------------------------------------------------------------------------
#include <sstream>

std::string convert(int temp)
{
    std::string out;
    std::stringstream ss;
    ss << temp;
    ss >> out;
    return out;
}


