Finished refactor and introduction of generic Plugin scheme
This commit is contained in:
parent
3ff8ca0caf
commit
a2fe783f53
|
@ -135,7 +135,9 @@ void S3D_PLUGIN_MANAGER::loadPlugins( void )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fn.Assign( wxStandardPaths::Get().GetPluginsDir() );
|
fn.Assign( wxStandardPaths::Get().GetPluginsDir() );
|
||||||
|
#ifndef _WIN32 // suppress 'kicad' subdir since it is redundant on MSWin
|
||||||
fn.AppendDir( wxT( "kicad" ) );
|
fn.AppendDir( wxT( "kicad" ) );
|
||||||
|
#endif
|
||||||
fn.AppendDir( wxT( "plugins" ) );
|
fn.AppendDir( wxT( "plugins" ) );
|
||||||
fn.AppendDir( wxT( "3d" ) );
|
fn.AppendDir( wxT( "3d" ) );
|
||||||
checkPluginPath( std::string( fn.GetPathWithSep().ToUTF8() ), searchpaths );
|
checkPluginPath( std::string( fn.GetPathWithSep().ToUTF8() ), searchpaths );
|
||||||
|
|
|
@ -3,7 +3,7 @@ include_directories(
|
||||||
${CMAKE_SOURCE_DIR}/3d-viewer
|
${CMAKE_SOURCE_DIR}/3d-viewer
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library( s3d_sg SHARED
|
add_library( kicad_3dsg SHARED
|
||||||
sg_base.cpp
|
sg_base.cpp
|
||||||
sg_node.cpp
|
sg_node.cpp
|
||||||
sg_helpers.cpp
|
sg_helpers.cpp
|
||||||
|
@ -31,21 +31,60 @@ add_library( s3d_sg SHARED
|
||||||
ifsg_api.cpp
|
ifsg_api.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Define a flag to expose the appropriate EXPORT macro at build time
|
find_file( S3DSG_VERSION_FILE sg_version.h
|
||||||
target_compile_definitions( s3d_sg PRIVATE -DCOMPILE_SGLIB )
|
PATHS ${CMAKE_CURRENT_SOURCE_DIR} NO_DEFAULT_PATH )
|
||||||
|
|
||||||
target_link_libraries( s3d_sg ${wxWidgets_LIBRARIES} )
|
if( NOT ${S3DSG_VERSION_FILE} STREQUAL "S3DSG_VERSION_FILE-NOTFOUND" )
|
||||||
|
|
||||||
|
# extract the "#define SG_VERSION_*" lines
|
||||||
|
file( STRINGS ${S3DSG_VERSION_FILE} _version
|
||||||
|
REGEX "^[' ','\t']*#define[' ','\t']*SG_VERSION_.*" )
|
||||||
|
|
||||||
|
foreach( SVAR ${_version} )
|
||||||
|
string( REGEX MATCH SG_VERSION_[M,A,J,O,R,I,N,P,T,C,H,E,V]* _VARNAME ${SVAR} )
|
||||||
|
string( REGEX MATCH [0-9]+ _VALUE ${SVAR} )
|
||||||
|
|
||||||
|
if( NOT ${_VARNAME} STREQUAL "" )
|
||||||
|
message( "INFO: " ${_VARNAME} " = " ${_VALUE} )
|
||||||
|
if( NOT ${_VALUE} STREQUAL "" )
|
||||||
|
set( ${_VARNAME} ${_VALUE} )
|
||||||
|
else()
|
||||||
|
set( ${_VARNAME} 0 )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if( NOT SG_VERSION_MAJOR AND NOT ${SG_VERSION_MAJOR} STREQUAL "0" )
|
||||||
|
message( FATAL_ERROR "Cannot determine the S3DSG library version" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#ensure that NOT SG_VERSION* will evaluate to '0'
|
||||||
|
if( NOT SG_VERSION_MINOR )
|
||||||
|
set( SG_VERSION_MINOR 0 )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if( NOT SG_VERSION_PATCH )
|
||||||
|
set( SG_VERSION_PATCH 0 )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties( kicad_3dsg
|
||||||
|
PROPERTIES SOVERSION
|
||||||
|
${SG_VERSION_MAJOR}.${SG_VERSION_MINOR}.${SG_VERSION_PATCH} )
|
||||||
|
|
||||||
if( APPLE )
|
|
||||||
install( TARGETS
|
|
||||||
s3d_sg
|
|
||||||
DESTINATION /Applications/kicad.app/SharedSupport
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
else()
|
else()
|
||||||
install( TARGETS
|
message( FATAL_ERROR "Cannot determine the S3DSG library version" )
|
||||||
s3d_sg
|
endif()
|
||||||
DESTINATION lib/kicad
|
|
||||||
|
unset( S3DSG_VERSION_FILE CACHE )
|
||||||
|
|
||||||
|
# Define a flag to expose the appropriate EXPORT macro at build time
|
||||||
|
target_compile_definitions( kicad_3dsg PRIVATE -DCOMPILE_SGLIB )
|
||||||
|
|
||||||
|
target_link_libraries( kicad_3dsg ${wxWidgets_LIBRARIES} )
|
||||||
|
|
||||||
|
install( TARGETS
|
||||||
|
kicad_3dsg
|
||||||
|
DESTINATION ${KICAD_LIB}
|
||||||
COMPONENT binary
|
COMPONENT binary
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "3d_cache/sg/sg_faceset.h"
|
#include "3d_cache/sg/sg_faceset.h"
|
||||||
#include "3d_cache/sg/sg_normals.h"
|
#include "3d_cache/sg/sg_normals.h"
|
||||||
#include "3d_cache/sg/sg_shape.h"
|
#include "3d_cache/sg/sg_shape.h"
|
||||||
|
#include "3d_cache/sg/sg_version.h"
|
||||||
#include "3d_info.h"
|
#include "3d_info.h"
|
||||||
#include "plugins/3dapi/c3dmodel.h"
|
#include "plugins/3dapi/c3dmodel.h"
|
||||||
|
|
||||||
|
@ -411,3 +412,22 @@ void S3D::Init3DMesh( SMESH& aMesh )
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void S3D::GetLibVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
|
unsigned char* Patch, unsigned char* Revision )
|
||||||
|
{
|
||||||
|
if( Major )
|
||||||
|
*Major = SG_VERSION_MAJOR;
|
||||||
|
|
||||||
|
if( Minor )
|
||||||
|
*Minor = SG_VERSION_MINOR;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = SG_VERSION_REVNO;
|
||||||
|
|
||||||
|
if( Patch )
|
||||||
|
*Patch = SG_VERSION_PATCH;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -22,37 +22,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file 3d_plugin_dummy.h
|
* @file sg_version.h
|
||||||
* is a sample dummy plugin which doesn't do much other than serve as
|
* defines the version number of 3DSG library. This file is parsed by
|
||||||
* an example of how a plugin must be built.
|
* CMake to determine the version number of the 3DSG library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef SG_VERSION_H
|
||||||
|
#define SG_VERSION_H
|
||||||
|
|
||||||
#ifndef PLUGIN_3D_DUMMY_H
|
#define SG_VERSION_MAJOR 1
|
||||||
#define PLUGIN_3D_DUMMY_H
|
#define SG_VERSION_MINOR 0
|
||||||
|
#define SG_VERSION_PATCH 0
|
||||||
|
#define SG_VERSION_REVNO 0
|
||||||
|
|
||||||
#include <vector>
|
#endif // SG_VERSION_H
|
||||||
#include <plugins/3d/3d_plugin.h>
|
|
||||||
|
|
||||||
class SCENEGRAPH;
|
|
||||||
|
|
||||||
class S3D_PLUGIN_DUMMY : public S3D_PLUGIN
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
std::vector< wxString > m_extensions; // supported extensions
|
|
||||||
std::vector< wxString > m_filters; // file filters
|
|
||||||
|
|
||||||
public:
|
|
||||||
S3D_PLUGIN_DUMMY();
|
|
||||||
virtual ~S3D_PLUGIN_DUMMY();
|
|
||||||
|
|
||||||
virtual int GetNExtensions( void ) const;
|
|
||||||
virtual const wxString GetModelExtension( int aIndex ) const;
|
|
||||||
virtual int GetNFilters( void ) const;
|
|
||||||
virtual const wxString GetFileFilter( int aIndex ) const;
|
|
||||||
|
|
||||||
bool CanRender( void ) const;
|
|
||||||
SCENEGRAPH* Load( const wxString& aFileName );
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // PLUGIN_3D_DUMMY_H
|
|
|
@ -147,9 +147,9 @@ elseif(NOT GLM_ENABLE_FAST_MATH)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( WIN32 )
|
if( WIN32 )
|
||||||
target_link_libraries( 3d-viewer ${Boost_} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} s3d_sg )
|
target_link_libraries( 3d-viewer ${Boost_} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} kicad_3dsg )
|
||||||
else()
|
else()
|
||||||
target_link_libraries( 3d-viewer ${Boost_} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} s3d_sg dl )
|
target_link_libraries( 3d-viewer ${Boost_} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} kicad_3dsg dl )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory( 3d_cache )
|
add_subdirectory( 3d_cache )
|
||||||
|
|
|
@ -341,9 +341,22 @@ if( NOT APPLE )
|
||||||
if( WIN32 )
|
if( WIN32 )
|
||||||
set( KICAD_PLUGINS ${KICAD_BIN}/scripting/plugins
|
set( KICAD_PLUGINS ${KICAD_BIN}/scripting/plugins
|
||||||
CACHE PATH "Location of KiCad plugins." )
|
CACHE PATH "Location of KiCad plugins." )
|
||||||
|
|
||||||
|
set( KICAD_LIB ${KICAD_BIN}
|
||||||
|
CACHE PATH "Location of KiCad shared objects" )
|
||||||
|
|
||||||
|
set( KICAD_USER_PLUGIN ${KICAD_BIN}/plugins
|
||||||
|
CACHE PATH "Location of KiCad user-loaded plugins" )
|
||||||
|
|
||||||
else()
|
else()
|
||||||
set( KICAD_PLUGINS lib/kicad/plugins
|
set( KICAD_PLUGINS lib/kicad/plugins
|
||||||
CACHE PATH "Location of KiCad plugins." )
|
CACHE PATH "Location of KiCad plugins." )
|
||||||
|
|
||||||
|
set( KICAD_LIB ${CMAKE_INSTALL_PREFIX}/lib
|
||||||
|
CACHE PATH "Location of KiCad shared objects" )
|
||||||
|
|
||||||
|
set( KICAD_USER_PLUGIN ${CMAKE_INSTALL_PREFIX}/lib/kicad/plugins
|
||||||
|
CACHE PATH "Location of KiCad user-loaded plugins" )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( KICAD_DATA share/kicad
|
set( KICAD_DATA share/kicad
|
||||||
|
@ -360,6 +373,12 @@ else()
|
||||||
set( KICAD_BIN ${CMAKE_INSTALL_PREFIX}
|
set( KICAD_BIN ${CMAKE_INSTALL_PREFIX}
|
||||||
CACHE PATH "Location of KiCad binaries." FORCE )
|
CACHE PATH "Location of KiCad binaries." FORCE )
|
||||||
|
|
||||||
|
set( KICAD_LIB /Applications/kicad.app/Contents/Macos
|
||||||
|
CACHE PATH "Location of KiCad shared objects" FORCE )
|
||||||
|
|
||||||
|
set( KICAD_USER_PLUGIN /Applications/kicad.app/SharedSupport/plugins
|
||||||
|
CACHE PATH "Location of KiCad user-loaded plugins" FORCE )
|
||||||
|
|
||||||
# some paths to single app bundle
|
# some paths to single app bundle
|
||||||
set( OSX_BUNDLE_MAIN "kicad.app" )
|
set( OSX_BUNDLE_MAIN "kicad.app" )
|
||||||
set( OSX_BUNDLE_BIN_DIR "Contents/MacOS" )
|
set( OSX_BUNDLE_BIN_DIR "Contents/MacOS" )
|
||||||
|
@ -411,6 +430,8 @@ endif()
|
||||||
|
|
||||||
mark_as_advanced( KICAD_BIN
|
mark_as_advanced( KICAD_BIN
|
||||||
KICAD_PLUGINS
|
KICAD_PLUGINS
|
||||||
|
KICAD_USER_PLUGIN
|
||||||
|
KICAD_LIB
|
||||||
KICAD_DATA
|
KICAD_DATA
|
||||||
KICAD_DOCS
|
KICAD_DOCS
|
||||||
KICAD_DEMOS
|
KICAD_DEMOS
|
||||||
|
|
|
@ -53,7 +53,7 @@ KICAD_PLUGIN_EXPORT char const* GetKicadPluginClass( void )
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
||||||
unsigned char* Minor, unsigned char* Revision, unsigned char* Patch )
|
unsigned char* Minor, unsigned char* Patch, unsigned char* Revision )
|
||||||
{
|
{
|
||||||
if( Major )
|
if( Major )
|
||||||
*Major = MAJOR;
|
*Major = MAJOR;
|
||||||
|
@ -61,17 +61,17 @@ KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
||||||
if( Minor )
|
if( Minor )
|
||||||
*Minor = MINOR;
|
*Minor = MINOR;
|
||||||
|
|
||||||
if( Revision )
|
|
||||||
*Revision = REVISION;
|
|
||||||
|
|
||||||
if( Patch )
|
if( Patch )
|
||||||
*Patch = PATCH;
|
*Patch = PATCH;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = REVISION;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT bool CheckClassVersion( unsigned char Major,
|
KICAD_PLUGIN_EXPORT bool CheckClassVersion( unsigned char Major,
|
||||||
unsigned char Minor, unsigned char Revision, unsigned char Patch )
|
unsigned char Minor, unsigned char Patch, unsigned char Revision )
|
||||||
{
|
{
|
||||||
if( Major != MAJOR )
|
if( Major != MAJOR )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -178,6 +178,9 @@ namespace S3D
|
||||||
* creates and initializes an SMESH struct
|
* creates and initializes an SMESH struct
|
||||||
*/
|
*/
|
||||||
SGLIB_API void Init3DMesh( SMESH& aMesh );
|
SGLIB_API void Init3DMesh( SMESH& aMesh );
|
||||||
|
|
||||||
|
SGLIB_API void GetLibVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
|
unsigned char* Patch, unsigned char* Revision );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // IFSG_API_H
|
#endif // IFSG_API_H
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#ifndef IFSG_COLORS_H
|
#ifndef IFSG_COLORS_H
|
||||||
#define IFSG_COLORS_H
|
#define IFSG_COLORS_H
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
#include "plugins/3dapi/ifsg_node.h"
|
#include "plugins/3dapi/ifsg_node.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ KICAD_PLUGIN_EXPORT char const* GetKicadPluginClass( void );
|
||||||
* @param Patch will hold the Plugin Class Patch level
|
* @param Patch will hold the Plugin Class Patch level
|
||||||
*/
|
*/
|
||||||
KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
||||||
unsigned char* Minor, unsigned char* Revision, unsigned char* Patch );
|
unsigned char* Minor, unsigned char* Patch, unsigned char* Revision );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function CheckClassVersion
|
* Function CheckClassVersion
|
||||||
|
@ -80,7 +80,7 @@ KICAD_PLUGIN_EXPORT void GetClassVersion( unsigned char* Major,
|
||||||
* of the return value of this function.
|
* of the return value of this function.
|
||||||
*/
|
*/
|
||||||
KICAD_PLUGIN_EXPORT bool CheckClassVersion( unsigned char Major,
|
KICAD_PLUGIN_EXPORT bool CheckClassVersion( unsigned char Major,
|
||||||
unsigned char Minor, unsigned char Revision, unsigned char Patch );
|
unsigned char Minor, unsigned char Patch, unsigned char Revision );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetKicadPluginName
|
* Function GetKicadPluginName
|
||||||
|
@ -103,10 +103,10 @@ KICAD_PLUGIN_EXPORT const char* GetKicadPluginName( void );
|
||||||
*
|
*
|
||||||
* @param Major will hold the Plugin Major version
|
* @param Major will hold the Plugin Major version
|
||||||
* @param Minor will hold the Plugin Minor version
|
* @param Minor will hold the Plugin Minor version
|
||||||
* @param Revision will hold the Plugin Revision
|
|
||||||
* @param Patch will hold the Plugin Patch level
|
* @param Patch will hold the Plugin Patch level
|
||||||
|
* @param Revision will hold the Plugin Revision
|
||||||
*/
|
*/
|
||||||
KICAD_PLUGIN_EXPORT void GetVersion( unsigned char* Major,
|
KICAD_PLUGIN_EXPORT void GetVersion( unsigned char* Major,
|
||||||
unsigned char* Minor, unsigned char* Revision, unsigned char* Patch );
|
unsigned char* Minor, unsigned char* Patch, unsigned char* Revision );
|
||||||
|
|
||||||
#endif // KICAD_PLUGIN_H
|
#endif // KICAD_PLUGIN_H
|
||||||
|
|
|
@ -1,3 +1,2 @@
|
||||||
#add_subdirectory( dummy )
|
add_subdirectory( demo )
|
||||||
#add_subdirectory( tetra )
|
|
||||||
add_subdirectory( idf )
|
add_subdirectory( idf )
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
add_library( s3d_plugin_demo1 MODULE
|
||||||
|
s3d_plugin_demo1.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries( s3d_plugin_demo1 ${wxWidgets_LIBRARIES} )
|
||||||
|
|
||||||
|
|
||||||
|
add_library( s3d_plugin_demo2 MODULE
|
||||||
|
s3d_plugin_demo2.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries( s3d_plugin_demo2 kicad_3dsg ${wxWidgets_LIBRARIES} )
|
||||||
|
|
||||||
|
install( TARGETS
|
||||||
|
s3d_plugin_demo1
|
||||||
|
s3d_plugin_demo2
|
||||||
|
DESTINATION ${KICAD_USER_PLUGIN}/3d
|
||||||
|
COMPONENT binary
|
||||||
|
)
|
|
@ -0,0 +1,181 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTES:
|
||||||
|
*
|
||||||
|
* 1. Notice that the plugin class is instantiated as a static; this
|
||||||
|
* ensures that it created an destroyed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include "plugins/3d/3d_plugin.h"
|
||||||
|
|
||||||
|
#define PLUGIN_3D_DEMO1_MAJOR 1
|
||||||
|
#define PLUGIN_3D_DEMO1_MINOR 0
|
||||||
|
#define PLUGIN_3D_DEMO1_PATCH 0
|
||||||
|
#define PLUGIN_3D_DEMO1_REVNO 0
|
||||||
|
|
||||||
|
|
||||||
|
const char* GetKicadPluginName( void )
|
||||||
|
{
|
||||||
|
return "PLUGIN_3D_DEMO1";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GetVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
|
unsigned char* Patch, unsigned char* Revision )
|
||||||
|
{
|
||||||
|
if( Major )
|
||||||
|
*Major = PLUGIN_3D_DEMO1_MAJOR;
|
||||||
|
|
||||||
|
if( Minor )
|
||||||
|
*Minor = PLUGIN_3D_DEMO1_MINOR;
|
||||||
|
|
||||||
|
if( Patch )
|
||||||
|
*Patch = PLUGIN_3D_DEMO1_PATCH;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = PLUGIN_3D_DEMO1_REVNO;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// number of extensions supported
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define NEXTS 7
|
||||||
|
#else
|
||||||
|
#define NEXTS 14
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// number of filter sets supported
|
||||||
|
#define NFILS 5
|
||||||
|
|
||||||
|
static char ext0[] = "wrl";
|
||||||
|
static char ext1[] = "x3d";
|
||||||
|
static char ext2[] = "emn";
|
||||||
|
static char ext3[] = "iges";
|
||||||
|
static char ext4[] = "igs";
|
||||||
|
static char ext5[] = "stp";
|
||||||
|
static char ext6[] = "step";
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
static char fil0[] = "VRML 1.0/2.0 (*.wrl)|*.wrl";
|
||||||
|
static char fil1[] = "X3D (*.x3d)|*.x3d";
|
||||||
|
static char fil2[] = "IDF 2.0/3.0 (*.emn)|*.emn";
|
||||||
|
static char fil3[] = "IGESv5.3 (*.igs;*.iges)|*.igs;*.iges";
|
||||||
|
static char fil4[] = "STEP (*.stp;*.step)|*.stp;*.step";
|
||||||
|
#else
|
||||||
|
static char ext7[] = "WRL";
|
||||||
|
static char ext8[] = "X3D";
|
||||||
|
static char ext9[] = "EMN";
|
||||||
|
static char ext10[] = "IGES";
|
||||||
|
static char ext11[] = "IGS";
|
||||||
|
static char ext12[] = "STP";
|
||||||
|
static char ext13[] = "STEP";
|
||||||
|
|
||||||
|
static char fil0[] = "VRML 1.0/2.0 (*.wrl;*.WRL)|*.wrl;*.WRL";
|
||||||
|
static char fil1[] = "X3D (*.x3d;*.X3D)|*.x3d;*.X3D";
|
||||||
|
static char fil2[] = "IDF 2.0/3.0 (*.emn;*.EMN)|*.emn;*.EMN";
|
||||||
|
static char fil3[] = "IGESv5.3 (*.igs;*.iges;*.IGS;*.IGES)|*.igs;*.iges;*.IGS;*.IGES";
|
||||||
|
static char fil4[] = "STEP (*.stp;*.step;*.STP;*.STEP)|*.stp;*.step;*.STP;*.STEP";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static struct FILE_DATA
|
||||||
|
{
|
||||||
|
char const* extensions[NEXTS];
|
||||||
|
char const* filters[NFILS];
|
||||||
|
|
||||||
|
FILE_DATA()
|
||||||
|
{
|
||||||
|
extensions[0] = ext0;
|
||||||
|
extensions[1] = ext1;
|
||||||
|
extensions[2] = ext2;
|
||||||
|
extensions[3] = ext3;
|
||||||
|
extensions[4] = ext4;
|
||||||
|
extensions[5] = ext5;
|
||||||
|
extensions[6] = ext6;
|
||||||
|
filters[0] = fil0;
|
||||||
|
filters[1] = fil1;
|
||||||
|
filters[2] = fil2;
|
||||||
|
filters[3] = fil3;
|
||||||
|
filters[4] = fil4;
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
extensions[7] = ext7;
|
||||||
|
extensions[8] = ext8;
|
||||||
|
extensions[9] = ext9;
|
||||||
|
extensions[10] = ext10;
|
||||||
|
extensions[11] = ext11;
|
||||||
|
extensions[12] = ext12;
|
||||||
|
extensions[13] = ext13;
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} file_data;
|
||||||
|
|
||||||
|
|
||||||
|
int GetNExtensions( void )
|
||||||
|
{
|
||||||
|
return NEXTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char const* GetModelExtension( int aIndex )
|
||||||
|
{
|
||||||
|
if( aIndex < 0 || aIndex >= NEXTS )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return file_data.extensions[aIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int GetNFilters( void )
|
||||||
|
{
|
||||||
|
return NFILS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char const* GetFileFilter( int aIndex )
|
||||||
|
{
|
||||||
|
if( aIndex < 0 || aIndex >= NFILS )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return file_data.filters[aIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CanRender( void )
|
||||||
|
{
|
||||||
|
// this dummy plugin does not support rendering of any models
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCENEGRAPH* Load( char const* aFileName )
|
||||||
|
{
|
||||||
|
// this dummy plugin does not support rendering of any models
|
||||||
|
return NULL;
|
||||||
|
}
|
|
@ -22,72 +22,119 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <s3d_plugin_tetra.h>
|
#include "plugins/3d/3d_plugin.h"
|
||||||
#include <plugins/3dapi/ifsg_all.h>
|
#include "plugins/3dapi/ifsg_all.h"
|
||||||
|
|
||||||
|
|
||||||
S3D_PLUGIN_TETRA::S3D_PLUGIN_TETRA()
|
#define PLUGIN_3D_DEMO2_MAJOR 1
|
||||||
|
#define PLUGIN_3D_DEMO2_MINOR 0
|
||||||
|
#define PLUGIN_3D_DEMO2_PATCH 0
|
||||||
|
#define PLUGIN_3D_DEMO2_REVNO 0
|
||||||
|
|
||||||
|
|
||||||
|
const char* GetKicadPluginName( void )
|
||||||
{
|
{
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "wrl" ) );
|
return "PLUGIN_3D_DEMO2";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GetVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
|
unsigned char* Patch, unsigned char* Revision )
|
||||||
|
{
|
||||||
|
if( Major )
|
||||||
|
*Major = PLUGIN_3D_DEMO2_MAJOR;
|
||||||
|
|
||||||
|
if( Minor )
|
||||||
|
*Minor = PLUGIN_3D_DEMO2_MINOR;
|
||||||
|
|
||||||
|
if( Patch )
|
||||||
|
*Patch = PLUGIN_3D_DEMO2_PATCH;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = PLUGIN_3D_DEMO2_REVNO;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// number of extensions supported
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define NEXTS 1
|
||||||
|
#else
|
||||||
|
#define NEXTS 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// number of filter sets supported
|
||||||
|
#define NFILS 1
|
||||||
|
|
||||||
|
static char ext0[] = "wrl";
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// assume a case-insensitive file system
|
static char fil0[] = "VRML 1.0/2.0 (*.wrl)|*.wrl";
|
||||||
m_filters.push_back( wxT( "VRML 1.0/2.0 (*.wrl)|*.wrl" ) );
|
|
||||||
#else
|
#else
|
||||||
// assume the filesystem is case sensitive
|
static char ext1[] = "WRL";
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "WRL" ) );
|
|
||||||
|
|
||||||
m_filters.push_back( wxT( "VRML 1.0/2.0 (*.wrl;*.WRL)|*.wrl;*.WRL" ) );
|
static char fil0[] = "VRML 1.0/2.0 (*.wrl;*.WRL)|*.wrl;*.WRL";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static struct FILE_DATA
|
||||||
|
{
|
||||||
|
char const* extensions[NEXTS];
|
||||||
|
char const* filters[NFILS];
|
||||||
|
|
||||||
|
FILE_DATA()
|
||||||
|
{
|
||||||
|
extensions[0] = ext0;
|
||||||
|
filters[0] = fil0;
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
extensions[1] = ext1;
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} file_data;
|
||||||
|
|
||||||
|
|
||||||
|
int GetNExtensions( void )
|
||||||
|
{
|
||||||
|
return NEXTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
S3D_PLUGIN_TETRA::~S3D_PLUGIN_TETRA()
|
char const* GetModelExtension( int aIndex )
|
||||||
{
|
{
|
||||||
return;
|
if( aIndex < 0 || aIndex >= NEXTS )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return file_data.extensions[aIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int S3D_PLUGIN_TETRA::GetNExtensions( void ) const
|
int GetNFilters( void )
|
||||||
{
|
{
|
||||||
return (int) m_extensions.size();
|
return NFILS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const wxString S3D_PLUGIN_TETRA::GetModelExtension( int aIndex ) const
|
char const* GetFileFilter( int aIndex )
|
||||||
{
|
{
|
||||||
if( aIndex < 0 || aIndex >= (int) m_extensions.size() )
|
if( aIndex < 0 || aIndex >= NFILS )
|
||||||
return wxString( "" );
|
return NULL;
|
||||||
|
|
||||||
return m_extensions[aIndex];
|
return file_data.filters[aIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int S3D_PLUGIN_TETRA::GetNFilters( void ) const
|
bool CanRender( void )
|
||||||
{
|
|
||||||
return (int)m_filters.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxString S3D_PLUGIN_TETRA::GetFileFilter( int aIndex ) const
|
|
||||||
{
|
|
||||||
if( aIndex < 0 || aIndex >= (int)m_filters.size() )
|
|
||||||
return wxEmptyString;
|
|
||||||
|
|
||||||
return m_filters[aIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool S3D_PLUGIN_TETRA::CanRender( void ) const
|
|
||||||
{
|
{
|
||||||
|
// this dummy pretends to render a VRML model
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCENEGRAPH* S3D_PLUGIN_TETRA::Load( const wxString& aFileName )
|
SCENEGRAPH* Load( char const* aFileName )
|
||||||
{
|
{
|
||||||
// For this demonstration we create a tetrahedron and
|
// For this demonstration we create a tetrahedron and
|
||||||
// paint its faces Magenta Red Green Blue. Steps:
|
// paint its faces Magenta Red Green Blue. Steps:
|
||||||
|
@ -234,18 +281,3 @@ SCENEGRAPH* S3D_PLUGIN_TETRA::Load( const wxString& aFileName )
|
||||||
|
|
||||||
return (SCENEGRAPH*)data;
|
return (SCENEGRAPH*)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static S3D_PLUGIN_TETRA plugin_3d_tetra;
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
extern "C" __attribute__((__visibility__("default"))) S3D_PLUGIN* Get3DPlugin( void )
|
|
||||||
{
|
|
||||||
return &plugin_3d_tetra;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
extern "C" __declspec( dllexport ) S3D_PLUGIN* Get3DPlugin( void )
|
|
||||||
{
|
|
||||||
return &plugin_3d_tetra;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,23 +0,0 @@
|
||||||
include_directories(
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library( s3d_plugin_dummy MODULE
|
|
||||||
s3d_plugin_dummy.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries( s3d_plugin_dummy ${wxWidgets_LIBRARIES} )
|
|
||||||
|
|
||||||
if( APPLE )
|
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_dummy
|
|
||||||
DESTINATION /Applications/kicad.app/SharedSupport/plugins/3d
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_dummy
|
|
||||||
DESTINATION lib/kicad/plugins/3d
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
endif()
|
|
|
@ -1,136 +0,0 @@
|
||||||
/*
|
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, you may find one here:
|
|
||||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
||||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
|
||||||
* or you may write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NOTES:
|
|
||||||
*
|
|
||||||
* 1. Notice that the plugin class is instantiated as a static; this
|
|
||||||
* ensures that it created an destroyed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <s3d_plugin_dummy.h>
|
|
||||||
|
|
||||||
|
|
||||||
S3D_PLUGIN_DUMMY::S3D_PLUGIN_DUMMY()
|
|
||||||
{
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "wrl" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "x3d" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "idf" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "iges" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "igs" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "stp" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "step" ) );
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
// assume a case-insensitive file system
|
|
||||||
m_filters.push_back( wxT( "VRML 1.0/2.0 (*.wrl)|*.wrl" ) );
|
|
||||||
m_filters.push_back( wxT( "X3D (*.x3d)|*.x3d" ) );
|
|
||||||
m_filters.push_back( wxT( "IDF 2.0/3.0 (*.idf)|*.idf" ) );
|
|
||||||
m_filters.push_back( wxT( "IGESv5.3 (*.igs;*.iges)|*.igs;*.iges" ) );
|
|
||||||
m_filters.push_back( wxT( "STEP (*.stp;*.step)|*.stp;*.step" ) );
|
|
||||||
#else
|
|
||||||
// assume the filesystem is case sensitive
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "WRL" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "X3D" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "IDF" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "IGES" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "IGS" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "STP" ) );
|
|
||||||
m_extensions.push_back( wxString::FromUTF8Unchecked( "STEP" ) );
|
|
||||||
|
|
||||||
m_filters.push_back( wxT( "VRML 1.0/2.0 (*.wrl;*.WRL)|*.wrl;*.WRL" ) );
|
|
||||||
m_filters.push_back( wxT( "X3D (*.x3d;*.X3D)|*.x3d;*.X3D" ) );
|
|
||||||
m_filters.push_back( wxT( "IDF 2.0/3.0 (*.idf;*.IDF)|*.idf;*.IDF" ) );
|
|
||||||
m_filters.push_back( wxT( "IGESv5.3 (*.igs;*.iges;*.IGS;*.IGES)|*.igs;*.iges;*.IGS;*.IGES" ) );
|
|
||||||
m_filters.push_back( wxT( "STEP (*.stp;*.step;*.STP;*.STEP)|*.stp;*.step;*.STP;*.STEP" ) );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
S3D_PLUGIN_DUMMY::~S3D_PLUGIN_DUMMY()
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int S3D_PLUGIN_DUMMY::GetNExtensions( void ) const
|
|
||||||
{
|
|
||||||
return (int) m_extensions.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxString S3D_PLUGIN_DUMMY::GetModelExtension( int aIndex ) const
|
|
||||||
{
|
|
||||||
if( aIndex < 0 || aIndex >= (int) m_extensions.size() )
|
|
||||||
return wxString( "" );
|
|
||||||
|
|
||||||
return m_extensions[aIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int S3D_PLUGIN_DUMMY::GetNFilters( void ) const
|
|
||||||
{
|
|
||||||
return (int)m_filters.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxString S3D_PLUGIN_DUMMY::GetFileFilter( int aIndex ) const
|
|
||||||
{
|
|
||||||
if( aIndex < 0 || aIndex >= (int)m_filters.size() )
|
|
||||||
return wxEmptyString;
|
|
||||||
|
|
||||||
return m_filters[aIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool S3D_PLUGIN_DUMMY::CanRender( void ) const
|
|
||||||
{
|
|
||||||
// this dummy plugin does not support rendering of any models
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCENEGRAPH* S3D_PLUGIN_DUMMY::Load( const wxString& aFileName )
|
|
||||||
{
|
|
||||||
// this dummy plugin does not support rendering of any models
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static S3D_PLUGIN_DUMMY dummy;
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
extern "C" __attribute__((__visibility__("default"))) S3D_PLUGIN* Get3DPlugin( void )
|
|
||||||
{
|
|
||||||
return &dummy;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
extern "C" __declspec( dllexport ) S3D_PLUGIN* Get3DPlugin( void )
|
|
||||||
{
|
|
||||||
return &dummy;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -11,18 +11,10 @@ add_library( s3d_plugin_idf MODULE
|
||||||
set_target_properties( s3d_plugin_idf PROPERTIES
|
set_target_properties( s3d_plugin_idf PROPERTIES
|
||||||
LINK_FLAGS -L${CMAKE_BINARY_DIR}/utils/idftools )
|
LINK_FLAGS -L${CMAKE_BINARY_DIR}/utils/idftools )
|
||||||
|
|
||||||
target_link_libraries( s3d_plugin_idf s3d_sg idf3 ${OPENGL_LIBRARIES} ${wxWidgets_LIBRARIES} )
|
target_link_libraries( s3d_plugin_idf kicad_3dsg idf3 ${OPENGL_LIBRARIES} ${wxWidgets_LIBRARIES} )
|
||||||
|
|
||||||
if( APPLE )
|
install( TARGETS
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_idf
|
s3d_plugin_idf
|
||||||
DESTINATION /Applications/kicad.app/SharedSupport/plugins/3d
|
DESTINATION ${KICAD_USER_PLUGIN}/3d
|
||||||
COMPONENT binary
|
COMPONENT binary
|
||||||
)
|
)
|
||||||
else()
|
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_idf
|
|
||||||
DESTINATION lib/kicad/plugins/3d
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
|
@ -33,18 +33,18 @@
|
||||||
|
|
||||||
#define PLUGIN_3D_IDF_MAJOR 1
|
#define PLUGIN_3D_IDF_MAJOR 1
|
||||||
#define PLUGIN_3D_IDF_MINOR 0
|
#define PLUGIN_3D_IDF_MINOR 0
|
||||||
#define PLUGIN_3D_IDF_REVNO 0
|
|
||||||
#define PLUGIN_3D_IDF_PATCH 0
|
#define PLUGIN_3D_IDF_PATCH 0
|
||||||
|
#define PLUGIN_3D_IDF_REVNO 0
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT const char* GetKicadPluginName( void )
|
const char* GetKicadPluginName( void )
|
||||||
{
|
{
|
||||||
return "PLUGIN_3D_IDF";
|
return "PLUGIN_3D_IDF";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT void GetVersion( unsigned char* Major,
|
void GetVersion( unsigned char* Major,
|
||||||
unsigned char* Minor, unsigned char* Revision, unsigned char* Patch )
|
unsigned char* Minor, unsigned char* Patch, unsigned char* Revision )
|
||||||
{
|
{
|
||||||
if( Major )
|
if( Major )
|
||||||
*Major = PLUGIN_3D_IDF_MAJOR;
|
*Major = PLUGIN_3D_IDF_MAJOR;
|
||||||
|
@ -52,12 +52,12 @@ KICAD_PLUGIN_EXPORT void GetVersion( unsigned char* Major,
|
||||||
if( Minor )
|
if( Minor )
|
||||||
*Minor = PLUGIN_3D_IDF_MINOR;
|
*Minor = PLUGIN_3D_IDF_MINOR;
|
||||||
|
|
||||||
if( Revision )
|
|
||||||
*Revision = PLUGIN_3D_IDF_REVNO;
|
|
||||||
|
|
||||||
if( Patch )
|
if( Patch )
|
||||||
*Patch = PLUGIN_3D_IDF_PATCH;
|
*Patch = PLUGIN_3D_IDF_PATCH;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = PLUGIN_3D_IDF_REVNO;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,11 +72,12 @@ KICAD_PLUGIN_EXPORT void GetVersion( unsigned char* Major,
|
||||||
#define NFILS 1
|
#define NFILS 1
|
||||||
|
|
||||||
static char ext0[] = "idf";
|
static char ext0[] = "idf";
|
||||||
static char fil0[] = "IDF 2.0/3.0 (*.idf)|*.idf";
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifdef _WIN32
|
||||||
|
static char fil0[] = "IDF 2.0/3.0 (*.idf)|*.idf";
|
||||||
|
#else
|
||||||
static char ext1[] = "IDF";
|
static char ext1[] = "IDF";
|
||||||
static char fil1[] = "IDF 2.0/3.0 (*.idf;*.IDF)|*.idf;*.IDF";
|
static char fil0[] = "IDF 2.0/3.0 (*.idf;*.IDF)|*.idf;*.IDF";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct FILE_DATA
|
static struct FILE_DATA
|
||||||
|
@ -91,7 +92,6 @@ static struct FILE_DATA
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
extensions[1] = ext1;
|
extensions[1] = ext1;
|
||||||
filters[1] = fil1;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -104,13 +104,13 @@ static bool PopulateVRML( VRML_LAYER& model, const std::list< IDF_OUTLINE* >* it
|
||||||
static bool AddSegment( VRML_LAYER& model, IDF_SEGMENT* seg, int icont, int iseg );
|
static bool AddSegment( VRML_LAYER& model, IDF_SEGMENT* seg, int icont, int iseg );
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT int GetNExtensions( void )
|
int GetNExtensions( void )
|
||||||
{
|
{
|
||||||
return NEXTS;
|
return NEXTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT char const* GetModelExtension( int aIndex )
|
char const* GetModelExtension( int aIndex )
|
||||||
{
|
{
|
||||||
if( aIndex < 0 || aIndex >= NEXTS )
|
if( aIndex < 0 || aIndex >= NEXTS )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -119,13 +119,13 @@ KICAD_PLUGIN_EXPORT char const* GetModelExtension( int aIndex )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT int GetNFilters( void )
|
int GetNFilters( void )
|
||||||
{
|
{
|
||||||
return NFILS;
|
return NFILS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT char const* GetFileFilter( int aIndex )
|
char const* GetFileFilter( int aIndex )
|
||||||
{
|
{
|
||||||
if( aIndex < 0 || aIndex >= NFILS )
|
if( aIndex < 0 || aIndex >= NFILS )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -134,14 +134,14 @@ KICAD_PLUGIN_EXPORT char const* GetFileFilter( int aIndex )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT bool CanRender( void )
|
bool CanRender( void )
|
||||||
{
|
{
|
||||||
// this plugin supports rendering of IDF component outlines
|
// this plugin supports rendering of IDF component outlines
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_EXPORT SCENEGRAPH* Load( char const* aFileName )
|
SCENEGRAPH* Load( char const* aFileName )
|
||||||
{
|
{
|
||||||
if( NULL == aFileName )
|
if( NULL == aFileName )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
include_directories(
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library( s3d_plugin_tetra MODULE
|
|
||||||
s3d_plugin_tetra.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries( s3d_plugin_tetra s3d_sg ${wxWidgets_LIBRARIES} )
|
|
||||||
|
|
||||||
if( APPLE )
|
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_tetra
|
|
||||||
DESTINATION /Applications/kicad.app/SharedSupport/plugins/3d
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
install( TARGETS
|
|
||||||
s3d_plugin_tetra
|
|
||||||
DESTINATION lib/kicad/plugins/3d
|
|
||||||
COMPONENT binary
|
|
||||||
)
|
|
||||||
endif()
|
|
|
@ -1,60 +0,0 @@
|
||||||
/*
|
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, you may find one here:
|
|
||||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
||||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
|
||||||
* or you may write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file 3d_plugin_tetra.h
|
|
||||||
* is a sample plugin which demonstrates the basic use of the SG*
|
|
||||||
* classes for the intermediate representation of objects. The plugin
|
|
||||||
* accepts any *.wrl filename but does not actually load any files,
|
|
||||||
* instead the Load() routine only creates a magenta tetrahedron.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef PLUGIN_3D_TETRA_H
|
|
||||||
#define PLUGIN_3D_TETRA_H
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <plugins/3d/3d_plugin.h>
|
|
||||||
|
|
||||||
class SCENEGRAPH;
|
|
||||||
|
|
||||||
class S3D_PLUGIN_TETRA : public S3D_PLUGIN
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
std::vector< wxString > m_extensions; // supported extensions
|
|
||||||
std::vector< wxString > m_filters; // file filters
|
|
||||||
|
|
||||||
public:
|
|
||||||
S3D_PLUGIN_TETRA();
|
|
||||||
virtual ~S3D_PLUGIN_TETRA();
|
|
||||||
|
|
||||||
virtual int GetNExtensions( void ) const;
|
|
||||||
virtual const wxString GetModelExtension( int aIndex ) const;
|
|
||||||
virtual int GetNFilters( void ) const;
|
|
||||||
virtual const wxString GetFileFilter( int aIndex ) const;
|
|
||||||
|
|
||||||
bool CanRender( void ) const;
|
|
||||||
SCENEGRAPH* Load( const wxString& aFileName );
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // PLUGIN_3D_TETRA_H
|
|
|
@ -28,8 +28,8 @@
|
||||||
#define PLUGIN_CLASS_3D "PLUGIN_3D"
|
#define PLUGIN_CLASS_3D "PLUGIN_3D"
|
||||||
#define PLUGIN_3D_MAJOR 1
|
#define PLUGIN_3D_MAJOR 1
|
||||||
#define PLUGIN_3D_MINOR 0
|
#define PLUGIN_3D_MINOR 0
|
||||||
#define PLUGIN_3D_REVISION 0
|
|
||||||
#define PLUGIN_3D_PATCH 0
|
#define PLUGIN_3D_PATCH 0
|
||||||
|
#define PLUGIN_3D_REVISION 0
|
||||||
|
|
||||||
|
|
||||||
KICAD_PLUGIN_LDR_3D::KICAD_PLUGIN_LDR_3D()
|
KICAD_PLUGIN_LDR_3D::KICAD_PLUGIN_LDR_3D()
|
||||||
|
@ -182,9 +182,13 @@ bool KICAD_PLUGIN_LDR_3D::Open( const wxString& aFullFileName )
|
||||||
void KICAD_PLUGIN_LDR_3D::Close( void )
|
void KICAD_PLUGIN_LDR_3D::Close( void )
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
if( ok )
|
||||||
|
{
|
||||||
std::cerr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
std::cerr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n";
|
||||||
std::cerr << " * [INFO] closing plugin\n";
|
std::cerr << " * [INFO] closing plugin\n";
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ok = false;
|
ok = false;
|
||||||
m_getNExtensions = NULL;
|
m_getNExtensions = NULL;
|
||||||
m_getModelExtension = NULL;
|
m_getModelExtension = NULL;
|
||||||
|
@ -199,7 +203,7 @@ void KICAD_PLUGIN_LDR_3D::Close( void )
|
||||||
|
|
||||||
|
|
||||||
void KICAD_PLUGIN_LDR_3D::GetLoaderVersion( unsigned char* Major, unsigned char* Minor,
|
void KICAD_PLUGIN_LDR_3D::GetLoaderVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch ) const
|
unsigned char* Patch, unsigned char* Revision ) const
|
||||||
{
|
{
|
||||||
if( Major )
|
if( Major )
|
||||||
*Major = PLUGIN_3D_MAJOR;
|
*Major = PLUGIN_3D_MAJOR;
|
||||||
|
@ -207,12 +211,12 @@ void KICAD_PLUGIN_LDR_3D::GetLoaderVersion( unsigned char* Major, unsigned char*
|
||||||
if( Minor )
|
if( Minor )
|
||||||
*Minor = PLUGIN_3D_MINOR;
|
*Minor = PLUGIN_3D_MINOR;
|
||||||
|
|
||||||
if( Revision )
|
|
||||||
*Revision = PLUGIN_3D_REVISION;
|
|
||||||
|
|
||||||
if( Patch )
|
if( Patch )
|
||||||
*Patch = PLUGIN_3D_PATCH;
|
*Patch = PLUGIN_3D_PATCH;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = PLUGIN_3D_REVISION;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,15 +188,15 @@ bool KICAD_PLUGIN_LDR::open( const wxString& aFullFileName, const char* aPluginC
|
||||||
// perform a universally enforced version check (major number must match)
|
// perform a universally enforced version check (major number must match)
|
||||||
unsigned char lMajor;
|
unsigned char lMajor;
|
||||||
unsigned char lMinor;
|
unsigned char lMinor;
|
||||||
unsigned char lRevno;
|
|
||||||
unsigned char lPatch;
|
unsigned char lPatch;
|
||||||
|
unsigned char lRevno;
|
||||||
unsigned char pMajor;
|
unsigned char pMajor;
|
||||||
unsigned char pMinor;
|
unsigned char pMinor;
|
||||||
unsigned char pRevno;
|
|
||||||
unsigned char pPatch;
|
unsigned char pPatch;
|
||||||
|
unsigned char pRevno;
|
||||||
|
|
||||||
m_getClassVersion( &pMajor, &pMinor, &pRevno, &pPatch );
|
m_getClassVersion( &pMajor, &pMinor, &pPatch, &pRevno );
|
||||||
GetLoaderVersion( &lMajor, &lMinor, &lRevno, &lPatch );
|
GetLoaderVersion( &lMajor, &lMinor, &lPatch, &lRevno );
|
||||||
|
|
||||||
// major version changes by definition are incompatible and
|
// major version changes by definition are incompatible and
|
||||||
// that is enforced here.
|
// that is enforced here.
|
||||||
|
@ -211,12 +211,12 @@ bool KICAD_PLUGIN_LDR::open( const wxString& aFullFileName, const char* aPluginC
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !m_checkClassVersion( lMajor, lMinor, lRevno, lPatch ) )
|
if( !m_checkClassVersion( lMajor, lMinor, lPatch, lRevno ) )
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
ostr << "Plugin Version (" << pMajor << "." << pMinor << "." << pRevno << "." << pPatch;
|
ostr << "Plugin Version (" << pMajor << "." << pMinor << "." << pPatch << "." << pRevno;
|
||||||
ostr << ") does not support Loader Version (" << pMajor << "." << pMinor;
|
ostr << ") does not support Loader Version (" << pMajor << "." << pMinor;
|
||||||
ostr << "." << pRevno << "." << pPatch << ")";
|
ostr << "." << pPatch << "." << pRevno << ")";
|
||||||
|
|
||||||
m_error = ostr.str();
|
m_error = ostr.str();
|
||||||
close();
|
close();
|
||||||
|
@ -307,7 +307,7 @@ char const* KICAD_PLUGIN_LDR::GetKicadPluginClass( void )
|
||||||
|
|
||||||
|
|
||||||
bool KICAD_PLUGIN_LDR::GetClassVersion( unsigned char* Major, unsigned char* Minor,
|
bool KICAD_PLUGIN_LDR::GetClassVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch )
|
unsigned char* Patch, unsigned char* Revision )
|
||||||
{
|
{
|
||||||
m_error.clear();
|
m_error.clear();
|
||||||
|
|
||||||
|
@ -317,16 +317,16 @@ bool KICAD_PLUGIN_LDR::GetClassVersion( unsigned char* Major, unsigned char* Min
|
||||||
if( Minor )
|
if( Minor )
|
||||||
*Minor = 0;
|
*Minor = 0;
|
||||||
|
|
||||||
if( Revision )
|
|
||||||
*Revision = 0;
|
|
||||||
|
|
||||||
if( Patch )
|
if( Patch )
|
||||||
*Patch = 0;
|
*Patch = 0;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = 0;
|
||||||
|
|
||||||
unsigned char major;
|
unsigned char major;
|
||||||
unsigned char minor;
|
unsigned char minor;
|
||||||
unsigned char revno;
|
|
||||||
unsigned char patch;
|
unsigned char patch;
|
||||||
|
unsigned char revno;
|
||||||
|
|
||||||
if( !ok && !reopen() )
|
if( !ok && !reopen() )
|
||||||
{
|
{
|
||||||
|
@ -344,7 +344,7 @@ bool KICAD_PLUGIN_LDR::GetClassVersion( unsigned char* Major, unsigned char* Min
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_getClassVersion( &major, &minor, &revno, &patch );
|
m_getClassVersion( &major, &minor, &patch, &revno );
|
||||||
|
|
||||||
if( Major )
|
if( Major )
|
||||||
*Major = major;
|
*Major = major;
|
||||||
|
@ -352,18 +352,18 @@ bool KICAD_PLUGIN_LDR::GetClassVersion( unsigned char* Major, unsigned char* Min
|
||||||
if( Minor )
|
if( Minor )
|
||||||
*Minor = minor;
|
*Minor = minor;
|
||||||
|
|
||||||
if( Revision )
|
|
||||||
*Revision = revno;
|
|
||||||
|
|
||||||
if( Patch )
|
if( Patch )
|
||||||
*Patch = patch;
|
*Patch = patch;
|
||||||
|
|
||||||
|
if( Revision )
|
||||||
|
*Revision = revno;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool KICAD_PLUGIN_LDR::CheckClassVersion( unsigned char Major, unsigned char Minor,
|
bool KICAD_PLUGIN_LDR::CheckClassVersion( unsigned char Major, unsigned char Minor,
|
||||||
unsigned char Revision, unsigned char Patch )
|
unsigned char Patch, unsigned char Revision )
|
||||||
{
|
{
|
||||||
m_error.clear();
|
m_error.clear();
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ bool KICAD_PLUGIN_LDR::CheckClassVersion( unsigned char Major, unsigned char Min
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_checkClassVersion( Major, Minor, Revision, Patch );
|
return m_checkClassVersion( Major, Minor, Patch, Revision );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ const char* KICAD_PLUGIN_LDR::GetKicadPluginName( void )
|
||||||
|
|
||||||
|
|
||||||
bool KICAD_PLUGIN_LDR::GetVersion( unsigned char* Major, unsigned char* Minor,
|
bool KICAD_PLUGIN_LDR::GetVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch )
|
unsigned char* Patch, unsigned char* Revision )
|
||||||
{
|
{
|
||||||
m_error.clear();
|
m_error.clear();
|
||||||
|
|
||||||
|
@ -432,7 +432,7 @@ bool KICAD_PLUGIN_LDR::GetVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_getVersion( Major, Minor, Revision, Patch );
|
m_getVersion( Major, Minor, Patch, Revision );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,7 @@ public:
|
||||||
* for plugin compatibility checking.
|
* for plugin compatibility checking.
|
||||||
*/
|
*/
|
||||||
virtual void GetLoaderVersion( unsigned char* Major, unsigned char* Minor,
|
virtual void GetLoaderVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch ) const = 0;
|
unsigned char* Patch, unsigned char* Revision ) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Open
|
* Function Open
|
||||||
|
@ -141,18 +141,18 @@ public:
|
||||||
|
|
||||||
// returns false if no plugin loaded
|
// returns false if no plugin loaded
|
||||||
bool GetClassVersion( unsigned char* Major, unsigned char* Minor,
|
bool GetClassVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch );
|
unsigned char* Patch, unsigned char* Revision );
|
||||||
|
|
||||||
// returns false if the class version check fails or no plugin is loaded
|
// returns false if the class version check fails or no plugin is loaded
|
||||||
bool CheckClassVersion( unsigned char Major, unsigned char Minor,
|
bool CheckClassVersion( unsigned char Major, unsigned char Minor,
|
||||||
unsigned char Revision, unsigned char Patch );
|
unsigned char Patch, unsigned char Revision );
|
||||||
|
|
||||||
// returns the Plugin Name or NULL if no plugin loaded
|
// returns the Plugin Name or NULL if no plugin loaded
|
||||||
const char* GetKicadPluginName( void );
|
const char* GetKicadPluginName( void );
|
||||||
|
|
||||||
// returns false if no plugin is loaded
|
// returns false if no plugin is loaded
|
||||||
bool GetVersion( unsigned char* Major, unsigned char* Minor,
|
bool GetVersion( unsigned char* Major, unsigned char* Minor,
|
||||||
unsigned char* Revision, unsigned char* Patch );
|
unsigned char* Patch, unsigned char* Revision );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLUGINLDR_H
|
#endif // PLUGINLDR_H
|
||||||
|
|
Loading…
Reference in New Issue