Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/cleanup/src/lib/gui/qt/gui_video.cc @ 10575

Last change on this file since 10575 was 10571, checked in by bensch, 18 years ago

cleaned out unused defs files, and moved glincl to grafics, alincl.h to sound

File size: 4.9 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software Foundation,
18   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20
21   ### File Specific:
22   main-programmer: Benjamin Grauer
23
24*/
25
26
27#include "gui_video.h"
28
29#include <QtGui/QLayout>
30#include "orxonox_globals.h"
31#include "debug.h"
32
33#include "sdlincl.h"
34
35#include "qt_gui_elements.h"
36
37namespace OrxGui
38{
39  /**
40   *  Creates the Video-Option-Frame
41  */
42  GuiVideo::GuiVideo(OrxGui::Gui* gui)
43  : Element(CONFIG_SECTION_VIDEO, gui), QGroupBox()
44  {
45    QGridLayout* layout = new QGridLayout(this);
46
47    {
48      QtGuiCheckBox* fullscreen = new QtGuiCheckBox(CONFIG_NAME_FULLSCREEN, this, false);
49      //fullscreen->setName();
50      layout->addWidget(fullscreen, 0, 0);
51
52      QtGuiCheckBox* dedicated = new QtGuiCheckBox(CONFIG_NAME_NO_RENDER, this, false);
53      //fullscreen->setName();
54      layout->addWidget(dedicated, 1, 0);
55
56      QtGuiCheckBox* wireframe = new QtGuiCheckBox(CONFIG_NAME_WIREFRAME, this, false);
57      layout->addWidget(wireframe, 2, 0);
58
59      {
60        QComboBox* resolution = new QtGuiComboBox(CONFIG_NAME_RESOLUTION, this, "640x480");
61        resolution->setEditable(true);
62        layout->addWidget(resolution, 3, 0);
63        std::vector<QString> resolutions;
64        this->getResolutions(resolutions);
65        for (unsigned int i = 0; i < resolutions.size(); ++i)
66          resolution->addItem(resolutions[i]);
67      }
68
69
70      QGroupBox* advanced = new GuiAdvancedVideo(gui);
71
72
73      layout->addWidget(advanced, 0, 2, 4, 1);
74
75    }
76  }
77
78  /**
79   *  Destructs the Video-stuff
80  */
81  GuiVideo::~GuiVideo()
82  {
83    // nothing to do here.
84  }
85
86  /**
87   *  sets all resolutions to the menu
88   * @param menu the Menu to set The resolutions to.
89  */
90  void GuiVideo::getResolutions(std::vector<QString>& resolutionList)
91  {
92    SDL_Init(SDL_INIT_VIDEO);
93    SDL_Rect **modes;
94    int i;
95    int x = 0,y =0; // check for difference
96    char tmpChar[100];
97
98    /* Get available fullscreen/hardware modes */
99    modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
100
101    /* Check is there are any modes available */
102    if(modes == (SDL_Rect **)0)
103    {
104      PRINTF(2)("No video-modes available!\n");
105      exit(-1);
106    }
107
108    /* Check if our resolution is restricted */
109    if(modes == (SDL_Rect **)-1)
110    {
111      PRINTF(2)("All resolutions available.\n");
112    }
113    else
114    {
115      /* Print valid modes */
116      PRINT(5)("Available Modes\n");
117      for(i = 0; modes[i] ;++i)
118      {
119        if (x != modes[i]->w || y != modes[i]->h)
120        {
121          PRINTF(5)("  %d x %d\n", modes[i]->w, modes[i]->h);
122          sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
123          resolutionList.push_back(QString(tmpChar));
124          x = modes[i]->w; y = modes[i]->h;
125        }
126      }
127    }
128    SDL_QuitSubSystem(SDL_INIT_VIDEO);
129    SDL_Quit();
130  }
131
132
133
134  GuiAdvancedVideo::GuiAdvancedVideo(OrxGui::Gui* gui)
135  : Element(CONFIG_SECTION_VIDEO_ADVANCED ,gui)
136  {
137    {
138      QGridLayout* advLayout = new QGridLayout(this);              //!< Advanced Layout
139      {
140        QtGuiCheckBox* shadows = new QtGuiCheckBox(CONFIG_NAME_SHADOWS, this, true);         //!< CheckBox for shadows
141        advLayout->addWidget(shadows, 0,0);
142        QtGuiCheckBox* fog = new QtGuiCheckBox(CONFIG_NAME_FOG, this, true);                 //!< CheckBox for fog.
143        advLayout->addWidget(fog, 1,0);
144        QtGuiCheckBox* reflections = new QtGuiCheckBox(CONFIG_NAME_REFLECTIONS, this, true);  //!< CheckBox for reflections
145        advLayout->addWidget(reflections, 2, 0);
146        QtGuiCheckBox* textures = new QtGuiCheckBox(CONFIG_NAME_TEXTURES, this, true);       //!< CheckBox for textures
147        advLayout->addWidget(textures, 3, 0);
148          /*
149        Menu* textureDetail;      //!< Menu for the Texture-Detail.
150        Label* modelDetailLabel;  //!< Label for model-detail.
151        Menu* modelDetail;        //!< model-detail.
152        CheckBox* particles;   //!< If the Particles should be enabled
153        Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
154        Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
155        Label* filterMethodLabel; //!< Label for filtering-Method.
156        Menu* filterMethod;       //!< Menu for filtering Method.
157        Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
158          */
159      }
160    }
161  }
162
163  GuiAdvancedVideo::~GuiAdvancedVideo()
164  {
165  }
166
167}
Note: See TracBrowser for help on using the repository browser.