Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Unified Diff: runtime/embedders/openglui/emulator/emulator_embedder.cc

Issue 11883013: Refactored OpenGL embedder that works on Android, Mac or Linux. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/embedders/openglui/emulator/emulator_embedder.cc
===================================================================
--- runtime/embedders/openglui/emulator/emulator_embedder.cc (revision 0)
+++ runtime/embedders/openglui/emulator/emulator_embedder.cc (revision 0)
@@ -0,0 +1,73 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#include "embedders/openglui/emulator/emulator_embedder.h"
+
+#include <string.h>
+
+#include "embedders/openglui/common/context.h"
+#include "embedders/openglui/common/dart_host.h"
+#include "embedders/openglui/common/events.h"
+#include "embedders/openglui/common/input_handler.h"
+#include "embedders/openglui/common/sound_handler.h"
+#include "embedders/openglui/common/vm_glue.h"
+#include "embedders/openglui/emulator/emulator_graphics_handler.h"
+
+InputHandler* input_handler_ptr;
+LifeCycleHandler* lifecycle_handler_ptr;
+
+void display() {
+ glClearColor(1.0, 1.0, 1.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ lifecycle_handler_ptr->OnStep();
+ glutSwapBuffers();
+}
+
+void reshape(int width, int height) {
+ glViewport(0, 0, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(0, width, 0, height, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glutPostRedisplay();
+}
+
+void keyboard(unsigned char key, int x, int y) {
+ input_handler_ptr->OnKeyEvent(kKeyDown, time(0), 0, key, 0, 0);
+ input_handler_ptr->OnKeyEvent(kKeyUp, time(0), 0, key, 0, 0);
+ if (key == 27) {
+ exit(0);
+ }
+}
+
+DART_EXPORT void emulator_main(int argc, char** argv, const char* script) {
+ EmulatorGraphicsHandler graphics_handler(argc, argv);
+ if (argc > 0) {
+ int i = argc - 1;
+ size_t len = strlen(argv[i]);
+ if (len > 5 && strcmp(".dart", argv[i] + len - 5) == 0) {
+ script = argv[i];
+ }
+ }
+ VMGlue vm_glue(&graphics_handler, ".", "gl.dart", script);
+ InputHandler input_handler(&vm_glue);
+ input_handler_ptr = &input_handler;
+ SoundHandler sound_handler;
+ Timer timer;
+ Context app_context;
+ app_context.graphics_handler = &graphics_handler;
+ app_context.input_handler = &input_handler;
+ app_context.sound_handler = &sound_handler;
+ app_context.timer = &timer;
+ app_context.vm_glue = &vm_glue;
+ DartHost host(&app_context);
+ lifecycle_handler_ptr = &host;
+ lifecycle_handler_ptr->OnActivate();
+ glutReshapeFunc(reshape);
+ glutDisplayFunc(display);
+ glutKeyboardFunc(keyboard);
+ glutIdleFunc(display);
+ glutMainLoop();
+}
+

Powered by Google App Engine
This is Rietveld 408576698