From: <Le...@us...> - 2007-06-23 03:19:28
|
Revision: 113 http://svn.sourceforge.net/freepv/?rev=113&view=rev Author: Leonox Date: 2007-06-22 20:19:28 -0700 (Fri, 22 Jun 2007) Log Message: ----------- now spi-v parser supports multiple xml files... Modified Paths: -------------- freepv/branches/branch_leonox/CMakeLists.txt freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt freepv/branches/branch_leonox/src/libfreepv/PanoViewer.cpp freepv/branches/branch_leonox/src/libfreepv/PanoViewer.h freepv/branches/branch_leonox/src/libfreepv/SPiVparser.cpp freepv/branches/branch_leonox/src/libfreepv/SPiVparser.h freepv/branches/branch_leonox/src/libfreepv/Scene.cpp freepv/branches/branch_leonox/src/libfreepv/Scene.h freepv/branches/branch_leonox/src/libfreepv/XMLparser.cpp Added Paths: ----------- freepv/branches/branch_leonox/src/libfreepv/Camera.cpp freepv/branches/branch_leonox/src/libfreepv/Camera.h freepv/branches/branch_leonox/src/libfreepv/SceneElement.h Modified: freepv/branches/branch_leonox/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/CMakeLists.txt 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/CMakeLists.txt 2007-06-23 03:19:28 UTC (rev 113) @@ -73,7 +73,8 @@ find_package(OpenGL REQUIRED) find_package(X11 REQUIRED) find_package(GECKO REQUIRED) -find_package(LibXml2 REQUIRED) +find_package(LibXml2 REQUIRED) +find_package(PNG REQUIRED) # check for gettimeofday @@ -88,7 +89,8 @@ ${FREEGLUT_INCLUDE_DIR} ${X11_INCLUDE_DIR} ${GECKO_INCLUDE_DIR} - ${LIBXML2_INCLUDE_DIR}) + ${LIBXML2_INCLUDE_DIR} + ${PNG_INCLUDE_DIR}) ######################################################################### # CONFIGURE # Modified: freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt 2007-06-23 03:19:28 UTC (rev 113) @@ -4,6 +4,7 @@ JpegReader.cpp utils.cpp SPiVparser.cpp QTVRDecoder.cpp XMLparser.cpp pngReader.cpp imageReader.cpp + Camera.cpp glutfont/freeglut_font.c glutfont/freeglut_font_data.c glutfont/freeglut_glutfont_definitions.c) Added: freepv/branches/branch_leonox/src/libfreepv/Camera.cpp =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/Camera.cpp (rev 0) +++ freepv/branches/branch_leonox/src/libfreepv/Camera.cpp 2007-06-23 03:19:28 UTC (rev 113) @@ -0,0 +1,249 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Pablo d'Angelo <pab...@we...> + * + * $Id: Scene.cpp 112 2007-06-20 19:16:17Z Leonox $ + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; version 2.1 of + * the License + * + * This software 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +#include "Camera.h" +#include <math.h> +#include <float.h> + +namespace FPV +{ + +Camera::Camera() +{ + yaw = pitch = 0; + fov = 70; + yaw_speed = 0; + pitch_speed = 0; + fov_speed = 0; + + m_yawStartTime = DBL_MAX; + m_pitchStartTime = DBL_MAX; + m_fovStartTime = DBL_MAX; + + m_minPitch = -90; + m_maxPitch = 90; + m_maxYaw = 180; + m_minYaw = -180; + + m_minFov = 1; + m_maxFov = 160; + + m_angleDecay = 3.0f; + m_fovDecay = 5.0f; + + m_lastTime = 0; +} + +Camera::~Camera() +{ + +} + +void Camera::setMaxYaw(float max){ + if(max>180) + max=180; + else if(max<-180) + max=-180; + m_maxYaw=max; +} + +void Camera::setMinYaw(float min){ + if(min>180) + min=180; + else if(min<-180) + min=-180; + m_minYaw=min; +} + +void Camera::setMaxPitch(float max){ + if(max>90) + max=90; + else if(max<-90) + max=-90; + m_maxPitch=max; +} + +void Camera::setMinPitch(float min){ + if(min>90) + min=90; + else if(min<-90) + min=-90; + m_minPitch=min; +} + +void Camera::setMaxFov(float max){ + if(max>170) + max=170; + else if(max<0.1f) + max=0.1f; + m_maxFov=max; +} + +void Camera::setMinFov(float min){ + if(min>170) + min=90; + else if(min<0.1f) + min=0.1f; + m_minFov=min; +} + +void Camera::setAngleDecay(float angleDecay){ + m_angleDecay=angleDecay; +} + +void Camera::setFovDecay(float fovDecay){ + m_fovDecay=fovDecay; +} + +void Camera::setFOV(float f) +{ + if(f>170) + f=170; + else if(f<0.1f) + f=0.1f; + fov=f; +} + +void Camera::setPitch(float p) +{ + if(p>90) + p=90; + else if(p<-90) + p=-90; + pitch=p; +} + +void Camera::setYaw(float y) +{ + if(y>180) + y=180; + else if(y<-180) + y=-180; + yaw=y; +} + +float Camera::get_fov(){return fov;} +float Camera::get_pitch(){return pitch;} +float Camera::get_yaw(){return yaw;} + +Camera& Camera::operator=(const Camera &external_camera) +{ + yaw = external_camera.yaw; + pitch = external_camera.pitch; + fov = external_camera.fov; + m_minPitch = external_camera.m_minPitch; + m_maxPitch = external_camera.m_maxPitch; + m_maxYaw = external_camera.m_maxYaw; + m_minYaw = external_camera.m_minYaw; + + m_minFov = external_camera.m_minFov; + m_maxFov = external_camera.m_maxFov; + + m_angleDecay = external_camera.m_angleDecay; + m_fovDecay = external_camera.m_fovDecay; + +} + + +void Camera::setFovSpeed(float speed, double time) +{ + fov_speed = speed; + m_fovStartTime = time; +} + +void Camera::setYawSpeed(float speed, double time) +{ + yaw_speed = speed; + m_yawStartTime = time; +} + +void Camera::setPitchSpeed(float speed, double time) +{ + pitch_speed = speed; + m_pitchStartTime = time; +} + + +bool Camera::onTimer(double time) +{ + // delta time might not be accurate if the timer has just been restarted.. + double dt = time - m_lastTime; + if (m_lastTime == 0) { + dt = 0; + } + + double yspeed = yaw_speed; + // calculate decay. This time it is independent from the update rate + if ( m_yawStartTime < m_lastTime) { + double decayTime = time - m_yawStartTime; + yspeed = yaw_speed * exp(-m_angleDecay* decayTime); + } + double pspeed = pitch_speed; + if ( m_pitchStartTime < m_lastTime) { + double decayTime = time - m_pitchStartTime; + pspeed = pitch_speed * exp(-m_angleDecay* decayTime); + } + double fspeed = fov_speed; + if ( m_fovStartTime < m_lastTime) { + double decayTime = time - m_fovStartTime; + fspeed = fov_speed * exp(-m_fovDecay* decayTime); + } + + m_lastTime = time; + + + //DEBUG_DEBUG("time step: " << dt << " sec."); + yaw += (float)(yspeed * dt); + pitch += (float)(pspeed * dt); + fov += (float)(fspeed * dt); + + /* + DEBUG_DEBUG("time: " << m_yawStartTime << " " << m_pitchStartTime << " " << m_fovStartTime << " " << time); + DEBUG_DEBUG("pos: " << yaw << " " << pitch << " " << fov); + DEBUG_DEBUG("speed: " << yspeed << " " << pspeed << " " << fspeed); + */ + + if (fov > m_maxFov) + fov = m_maxFov; + if (fov < m_minFov) + fov = m_minFov; + + // ensure yaw stays within -180 .. 180 + while (yaw > 180) yaw -= 360; + while (yaw < -180) yaw +=360; + + if (pitch > m_maxPitch) pitch = m_maxPitch; + if (pitch < m_minPitch) pitch = m_minPitch; + + if (yaw > m_maxYaw) yaw = m_maxYaw; + if (yaw < m_minYaw) yaw = m_minYaw; + + // check if the velocities is still high enought to warrant animation + bool animate = ( fabs(yspeed) > 0.01 * fov) || ( fabs(pspeed) > 0.01 * fov) || ( fabs(fspeed) > 0.01 * fov); + if (!animate) { + // set to 0, indicate that the next delta is not valid + m_lastTime = 0; + } + return animate; +} +} Added: freepv/branches/branch_leonox/src/libfreepv/Camera.h =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/Camera.h (rev 0) +++ freepv/branches/branch_leonox/src/libfreepv/Camera.h 2007-06-23 03:19:28 UTC (rev 113) @@ -0,0 +1,92 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Pablo d'Angelo <pab...@we...> + * + * $Id: Scene.h 112 2007-06-20 19:16:17Z Leonox $ + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; version 2.1 of + * the License + * + * This software 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +/** class around the camera */ + +namespace FPV +{ + +class Camera +{ +public: + Camera(); + ~Camera(); + + void setFovSpeed(float speed, double time); + void setYawSpeed(float speed, double time); + void setPitchSpeed(float speed, double time); + void setPitchLimits(float min, float max); + void setYawLimits(float min, float max); + void setFovLimits(float min, float max); + void setDynamics(float angleDecay, float fovDecay); + + void setMaxYaw(float max); + void setMinYaw(float min); + void setMaxPitch(float max); + void setMinPitch(float min); + void setMaxFov(float max); + void setMinFov(float min); + void setAngleDecay(float angleDecay); + void setFovDecay(float fovDecay); + void setFOV(float f); + void setPitch(float p); + void setYaw(float y); + + float get_fov(void); + float get_pitch(void); + float get_yaw(void); + + Camera& operator=(const Camera &external_camera); + + /** timer function required for the simulation of + * inertia + * returns true if more animation is needed, false otherwise + */ + bool onTimer(double time); + +protected: + float m_angleDecay; + float m_fovDecay; + + float yaw; + float pitch; + float fov; + + // limits + float m_maxYaw; + float m_minYaw; + float m_maxPitch; + float m_minPitch; + float m_minFov; + float m_maxFov; + + float yaw_speed; + float pitch_speed; + float fov_speed; + + double m_fovStartTime, m_yawStartTime, m_pitchStartTime; + double m_lastTime; +}; + +} Modified: freepv/branches/branch_leonox/src/libfreepv/PanoViewer.cpp =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/PanoViewer.cpp 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/PanoViewer.cpp 2007-06-23 03:19:28 UTC (rev 113) @@ -27,7 +27,6 @@ #include "PanoViewer.h" #include "OpenGLRenderer.h" #include "QTVRDecoder.h" -#include "SPiVparser.h" #include "imageReader.h" #include "utils.h" @@ -64,6 +63,11 @@ // create the new controller m_controller = new Controller(m_scene); + // This pointer holds a reference to a parser + // in case it's needed. + m_spiv_parser = NULL; + + //The renderer is initialized m_renderer->init(); m_scene->setStatusText("initializing"); @@ -234,7 +238,7 @@ Image * img; decodeImage((unsigned char*) data, sz, img, AUTO); //To remove - if (0) { + /* if (0) { delete img; free(data); FPV_S2S(m_statusMessage, "JPEG decoding error: " << m_platform->currentDownloadURL()); @@ -252,8 +256,8 @@ // notify renderer of new cube face m_renderer->initElement(*m_currentCube); redraw(); + }*/ } - } m_currentCubeFaceDownload++; // start download of next cubeface, if required @@ -314,6 +318,11 @@ { type = "QTVR"; } + else if(mime == "application/xml"|| mime == "text/xml") + { + type = "XML"; + } + // if no mimetype, check file extension // assume jpeg if file doesn't have a MOV or QTVR extension if (mime == "") { @@ -459,11 +468,28 @@ redraw(); } } else if(type=="XML"){ - SPiVparser spiv_parser; - spiv_parser.parseURL(filename.c_str()); - spiv_parser.loadTour(); - spiv_parser.loadScene(*m_scene); - redraw(); + + if(m_spiv_parser==NULL){ + std::cerr<<"Creating a SPiVparser"<<std::endl; + m_spiv_parser=new SPiVparser(); + m_spiv_parser->parseURL(filename.c_str()); + m_spiv_parser->loadTour(); + } + else + { + m_spiv_parser->parseNodeURL(filename.c_str()); + } + const char* xml_to_download=NULL; + xml_to_download = m_spiv_parser->getXMLToDownload(); + if(xml_to_download!=NULL) + { + std::cerr<<"Dowloading: "<<xml_to_download<<std::endl; + m_platform->startDownloadURLToFile(xml_to_download); + }else{ + std::cerr<<"Loading scene"<<std::endl; + m_spiv_parser->loadScene(*m_scene); + redraw(); + } }else{ m_statusMessage = "internal error: invalid state after downloading to file"; m_scene->setStatusText( m_statusMessage ); Modified: freepv/branches/branch_leonox/src/libfreepv/PanoViewer.h =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/PanoViewer.h 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/PanoViewer.h 2007-06-23 03:19:28 UTC (rev 113) @@ -31,6 +31,7 @@ #include "Renderer.h" #include "Scene.h" #include "Controller.h" +#include "SPiVparser.h" namespace FPV { @@ -165,6 +166,9 @@ Scene * m_scene; Controller * m_controller; + //Parser for the SPiV xml files + SPiVparser *m_spiv_parser; + // downloaded data // unsigned char * m_currentDownload; // size_t m_currentDownloadSize; Modified: freepv/branches/branch_leonox/src/libfreepv/SPiVparser.cpp =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/SPiVparser.cpp 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/SPiVparser.cpp 2007-06-23 03:19:28 UTC (rev 113) @@ -44,8 +44,6 @@ bool SPiVparser::loadTour() { - xmlNodePtr p_aux=NULL; - xmlNodePtr p_meta=NULL; Camera * p_camera; if(m_doc!=NULL) @@ -57,43 +55,20 @@ std::cerr<<"This file has a wrong root node"<<std::endl; m_root=NULL; } - - if(m_root!=NULL) - { - p_aux=m_root->children; - while(p_aux!=NULL) - { - if(!xmlStrcmp(p_aux->name, (const xmlChar*)"global")) - { - if(m_global==NULL) - { - m_global=p_aux; - p_meta=FindElement(m_global,"meta",NULL,NULL,DEPTH); - if(p_meta!=NULL){ - p_camera= new Camera(); - setupCamera(p_meta,p_camera); - m_global_camera = p_camera; - } - std::cerr<<"This file has a global node"<<std::endl; - } - } - p_aux=p_aux->next; - } - return true; - } - - } + } return false; } bool SPiVparser::loadScene(Scene &sceneToLoad, const char* id) { + std::string status; xmlNodePtr p_aux=NULL; - std::string status; + xmlNodePtr p_meta=NULL; if(m_root!=NULL) { - + if(id==NULL&&m_global==NULL) + loadGlobal(); //If the id is a null pointer we try to load the //default scene, first by looking in the //global node.If not, we load the first one @@ -199,4 +174,84 @@ return true; } +//This method remplace the nodes that has src attributes +void SPiVparser::parseNodeURL(const char* url) +{ + xmlDocPtr m_aux_doc = xmlParseFile(url); + xmlNodePtr doc_root = NULL; + xmlNodePtr old_node = NULL; + xmlNodePtr new_node = NULL; + if(m_aux_doc!=NULL){ + doc_root=xmlDocGetRootElement(m_aux_doc); + old_node=FindElement(m_root,NULL,"src",url,WIDE); + while(old_node!=NULL) + { + new_node=FindElement(doc_root,(const char*)old_node->name,NULL,NULL,WIDE); + if(new_node!=NULL){ + old_node=xmlReplaceNode(old_node, new_node); + xmlFreeNode(old_node); + } + else{ + xmlUnlinkNode(old_node); + xmlFreeNode(old_node); + } + old_node=FindElement(m_root,NULL,"src",url,WIDE); + } + xmlFreeDoc(m_aux_doc); + } +} +const char * SPiVparser::getXMLToDownload() +{ + char* names[]={"scene","panogroup","global"}; + int i=0; + if(m_root==NULL) + return NULL; + xmlNodePtr node = NULL; + xmlChar * src=xmlCharStrdup("src"); + xmlChar * file; + const char* c_file=NULL; + while(node==NULL&&i<3) + { + node=FindElement(m_root, names[i], "src", NULL, WIDE); + if(node==NULL) + i++; + } + if(node!=NULL){ + file=xmlGetProp(node, (const xmlChar*)"src"); + if(file==NULL) + std::cerr<<"we got a null pointer"<<std::endl; + c_file=(const char*)file; + std::cerr<<"The file to download is "<<c_file<<std::endl; + //xmlFree(file); + } + return c_file; +} + +void SPiVparser::loadGlobal() +{ + Camera * p_camera; + xmlNodePtr p_aux=NULL; + xmlNodePtr p_meta=NULL; + if(m_root!=NULL) + { + p_aux=m_root->children; + while(p_aux!=NULL) + { + if(!xmlStrcmp(p_aux->name, (const xmlChar*)"global")) + { + if(m_global==NULL) + { + m_global=p_aux; + p_meta=FindElement(m_global,"meta",NULL,NULL,DEPTH); + if(p_meta!=NULL){ + p_camera= new Camera(); + setupCamera(p_meta,p_camera); + m_global_camera = p_camera; + } + } + } + p_aux=p_aux->next; + } + } +} Modified: freepv/branches/branch_leonox/src/libfreepv/SPiVparser.h =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/SPiVparser.h 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/SPiVparser.h 2007-06-23 03:19:28 UTC (rev 113) @@ -66,9 +66,10 @@ //For testing purposes bool loadScene(Scene &sceneToLoad, const char* id=NULL); - bool setupCamera(xmlNodePtr node, Camera* sceneCamera); - + void parseNodeURL(const char* url); + const char * getXMLToDownload(); + void loadGlobal(); }; }//name space Modified: freepv/branches/branch_leonox/src/libfreepv/Scene.cpp =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/Scene.cpp 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/Scene.cpp 2007-06-23 03:19:28 UTC (rev 113) @@ -22,235 +22,11 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ -#include <math.h> -#include <float.h> - #include "Scene.h" #include "utils.h" using namespace FPV; - -Camera::Camera() -{ - yaw = pitch = 0; - fov = 70; - yaw_speed = 0; - pitch_speed = 0; - fov_speed = 0; - - m_yawStartTime = DBL_MAX; - m_pitchStartTime = DBL_MAX; - m_fovStartTime = DBL_MAX; - - m_minPitch = -90; - m_maxPitch = 90; - m_maxYaw = 180; - m_minYaw = -180; - - m_minFov = 1; - m_maxFov = 160; - - m_angleDecay = 3.0f; - m_fovDecay = 5.0f; - - m_lastTime = 0; -} - -Camera::~Camera() -{ - -} - -void Camera::setMaxYaw(float max){ - if(max>180) - max=180; - else if(max<-180) - max=-180; - m_maxYaw=max; -} - -void Camera::setMinYaw(float min){ - if(min>180) - min=180; - else if(min<-180) - min=-180; - m_minYaw=min; -} - -void Camera::setMaxPitch(float max){ - if(max>90) - max=90; - else if(max<-90) - max=-90; - m_maxPitch=max; -} - -void Camera::setMinPitch(float min){ - if(min>90) - min=90; - else if(min<-90) - min=-90; - m_minPitch=min; -} - -void Camera::setMaxFov(float max){ - if(max>170) - max=170; - else if(max<0.1f) - max=0.1f; - m_maxFov=max; -} - -void Camera::setMinFov(float min){ - if(min>170) - min=90; - else if(min<0.1f) - min=0.1f; - m_minFov=min; -} - -void Camera::setAngleDecay(float angleDecay){ - m_angleDecay=angleDecay; -} - -void Camera::setFovDecay(float fovDecay){ - m_fovDecay=fovDecay; -} - -void Camera::setFOV(float f) -{ - if(f>170) - f=170; - else if(f<0.1f) - f=0.1f; - fov=f; -} - -void Camera::setPitch(float p) -{ - if(p>90) - p=90; - else if(p<-90) - p=-90; - pitch=p; -} - -void Camera::setYaw(float y) -{ - if(y>180) - y=180; - else if(y<-180) - y=-180; - yaw=y; -} - -float Camera::get_fov(){return fov;} -float Camera::get_pitch(){return pitch;} -float Camera::get_yaw(){return yaw;} - -Camera& Camera::operator=(const Camera &external_camera) -{ - yaw = external_camera.yaw; - pitch = external_camera.pitch; - fov = external_camera.fov; - m_minPitch = external_camera.m_minPitch; - m_maxPitch = external_camera.m_maxPitch; - m_maxYaw = external_camera.m_maxYaw; - m_minYaw = external_camera.m_minYaw; - - m_minFov = external_camera.m_minFov; - m_maxFov = external_camera.m_maxFov; - - m_angleDecay = external_camera.m_angleDecay; - m_fovDecay = external_camera.m_fovDecay; - -} - - -void Camera::setFovSpeed(float speed, double time) -{ - fov_speed = speed; - m_fovStartTime = time; -} - -void Camera::setYawSpeed(float speed, double time) -{ - yaw_speed = speed; - m_yawStartTime = time; -} - -void Camera::setPitchSpeed(float speed, double time) -{ - pitch_speed = speed; - m_pitchStartTime = time; -} - - -bool Camera::onTimer(double time) -{ - // delta time might not be accurate if the timer has just been restarted.. - double dt = time - m_lastTime; - if (m_lastTime == 0) { - dt = 0; - } - - double yspeed = yaw_speed; - // calculate decay. This time it is independent from the update rate - if ( m_yawStartTime < m_lastTime) { - double decayTime = time - m_yawStartTime; - yspeed = yaw_speed * exp(-m_angleDecay* decayTime); - } - double pspeed = pitch_speed; - if ( m_pitchStartTime < m_lastTime) { - double decayTime = time - m_pitchStartTime; - pspeed = pitch_speed * exp(-m_angleDecay* decayTime); - } - double fspeed = fov_speed; - if ( m_fovStartTime < m_lastTime) { - double decayTime = time - m_fovStartTime; - fspeed = fov_speed * exp(-m_fovDecay* decayTime); - } - - m_lastTime = time; - - - //DEBUG_DEBUG("time step: " << dt << " sec."); - yaw += (float)(yspeed * dt); - pitch += (float)(pspeed * dt); - fov += (float)(fspeed * dt); - - /* - DEBUG_DEBUG("time: " << m_yawStartTime << " " << m_pitchStartTime << " " << m_fovStartTime << " " << time); - DEBUG_DEBUG("pos: " << yaw << " " << pitch << " " << fov); - DEBUG_DEBUG("speed: " << yspeed << " " << pspeed << " " << fspeed); - */ - - if (fov > m_maxFov) - fov = m_maxFov; - if (fov < m_minFov) - fov = m_minFov; - - // ensure yaw stays within -180 .. 180 - while (yaw > 180) yaw -= 360; - while (yaw < -180) yaw +=360; - - if (pitch > m_maxPitch) pitch = m_maxPitch; - if (pitch < m_minPitch) pitch = m_minPitch; - - if (yaw > m_maxYaw) yaw = m_maxYaw; - if (yaw < m_minYaw) yaw = m_minYaw; - - // check if the velocities is still high enought to warrant animation - bool animate = ( fabs(yspeed) > 0.01 * fov) || ( fabs(pspeed) > 0.01 * fov) || ( fabs(fspeed) > 0.01 * fov); - if (!animate) { - // set to 0, indicate that the next delta is not valid - m_lastTime = 0; - } - return animate; -} - - Scene::Scene() : m_pano(0) { Modified: freepv/branches/branch_leonox/src/libfreepv/Scene.h =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/Scene.h 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/Scene.h 2007-06-23 03:19:28 UTC (rev 113) @@ -28,300 +28,13 @@ #include <assert.h> #include "Platform.h" -#include "Image.h" +#include "SceneElement.h" +#include "Camera.h" namespace FPV { -/** render specific data. - * - * This class is used by the renderer to store - * render-specific information about a Scene element - * eg. OpenGL textures and so on. - */ -class RenderData -{ -public: - virtual ~RenderData() {}; -}; - -/** struct around the camera */ -class Camera -{ -public: - Camera(); - ~Camera(); - - void setFovSpeed(float speed, double time); - void setYawSpeed(float speed, double time); - void setPitchSpeed(float speed, double time); - void setPitchLimits(float min, float max); - void setYawLimits(float min, float max); - void setFovLimits(float min, float max); - void setDynamics(float angleDecay, float fovDecay); - - void setMaxYaw(float max); - void setMinYaw(float min); - void setMaxPitch(float max); - void setMinPitch(float min); - void setMaxFov(float max); - void setMinFov(float min); - void setAngleDecay(float angleDecay); - void setFovDecay(float fovDecay); - void setFOV(float f); - void setPitch(float p); - void setYaw(float y); - - float get_fov(void); - float get_pitch(void); - float get_yaw(void); - - Camera& operator=(const Camera &external_camera); - - /** timer function required for the simulation of - * inertia - * returns true if more animation is needed, false otherwise - */ - bool onTimer(double time); - -protected: - float m_angleDecay; - float m_fovDecay; - - float yaw; - float pitch; - float fov; - - // limits - float m_maxYaw; - float m_minYaw; - float m_maxPitch; - float m_minPitch; - float m_minFov; - float m_maxFov; - - float yaw_speed; - float pitch_speed; - float fov_speed; - - double m_fovStartTime, m_yawStartTime, m_pitchStartTime; - double m_lastTime; -}; - -/** main panorama class. - * - * This is the model that contains the panoramic image or - * any other scene elment that should be drawn on screen - */ -class SceneElement -{ -public: - /** List of all scene element types */ - enum Type { INVALID, PANO_CUBIC, PANO_SPHERICAL, PANO_CYLINDRICAL, TEXT }; - - SceneElement() - : m_renderData(0), m_type(INVALID), m_depth(1) - { } - - virtual ~SceneElement() - { - if (m_renderData) - delete m_renderData; - } - - Type getType() - { - return m_type; - } - - /** the render data is used by the renderer to store - * render-specific information about this element - * eg. OpenGL textures or similar - */ - RenderData * m_renderData; -protected: - Type m_type; - float m_depth; -}; - - -//=================================================================== -// scene elements - -/** A cubic panorama - * - * This is the model that contains the cubic panorama. - */ -class CubicPano : public SceneElement -{ -public: - - enum FaceID { FACE_FRONT=0, FACE_RIGHT, FACE_BACK, FACE_LEFT, FACE_TOP, FACE_BOTTOM }; - /** construct a Cubic panorama. - * - * Creates 6 cubefaces with the given size - */ - CubicPano(Size2D sz) - { - m_type = PANO_CUBIC; - m_size = sz; - for (int i=0; i < 6; i++) { - m_images[i] = 0; - } - } - - ~CubicPano() - { - for (int i=0; i < 6; i++) { - if (m_images[i]) { - delete m_images[i]; - } - } - } - - /** set all cubefaces - * - * Ownership of Images pointed to by \p imgs is transferred to the CubicPanorama - * object. - * - * The cube face order is: front, right, back, left, top, bottom - */ - void setCubeFaces(Image * imgs[6]) - { - for (int face=0; face < 6; face++) { - if (m_images[face]) { - delete m_images[face]; - } - m_images[face] = imgs[face]; - } - } - - /** set a single cube face. - * - * Ownership of \p img is transferred to the CubicPanorama - * object. - */ - void setCubeFace(FaceID face, Image * img) - { - assert(face < 6); - if (m_images[face]) { - delete m_images[face]; - } - m_images[face] = img; - } - - /** get a single face */ - Image * getCubeFace(FaceID face) - { - assert(face < 6); - return m_images[face]; - } - - // cube face order: 'front', 'right', 'back', 'left', 'top', 'bottom' - Image * m_images[6]; - - // size of one face - Size2D m_size; -}; - - -/** A cylindrical panorama - */ -class CylindricalPano : public SceneElement -{ -public: - /** construct a cylindrical panorama. - */ - CylindricalPano(Size2D sz, float HFOV) - { - m_type = PANO_CYLINDRICAL; - m_image = 0; - m_hfov = HFOV; - } - - ~CylindricalPano() - { - if (m_image) { - delete m_image; - } - } - - /** set all cubefaces - * - * Ownership of Image pointed to by \p img is transferred to the CylindricalPano - * object. - */ - void setImage(Image * img) - { - if (m_image) { - delete m_image; - } - m_image = img; - } - - Image * m_image; - - // hfov of pano - double m_hfov; -}; - - -/** A spherical panorama - */ -class SphericalPano : public SceneElement -{ -public: - /** construct a cylindrical panorama. - */ - SphericalPano(Size2D sz, float HFOV) - { - m_type = PANO_SPHERICAL; - m_image = 0; - m_hfov = HFOV; - } - - ~SphericalPano() - { - if (m_image) { - delete m_image; - } - } - - /** set panorama image - * - * Ownership of Image pointed to by \p img is transferred to the CylindricalPano - * object. - */ - void setImage(Image * img) - { - if (m_image) { - delete m_image; - } - m_image = img; - } - - Image * m_image; - - // hfov of pano - double m_hfov; -}; - -/** A text message - * - */ -class TextElement : public SceneElement -{ -public: - TextElement(const std::string & text) - { - m_type = TEXT; - m_text = text; - } - std::string m_text; -}; - - /** This holds the scene. * * A scene consists of a panoramic SceneElement, one camera and one Added: freepv/branches/branch_leonox/src/libfreepv/SceneElement.h =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/SceneElement.h (rev 0) +++ freepv/branches/branch_leonox/src/libfreepv/SceneElement.h 2007-06-23 03:19:28 UTC (rev 113) @@ -0,0 +1,253 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Pablo d'Angelo <pab...@we...> + * + * $Id: Scene.h 112 2007-06-20 19:16:17Z Leonox $ + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; version 2.1 of + * the License + * + * This software 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +#include "Image.h" + +namespace FPV +{ + +/** render specific data. + * + * This class is used by the renderer to store + * render-specific information about a Scene element + * eg. OpenGL textures and so on. + */ +class RenderData +{ +public: + virtual ~RenderData() {}; +}; + +/** main panorama class. + * + * This is the model that contains the panoramic image or + * any other scene elment that should be drawn on screen + */ +class SceneElement +{ +public: + /** List of all scene element types */ + enum Type { INVALID, PANO_CUBIC, PANO_SPHERICAL, PANO_CYLINDRICAL, TEXT }; + + SceneElement() + : m_renderData(0), m_type(INVALID), m_depth(1) + { } + + virtual ~SceneElement() + { + if (m_renderData) + delete m_renderData; + } + + Type getType() + { + return m_type; + } + + /** the render data is used by the renderer to store + * render-specific information about this element + * eg. OpenGL textures or similar + */ + RenderData * m_renderData; +protected: + Type m_type; + float m_depth; +}; + + +//=================================================================== +// scene elements + +/** A cubic panorama + * + * This is the model that contains the cubic panorama. + */ +class CubicPano : public SceneElement +{ +public: + + enum FaceID { FACE_FRONT=0, FACE_RIGHT, FACE_BACK, FACE_LEFT, FACE_TOP, FACE_BOTTOM }; + /** construct a Cubic panorama. + * + * Creates 6 cubefaces with the given size + */ + CubicPano(Size2D sz) + { + m_type = PANO_CUBIC; + m_size = sz; + for (int i=0; i < 6; i++) { + m_images[i] = 0; + } + } + + ~CubicPano() + { + for (int i=0; i < 6; i++) { + if (m_images[i]) { + delete m_images[i]; + } + } + } + + /** set all cubefaces + * + * Ownership of Images pointed to by \p imgs is transferred to the CubicPanorama + * object. + * + * The cube face order is: front, right, back, left, top, bottom + */ + void setCubeFaces(Image * imgs[6]) + { + for (int face=0; face < 6; face++) { + if (m_images[face]) { + delete m_images[face]; + } + m_images[face] = imgs[face]; + } + } + + /** set a single cube face. + * + * Ownership of \p img is transferred to the CubicPanorama + * object. + */ + void setCubeFace(FaceID face, Image * img) + { + assert(face < 6); + if (m_images[face]) { + delete m_images[face]; + } + m_images[face] = img; + } + + /** get a single face */ + Image * getCubeFace(FaceID face) + { + assert(face < 6); + return m_images[face]; + } + + // cube face order: 'front', 'right', 'back', 'left', 'top', 'bottom' + Image * m_images[6]; + + // size of one face + Size2D m_size; +}; + + +/** A cylindrical panorama + */ +class CylindricalPano : public SceneElement +{ +public: + /** construct a cylindrical panorama. + */ + CylindricalPano(Size2D sz, float HFOV) + { + m_type = PANO_CYLINDRICAL; + m_image = 0; + m_hfov = HFOV; + } + + ~CylindricalPano() + { + if (m_image) { + delete m_image; + } + } + + /** set all cubefaces + * + * Ownership of Image pointed to by \p img is transferred to the CylindricalPano + * object. + */ + void setImage(Image * img) + { + if (m_image) { + delete m_image; + } + m_image = img; + } + + Image * m_image; + + // hfov of pano + double m_hfov; +}; + + +/** A spherical panorama + */ +class SphericalPano : public SceneElement +{ +public: + /** construct a cylindrical panorama. + */ + SphericalPano(Size2D sz, float HFOV) + { + m_type = PANO_SPHERICAL; + m_image = 0; + m_hfov = HFOV; + } + + ~SphericalPano() + { + if (m_image) { + delete m_image; + } + } + + /** set panorama image + * + * Ownership of Image pointed to by \p img is transferred to the CylindricalPano + * object. + */ + void setImage(Image * img) + { + if (m_image) { + delete m_image; + } + m_image = img; + } + + Image * m_image; + + // hfov of pano + double m_hfov; +}; + +/** A text message + * + */ +class TextElement : public SceneElement +{ +public: + TextElement(const std::string & text) + { + m_type = TEXT; + m_text = text; + } + std::string m_text; +}; +}//namespace Modified: freepv/branches/branch_leonox/src/libfreepv/XMLparser.cpp =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/XMLparser.cpp 2007-06-20 19:16:17 UTC (rev 112) +++ freepv/branches/branch_leonox/src/libfreepv/XMLparser.cpp 2007-06-23 03:19:28 UTC (rev 113) @@ -37,21 +37,32 @@ bool XMLparser::validateElement(xmlNodePtr node, const char* name, const char* attr, const char* value) { + if(node==NULL) + return false; if(name==NULL&&attr==NULL) + { return true; + } else { - if(node==NULL || cmp(name,node->name)){ - if(attr!=NULL && xmlHasProp(node,(const xmlChar*)attr)!=NULL){ - if(value==NULL) - return true; - else{ - if(cmp(value,xmlGetProp(node,(const xmlChar*)attr))) - return true; - } + if(name==NULL||cmp(name,node->name)){ + if(attr!=NULL){ + if(xmlHasProp(node,(const xmlChar*)attr)!=NULL){ + if(value==NULL){ + return true; + }else{ + if(cmp(value,xmlGetProp(node,(const xmlChar*)attr))){ + return true; + }else{ + return false; + } + } + }else{ + return false; + } } return true; - } + } } return false; } @@ -73,10 +84,10 @@ bool XMLparser::cmp(const char * strA, const unsigned char * strB) { - if(strcmp(strA, (const char*)strB)==0) - return true; - else - return false; + if(strcmp(strA, (const char*)strB)==0) + return true; + else + return false; } xmlNodePtr XMLparser::FindElement(xmlNodePtr node, const char *name, const char *attr, const char *value, search type) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-10-15 21:01:05
|
Revision: 122 http://freepv.svn.sourceforge.net/freepv/?rev=122&view=rev Author: leonox Date: 2007-10-15 13:54:14 -0700 (Mon, 15 Oct 2007) Log Message: ----------- arreglo a CMake Modified Paths: -------------- freepv/branches/branch_leonox/CMakeLists.txt freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt Modified: freepv/branches/branch_leonox/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/CMakeLists.txt 2007-08-22 01:50:55 UTC (rev 121) +++ freepv/branches/branch_leonox/CMakeLists.txt 2007-10-15 20:54:14 UTC (rev 122) @@ -74,7 +74,8 @@ find_package(X11 REQUIRED) find_package(GECKO REQUIRED) find_package(LibXml2 REQUIRED) -find_package(PNG REQUIRED) +find_package(PNG REQUIRED) +find_package(XF86VM REQUIRED) # check for gettimeofday @@ -90,7 +91,8 @@ ${X11_INCLUDE_DIR} ${GECKO_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR} - ${PNG_INCLUDE_DIR}) + ${PNG_INCLUDE_DIR} + ${XF86VM_INCLUDE_DIR}) ######################################################################### # CONFIGURE # Modified: freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt 2007-08-22 01:50:55 UTC (rev 121) +++ freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt 2007-10-15 20:54:14 UTC (rev 122) @@ -12,5 +12,7 @@ # Link the executable to the Hello library. TARGET_LINK_LIBRARIES(freepv-glx freepv ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${LIBXML2_LIBRARIES} - ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${PNG_LIBRARIES}) + ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${PNG_LIBRARIES} + ${GECKO_LIBRARIES} ${XF86VM_LIBRARIES} + ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2008-03-01 00:18:27
|
Revision: 129 http://freepv.svn.sourceforge.net/freepv/?rev=129&view=rev Author: brunopostle Date: 2008-02-29 16:18:30 -0800 (Fri, 29 Feb 2008) Log Message: ----------- stuff for install target (probably) Modified Paths: -------------- freepv/branches/branch_leonox/CMakeLists.txt freepv/branches/branch_leonox/src/freepv-glut/CMakeLists.txt freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt freepv/branches/branch_leonox/src/utils/CMakeLists.txt Modified: freepv/branches/branch_leonox/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -33,6 +33,9 @@ set(V_MINOR 2) set(V_PATCH 0) +# set destination dirs relative to PREFIX +SET(LIBDIR lib${LIB_SUFFIX}) + ######################################################################### # MACROS # #***********************************************************************# Modified: freepv/branches/branch_leonox/src/freepv-glut/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/freepv-glut/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/src/freepv-glut/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -14,3 +14,5 @@ ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${LIBXML2_LIBRARIES} ${OPENGL_LIBRARIES} ${FREEGLUT_LIBRARIES} ${PNG_LIBRARIES}) +INSTALL(TARGETS freepv-glut DESTINATION bin) + Modified: freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/src/freepv-glx/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -16,3 +16,5 @@ ${GECKO_LIBRARIES} ${XF86VM_LIBRARIES} ) +INSTALL(TARGETS freepv-glx DESTINATION bin) + Modified: freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -17,3 +17,4 @@ ${GECKO_LIBRARIES} ${PNG_LIBRARIES}) +INSTALL(TARGETS npfreepv DESTINATION ${LIBDIR}/mozilla/plugins) Modified: freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/src/libfreepv/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -14,3 +14,7 @@ glutfont/freeglut_glutfont_definitions.c Math/Matrix4.cpp Math/quaternion.cpp) +INSTALL(FILES Controller.h FPV_keysyms.h Image.h PanoViewer.h Parameters.h Platform.h QTVRDecoder.h Renderer.h Scene.h SPiVparser.h utils.h DESTINATION include/libfreepv) + +INSTALL(TARGETS freepv DESTINATION ${LIBDIR}) + Modified: freepv/branches/branch_leonox/src/utils/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/utils/CMakeLists.txt 2008-02-29 22:57:29 UTC (rev 128) +++ freepv/branches/branch_leonox/src/utils/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) @@ -1,3 +1,6 @@ INCLUDE_DIRECTORIES(${FreePV_SOURCE_DIR}/src/libfreepv) ADD_EXECUTABLE(qtvr2img qtvr2img.cpp) TARGET_LINK_LIBRARIES(qtvr2img freepv ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES}) + +INSTALL(TARGETS qtvr2img DESTINATION bin) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2008-03-01 00:23:16
|
Revision: 130 http://freepv.svn.sourceforge.net/freepv/?rev=130&view=rev Author: brunopostle Date: 2008-02-29 16:23:21 -0800 (Fri, 29 Feb 2008) Log Message: ----------- Fix mixed unix/dos text files Modified Paths: -------------- freepv/branches/branch_leonox/CMakeLists.txt freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt Modified: freepv/branches/branch_leonox/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) +++ freepv/branches/branch_leonox/CMakeLists.txt 2008-03-01 00:23:21 UTC (rev 130) @@ -75,9 +75,9 @@ find_package(FREEGLUT REQUIRED) find_package(OpenGL REQUIRED) find_package(X11 REQUIRED) -find_package(GECKO REQUIRED) -find_package(LibXml2 REQUIRED) -find_package(PNG REQUIRED) +find_package(GECKO REQUIRED) +find_package(LibXml2 REQUIRED) +find_package(PNG REQUIRED) find_package(XF86VM REQUIRED) @@ -92,9 +92,9 @@ ${OPENGL_INCLUDE_DIR} ${FREEGLUT_INCLUDE_DIR} ${X11_INCLUDE_DIR} - ${GECKO_INCLUDE_DIR} - ${LIBXML2_INCLUDE_DIR} - ${PNG_INCLUDE_DIR} + ${GECKO_INCLUDE_DIR} + ${LIBXML2_INCLUDE_DIR} + ${PNG_INCLUDE_DIR} ${XF86VM_INCLUDE_DIR}) ######################################################################### Modified: freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt =================================================================== --- freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt 2008-03-01 00:18:30 UTC (rev 129) +++ freepv/branches/branch_leonox/src/freepv-mozilla/CMakeLists.txt 2008-03-01 00:23:21 UTC (rev 130) @@ -10,11 +10,11 @@ ) TARGET_LINK_LIBRARIES(npfreepv freepv ${ZLIB_LIBRARIES} - ${JPEG_LIBRARIES} + ${JPEG_LIBRARIES} ${LIBXML2_LIBRARIES} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} - ${GECKO_LIBRARIES} + ${GECKO_LIBRARIES} ${PNG_LIBRARIES}) INSTALL(TARGETS npfreepv DESTINATION ${LIBDIR}/mozilla/plugins) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2008-03-02 23:06:32
|
Revision: 136 http://freepv.svn.sourceforge.net/freepv/?rev=136&view=rev Author: brunopostle Date: 2008-03-02 15:06:34 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Update build instructions Modified Paths: -------------- freepv/branches/branch_leonox/INSTALL freepv/branches/branch_leonox/README Modified: freepv/branches/branch_leonox/INSTALL =================================================================== --- freepv/branches/branch_leonox/INSTALL 2008-03-02 22:48:51 UTC (rev 135) +++ freepv/branches/branch_leonox/INSTALL 2008-03-02 23:06:34 UTC (rev 136) @@ -1,167 +1,55 @@ -Basic Installation -================== +Using the CMake build system under Unix +======================================= - These are generic installation instructions. +briefly, do the following: - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). +cmake -DCMAKE_INSTALL_PREFIX=/usr/local . +make +make install - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. +alternatively, you can also do an out of source build, if +you don't want to clutter the source tree with object files etc. - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. +$ cd freepv +$ mkdir mybuild +$ cd mybuild +$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../ +$ make +$ make install -The simplest way to compile this package is: +Please report any problems to the Freepv-devel mailing list: +https://lists.sourceforge.net/lists/listinfo/freepv-devel - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - Running `configure' takes a while. While running, it prints some - messages telling which features it is checking for. +Missing dependencies +======================= +If cmake failed to pick up some dependencies, make sure you have +installed the corresponding development packages (often named: +libjpeg-dev and so on). If cmake still fails to find the libraries, +for example if you have installed them into a non-standard directory, +you can specify the path to libraries and include files using the +ccmake program: +$ cmake . +[some failure] +$ ccmake . - 2. Type `make' to compile the package. - - 3. Type `make install' to install the programs and any data files and - documentation. - - 4. You can remove the program binaries and object files from the - source code directory by typing `make clean'. - -Compilers and Options +Configuring the build ===================== - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure +Upon cmake invocation, several variables can be set with the -D command line +parameter. Important variables include: -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure +CMAKE_INSTALL_PREFIX Destination directory of make install + (default: /usr/local) +LIB_SUFFIX Specifies suffix used for library paths. For AMD64, + usually 64 is used as prefix. Default: empty. + Setting to 64 results in: $CMAKE_INSTALL_PREFIX/lib64 -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features +For distributors: ================= +CMake supports the DESTDIR variable during make install, this +might be helpful to install into a temporary directory during +package creation - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. +$ make install DESTDIR=mytmp_package_dir - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. - Modified: freepv/branches/branch_leonox/README =================================================================== --- freepv/branches/branch_leonox/README 2008-03-02 22:48:51 UTC (rev 135) +++ freepv/branches/branch_leonox/README 2008-03-02 23:06:34 UTC (rev 136) @@ -12,3 +12,19 @@ libxmu-dev x11proto-xf86vidmode-dev libxxf86vm-dev + +fedora f8: + +firefox-devel +libjpeg-devel +zlib-devel +cmake +pkgconfig +gcc-c++ +libXxf86vm-devel +freeglut-devel +libXt-devel +libXmu-devel +libxml2-devel +libpng-devel + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |