# HOOPS Envision for Desktop with wxWidgets

We provide ready to use platform integration to wxWidgets (https://www.wxwidgets.org/). This page describes how to integrate HOOPS Envision for Desktop with wxWidgets (https://www.wxwidgets.org/) and how to get your application up and running with wxWidgets.

The platform integration classes have been tested using wxWidgets 3.x. On Linux, the integration classes require the wxGTK port of wxWidgets.

## Creating a Viewer

All HOOPS Envision apps need one (or more) viewers in order to visualize the 3D data. We provide two example implementations that you can find in the PlatformIntegration/Wx folder of the distribution. Both implementations derive from wxGLCanvas (and from cee::vis::ViewerUIFramework).

- ViewerCanvas: ceewxViewerCanvas.h/cpp
  This class implements a minimal viewer in wxWidgets. It provides the necessary code for creating, rendering and deleting the viewer. There is no support for navigation/picking etc., just the bare minimum. To create your own Viewer, you should derive from this class.
- ViewerCanvasDemo: ceewxViewerCanvasDemo.h/cpp
  This is a demo application oriented implementation which adds Envision style navigation in addition to what is in ViewerCanvas. It is used in the WxMinimal and WxMultiView examples which you can find in the Examples/Wx folder of the distribution. The class derives from ViewerCanvas and can be a good starting point for a Viewer in your own application. We recommend copying the source code of this Viewer and modifying it to suit the needs of your application.

ViewerCanvas (and ViewerCanvasDemo) uses a two-stage creation process. After the instance has been created using new, the ViewerCanvas::initializeViewer() member function must be called before the viewer is used. On Linux, using the wxGTK port of wxWidgets, there is a limitation in that this function may only be called after the window has been shown on screen, in particular it can’t usually be called from the constructor as the window isn’t yet shown at this moment. Similarly, the ViewerCanvas::shutdownViewer() member function should be called before the window is destroyed. Please see the source code in the WxMinimal and WxMultiView examples for details on how this can be accomplished.

## Example Programs

A .vcxproj file is included for Windows users. For Linux users a Makefile for GNU Make is provided.

The Windows .vcxproj file relies on the environment variable WXWIN being set to the folder where you have installed wxWidgets.

On Linux, the provided Makefile relies on the wx-config utility for obtaining the compiler options, include paths and link libraries. This means that wx-config must be available in the search path when running make. If you have correctly installed wxWidgets this should already be configured. If you have manually compiled wxWidgets without running install, you may have to add the directory manually, e.g.

    export PATH=/full/path/to/that/wx-config:$PATH

WxMinimal

| Location: Examples/Wx/WxMinimal A very small example showing the basic requirements for a wxWidgets application.

WxMultiView

| Location: Examples/Wx/WxMultiView A small example showing how to do multiple views/windows with HOOPS Envision for Desktop in wxWidgets.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Envision for Desktop in your own language, or choose a sample question below to start a conversation:

What is HOOPS Envision for Desktop?
What are the latest release notes for HOOPS Envision for Desktop?
How do I start evaluating HOOPS Envision for Desktop?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...