comparison Samples/Sdl/BasicScene.cpp @ 905:88bf49aebc13

introduced ICompositor and allow SdlViewport to work with a CairoCompositor (to run on machines without OpenGL drivers)
author Alain Mazy <alain@mazy.be>
date Wed, 17 Jul 2019 16:56:53 +0200
parents 0aff28f15ea2
children 7a7e4e1f558f
comparison
equal deleted inserted replaced
904:ecdb2ceaa925 905:88bf49aebc13
46 #include <stdio.h> 46 #include <stdio.h>
47 47
48 static const unsigned int FONT_SIZE = 32; 48 static const unsigned int FONT_SIZE = 32;
49 static const int LAYER_POSITION = 150; 49 static const int LAYER_POSITION = 150;
50 50
51 #define OPENGL_ENABLED 0
51 52
52 void PrepareScene(OrthancStone::Scene2D& scene) 53 void PrepareScene(OrthancStone::Scene2D& scene)
53 { 54 {
54 using namespace OrthancStone; 55 using namespace OrthancStone;
55 56
257 break; 258 break;
258 } 259 }
259 } 260 }
260 } 261 }
261 262
262 263 #if OPENGL_ENABLED==1
263 static void GLAPIENTRY 264 static void GLAPIENTRY
264 OpenGLMessageCallback(GLenum source, 265 OpenGLMessageCallback(GLenum source,
265 GLenum type, 266 GLenum type,
266 GLuint id, 267 GLuint id,
267 GLenum severity, 268 GLenum severity,
274 fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n", 275 fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
275 ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ), 276 ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
276 type, severity, message ); 277 type, severity, message );
277 } 278 }
278 } 279 }
279 280 #endif
280 281
281 void Run(OrthancStone::MessageBroker& broker, 282 void Run(OrthancStone::MessageBroker& broker,
282 OrthancStone::SdlViewport& viewport) 283 OrthancStone::SdlViewport& viewport)
283 { 284 {
284 using namespace OrthancStone; 285 using namespace OrthancStone;
285 286
286 boost::shared_ptr<ViewportController> controller( 287 boost::shared_ptr<ViewportController> controller(
287 new ViewportController(boost::make_shared<UndoStack>(), broker, viewport)); 288 new ViewportController(boost::make_shared<UndoStack>(), broker, viewport));
288 289
290 #if OPENGL_ENABLED==1
289 glEnable(GL_DEBUG_OUTPUT); 291 glEnable(GL_DEBUG_OUTPUT);
290 glDebugMessageCallback(OpenGLMessageCallback, 0); 292 glDebugMessageCallback(OpenGLMessageCallback, 0);
293 #endif
291 294
292 boost::shared_ptr<IFlexiblePointerTracker> tracker; 295 boost::shared_ptr<IFlexiblePointerTracker> tracker;
293 296
294 bool firstShown = true; 297 bool firstShown = true;
295 bool stop = false; 298 bool stop = false;
354 event.key.repeat == 0 /* Ignore key bounce */) 357 event.key.repeat == 0 /* Ignore key bounce */)
355 { 358 {
356 switch (event.key.keysym.sym) 359 switch (event.key.keysym.sym)
357 { 360 {
358 case SDLK_f: 361 case SDLK_f:
359 viewport.GetContext().GetWindow().ToggleMaximize(); 362 viewport.GetWindow().ToggleMaximize();
360 break; 363 break;
361 364
362 case SDLK_q: 365 case SDLK_q:
363 stop = true; 366 stop = true;
364 break; 367 break;
388 OrthancStone::StoneInitialize(); 391 OrthancStone::StoneInitialize();
389 Orthanc::Logging::EnableInfoLevel(true); 392 Orthanc::Logging::EnableInfoLevel(true);
390 393
391 try 394 try
392 { 395 {
393 OrthancStone::SdlViewport viewport("Hello", 1024, 768); 396 #if OPENGL_ENABLED==1
397 OrthancStone::SdlOpenGLViewport viewport("Hello", 1024, 768);
398 #else
399 OrthancStone::SdlCairoViewport viewport("Hello", 1024, 768);
400 #endif
394 PrepareScene(viewport.GetScene()); 401 PrepareScene(viewport.GetScene());
395 402
396 viewport.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, 403 viewport.GetCompositor().SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT,
397 FONT_SIZE, Orthanc::Encoding_Latin1); 404 FONT_SIZE, Orthanc::Encoding_Latin1);
398 405