root/src/tests/kits/opengl/glinfo/OpenGLView.cpp
/*
 * Copyright 2009-2012 Haiku Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Alex Wilson <yourpalal2@gmail.com>
 *              Artur Wyszynski <harakash@gmail.com>
 */


#include "OpenGLView.h"

#include <stdio.h>

#include <Catalog.h>
#include <GLView.h>
#include <LayoutBuilder.h>
#include <Locale.h>
#include <MenuField.h>
#include <PopUpMenu.h>
#include <Size.h>
#include <SpaceLayoutItem.h>
#include <TabView.h>

#include "CapabilitiesView.h"
#include "ExtensionsView.h"
#include "InfoView.h"
#include "GearsView.h"


#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "OpenGLView"


OpenGLView::OpenGLView()
        :
        BGroupView("OpenGLView", B_VERTICAL)
{

        BGLView* glView = new BGLView(BRect(0, 0, 1, 1), "gl info", B_FOLLOW_NONE, 0,
                BGL_RGB | BGL_DOUBLE);
        glView->Hide();
        AddChild(glView);

        glView->LockGL();

        float tabViewWidth = this->StringWidth("M") * 42;
        float tabViewHeight = this->StringWidth("M") * 16;

        BTabView *tabView = new BTabView("tab view", B_WIDTH_FROM_LABEL);
        tabView->SetExplicitMinSize(BSize(tabViewWidth, tabViewHeight));
        tabView->AddTab(new CapabilitiesView());
        tabView->AddTab(new ExtensionsView());

        GroupLayout()->SetSpacing(0);
        BLayoutBuilder::Group<>(this)
                .AddGroup(B_HORIZONTAL, 0)
                        .Add(new GearsView())
                        .AddGroup(B_VERTICAL, B_USE_DEFAULT_SPACING)
                                .SetInsets(0, B_USE_DEFAULT_SPACING,
                                        B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING)
                                .Add(new InfoView())
                                .Add(tabView)
                                .End()
                        .AddGlue()
                        .End();

        glView->UnlockGL();
}

OpenGLView::~OpenGLView()
{
}