summaryrefslogtreecommitdiff
path: root/libs/assimp/tools/assimp_view/Display.h
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-02-12 23:53:22 -0600
committersanine <sanine.not@pm.me>2023-02-12 23:53:22 -0600
commitf1fe73d1909a2448a004a88362a1a532d0d4f7c3 (patch)
treeab37ae3837e2f858de2932bcee9f26e69fab3db1 /libs/assimp/tools/assimp_view/Display.h
parentf567ea1e2798fd3156a416e61f083ea3e6b95719 (diff)
switch to tinyobj and nanovg from assimp and cairo
Diffstat (limited to 'libs/assimp/tools/assimp_view/Display.h')
-rw-r--r--libs/assimp/tools/assimp_view/Display.h542
1 files changed, 0 insertions, 542 deletions
diff --git a/libs/assimp/tools/assimp_view/Display.h b/libs/assimp/tools/assimp_view/Display.h
deleted file mode 100644
index 1ca29f4..0000000
--- a/libs/assimp/tools/assimp_view/Display.h
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
----------------------------------------------------------------------------
-Open Asset Import Library (assimp)
----------------------------------------------------------------------------
-
-Copyright (c) 2006-2020, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the following
-conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the
- following disclaimer in the documentation and/or other
- materials provided with the distribution.
-
-* Neither the name of the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------------
-*/
-
-#if (!defined AV_DISPLAY_H_INCLUDED)
-#define AV_DISPLAY_H_INCLUDE
-
-#include <windows.h>
-#include <shellapi.h>
-#include <commctrl.h>
-
-// see CDisplay::m_aiImageList
-#define AI_VIEW_IMGLIST_NODE 0x0
-#define AI_VIEW_IMGLIST_MATERIAL 0x1
-#define AI_VIEW_IMGLIST_TEXTURE 0x2
-#define AI_VIEW_IMGLIST_TEXTURE_INVALID 0x3
-#define AI_VIEW_IMGLIST_MODEL 0x4
-
-namespace AssimpView
-{
-
- //-------------------------------------------------------------------------------
- /* Corresponds to the "Display" combobox in the UI
- */
- //-------------------------------------------------------------------------------
- class CDisplay
- {
- private:
-
- // helper class
- struct Info
- {
- Info( D3DXVECTOR4* p1,
- AssetHelper::MeshHelper* p2,
- const char* p3 )
- : pclrColor( p1 ), pMesh( p2 ), szShaderParam( p3 ) {}
-
- D3DXVECTOR4* pclrColor;
- AssetHelper::MeshHelper* pMesh;
- const char* szShaderParam;
- };
-
- // default constructor
- CDisplay()
- : m_iViewMode( VIEWMODE_FULL ),
- m_pcCurrentTexture( NULL ),
- m_pcCurrentNode( NULL ),
- m_pcCurrentMaterial( NULL ),
- m_hImageList( NULL ),
- m_hRoot( NULL ),
- m_fTextureZoom( 1000.0f )
- {
- this->m_aiImageList[ 0 ] = 0;
- this->m_aiImageList[ 1 ] = 1;
- this->m_aiImageList[ 2 ] = 2;
- this->m_aiImageList[ 3 ] = 3;
- this->m_aiImageList[ 4 ] = 4;
-
- this->m_avCheckerColors[ 0 ].x = this->m_avCheckerColors[ 0 ].y = this->m_avCheckerColors[ 0 ].z = 0.4f;
- this->m_avCheckerColors[ 1 ].x = this->m_avCheckerColors[ 1 ].y = this->m_avCheckerColors[ 1 ].z = 0.6f;
- }
-
- public:
-
-
- //------------------------------------------------------------------
- enum
- {
- // the full model is displayed
- VIEWMODE_FULL,
-
- // a material is displayed on a simple spjere as model
- VIEWMODE_MATERIAL,
-
- // a texture with an UV set mapped on it is displayed
- VIEWMODE_TEXTURE,
-
- // a single node in the scenegraph is displayed
- VIEWMODE_NODE,
- };
-
-
- //------------------------------------------------------------------
- // represents a texture in the tree view
- struct TextureInfo
- {
- // texture info
- IDirect3DTexture9** piTexture;
-
- // Blend factor of the texture
- float fBlend;
-
- // blend operation for the texture
- aiTextureOp eOp;
-
- // UV index for the texture
- unsigned int iUV;
-
- // Associated tree item
- HTREEITEM hTreeItem;
-
- // Original path to the texture
- std::string szPath;
-
- // index of the corresponding material
- unsigned int iMatIndex;
-
- // type of the texture
- unsigned int iType;
- };
-
- //------------------------------------------------------------------
- // represents a node in the tree view
- struct NodeInfo
- {
- // node object
- aiNode* psNode;
-
- // corresponding tree view item
- HTREEITEM hTreeItem;
- };
-
- //------------------------------------------------------------------
- // represents a mesh in the tree view
- struct MeshInfo
- {
- // the mesh object
- aiMesh* psMesh;
-
- // corresponding tree view item
- HTREEITEM hTreeItem;
- };
-
- //------------------------------------------------------------------
- // represents a material in the tree view
- struct MaterialInfo
- {
- // material index
- unsigned int iIndex;
-
- // material object
- aiMaterial* psMaterial;
-
- // ID3DXEffect interface
- ID3DXEffect* piEffect;
-
- // corresponding tree view item
- HTREEITEM hTreeItem;
- };
-
- //------------------------------------------------------------------
- // Singleton accessors
- static CDisplay s_cInstance;
- inline static CDisplay& Instance()
- {
- return s_cInstance;
- }
-
-
- //------------------------------------------------------------------
- // Called during the render loop. Renders the scene (including the
- // HUD etc) in the current view mode
- int OnRender();
-
- //------------------------------------------------------------------
- // called when the user selects another item in the "Display" tree
- // view the method determines the new view mode and performs all
- // required operations
- // \param p_hTreeItem Selected tree view item
- int OnSetup( HTREEITEM p_hTreeItem );
-
- //------------------------------------------------------------------
- // Variant 1: Render the full scene with the asset
- int RenderFullScene();
-
-#if 0
- //------------------------------------------------------------------
- // Variant 2: Render only a part of the scene. One node to
- // be exact
- int RenderScenePart();
-#endif
-
- //------------------------------------------------------------------
- // Variant 3: Render a large sphere and map a given material on it
- int RenderMaterialView();
-
- //------------------------------------------------------------------
- // Variant 4: Render a flat plane, map a texture on it and
- // display the UV wire on it
- int RenderTextureView();
-
- //------------------------------------------------------------------
- // Fill the UI combobox with a list of all supported view modi
- //
- // The display modes are added in order
- int FillDisplayList( void );
-
- //------------------------------------------------------------------
- // Add a material and all sub textures to the display mode list
- // hRoot - Handle to the root of the tree view
- // iIndex - Material index
- int AddMaterialToDisplayList( HTREEITEM hRoot,
- unsigned int iIndex );
-
- //------------------------------------------------------------------
- // Add a texture to the display list
- // pcMat - material containing the texture
- // hTexture - Handle to the material tree item
- // szPath - Path to the texture
- // iUVIndex - UV index to be used for the texture
- // fBlendFactor - Blend factor to be used for the texture
- // eTextureOp - texture operation to be used for the texture
- int AddTextureToDisplayList( unsigned int iType,
- unsigned int iIndex,
- const aiString* szPath,
- HTREEITEM hFX,
- unsigned int iUVIndex = 0,
- const float fBlendFactor = 0.0f,
- aiTextureOp eTextureOp = aiTextureOp_Multiply,
- unsigned int iMesh = 0 );
-
- //------------------------------------------------------------------
- // Add a node to the display list
- // Recusrivly adds all subnodes as well
- // iIndex - Index of the node in the parent's child list
- // iDepth - Current depth of the node
- // pcNode - Node object
- // hRoot - Parent tree view node
- int AddNodeToDisplayList(
- unsigned int iIndex,
- unsigned int iDepth,
- aiNode* pcNode,
- HTREEITEM hRoot );
-
- //------------------------------------------------------------------
- // Add a mesh to the display list
- // iIndex - Index of the mesh in the scene's mesh list
- // hRoot - Parent tree view node
- int AddMeshToDisplayList(
- unsigned int iIndex,
- HTREEITEM hRoot );
-
- //------------------------------------------------------------------
- // Load the image list for the tree view item
- int LoadImageList( void );
-
- //------------------------------------------------------------------
- // Expand all nodes in the tree
- int ExpandTree();
-
- //------------------------------------------------------------------
- // Fill the UI combobox with a list of all supported animations
- // The animations are added in order
- int FillAnimList( void );
-
- //------------------------------------------------------------------
- // Clear the combox box containing the list of animations
- int ClearAnimList( void );
-
- //------------------------------------------------------------------
- // Clear the combox box containing the list of scenegraph items
- int ClearDisplayList( void );
-
- //------------------------------------------------------------------
- // Fill in the default statistics
- int FillDefaultStatistics( void );
-
- //------------------------------------------------------------------
- // Called by LoadAsset()
- // reset the class instance to the default values
- int Reset( void );
-
- //------------------------------------------------------------------
- // Replace the texture that is current selected with
- // a new texture
- int ReplaceCurrentTexture( const char* szPath );
-
- //------------------------------------------------------------------
- // Display the context menu (if there) for the specified tree item
- // hItem Valid tree view item handle
- int ShowTreeViewContextMenu( HTREEITEM hItem );
-
- //------------------------------------------------------------------
- // Event handling for pop-up menus displayed by th tree view
- int HandleTreeViewPopup( WPARAM wParam, LPARAM lParam );
-
- //------------------------------------------------------------------
- // Enable animation-related parts of the UI
- int EnableAnimTools( BOOL hm );
-
- //------------------------------------------------------------------
- // setter for m_iViewMode
- inline void SetViewMode( unsigned int p_iNew )
- {
- this->m_iViewMode = p_iNew;
- }
-
- //------------------------------------------------------------------
- // getter for m_iViewMode
- inline unsigned int GetViewMode()
- {
- return m_iViewMode;
- }
-
- //------------------------------------------------------------------
- // change the texture view's zoom factor
- inline void SetTextureViewZoom( float f )
- {
- // FIX: Removed log(), seems to make more problems than it fixes
- this->m_fTextureZoom += f * 15;
- if( this->m_fTextureZoom < 0.05f )this->m_fTextureZoom = 0.05f;
- }
-
- //------------------------------------------------------------------
- // change the texture view's offset on the x axis
- inline void SetTextureViewOffsetX( float f )
- {
- this->m_vTextureOffset.x += f;
- }
-
- //------------------------------------------------------------------
- // change the texture view's offset on the y axis
- inline void SetTextureViewOffsetY( float f )
- {
- this->m_vTextureOffset.y += f;
- }
-
- //------------------------------------------------------------------
- // add a new texture to the list
- inline void AddTexture( const TextureInfo& info )
- {
- this->m_asTextures.push_back( info );
- }
-
- //------------------------------------------------------------------
- // add a new node to the list
- inline void AddNode( const NodeInfo& info )
- {
- this->m_asNodes.push_back( info );
- }
-
- //------------------------------------------------------------------
- // add a new mesh to the list
- inline void AddMesh( const MeshInfo& info )
- {
- this->m_asMeshes.push_back( info );
- }
-
- //------------------------------------------------------------------
- // add a new material to the list
- inline void AddMaterial( const MaterialInfo& info )
- {
- this->m_asMaterials.push_back( info );
- }
-
- //------------------------------------------------------------------
- // set the primary color of the checker pattern background
- inline void SetFirstCheckerColor( D3DXVECTOR4 c )
- {
- this->m_avCheckerColors[ 0 ] = c;
- }
-
- //------------------------------------------------------------------
- // set the secondary color of the checker pattern background
- inline void SetSecondCheckerColor( D3DXVECTOR4 c )
- {
- this->m_avCheckerColors[ 1 ] = c;
- }
-
- //------------------------------------------------------------------
- // get the primary color of the checker pattern background
- inline const D3DXVECTOR4* GetFirstCheckerColor() const
- {
- return &this->m_avCheckerColors[ 0 ];
- }
-
- //------------------------------------------------------------------
- // get the secondary color of the checker pattern background
- inline const D3DXVECTOR4* GetSecondCheckerColor() const
- {
- return &this->m_avCheckerColors[ 1 ];
- }
-
- private:
-
- //------------------------------------------------------------------
- // Render a screen-filling square using the checker pattern shader
- int RenderPatternBG();
-
- //------------------------------------------------------------------
- // Render a given node in the scenegraph
- // piNode Node to be rendered
- // piMatrix Current transformation matrix
- // bAlpha Render alpha or opaque objects only?
- int RenderNode( aiNode* piNode, const aiMatrix4x4& piMatrix,
- bool bAlpha = false );
-
- //------------------------------------------------------------------
- // Setup the camera for the stereo view rendering mode
- int SetupStereoView();
-
- //------------------------------------------------------------------
- // Render the second view (for the right eye) in stereo mod
- // m - World matrix
- int RenderStereoView( const aiMatrix4x4& m );
-
- //------------------------------------------------------------------
- // Handle user input
- int HandleInput();
-
- //------------------------------------------------------------------
- // Handle user input for the texture viewer
- int HandleInputTextureView();
-
- //------------------------------------------------------------------
- // Handle user input if no asset is loaded
- int HandleInputEmptyScene();
-
- //------------------------------------------------------------------
- // Draw the HUD (call only if FPS mode isn't active)
- int DrawHUD();
-
- //------------------------------------------------------------------
- // Used by OnSetup().
- // Do everything necessary to switch to texture view mode
- int OnSetupTextureView( TextureInfo* pcNew );
-
- //------------------------------------------------------------------
- // Used by OnSetup().
- // Do everything necessary to switch to material view mode
- int OnSetupMaterialView( MaterialInfo* pcNew );
-
- //------------------------------------------------------------------
- // Used by OnSetup().
- // Do everything necessary to switch to node view mode
- int OnSetupNodeView( NodeInfo* pcNew );
-
- //------------------------------------------------------------------
- // Used by OnSetup().
- // Do everything necessary to switch back to normal view mode
- int OnSetupNormalView();
-
- //------------------------------------------------------------------
- // Used by HandleTreeViewPopup().
- int HandleTreeViewPopup2( WPARAM wParam, LPARAM lParam );
-
- //------------------------------------------------------------------
- // Render skeleton
- int RenderSkeleton( aiNode* piNode, const aiMatrix4x4& piMatrix,
- const aiMatrix4x4& parent );
-
-
-
- private:
-
- // view mode
- unsigned int m_iViewMode;
-
- // List of all textures in the display CB
- std::vector<TextureInfo> m_asTextures;
-
- // current texture or NULL if no texture is active
- TextureInfo* m_pcCurrentTexture;
-
- // List of all node in the display CB
- std::vector<NodeInfo> m_asNodes;
-
- // List of all node in the display CB
- std::vector<MeshInfo> m_asMeshes;
-
- // current Node or NULL if no Node is active
- NodeInfo* m_pcCurrentNode;
-
- // List of all materials in the display CB
- std::vector<MaterialInfo> m_asMaterials;
-
- // current material or NULL if no material is active
- MaterialInfo* m_pcCurrentMaterial;
-
- // indices into the image list of the "display" tree view control
- unsigned int m_aiImageList[ 5 ]; /* = {0,1,2,3,4};*/
-
- // Image list
- HIMAGELIST m_hImageList;
-
- // Root node of the tree, "Model"
- HTREEITEM m_hRoot;
-
- // Current zoom factor of the texture viewer
- float m_fTextureZoom;
-
- // Current offset (in pixels) of the texture viewer
- aiVector2D m_vTextureOffset;
-
- // Colors used to draw the checker pattern (for the
- // texture viewer as background )
- D3DXVECTOR4 m_avCheckerColors[ 2 ];
-
- // View projection matrix
- aiMatrix4x4 mViewProjection;
- aiVector3D vPos;
- };
-
-}
-#endif // AV_DISPLAY_H_INCLUDE