Exemple #1
0
void GUI_init(GUI* gui)
{
	Widget *w;
	int i;

	w = (Widget*)gui;

	Widget_init(w);

	w->type = WIDGET_GUI;

	for(i=0; i<SDL_NUM_SCANCODES; ++i)
	{
		gui->keyupfunc[i] = NULL;
		gui->keydownfunc[i] = NULL;
	}

	gui->anykeyupfunc = NULL;
	gui->anykeydownfunc = NULL;
	gui->lbuttondownfunc = NULL;
	gui->lbuttonupfunc = NULL;
	gui->rbuttondownfunc = NULL;
	gui->rbuttonupfunc = NULL;
	gui->mbuttondownfunc = NULL;
	gui->mbuttonupfunc = NULL;
	gui->mousewheelfunc = NULL;
	gui->mousemovefunc = NULL;

	w->hidden = ecfalse;
}
Padding Padding_create(Vector2i desired_size, Widget *content, int amount)
{
	Padding instance;
	Widget_init(&instance.base, &padding_class, desired_size);
	instance.content = content;
	instance.amount = amount;
	return instance;
}
Exemple #3
0
void ViewLayer_init(ViewLayer *v, const char* n, Widget* parent)
{
	Widget *bw;
	bw = (Widget*)v;
	Widget_init(bw);
	strcpy(bw->name, n);
	bw->opened = ecfalse;
	bw->type = WIDGET_VIEWLAYER;
	bw->parent = parent;
	bw->hidden = ectrue;
	bw->reframefunc = Resize_Fullscreen;
	Widget_reframe(bw);
}
Exemple #4
0
//////////////////////////////////////////////////////
////    Widget functions
RootWidget* RootWidget_init() {
    check( game, "Can't init widget without running game.\n" );
    RootWidget* rootWidget = byte_alloc( sizeof( RootWidget ) );
    if( rootWidget ) {
        rootWidget->keyListener = rootKeyListener;
        rootWidget->mouseListener = rootMouseListener;
        rootWidget->mouseDown = false;
        EventManager_addListener( LT_MouseListener, rootWidget->mouseListener, rootWidget );
        EventManager_addListener( LT_KeyListener, rootWidget->keyListener, rootWidget );
        vec2i size = Context_getSize();
        rootWidget->widget = Widget_init( WT_Root, &size, NULL, NULL, -1 );
    }
    return rootWidget;
error :
    return NULL;
}
Exemple #5
0
Widget* Widget_createWindowHead( Widget* window, u32 name ) {
    Widget* head = Widget_init( WT_WindowHead, &(vec2i){ window->size.x, 17 }, "quadmesh.json", "widgettexture.png", name );
        Widget* icon = Widget_init( WT_Sprite, &(vec2i){ 11, 11 }, "quadmesh.json", "winicon.png", -1 );
        Widget* cross =  Widget_init( WT_Button, &(vec2i){ 11, 11 }, "quadmesh.json", "cross.png", -1 );
        //  The window contour is composed of 9 rectangles the main one, the ones on the side and the ones in the corners.
        Widget* windowOutline = Widget_init( WT_Button, &(vec2i){ window->size.x + 10, window->size.y + head->size.y + 11 }, "quadmesh.json", "widgetcontour.png", -1 );
            //  Corners of the contour
            Widget* windowCornerTopLeft = Widget_init( WT_Button, &(vec2i){ 5, 5 }, "quadmesh.json", "right.png", -1 );
            Widget* windowCornerTopRight = Widget_init( WT_Button, &(vec2i){ 5, 5 }, "quadmesh.json", "bottom.png", -1 );
            Widget* windowCornerBottomLeft = Widget_init( WT_Button, &(vec2i){ 5, 5 }, "quadmesh.json", "top.png", -1 );
            Widget* windowCornerBottomRight = Widget_init( WT_Button, &(vec2i){ 5, 5 }, "quadmesh.json", "left.png", -1 );
            //  Sides of the contour
            Widget* windowSideTop = Widget_init( WT_Button, &(vec2i){ window->size.x, 5 }, "quadmesh.json", "top.png", -1 );
            Widget* windowSideLeft = Widget_init( WT_Button, &(vec2i){ 5, window->size.y + head->size.y + 1}, "quadmesh.json", "left.png", -1 );
            Widget* windowSideRight = Widget_init( WT_Button, &(vec2i){ 5, window->size.y + head->size.y + 1 }, "quadmesh.json", "right.png", -1 );
            Widget* windowSideBottom = Widget_init( WT_Button, &(vec2i){ window->size.x, 5 }, "quadmesh.json", "bottom.png", -1 );


    head->position.x = window->position.x;
    head->position.y = window->position.y - 18;
    head->depth = window->depth;
    head->textOffset = vec2i_c( 18, 1 );
    head->callback = &moveWindowCallback;


    vec2i windowExtents = vec2i_add( &window->position, &window->size );

    windowOutline->position.x = head->position.x - 5;
    windowOutline->position.y = head->position.y - 5;
    windowOutline->depth = window->depth + 1;

    windowCornerTopLeft->position.x = head->position.x - 5;
    windowCornerTopLeft->position.y = head->position.y - 5;
    windowCornerTopLeft->depth = windowOutline->depth - 1;
    windowCornerTopLeft->callback = &topLeftResizeCallback;

    windowCornerTopRight->position.x = windowExtents.x;
    windowCornerTopRight->position.y = head->position.y - 5;
    windowCornerTopRight->depth = windowOutline->depth - 1;
    windowCornerTopRight->callback = &topRightResizeCallback;

    windowCornerBottomLeft->position.x = window->position.x - 5;
    windowCornerBottomLeft->position.y = windowExtents.y;
    windowCornerBottomLeft->depth = windowOutline->depth - 1;
    windowCornerBottomLeft->callback = &bottomLeftResizeCallback;

    windowCornerBottomRight->position.x = windowExtents.x;
    windowCornerBottomRight->position.y = windowExtents.y;
    windowCornerBottomRight->depth = windowOutline->depth - 1;
    windowCornerBottomRight->callback = &bottomRightResizeCallback;

    windowSideTop->position.x = window->position.x;
    windowSideTop->position.y = head->position.y - 5;
    windowSideTop->depth = windowOutline->depth - 1;
    windowSideTop->callback = &topResizeCallback;

    windowSideLeft->position.x = window->position.x - 5;
    windowSideLeft->position.y = head->position.y;
    windowSideLeft->depth = windowOutline->depth - 1;
    windowSideLeft->callback = &leftResizeCallback;

    windowSideRight->position.x = windowExtents.x;
    windowSideRight->position.y = head->position.y;
    windowSideRight->depth = windowOutline->depth - 1;
    windowSideRight->callback = &rightResizeCallback;

    windowSideBottom->position.x = window->position.x;
    windowSideBottom->position.y = windowExtents.y;
    windowSideBottom->depth = windowOutline->depth - 1;
    windowSideBottom->callback = &bottomResizeCallback;

    Widget_addChild( head, window, false, WA_None );
    Widget_addChild( head, windowOutline, false, WA_None );
    Widget_addChild( windowOutline, windowSideTop, true, WA_None );
    Widget_addChild( windowOutline, windowSideLeft, true, WA_None );
    Widget_addChild( windowOutline, windowSideRight, true, WA_None );
    Widget_addChild( windowOutline, windowSideBottom, true, WA_None );
    Widget_addChild( windowOutline, windowCornerTopLeft, true, WA_None );
    Widget_addChild( windowOutline, windowCornerTopRight, true, WA_None );
    Widget_addChild( windowOutline, windowCornerBottomLeft, true, WA_None );
    Widget_addChild( windowOutline, windowCornerBottomRight, true, WA_None );



    vec2i iconOffset = vec2i_c( 3, 3 );
    icon->position = vec2i_add( &iconOffset, &head->position );
    icon->depth = window->depth - 1;

    vec2i crossOffset = vec2i_c( window->size.x - 13, 3 );
    cross->position = vec2i_add( &crossOffset, &head->position );
    cross->depth = window->depth - 1;
    cross->callback = &windowCloseButtonCallback;

    Widget_addChild( head, icon, true, WA_None );
    Widget_addChild( head, cross, true, WA_None );


    return head;
}