The View represents a UI page with its DOM, styles and JavaScript context. Think of the View as a whole UI or UI element. The View for instance could be the whole HUD of a game. More...
Public Member Functions | |
virtual | ~View () |
virtual void | Destroy ()=0 |
Destroys the View. Should be called before the destruction of the System and Library. More... | |
virtual void | LoadURL (const char *url)=0 |
Loads a page in the View. More... | |
virtual void | Reload ()=0 |
Reloads the current page in the view. More... | |
virtual void | UnloadDocument ()=0 |
Unloads the HTML document. This will remove the entire DOM tree, so nothing will rendered but the view object will still be usable and another document might be loaded using View::LoadURL. More... | |
virtual void | ClearNavigationHistory ()=0 |
Clears the navigation history accessed from JavaScript History object Use that method after View::LoadURL to reset the navigation history in case the view is reused to display unrelated page. More... | |
virtual unsigned | Advance (TimePoint timeMilliseconds)=0 |
Advances the internal timer of the View and runs all animations. If changes have happened in the page, this call will also trigger a new layout and render on the other threads. More... | |
virtual unsigned | GetId () const =0 |
Returns the unique ID of the View. More... | |
virtual TaskFamilyId | GetTaskFamilyId () const =0 |
Returns the Task Family Id that can be used to schedule Layout work in an auxiliary thread. More... | |
virtual void | Resize (unsigned width, unsigned height)=0 |
Resizes the View contents. More... | |
virtual void | SetUserBackground (void *userTexture, const renoir::Texture2D &description)=0 |
The background where the UI scene will be drawn. More... | |
virtual void | SetUserBackgroundOffset (float x, float y)=0 |
Set the user background offest. This has to be the location of the upper left corner of the UI texture relative to the upper left corner of the user backgorund texture. More... | |
virtual void | SetResolutionForRendering (unsigned width, unsigned height)=0 |
Sets a resolution for rendering. This allows setting one size for the HTML (via the Resize method) and authoring the UI for that resolution, while here you can tell the SDK that it should render the UI into a different-sized texture. The ViewRenderer's render target could be of a different size, although usually you'd want to have the resolution for rendering and ViewRenderer RT size to be the same. More... | |
virtual unsigned | GetWidth () const =0 |
Gets the View width. More... | |
virtual unsigned | GetHeight () const =0 |
Gets the View height. More... | |
virtual void | OnListenerLost ()=0 |
Informs the View that its listener has been lost. More... | |
virtual void | EnableRendering (bool value)=0 |
Enables or disables the recording of rendering commands for the view. Enabled by default. More... | |
virtual void | ContinuousRepaint (bool enable)=0 |
Debugging flag. This will cause the View to re-draw itself each frame. More... | |
virtual void | ShowPaintRectangles (bool show)=0 |
Debugging flag. This will cause the View show which parts of the texture are re-drawn each frame. More... | |
virtual void | ShowElementAABBs (bool show)=0 |
Debugging flag. This will cause the View to draw the bounding-boxes of all elements. More... | |
virtual void | EmitRenderingMetadata (bool emit)=0 |
Debugging flag. Enabling this will request the library to attach and emit metadata for every rendering command in the rendering backend. The metadata will contain the ID, CLASS and Node type of the Element that caused the drawing command. As multiple elements can be batched in the same command, the metadata will be a concatenated list of all Elements that have contributed to the batch. The user can emit the metadata in rendering & GPU debugging tools like PIX, RenderDoc, Razor etc. in order to gain better insight on the rendering operations & performance. More... | |
virtual bool | SetAdditionalFontFallbacks (const char *fontFamilies)=0 |
Sets fallback font families that will be used by all elements. Additional font families do not affect computed styles of an element. More... | |
virtual DebugDump * | DebugDumpDOMTree (unsigned flags)=0 |
Debugging helper. Collects a comprehensive DOM structure dump. More... | |
virtual DebugDump * | DebugDumpStackingContextTree ()=0 |
Debugging helper. Collects data about stacking context subtrees of the DOM tree. More... | |
virtual void | TouchEvent (const cohtml::TouchEventData *events, unsigned count, bool *handled, void *userData)=0 |
Sends a touch input event to the View. More... | |
virtual void | GestureEvent (const cohtml::GestureEventData &event, bool *handled, void *userData)=0 |
Sends a gesture input event to the View. More... | |
virtual void | MouseEvent (const cohtml::MouseEventData &event, bool *handled, void *userData)=0 |
Sends a mouse input event to the View. More... | |
virtual void | KeyEvent (const cohtml::KeyEventData &event, bool *handled, void *userData)=0 |
Sends a keyboard input event to the View. More... | |
virtual bool | IMESetComposition (const char *composition, unsigned targetStart, unsigned targetEnd)=0 |
Updates the internal state of the IME composition in the View. More... | |
virtual bool | IMEConfirmComposition (const char *composition)=0 |
Confirms the current IME composition. More... | |
virtual bool | IMECancelComposition ()=0 |
Cancels the current IME composition. More... | |
virtual float | GetStartPanThreshold () const =0 |
Returns the minumum length of pans to be performed. More... | |
virtual void | SetStartPanThreshold (float value)=0 |
Sets the minumum length of pans to be performed. More... | |
virtual void | SetUserAgent (const char *userAgent)=0 |
Sets the User Agent string. More... | |
virtual ImagesList * | GetUsedImagesList (ImagesListExtract::Options options) const =0 |
Return a list of images currently in use by the View The list can be used to decide which images to pre-load or use for JS-based loading screens. The list is a current snapshot of the state of the View. Once built it will not change even if the View does. The user has to call the method again if she wants such changes applied. More... | |
virtual void | BeginCaptureDebugFrame (void *userData, FrameCaptureCallback callback, CaptureMode mode=CM_PreserveAll)=0 |
Will begin serializing every rendered frame to a memory blob which will be passed in the callback. The saved frames can be inspected for debug purposes. More... | |
virtual void | EndCaptureDebugFrame ()=0 |
Ends serializing rendered frames. More... | |
virtual void | CaptureSingleDebugFrame (void *userData, FrameCaptureCallback callback, CaptureMode mode=CM_PreserveAll)=0 |
Will serialize next rendered frame to a memory blob which will be passed in the callback. The saved frames can be inspected for debug purposes. More... | |
virtual void | GetCacheCountStats (InternalCaches cache, unsigned &filled, unsigned &capacity)=0 |
Get info about the number of objects statistic of a particular internal cache. More... | |
virtual void | GetCacheBytesStats (InternalCaches cache, unsigned &filled, unsigned &capacity)=0 |
Get info about the bytes statistic of a particular internal cache. More... | |
virtual void | QueueSetCacheCountSize (InternalCaches cache, unsigned capacity)=0 |
Queue task to set the maximum number of objects in internal cache. More... | |
virtual void | QueueSetCacheBytesSize (InternalCaches cache, unsigned capacity)=0 |
Queue task to set the maximum bytes allowed for internal cache. More... | |
virtual void | QueueClearCaches (unsigned caches)=0 |
Queue a task to clear an internal caches list. More... | |
virtual BoundEventHandle | RegisterForEvent (const char *name, IEventHandler *handler)=0 |
Expose C++ handler to be called when a specific event occurs. More... | |
virtual void | UnregisterFromEvent (BoundEventHandle handle)=0 |
Remove a registered C++ handler. More... | |
virtual BoundEventHandle | BindCall (const char *name, IEventHandler *handler)=0 |
Expose C++ handler to be called from UI. More... | |
virtual void | UnbindCall (BoundEventHandle handle)=0 |
Remove a bound C++ handler. More... | |
virtual void | UnbindObject (const void *object)=0 |
Remove all handlers bound to a specific object. More... | |
template<typename T > | |
void | ExposeAsGlobal (const char *name, T *object) |
Expose object as global variable. More... | |
template<typename T > | |
void | DestroyExposedObject (T *object) |
Remove exposed object from JavaScript. More... | |
virtual bool | IsReadyForBindings () const =0 |
Checks whether the cohtml.js bindings are initialized and ready to use. More... | |
virtual void | ExecuteScript (const char *script)=0 |
Execute arbitrary JavaScript code. This should be called only with a valid script context created. More... | |
virtual void | AddInitialScript (const char *script)=0 |
Schedules execution of JavaScript code on every page load. Can be called at any time. The scripts will be executed on the next page load in the same order they were added. More... | |
virtual void | ResetInitialScripts ()=0 |
Resets the list of initial scripts executed on every page load. More... | |
virtual void | SetCustomSceneCompositor (renoir::ISubLayerCompositor *compositor, void *viewMetadata)=0 |
Set a custom scene compositor whose callbacks will be invoked when the Renoir library processes the frontend graphics commands. More... | |
virtual void | SetSceneCustomEffectRenderer (renoir::ICustomEffectRenderer *renderer, void *customEffectRendererMetadata)=0 |
Set a custom effect renderer for the View. Callbacks of the interface will be invoked for elements that have the 'coh-custom-effect-name' property when the graphics library prepares the command buffer for execution. In the default rendering mode, this happens on the render thread and the same information will be handed when processing the BC_DrawCustomEffect command in the backend, which makes the use of this interface in this case redundant. If, however, you are processing the rendering commands on the game thread, callbacks will be invoked on the game thread as well. This allows clients to set parameters to custom materials in systems that require this to be done on the game thread. More... | |
virtual Binder * | GetBinder ()=0 |
Returns a pointer to the internal binder. More... | |
Triggering events | |
These overloads trigger an event in JavaScript with the supplied arguments | |
virtual void | TriggerEvent (const char *name)=0 |
Triggers a UI event. More... | |
template<typename T1 > | |
void | TriggerEvent (const char *name, const T1 &argument1) |
Triggers a UI event. More... | |
template<typename T1 , typename T2 > | |
void | TriggerEvent (const char *name, const T1 &argument1, const T2 &argument2) |
Triggers a UI event. More... | |
template<typename T1 , typename T2 , typename T3 > | |
void | TriggerEvent (const char *name, const T1 &argument1, const T2 &argument2, const T3 &argument3) |
Triggers a UI event. More... | |
template<typename T1 , typename T2 , typename T3 , typename T4 > | |
void | TriggerEvent (const char *name, const T1 &argument1, const T2 &argument2, const T3 &argument3, const T4 &argument4) |
Triggers a UI event. More... | |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
void | TriggerEvent (const char *name, const T1 &argument1, const T2 &argument2, const T3 &argument3, const T4 &argument4, const T5 &argument5) |
Triggers a UI event. More... | |
Data-binding | |
typedef void(* | CoherentInternalBindGenericFunc) (cohtml::Binder *, void *) |
template<typename T > | |
void | CreateModel (const char *name, T *model) |
Creates a model for binding. More... | |
template<typename T > | |
void | UpdateWholeModel (T *model) |
Marks a model as dirty. Properties will be synchronized using the View::SynchronizeModels call. More... | |
virtual void | SynchronizeModels ()=0 |
Applies the changes accumulated by View::UpdateWholeModel and View::UpdateModelProperty to the corresponding JavaScript objects. More... | |
template<typename T > | |
void | RegisterModel (const char *name, T *model, CoherentInternalBindGenericFunc func) |
Registers a model with a given name. More... | |
template<typename T > | |
void | UnregisterModel (T *model) |
Unregisters a model. More... | |
virtual void | DestroyExposedInstanceOfType (void *object, cohtml::TypeInfo *typeInfo)=0 |
In order to identify different models internally we use a combination between a pointer to the object and a pointer to the type of the object. If you have an object where the type cannot be deduced statically during compile time, you need to provide it in a parameter to the function during runtime. More... | |
virtual void | UpdateWholeModelOfType (void *model, cohtml::TypeInfo *typeInfo)=0 |
Marks a model as dirty. Properties will be synchronized using the View::SynchronizeModels call. More... | |
virtual void | UnregisterModelOfType (void *model, cohtml::TypeInfo *typeInfo)=0 |
Unregisters a model. More... | |
virtual void | RegisterModelOfType (const char *name, void *model, cohtml::TypeInfo *typeInfo, CoherentInternalBindGenericFunc func)=0 |
Registers a model with a given name. More... | |
virtual void * | ReservedMethod (void *command, void *data)=0 |
Reserved method for internal usage. Do not use. More... | |
The View represents a UI page with its DOM, styles and JavaScript context. Think of the View as a whole UI or UI element. The View for instance could be the whole HUD of a game.
typedef void(* cohtml::View::CoherentInternalBindGenericFunc) (cohtml::Binder *, void *) |
|
virtual |
|
pure virtual |
Schedules execution of JavaScript code on every page load. Can be called at any time. The scripts will be executed on the next page load in the same order they were added.
script | code to be evaluated in the context of the main frame of the view |
|
pure virtual |
Advances the internal timer of the View and runs all animations. If changes have happened in the page, this call will also trigger a new layout and render on the other threads.
timeMilliseconds | the time in milliseconds since arbitrary point in time. The time must be monotonically increasing |
|
pure virtual |
Will begin serializing every rendered frame to a memory blob which will be passed in the callback. The saved frames can be inspected for debug purposes.
userData | opaque pointer which will be passed in the callback |
callback | Pointer to function which will be called with the serialized data. The callback will be called on the Main thread. |
mode | Obfuscation behaviour to use when capturing frames |
|
pure virtual |
Expose C++ handler to be called from UI.
name | name for the handler in the UI |
handler | handler to be executed |
cohtml::IViewListener::OnBindingsReleased
is called or the handler is unbound with cohtml::View::UnbindCall
|
pure virtual |
Will serialize next rendered frame to a memory blob which will be passed in the callback. The saved frames can be inspected for debug purposes.
userData | opaque pointer which will be passed in the callback |
callback | Pointer to function which will be called with the serialized data. The callback will be called on the Main thread. |
mode | Obfuscation behaviour to use when capturing the frame |
|
pure virtual |
Clears the navigation history accessed from JavaScript History object Use that method after View::LoadURL to reset the navigation history in case the view is reused to display unrelated page.
|
pure virtual |
Debugging flag. This will cause the View to re-draw itself each frame.
enable | whether to enable the continuous repaint mode |
|
inline |
Creates a model for binding.
name | the name for the model |
model | pointer to the object used as model (must be even aligned) |
cohtml::IViewListener::OnBindingsReleased
is called or unregistered with cohtml::View::UnregisterModel
|
pure virtual |
Debugging helper. Collects a comprehensive DOM structure dump.
|
pure virtual |
Debugging helper. Collects data about stacking context subtrees of the DOM tree.
|
pure virtual |
|
pure virtual |
In order to identify different models internally we use a combination between a pointer to the object and a pointer to the type of the object. If you have an object where the type cannot be deduced statically during compile time, you need to provide it in a parameter to the function during runtime.
If you know the type of the object during compilation you can use template API CreateModel, UnregisterModel etc. If your object has a dynamic
type (for example it may come from other VM) you must use their counterpart with the FromType
postfix, listed below. The following code is an example on how you can get TypeInfo from the Binder:
binder->SetMode(Binder::BM_GetTypeInfo); binder->BeginType(); Add the properties and methods for your type, using RegisterType, AddProperty, etc. binder->EndType(model); auto typeInfo = binder->GetTypeInfo(); Remove exposed object from JavaScript
object | the C++ object to be removed from JavaScript |
typeInfo | used to identify exactly which object on this address you want to destroy. |
|
inline |
Remove exposed object from JavaScript.
object | the C++ object that to be removed from JavaScript |
|
pure virtual |
Debugging flag. Enabling this will request the library to attach and emit metadata for every rendering command in the rendering backend. The metadata will contain the ID, CLASS and Node type of the Element that caused the drawing command. As multiple elements can be batched in the same command, the metadata will be a concatenated list of all Elements that have contributed to the batch. The user can emit the metadata in rendering & GPU debugging tools like PIX, RenderDoc, Razor etc. in order to gain better insight on the rendering operations & performance.
emit | whether to emit or not the metadata - disabled by default |
|
pure virtual |
Enables or disables the recording of rendering commands for the view. Enabled by default.
value | whether to enable the recording of rendering commands |
|
pure virtual |
Ends serializing rendered frames.
|
pure virtual |
Execute arbitrary JavaScript code. This should be called only with a valid script context created.
script | code to be evaluated in the context of the main frame of the view |
|
inline |
Expose object as global variable.
name | name of the global variable |
object | the instance for the global variable |
cohtml::IViewListener::OnBindingsReleased
is called or destroyed with cohtml::View::DestroyExposedObject
|
pure virtual |
Sends a gesture input event to the View.
event | a gesture event |
handled | a deprecated parameter, you should pass nullptr. |
userData | an opaque pointer passed to the ViewListener::OnNodeGestureEvent method. Can be nullptr. |
|
pure virtual |
Returns a pointer to the internal binder.
|
pure virtual |
Get info about the bytes statistic of a particular internal cache.
cache | specifies for which cache to return the info about the bytes statistic |
filled | bytes in the cache |
capacity | maximum bytes that the cache can contain |
|
pure virtual |
Get info about the number of objects statistic of a particular internal cache.
cache | specifies for which cache to return the info about the count statistic |
filled | number of existing objects in the cache |
capacity | maximum number of objects that can coexist in the cache |
|
pure virtual |
Gets the View height.
|
pure virtual |
Returns the unique ID of the View.
|
pure virtual |
Returns the minumum length of pans to be performed.
|
pure virtual |
Returns the Task Family Id that can be used to schedule Layout work in an auxiliary thread.
|
pure virtual |
Return a list of images currently in use by the View The list can be used to decide which images to pre-load or use for JS-based loading screens. The list is a current snapshot of the state of the View. Once built it will not change even if the View does. The user has to call the method again if she wants such changes applied.
|
pure virtual |
Gets the View width.
|
pure virtual |
Cancels the current IME composition.
|
pure virtual |
Confirms the current IME composition.
composition | the string to confirm |
|
pure virtual |
Updates the internal state of the IME composition in the View.
composition | the composition string so far |
targetStart | the index at the start of the selection |
targetEnd | the index at the end of the selection |
|
pure virtual |
Checks whether the cohtml.js bindings are initialized and ready to use.
|
pure virtual |
Sends a keyboard input event to the View.
event | a keyboard event |
handled | a deprecated parameter, you should pass nullptr. |
userData | an opaque pointer passed to the ViewListener::OnNodeMouseEvent method. Can be nullptr. |
|
pure virtual |
Loads a page in the View.
url | A URL for the page to be loaded. Must be a valid URL. Spaces aren't allowed. |
|
pure virtual |
Sends a mouse input event to the View.
event | a mouse event |
handled | a deprecated parameter, you should pass nullptr. |
userData | an opaque pointer passed to the ViewListener::OnNodeMouseEvent method. Can be nullptr. |
|
pure virtual |
Informs the View that its listener has been lost.
|
pure virtual |
Queue a task to clear an internal caches list.
caches | a bit field listing all caches to clear |
|
pure virtual |
Queue task to set the maximum bytes allowed for internal cache.
cache | specifies for which cache to set the count size |
capacity | maximum bytes allowed in the cache |
|
pure virtual |
Queue task to set the maximum number of objects in internal cache.
cache | specifies for which cache to set the bytes size |
capacity | maximum number of objects allowed in the cache |
|
pure virtual |
Expose C++ handler to be called when a specific event occurs.
name | name of the event |
handler | handler to be executed |
cohtml::IViewListener::OnBindingsReleased
is called or the handler is unregistered with cohtml::View::UnregisterFromEvent
|
inline |
Registers a model with a given name.
name | the name of the model |
model | the model pointer (must be even aligned) |
func | overload of CoherentBindInternal for the custom type |
|
pure virtual |
Registers a model with a given name.
name | the name of the model |
model | the model pointer (must be even aligned) |
typeInfo | used to identify exactly which object on this address you want to register. |
func | function that will be used to bind instances of this type |
|
pure virtual |
Reloads the current page in the view.
|
pure virtual |
Reserved method for internal usage. Do not use.
|
pure virtual |
Resets the list of initial scripts executed on every page load.
|
pure virtual |
Resizes the View contents.
|
pure virtual |
Sets fallback font families that will be used by all elements. Additional font families do not affect computed styles of an element.
fontFamilies | font families to be applied (use CSS font-family property format: "Arial, Roboto") |
nullptr
or empty string to clear additional fallbacks.
|
pure virtual |
Set a custom scene compositor whose callbacks will be invoked when the Renoir library processes the frontend graphics commands.
compositor | The compositor instance that the View will use to invoke callbacks |
viewMetadata | Custom metadata passed to the renoir::ISubLayerCompositor::OnDrawSubLayer callback into the renoir::ISubLayerCompositor::DrawData::CustomSceneMetadata field |
|
pure virtual |
Sets a resolution for rendering. This allows setting one size for the HTML (via the Resize method) and authoring the UI for that resolution, while here you can tell the SDK that it should render the UI into a different-sized texture. The ViewRenderer's render target could be of a different size, although usually you'd want to have the resolution for rendering and ViewRenderer RT size to be the same.
width | the width component of the resolution to render to |
height | the height component of the resolution to render to |
|
pure virtual |
Set a custom effect renderer for the View. Callbacks of the interface will be invoked for elements that have the 'coh-custom-effect-name' property when the graphics library prepares the command buffer for execution. In the default rendering mode, this happens on the render thread and the same information will be handed when processing the BC_DrawCustomEffect command in the backend, which makes the use of this interface in this case redundant. If, however, you are processing the rendering commands on the game thread, callbacks will be invoked on the game thread as well. This allows clients to set parameters to custom materials in systems that require this to be done on the game thread.
renderer | The custom effect renderer instance that will receive callbacks. |
customEffectRendererMetadata | Custom metadata passed as-is in the renoir::DrawCustomEffectCmd::UserData field within the structure passed to the backend |
|
pure virtual |
Sets the minumum length of pans to be performed.
value | the minumum length in pixels |
|
pure virtual |
Sets the User Agent string.
userAgent | the user agent string |
|
pure virtual |
The background where the UI scene will be drawn.
userTexture | Pointer to a user-defined representation of the texture. Will be passed as-is to the graphics backend. |
description | Description of the provided texture. The most relevant fields are Width, Height, ContentRectX, ContentRectY, |
|
pure virtual |
Set the user background offest. This has to be the location of the upper left corner of the UI texture relative to the upper left corner of the user backgorund texture.
x | The x coordinate of the upper left corner where the UI texture will be drawn |
y | The y coordinate of the upper left corner where the UI texture will be drawn |
|
pure virtual |
Debugging flag. This will cause the View to draw the bounding-boxes of all elements.
show | whether to show the bounding-boxes of elements |
|
pure virtual |
Debugging flag. This will cause the View show which parts of the texture are re-drawn each frame.
show | whether to show the paint rectangles |
|
pure virtual |
Applies the changes accumulated by View::UpdateWholeModel and View::UpdateModelProperty to the corresponding JavaScript objects.
|
pure virtual |
Sends a touch input event to the View.
events | an array of 'count' events |
count | the count of events passed |
handled | a deprecated parameter, you should pass nullptr. |
userData | an opaque pointer passed to the ViewListener::OnNodeTouched method. Can be nullptr. |
|
pure virtual |
Triggers a UI event.
|
inline |
Triggers a UI event.
|
inline |
Triggers a UI event.
|
inline |
Triggers a UI event.
|
inline |
Triggers a UI event.
|
inline |
Triggers a UI event.
|
pure virtual |
Remove a bound C++ handler.
handle | the handle of the handler to be unbound |
|
pure virtual |
Remove all handlers bound to a specific object.
object | the object whose handlers will be removed |
|
pure virtual |
Unloads the HTML document. This will remove the entire DOM tree, so nothing will rendered but the view object will still be usable and another document might be loaded using View::LoadURL.
|
pure virtual |
Remove a registered C++ handler.
handle | the handle of the event handler to be unregistered |
|
inline |
Unregisters a model.
model | the model to be unregistered. |
|
pure virtual |
Unregisters a model.
model | the model to be unregistered. |
typeInfo | used to identify exactly which object on this address you want to unregister. |
|
inline |
Marks a model as dirty. Properties will be synchronized using the View::SynchronizeModels call.
model | the model to be marked as dirty |
|
pure virtual |
Marks a model as dirty. Properties will be synchronized using the View::SynchronizeModels call.
model | the model to be marked as dirty |
typeInfo | used to identify exactly which object on this address you want to update. |