#pragma once

#include <Button.h>
#include <Diagram.h>
#include <Image.h>
#include <initializer_list>
#include <Progress.h>
#include <SelectionBox.h>
#include <Table.h>
#include <UIInitialization.h>

using namespace Framework;

struct OBJTabelleSpalteIni
{
    const char* name;
    int breite;
    int minBreite;
    int maxBreite;
};

Button* createButton(const Framework::UIInitParam& params);
TextField* createTextField(const Framework::UIInitParam& params);
CheckBox* createCheckBox(const Framework::UIInitParam& params);
ObjTable* createObjTable(const Framework::UIInitParam& params);
Window* createWindow(const Framework::UIInitParam& params);

Button* initButton(
    int x, int y, int br, int height, __int64 style, const char* titel);
CheckBox* initCheckBox(
    int x, int y, int br, int height, __int64 style, const char* txt);
TextField* initTextField(
    int x, int y, int br, int height, __int64 style, const char* txt);
ImageView* initImageView(
    int x, int y, int br, int height, __int64 style, Image* b);
SelectionBox* initSelectionBox(int x,
    int y,
    int br,
    int height,
    __int64 style,
    std::initializer_list<const char*> values);
ObjTable* initObjTable(int x,
    int y,
    int br,
    int height,
    __int64 style,
    std::initializer_list<OBJTabelleSpalteIni> spalten,
    int titleHeight);
LineDiagram* initLinieDiagram(
    int x, int y, int br, int height, __int64 style, DiagramData* data);
ProgressBar* initProgressBar(int x, int y, int br, int height, __int64 style);