SFML test

Ruby code posted by Quintus
created at 15 Mar 12:49, updated at 26 Mar 04:39

Edit | Back
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/OpenGL.hpp>

#include <CEGUI/CEGUI.h>
#include <CEGUI/RendererModules/OpenGL/GLRenderer.h>
//#include <CEGUI/ImageCodecModules/DevIL/ImageCodec.h>

int main(int argc, char* argv[])
{
  sf::Window window(sf::VideoMode(800, 600), "SFML test");
  //sf::CircleShape shape(100.0f);
  //shape.setFillColor(sf::Color::Green);

  sf::Clock clock;

  CEGUI::OpenGLRenderer& cegui_renderer = CEGUI::OpenGLRenderer::create(CEGUI::Sizef(800, 600));
  cegui_renderer.enableExtraStateSettings(true);
  CEGUI::System::create(cegui_renderer);

  // setup resource directories
  CEGUI::DefaultResourceProvider* rp = static_cast<CEGUI::DefaultResourceProvider*>(CEGUI::System::getSingleton().getResourceProvider());
  rp->setResourceGroupDirectory("schemes", "../datafiles/schemes/");
  rp->setResourceGroupDirectory("imagesets", "../datafiles/imagesets/");
  rp->setResourceGroupDirectory("fonts", "../datafiles/fonts/");
  rp->setResourceGroupDirectory("layouts", "../datafiles/layouts/");
  rp->setResourceGroupDirectory("looknfeels", "../datafiles/looknfeel/");
  rp->setResourceGroupDirectory("lua_scripts", "../datafiles/lua_scripts/");
  rp->setResourceGroupDirectory("schemas", "../datafiles/xml_schemas/");

  // set default resource groups
  CEGUI::ImageManager::setImagesetDefaultResourceGroup("imagesets");
  CEGUI::Font::setDefaultResourceGroup("fonts");
  CEGUI::Scheme::setDefaultResourceGroup("schemes");
  CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
  CEGUI::WindowManager::setDefaultResourceGroup("layouts");
  CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");

  // load TaharezLook scheme and DejaVuSans-10 font
  CEGUI::SchemeManager::getSingleton().createFromFile("TaharezLook.scheme", "schemes");
  CEGUI::FontManager::getSingleton().createFromFile("DejaVuSans-10.font");

  // set default font and cursor image and tooltip type
  CEGUI::System::getSingleton().getDefaultGUIContext().setDefaultFont("DejaVuSans-10");
  CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage("TaharezLook/MouseArrow");
  CEGUI::System::getSingleton().getDefaultGUIContext().setDefaultTooltipType("TaharezLook/Tooltip");

  window.setMouseCursorVisible(false);
  window.setVerticalSyncEnabled(true);
  window.setActive();

  CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();
  CEGUI::Window* p_cegui_rootwin = wmgr.createWindow("DefaultWindow", "root");
  CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow(p_cegui_rootwin);

  CEGUI::FrameWindow* p_testframe = static_cast<CEGUI::FrameWindow*>(wmgr.createWindow("TaharezLook/FrameWindow", "testWindow"));
  p_testframe->setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0)));
  p_testframe->setSize(CEGUI::USize(CEGUI::UDim(0, 300), CEGUI::UDim(0, 300)));
  p_testframe->setText("Hello, World!");
  p_cegui_rootwin->addChild(p_testframe);

  /*glEnable(GL_DEPTH_TEST);
  glDepthMask(GL_TRUE);
  glClearDepth(1.0f);
  glDisable(GL_LIGHTING);
  glViewport(0, 0, window.getSize().x, window.getSize().y);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  GLfloat ratio = static_cast<float>(window.getSize().x) / window.getSize().y;
  glFrustum(-ratio, ratio, -1.f, 1.f, 1.f, 500.f);
  glEnable(GL_TEXTURE_2D);*/

  CEGUI::OpenGLRenderer* renderer = static_cast<CEGUI::OpenGLRenderer*>(CEGUI::System::getSingleton().getRenderer());
  bool running = true;
  while (running) {
    sf::Event event;
    while (window.pollEvent(event)) {
      if (event.type == sf::Event::Closed) {
  running = false;
      }
      else if (event.type == sf::Event::Resized) {
  CEGUI::System::getSingleton().notifyDisplaySizeChanged(CEGUI::Sizef(static_cast<float>(event.size.width),
                      static_cast<float>(event.size.height)));
  glViewport(0, 0, event.size.width, event.size.height);
      }
      else if (event.type == sf::Event::MouseMoved) {
  CEGUI::System::getSingleton().getDefaultGUIContext().injectMousePosition(static_cast<float>(event.mouseMove.x), static_cast<float>(event.mouseMove.y));
      }
    }

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    //CEGUI::System::getSingleton().getDefaultGUIContext().injectTimePulse(time_elapsed);

    sf::Time elapsed = clock.restart();
    CEGUI::System::getSingleton().injectTimePulse(elapsed.asSeconds());
    CEGUI::System::getSingleton().getDefaultGUIContext().injectTimePulse(elapsed.asSeconds());

    renderer->beginRendering();
    CEGUI::System::getSingleton().renderAllGUIContexts();
    renderer->endRendering();

    // Hear any SFML-graphics-based stuff would need to be placed
    // between window.pushGLStates() and window.popGLStates().

    window.display();
  }

  window.close();

  return 0;
}
4.78 KB in 7 ms with coderay