aboutsummaryrefslogtreecommitdiffstats
path: root/support/hololens/ServoApp/Servo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'support/hololens/ServoApp/Servo.cpp')
-rw-r--r--support/hololens/ServoApp/Servo.cpp100
1 files changed, 39 insertions, 61 deletions
diff --git a/support/hololens/ServoApp/Servo.cpp b/support/hololens/ServoApp/Servo.cpp
index b262d420819..4283b66bc11 100644
--- a/support/hololens/ServoApp/Servo.cpp
+++ b/support/hololens/ServoApp/Servo.cpp
@@ -1,55 +1,38 @@
#include "pch.h"
#include "Servo.h"
-void on_load_started() {}
-void on_load_ended() {}
-void on_history_changed(bool, bool) {}
-void on_shutdown_complete() {}
+// FIXME: rename mozilla to something else
+namespace servo {
-std::function<void()> Servo::sFlush = []() {};
-std::function<void()> Servo::sMakeCurrent = []() {};
-std::function<void()> Servo::sWakeUp = []() {};
-std::function<void(std::wstring const &)> Servo::sOnAlert =
- [](std::wstring const &) {};
-std::function<void(std::wstring const &)> Servo::sOnTitleChanged =
- [](std::wstring const &) {};
-std::function<void(std::wstring const &)> Servo::sOnURLChanged =
- [](std::wstring const &) {};
-
-bool Servo::sAnimating = false;
-
-std::wstring char2w(const char *c_str) {
- auto str = std::string(c_str);
- int size_needed =
- MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
- std::wstring str2(size_needed, 0);
- MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &str2[0],
- size_needed);
- return str2;
+void on_load_started() { sServo->Delegate().OnLoadStarted(); }
+void on_load_ended() { sServo->Delegate().OnLoadEnded(); }
+void on_history_changed(bool back, bool forward) {
+ sServo->Delegate().OnHistoryChanged(back, forward);
+}
+void on_shutdown_complete() { sServo->Delegate().OnShutdownComplete(); }
+void on_alert(const char *message) {
+ sServo->Delegate().OnAlert(char2w(message));
}
-
-void on_alert(const char *message) { Servo::sOnAlert(char2w(message)); }
-
void on_title_changed(const char *title) {
- Servo::sOnTitleChanged(char2w(title));
+ sServo->Delegate().OnTitleChanged(char2w(title));
+}
+void on_url_changed(const char *url) {
+ sServo->Delegate().OnURLChanged(char2w(url));
+}
+void flush() { sServo->Delegate().Flush(); }
+void make_current() { sServo->Delegate().MakeCurrent(); }
+void wakeup() { sServo->Delegate().WakeUp(); }
+bool on_allow_navigation(const char *url) {
+ return sServo->Delegate().OnAllowNavigation(char2w(url));
+};
+void on_animating_changed(bool aAnimating) {
+ sServo->Delegate().OnAnimatingChanged(aAnimating);
}
-void on_url_changed(const char *url) { Servo::sOnURLChanged(char2w(url)); }
-
-void flush() { Servo::sFlush(); }
-
-void make_current() { Servo::sMakeCurrent(); }
-
-void wakeup() { Servo::sWakeUp(); }
-
-bool on_allow_navigation(const char *url) { return true; };
-
-void on_animating_changed(bool aAnimating) { Servo::sAnimating = aAnimating; }
-
-Servo::Servo(GLsizei width, GLsizei height)
- : mAnimating(false), mWindowHeight(height), mWindowWidth(width) {
+Servo::Servo(GLsizei width, GLsizei height, ServoDelegate &aDelegate)
+ : mWindowHeight(height), mWindowWidth(width), mDelegate(aDelegate) {
- CInitOptions o;
+ capi::CInitOptions o;
o.args = NULL;
o.url = "https://servo.org";
o.width = mWindowWidth;
@@ -58,7 +41,9 @@ Servo::Servo(GLsizei width, GLsizei height)
o.enable_subpixel_text_antialiasing = false;
o.vr_pointer = NULL;
- CHostCallbacks c;
+ sServo = this; // FIXME;
+
+ capi::CHostCallbacks c;
c.flush = &flush;
c.make_current = &make_current;
c.on_alert = &on_alert;
@@ -74,23 +59,16 @@ Servo::Servo(GLsizei width, GLsizei height)
init_with_egl(o, &wakeup, c);
}
-Servo::~Servo() { deinit(); }
-
-void Servo::PerformUpdates() { perform_updates(); }
-
-void Servo::SetBatchMode(bool mode) { set_batch_mode(mode); }
-
-void Servo::GoForward() { go_forward(); }
-
-void Servo::GoBack() { go_back(); }
+Servo::~Servo() { capi::deinit(); }
-void Servo::SetSize(GLsizei width, GLsizei height) {
- if (width != mWindowWidth || height != mWindowHeight) {
- mWindowWidth = width;
- mWindowHeight = height;
- resize(mWindowWidth, mWindowHeight);
- }
+std::wstring char2w(const char *c_str) {
+ auto str = std::string(c_str);
+ int size_needed =
+ MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
+ std::wstring str2(size_needed, 0);
+ MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &str2[0],
+ size_needed);
+ return str2;
}
-void Servo::Click(float x, float y) { click(x, y); }
-void Servo::Scroll(float dx, float dy, float x, float y) { scroll(dx, dy, x, y); }
+} // namespace mozilla