102 lines
2.7 KiB
C++
102 lines
2.7 KiB
C++
#include <AppCore/App.h>
|
|
#include <AppCore/Window.h>
|
|
#include <AppCore/Overlay.h>
|
|
#include <AppCore/JSHelpers.h>
|
|
|
|
using namespace ultralight;
|
|
|
|
///
|
|
/// Welcome to Sample 5!
|
|
///
|
|
/// In this sample we'll show how to load assets from the local file system.
|
|
///
|
|
/// __FileSystem API__
|
|
///
|
|
/// Ultralight uses the FileSystem interface (part of the Platform API) to load file:/// URLs and
|
|
/// handle JavaScript FileSystem API requests.
|
|
///
|
|
/// AppCore provides default FileSystem implementations for Windows, macOS, and Linux
|
|
/// out-of-the-box.
|
|
///
|
|
/// * On Windows/Linux, it will use ./assets/ as the base file path.
|
|
/// * On macOS, it will use the app bundle's @resource_path
|
|
///
|
|
/// You can configure the base file system path by passing your own Settings to App::Create.
|
|
///
|
|
/// When building your application, it's best to use a CMake script to copy these assets to your
|
|
/// application's output folder/bundle. Look at the CMakeLists.txt of this sample for an example.
|
|
///
|
|
/// __Custom FileSystem API__
|
|
///
|
|
/// You can provide your own FileSystem implementation in case you need greater control over file
|
|
/// loading. This is useful if you're using your own data format and/or need to encrypt or
|
|
/// compress resources.
|
|
///
|
|
/// See <Ultralight/platform/FileSystem.h> for more information.
|
|
///
|
|
class MyApp : public WindowListener {
|
|
RefPtr<App> app_;
|
|
RefPtr<Window> window_;
|
|
RefPtr<Overlay> overlay_;
|
|
public:
|
|
MyApp() {
|
|
///
|
|
/// Create our main App instance.
|
|
///
|
|
app_ = App::Create();
|
|
|
|
///
|
|
/// Create our Window using default window flags.
|
|
///
|
|
window_ = Window::Create(app_->main_monitor(), 450, 700, false, kWindowFlags_Titled);
|
|
|
|
///
|
|
/// Set the title of our window.
|
|
///
|
|
window_->SetTitle("Ultralight Sample 5 - File Loading");
|
|
|
|
window_->set_listener(this);
|
|
|
|
///
|
|
/// Create an Overlay using the same dimensions as our Window.
|
|
///
|
|
overlay_ = Overlay::Create(window_, window_->width(), window_->height(), 0, 0);
|
|
|
|
///
|
|
/// Load a file from the FileSystem.
|
|
///
|
|
/// **IMPORTANT**: Make sure `file:///` has three (3) forward slashes.
|
|
///
|
|
overlay_->view()->LoadURL("file:///app.html");
|
|
}
|
|
|
|
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 {}
|
|
|
|
void Run() {
|
|
app_->Run();
|
|
}
|
|
};
|
|
|
|
int main() {
|
|
MyApp app;
|
|
app.Run();
|
|
|
|
return 0;
|
|
}
|