Changeset 20404

Show
Ignore:
Timestamp:
06/30/07 10:02:43 (1 year ago)
Author:
patrick
Message:

Updated for VR Juggler 2.3.4 including exposing vrj::Kernel::init() in what
I feel is a Python-friendly way. Bumped version to 1.3.2.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • PyJuggler/trunk/ChangeLog

    r20403 r20404  
    11DATE        AUTHOR      CHANGE 
    22----------- ----------- ------------------------------------------------------- 
     3Jun-30-2007 patrick     Updated for VR Juggler 2.3.4 and exposed 
     4                        vrj::Kernel::init(). 
     5                        NEW VERSION: 1.3.2 
    36Jun-30-2007 patrick     Updated for Gadgeteer 1.3.9. 
    47                        NEW VERSION: 1.3.1 
  • PyJuggler/trunk/configure.ac

    r20403 r20404  
    416416GADGETEER_PATH([1.3.9], , 
    417417               [AC_MSG_ERROR([*** Gadgeteer is required for PyJuggler ***])]) 
    418 VRJUGGLER_PATH([2.1.21], , 
     418VRJUGGLER_PATH([2.3.4], , 
    419419               [AC_MSG_ERROR([*** VR Juggler is required for PyJuggler ***])]) 
    420420 
  • PyJuggler/trunk/dist/__init__.py

    r20403 r20404  
    66__all__     = ["vrj", "cluster", "gadget", "snx", "jccl", "vpr"] 
    77__build__   = 1 
    8 __version__ = '1.3.1.%d' % __build__ 
     8__version__ = '1.3.2.%d' % __build__ 
    99__date__    = string.join(string.split('$Date$')[1:3], ' ') 
    1010__author__  = 'Patrick Hartling <patrick@infiscape.com>' 
  • PyJuggler/trunk/src/vrj/_CameraProjection.cpp

    r19730 r20404  
    2121   , wrapper<vrj::CameraProjection> 
    2222{ 
    23    vrj_CameraProjection_Wrapper(const vrj::CameraProjection& p0) 
    24       : vrj::CameraProjection(p0) 
    25    { 
    26       /* Do nothing. */ ; 
    27    } 
    28  
    2923   vrj_CameraProjection_Wrapper() 
    3024      : vrj::CameraProjection() 
     
    6963void _Export_CameraProjection() 
    7064{ 
    71    class_<pyj::vrj_CameraProjection_Wrapper, bases<vrj::Projection> > 
     65   class_<pyj::vrj_CameraProjection_Wrapper, vrj::CameraProjectionPtr, 
     66          bases<vrj::Projection>, boost::noncopyable> 
    7267      ("CameraProjection", 
    7368       "Projection class that simply takes a matrix for the camera position.", 
    74        init<>() 
     69       no_init 
    7570      ) 
    76       .def(init<const vrj::CameraProjection&>()) 
     71      .def("create", &vrj::CameraProjection::create, 
     72           "create() -> vrj.CameraProjection\n" 
     73           "Creates a vrj.CameraProjection instance." 
     74      ) 
    7775      .def_readwrite("mVertFOV", &vrj::CameraProjection::mVertFOV) 
    7876      .def("calcViewMatrix", &vrj::CameraProjection::calcViewMatrix, 
     
    8886           "scaleFactor -- The scaling factor." 
    8987      ) 
     88      .staticmethod("create") 
    9089   ; 
    9190} 
  • PyJuggler/trunk/src/vrj/_Display.cpp

    r19942 r20404  
    5656      ) 
    5757      .def("getName", &vrj::Display::getName, 
     58           return_value_policy<copy_const_reference>(), 
    5859           "getName() -> string object\n" 
    5960           "Gets the name of this display window." 
     
    7778      ) 
    7879      .def("getViewport", &vrj::Display::getViewport, 
    79            return_internal_reference<1>(), 
    8080           "getViewport(vpNum) -> vrj.Viewport object\n" 
    8181           "Returns the requested viewprot from this display window.\n\n" 
  • PyJuggler/trunk/src/vrj/_Frustum.cpp

    r19730 r20404  
    1010#include <vrj/Display/Frustum.h> 
    1111#include <vrj-helpers.h> 
     12#include <container_conversions.h> 
    1213 
    1314// Using ======================================================================= 
     
    3132      .def("setNearFar", &vrj::Frustum::setNearFar) 
    3233      .def("set", &vrj::Frustum::set) 
     34      .def("getValues", &vrj::Frustum::getValues, 
     35           return_value_policy<copy_const_reference>()) 
    3336      .def("__getitem__", 
    34            (float& (vrj::Frustum::*)(int)) &vrj::Frustum::operator[], 
    35            return_value_policy<copy_non_const_reference>()) 
     37           (const float& (vrj::Frustum::*)(unsigned int) const) &vrj::Frustum::operator[], 
     38           return_value_policy<copy_const_reference>()) 
    3639//      .def(self_ns::str(self)) 
    3740   ); 
     
    4750 
    4851   delete vrj_Frustum_scope; 
     52 
     53   pyj::copyable_to_python<std::vector<float>, tuple>(); 
    4954} 
  • PyJuggler/trunk/src/vrj/_Kernel.cpp

    r19730 r20404  
    120120   } 
    121121}; 
     122 
     123void vrj_Kernel_init(vrj::Kernel* kernel, list pythonArgv) 
     124{ 
     125   const int orig_len = extract<int>(pythonArgv.attr("__len__")()); 
     126   int argc = orig_len; 
     127   std::vector<char*> argv(argc); 
     128 
     129   for ( int i = 0; i < argc; ++i ) 
     130   { 
     131      argv[i] = extract<char*>(pythonArgv[i]); 
     132   } 
     133 
     134   kernel->init(argc, &argv[0]); 
     135 
     136   // vrj::Kernel::init() may have removed items from argv by relocating them 
     137   // to the range [argc,orig_len) within argv. We need to remove each of 
     138   // those values from pythonArgv. 
     139   for ( int i = argc; argc < orig_len; ++i ) 
     140   { 
     141      pythonArgv.remove(argv[i]); 
     142   } 
     143} 
    122144 
    123145void vrj_Kernel_waitForKernelStop(vrj::Kernel* kernel) 
     
    153175           "Inherited from jccl.ConfigElementHandler and not overridden." 
    154176      ) 
     177      .def("init", &pyj::vrj_Kernel_init, 
     178           "init(list)\n" 
     179           "Parses command line arguments." 
     180      ) 
    155181      .def("start", &vrj::Kernel::start, 
    156182           "start()\n" 
     
    204230      ) 
    205231      .def("getUser", &vrj::Kernel::getUser, 
    206            return_internal_reference<1>(), 
    207232           "getUser(userName) -> vrj.User object\n" 
    208233           "Gets the user associated with the given name.\n\n" 
     
    211236      ) 
    212237      .def("getUsers", &vrj::Kernel::getUsers, 
     238           return_value_policy<copy_const_reference>(), 
    213239           "getUsers() -> vrj.UserVec object (indexable container)\n" 
    214240           "Returns an indexable container of all the users." 
     
    222248   ; 
    223249 
    224    class_< std::vector<vrj::User*> >("UserVec", 
     250   class_< std::vector<vrj::UserPtr> >("UserVec", 
    225251       "An indexable container of vrj.User objects." 
    226252      ) 
    227       .def(vector_indexing_suite< std::vector<vrj::User*> >()) 
     253      .def(vector_indexing_suite< std::vector<vrj::UserPtr> >()) 
    228254   ; 
    229255} 
  • PyJuggler/trunk/src/vrj/_Projection.cpp

    r19730 r20404  
    2121   vrj_Projection_Wrapper() 
    2222      : vrj::Projection() 
    23    { 
    24       /* Do nothing. */ ; 
    25    } 
    26  
    27    vrj_Projection_Wrapper(const vrj::Projection& p0) 
    28       : vrj::Projection(p0) 
    2923   { 
    3024      /* Do nothing. */ ; 
     
    6357{ 
    6458   scope* vrj_Projection_scope = new scope( 
    65    class_<pyj::vrj_Projection_Wrapper, boost::noncopyable> 
     59   class_<pyj::vrj_Projection_Wrapper, vrj::ProjectionPtr, boost::noncopyable> 
    6660      ("Projection", 
    6761       "Abstract base class for viewport definitions.  This class is\n" 
     
    7064       "for other classes that actually compute the projections." 
    7165       , 
    72        init<>() 
     66       no_init 
    7367      ) 
    7468      .def("calcViewMatrix", pure_virtual(&vrj::Projection::calcViewMatrix), 
     
    8882      ) 
    8983      .def("getViewport", &vrj::Projection::getViewport, 
    90            return_internal_reference<1>(), 
    9184           "getViewport() -> vrj.Viewport object\n" 
    9285           "Returns the viewport associated with this projection." 
     
    119112      ) 
    120113      .def("getFrustum", &vrj::Projection::getFrustum, 
     114           return_value_policy<copy_const_reference>(), 
    121115           "getFrustum() -> vrj.Frustum object\n" 
    122116           "Returns a copy of this projection's frustum." 
  • PyJuggler/trunk/src/vrj/_SimViewport.cpp

    r19942 r20404  
    2323   vrj_SimViewport_Wrapper() 
    2424      : vrj::SimViewport() 
    25    { 
    26       /* Do nothing. */ ; 
    27    } 
    28  
    29    vrj_SimViewport_Wrapper(const vrj::SimViewport& p0) 
    30       : vrj::SimViewport(p0) 
    3125   { 
    3226      /* Do nothing. */ ; 
     
    7771void _Export_SimViewport() 
    7872{ 
    79    class_<pyj::vrj_SimViewport_Wrapper, bases<vrj::Viewport> > 
    80       ("SimViewport", init<>()) 
    81       .def(init<const vrj::SimViewport&>()) 
     73   class_<pyj::vrj_SimViewport_Wrapper, vrj::SimViewportPtr, 
     74          bases<vrj::Viewport>, boost::noncopyable> 
     75      ("SimViewport", no_init) 
     76      .def("create", &vrj::SimViewport::create, 
     77           "create() -> vrj.SimViewport\n" 
     78           "Creates a SimViewport instance." 
     79      ) 
    8280      .def("updateProjections", &vrj::SimViewport::updateProjections, 
    8381           &pyj::vrj_SimViewport_Wrapper::default_updateProjections, 
     
    9088      ) 
    9189      .def("getDrawSimInterface", &vrj::SimViewport::getDrawSimInterface) 
     90      .staticmethod("create") 
    9291   ; 
    9392} 
  • PyJuggler/trunk/src/vrj/_User.cpp

    r19730 r20404  
    1313using namespace boost::python; 
    1414 
    15 // Declarations ================================================================ 
    16 namespace pyj 
    17 { 
    18  
    19 struct vrj_User_Wrapper : vrj::User, wrapper<vrj::User> 
    20 { 
    21    vrj_User_Wrapper() 
    22       : vrj::User() 
    23    { 
    24       /* Do nothing. */ ; 
    25    } 
    26  
    27    virtual ~vrj_User_Wrapper() 
    28    { 
    29       /* Do nothing. */ ; 
    30    } 
    31 }; 
    32  
    33 }// namespace  
    34  
    3515 
    3616// Module ====================================================================== 
    3717void _Export_User() 
    3818{ 
    39    class_<pyj::vrj_User_Wrapper, boost::noncopyable>("User", 
     19   class_<vrj::User, vrj::UserPtr, boost::noncopyable>("User", 
    4020       "Representation for Juggler user in multi-user environments.\n\n" 
    4121       "Each user has a system-assigned ID as well as a string name from\n" 
     
    4727       "data such as navigation matrices or input devices." 
    4828       , 
    49        init<>() 
     29       no_init 
     30      ) 
     31      .def("create", &vrj::User::create, 
     32           "create() -> vrj.User\n" 
     33           "Creates a vrj.User instance." 
    5034      ) 
    5135      .def("getId", &vrj::User::getId, 
     
    5640      ) 
    5741      .def("getName", &vrj::User::getName, 
     42           return_value_policy<copy_const_reference>(), 
    5843           "getName() -> string object\n" 
    5944           "Returns the name of thss user object." 
     45      ) 
     46      .def("getHeadPosProxy", &vrj::User::getHeadPosProxy 
    6047      ) 
    6148      .def("getHeadUpdateTime", &vrj::User::getHeadUpdateTime, 
     
    6754           "Gets the eye separation." 
    6855      ) 
     56      .staticmethod("create") 
    6957   ; 
    7058} 
  • PyJuggler/trunk/src/vrj/_Viewport.cpp

    r19942 r20404  
    2424   vrj_Viewport_Wrapper() 
    2525      : vrj::Viewport() 
    26    { 
    27       /* Do nothing. */ ; 
    28    } 
    29  
    30    vrj_Viewport_Wrapper(const vrj::Viewport& p0) 
    31       : vrj::Viewport(p0) 
    3226   { 
    3327      /* Do nothing. */ ; 
     
    6660{ 
    6761   scope* vrj_Viewport_scope = new scope( 
    68    class_<pyj::vrj_Viewport_Wrapper, boost::noncopyable> 
     62   class_<pyj::vrj_Viewport_Wrapper, vrj::ViewportPtr, boost::noncopyable> 
    6963      ("Viewport", 
    7064       "Base class for window viewports and all viewport data.  This\n" 
    7165       "stores projection data, viewport info, and relevant user." 
    7266       , 
    73        init<>() 
     67       no_init 
    7468      ) 
    7569      .def("updateProjections", 
     
    118112      ) 
    119113      .def("getUser", &vrj::Viewport::getUser, 
    120            return_internal_reference<1>(), 
    121114           "getUser() -> vrj.User object\n" 
    122115           "Gets the user associated with this viewport." 
     
    127120      ) 
    128121      .def("getLeftProj", &vrj::Viewport::getLeftProj, 
    129            return_internal_reference<1>(), 
    130122           "getLeftProj() -> vrj.Projection object\n" 
    131123           "Gets the left projection." 
    132124      ) 
    133125      .def("getRightProj", &vrj::Viewport::getRightProj, 
    134            return_internal_reference<1>(), 
    135126           "getRightProj() -> vrj.Projection object\n" 
    136127           "Gets the right projection."