diff options
author | sanine <sanine.not@pm.me> | 2023-02-12 23:53:22 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-02-12 23:53:22 -0600 |
commit | f1fe73d1909a2448a004a88362a1a532d0d4f7c3 (patch) | |
tree | ab37ae3837e2f858de2932bcee9f26e69fab3db1 /libs/assimp/tools/assimp_view/Display.h | |
parent | f567ea1e2798fd3156a416e61f083ea3e6b95719 (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.h | 542 |
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 |