/*
 * Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
 *
 * Permission to use, copy, modify, and 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 MIND, 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.
 */

class CWidget
{
	int m_x;
	int m_y;
	CWidget m_next;
	CWidget m_parent;

	void(void) CWidget;
	virtual void(void) Draw;
	virtual void(float, float, float, float) Input;

	virtual void(int, int) SetPos;
};

void
CWidget::CWidget(void)
{
	m_x = g_menuofs[0];
	m_y = g_menuofs[1];
}

void
CWidget::Draw(void)
{
}

void
CWidget::Input(float type, float x, float y, float devid)
{
}

void
CWidget::SetPos(int x, int y)
{
	m_x = x;
	m_y = y;
}

void
Widget_Add(CWidget parent, CWidget item)
{
	CWidget wNext = parent;
	CWidget wParent;
	do {
		wParent = wNext;
		wNext = wNext.m_next;
	} while (wNext);
	wParent.m_next = item;
	item.m_parent = parent;
}

void
Widget_Draw(CWidget start)
{
	CWidget wNext = start;
	do {
		wNext = wNext.m_next;
		if (wNext) {
			wNext.Draw();
		}
	} while (wNext);
}

void
Widget_Input(CWidget start, float type, float x, float y, float devid)
{
	CWidget wNext = start;
	do {
		wNext = wNext.m_next;
		if (wNext) {
			wNext.Input(type, x, y, devid);
		}
	} while (wNext);
}

CWidget g_focuswidget;
