#include #include #include using namespace ultralight; /// /// Welcome to Sample 2! /// /// In this sample we'll introduce the AppCore API and use it to build a simple application that /// creates a window and displays a local HTML file. /// /// __What is AppCore?__ /// /// AppCore is an optional, high-performance, cross-platform application framework built on top of /// the Ultralight renderer. /// /// It can be used to create standalone, GPU-accelerated HTML applications that paint directly to /// the native window's backbuffer using the best technology available on each platform (D3D, /// Metal, OpenGL, etc.). /// /// We will create the simplest possible AppCore application in this sample. /// class MyApp : public WindowListener, public ViewListener { RefPtr app_; RefPtr window_; RefPtr overlay_; public: MyApp() { /// /// Create our main App instance. /// /// The App class is responsible for the lifetime of the application and is required to create /// any windows. /// app_ = App::Create(); /// /// Create our Window. /// /// This command creates a native platform window and shows it immediately. /// /// The window's size (900 by 600) is in virtual device coordinates, the actual size in pixels /// is automatically determined by the monitor's DPI. /// window_ = Window::Create(app_->main_monitor(), 900, 600, false, kWindowFlags_Titled); /// /// Set the title of our window. /// window_->SetTitle("Ultralight Sample 2 - Basic App"); /// /// Create a web-content overlay that spans the entire window. /// /// You can create multiple overlays per window, each overlay has its own View which can be /// used to load and display web-content. /// /// AppCore automatically manages focus, keyboard/mouse input, and GPU painting for each active /// overlay. Destroying the overlay will remove it from the window. /// overlay_ = Overlay::Create(window_, window_->width(), window_->height(), 0, 0); /// /// Load a local HTML file into our overlay's View /// overlay_->view()->LoadURL("file:///page.html"); /// /// Register our MyApp instance as a WindowListener so we can handle the Window's OnClose event /// below. /// window_->set_listener(this); /// /// Register our MyApp instance as a ViewListener so we can handle the View's OnChangeCursor /// event below. /// overlay_->view()->set_view_listener(this); } virtual ~MyApp() {} /// /// Inherited from WindowListener, called when the Window is closed. /// /// We exit the application when the window is closed. /// virtual void OnClose(ultralight::Window* window) override { app_->Quit(); } /// /// Inherited from WindowListener, called when the Window is resized. /// /// (Not used in this sample) /// virtual void OnResize(ultralight::Window* window, uint32_t width, uint32_t height) override {} /// /// Inherited from ViewListener, called when the Cursor changes. /// virtual void OnChangeCursor(ultralight::View* caller, ultralight::Cursor cursor) override { window_->SetCursor(cursor); } void Run() { app_->Run(); } }; int main() { MyApp app; app.Run(); return 0; }