KiCad PCB EDA Suite
Loading...
Searching...
No Matches
3d_cache.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2015 Cirilo Bernardo <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
28
29#ifndef CACHE_3D_H
30#define CACHE_3D_H
31
32#include "3d_info.h"
33#include <core/typeinfo.h>
34#include "string_utils.h"
35#include <hash_128.h>
36#include <list>
37#include <map>
39#include <project.h>
40#include <wx/string.h>
41
42class EMBEDDED_FILES;
43class PGM_BASE;
44class S3D_CACHE_ENTRY;
45class SCENEGRAPH;
48
49
55{
56public:
57 S3D_CACHE();
58 virtual ~S3D_CACHE();
59
61 {
63 }
64
74 bool Set3DConfigDir( const wxString& aConfigDir );
75
79 bool SetProject( PROJECT* aProject );
80
86 void SetProgramBase( PGM_BASE* aBase );
87
102 SCENEGRAPH* Load( const wxString& aModelFile, const wxString& aBasePath,
103 std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack );
104
105 FILENAME_RESOLVER* GetResolver() noexcept;
106
114 std::list< wxString > const* GetFileFilters() const;
115
119 void FlushCache( bool closePlugins = true );
120
124 void ClosePlugins();
125
136 S3DMODEL* GetModel( const wxString& aModelFileName, const wxString& aBasePath,
137 std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack );
138
146 void CleanCacheDir( int aNumDaysOld );
147
148private:
159 SCENEGRAPH* checkCache( const wxString& aFileName, S3D_CACHE_ENTRY** aCachePtr = nullptr );
160
168 bool getHash( const wxString& aFileName, HASH_128& aHash );
169
170 // load scene data from a cache file
171 bool loadCacheData( S3D_CACHE_ENTRY* aCacheItem );
172
173 // save scene data to a cache file
174 bool saveCacheData( S3D_CACHE_ENTRY* aCacheItem );
175
176 // the real load function (can supply a cache entry pointer to member functions)
177 SCENEGRAPH* load( const wxString& aModelFile, const wxString& aBasePath,
178 S3D_CACHE_ENTRY** aCachePtr = nullptr,
179 std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack = {} );
180
182 std::list< S3D_CACHE_ENTRY* > m_CacheList;
183
185 std::map< wxString, S3D_CACHE_ENTRY*, rsort_wxString > m_CacheMap;
186
188
190
192 wxString m_CacheDir;
193 wxString m_ConfigDir;
194};
195
196#endif // CACHE_3D_H
defines the basic data associated with a single 3D model.
define an internal structure to be used by the 3D renders
Provide an extensible class to resolve 3D model paths.
Container for data for KiCad programs.
Definition pgm_base.h:103
A PROJECT can hold stuff it knows nothing about, in the form of _ELEM derivatives.
Definition project.h:97
Container for project specific data.
Definition project.h:65
ELEM
The set of #_ELEMs that a PROJECT can hold.
Definition project.h:71
Definition 3d_cache.cpp:71
void SetProgramBase(PGM_BASE *aBase)
Set the filename resolver's pointer to the application's PGM_BASE instance.
Definition 3d_cache.cpp:507
wxString m_CacheDir
Definition 3d_cache.h:192
bool loadCacheData(S3D_CACHE_ENTRY *aCacheItem)
Definition 3d_cache.cpp:321
virtual ~S3D_CACHE()
Definition 3d_cache.cpp:134
void FlushCache(bool closePlugins=true)
Free all data in the cache and by default closes all plugins.
Definition 3d_cache.cpp:525
PROJECT::ELEM ProjectElementType() noexcept override
Definition 3d_cache.h:60
bool Set3DConfigDir(const wxString &aConfigDir)
Set the configuration directory to be used by the model manager for storing 3D model manager configur...
Definition 3d_cache.cpp:415
S3DMODEL * GetModel(const wxString &aModelFileName, const wxString &aBasePath, std::vector< const EMBEDDED_FILES * > aEmbeddedFilesStack)
Attempt to load the scene data for a model and to translate it into an S3D_MODEL structure for displa...
Definition 3d_cache.cpp:551
SCENEGRAPH * checkCache(const wxString &aFileName, S3D_CACHE_ENTRY **aCachePtr=nullptr)
Find or create cache entry for file name.
Definition 3d_cache.cpp:222
PROJECT * m_project
Definition 3d_cache.h:191
S3D_PLUGIN_MANAGER * m_Plugins
Definition 3d_cache.h:189
bool saveCacheData(S3D_CACHE_ENTRY *aCacheItem)
Definition 3d_cache.cpp:361
SCENEGRAPH * load(const wxString &aModelFile, const wxString &aBasePath, S3D_CACHE_ENTRY **aCachePtr=nullptr, std::vector< const EMBEDDED_FILES * > aEmbeddedFilesStack={})
Definition 3d_cache.cpp:143
wxString m_ConfigDir
base configuration path for 3D items.
Definition 3d_cache.h:193
std::list< wxString > const * GetFileFilters() const
Return the list of file filters retrieved from the plugins.
Definition 3d_cache.cpp:519
FILENAME_RESOLVER * GetResolver() noexcept
Definition 3d_cache.cpp:513
std::list< S3D_CACHE_ENTRY * > m_CacheList
Cache entries.
Definition 3d_cache.h:182
bool SetProject(PROJECT *aProject)
Set the current project's working directory; this affects the model search path.
Definition 3d_cache.cpp:479
void CleanCacheDir(int aNumDaysOld)
Delete up old cache files in cache directory.
Definition 3d_cache.cpp:578
std::map< wxString, S3D_CACHE_ENTRY *, rsort_wxString > m_CacheMap
Mapping of file names to cache names and data.
Definition 3d_cache.h:185
SCENEGRAPH * Load(const wxString &aModelFile, const wxString &aBasePath, std::vector< const EMBEDDED_FILES * > aEmbeddedFilesStack)
Attempt to load the scene data for a model.
Definition 3d_cache.cpp:215
void ClosePlugins()
Unload plugins to free memory.
Definition 3d_cache.cpp:544
bool getHash(const wxString &aFileName, HASH_128 &aHash)
Calculate the SHA1 hash of the given file.
Definition 3d_cache.cpp:289
FILENAME_RESOLVER * m_FNResolver
Definition 3d_cache.h:187
Define the basic data set required to represent a 3D model.
Definition scenegraph.h:45
STL namespace.
A storage class for 128-bit hash value.
Definition hash_128.h:36
Store the a model based on meshes and materials.
Definition c3dmodel.h:95