You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(34) |
Oct
(55) |
Nov
(1) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(3) |
Jun
(9) |
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(2) |
Nov
|
Dec
|
2008 |
Jan
|
Feb
(4) |
Mar
(13) |
Apr
(1) |
May
(3) |
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
(3) |
Dec
|
2009 |
Jan
(1) |
Feb
(4) |
Mar
(1) |
Apr
|
May
(4) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <da...@us...> - 2006-09-26 13:35:44
|
Revision: 13 http://svn.sourceforge.net/freepv/?rev=13&view=rev Author: dangelo Date: 2006-09-26 06:35:31 -0700 (Tue, 26 Sep 2006) Log Message: ----------- added glut platform by thomas. fixed timer event handling and added mouse wheel. provide events with mouse button states. disabled precompiled headers. Added Paths: ----------- freepv/trunk/src/freepv-glut/ freepv/trunk/src/freepv-glut/Makefile.am freepv/trunk/src/freepv-glut/freepv-glut.cpp freepv/trunk/src/freepv-glut/freepv-glut.vcproj freepv/trunk/src/freepv-glut/glut_platform.cpp freepv/trunk/src/freepv-glut/glut_platform.h freepv/trunk/src/freepv-glut/main.cpp Added: freepv/trunk/src/freepv-glut/Makefile.am =================================================================== --- freepv/trunk/src/freepv-glut/Makefile.am (rev 0) +++ freepv/trunk/src/freepv-glut/Makefile.am 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,9 @@ +AM_CPPFLAGS = -I$(top_srcdir)/src $(JPEG_FLAGS) $(QUICKTIME_CFLAGS) +AM_CXXFLAGS = $(GL_CFLAGS) +AM_LDFLAGS = $(GL_LIBS) -lXxf86vm $(LIB_JPEG) $(QUICKTIME_LIBS) +INCLUDES = $(all_includes) +METASOURCES = AUTO +bin_PROGRAMS = freepv-glut +freepv_glx_SOURCES = glut_platform.cpp freepv-glut.cpp glut_platform.h +noinst_HEADERS = glut_platform.h +freepv_glx_LDADD = $(top_builddir)/src/libfreepv/libfreepv.a Added: freepv/trunk/src/freepv-glut/freepv-glut.cpp =================================================================== --- freepv/trunk/src/freepv-glut/freepv-glut.cpp (rev 0) +++ freepv/trunk/src/freepv-glut/freepv-glut.cpp 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,95 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Thomas Rauscher <t.r...@si...> + * Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + * 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. + */ + + + +#ifdef _WIN32 +#define FREEGLUT_STATIC +#endif + +#include <GL/freeglut.h> + +#include "glut_platform.h" +#include <libfreepv/PanoViewer.h> + +GLUTPlatformStandalone * platformptr; + +void keyCallback(unsigned char key,int x, int y) { + platformptr->glutKeyboardCallback(key,x,y); +} + +void mouseCallback(int button, int state,int x, int y) { + platformptr->glutMouseCallback(button,state,x,y); +} + +void scrollWheelCallback(int button, int state,int x, int y) { + platformptr->glutScrollWheelCallback(button,state,x,y); +} + +void displayCallback() { + platformptr->glutDisplayCallback(); +} + +void mouseMotionCallback(int x, int y) { + platformptr->glutMouseMotionCallback(x,y); +} + +void idleCallback() { + platformptr->glutIdleCallback(); +} + +void timerCallback(int id) { + platformptr->glutOnTimerCallback(); +} + +void reshapeCallback(int width, int height) { + platformptr->glutReshapeCallback(width, height); +} + +int main(int argc,char * argv[]) +{ + GLUTPlatformStandalone platform=GLUTPlatformStandalone(argc,argv); + platformptr=&platform; + fprintf(stderr,"before processing events\n"); + + // setup viewer + PanoViewer viewer; + char ** argv1 = argv +1; + Parameters para(argc-1, argv1); + viewer.init(platform, para); + // run event loop + + glutDisplayFunc(displayCallback); + glutKeyboardFunc(keyCallback); + glutMouseFunc(mouseCallback); + glutMotionFunc(mouseMotionCallback); + glutMouseWheelFunc(scrollWheelCallback); +// glutTimerFunc(10,timerCallback,0); + glutIdleFunc (idleCallback); + glutReshapeFunc(reshapeCallback); + glutMainLoop(); + return 0; +} + Property changes on: freepv/trunk/src/freepv-glut/freepv-glut.cpp ___________________________________________________________________ Name: svn:keywords + Id Added: freepv/trunk/src/freepv-glut/freepv-glut.vcproj =================================================================== --- freepv/trunk/src/freepv-glut/freepv-glut.vcproj (rev 0) +++ freepv/trunk/src/freepv-glut/freepv-glut.vcproj 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="freepv-glut" + ProjectGUID="{23385793-E560-4144-932B-5CDE0351A170}" + RootNamespace="freepvglut" + Keyword="Win32Proj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories=""..\..\..\..\..\..\lib\freeglut-2.4.0\include";.." + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="1" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="kernel32.lib $(NOINHERIT)" + LinkIncremental="2" + AdditionalLibraryDirectories="" + GenerateDebugInformation="TRUE" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + WholeProgramOptimization="TRUE"> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=""..\..\..\..\..\..\lib\freeglut-2.4.0\include";.." + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="0" + UsePrecompiledHeader="2" + WarningLevel="3" + Detect64BitPortabilityProblems="TRUE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="kernel32.lib $(NoInherit)" + LinkIncremental="1" + GenerateDebugInformation="TRUE" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + <ProjectReference + ReferencedProjectIdentifier="{9437C68F-BD57-488D-98A9-FAC11DD49DE0}" + Name="libfreepv"/> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> + <File + RelativePath=".\freepv-glut.cpp"> + </File> + <File + RelativePath=".\glut_platform.cpp"> + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc;xsd" + UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> + <File + RelativePath=".\glut_platform.h"> + </File> + <File + RelativePath=".\stdafx.h"> + </File> + </Filter> + <Filter + Name="Resource Files" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> + </Filter> + <File + RelativePath=".\ReadMe.txt"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> Added: freepv/trunk/src/freepv-glut/glut_platform.cpp =================================================================== --- freepv/trunk/src/freepv-glut/glut_platform.cpp (rev 0) +++ freepv/trunk/src/freepv-glut/glut_platform.cpp 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,291 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Thomas Rauscher <t.r...@si...> + * Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + * 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. + */ + +#ifdef _WIN32 +#define FREEGLUT_STATIC +#endif + +#include <GL/freeglut.h> + +#include "glut_platform.h" + +// prototype for timer callback function +void timerCallback(int id); + +#ifdef _WIN32 +// return a time in milliseconds since some fixed date (usually the start of freepv) +static unsigned long +getTime() +{ + long long unsigned currTime; + long long unsigned deltaTime; + static long long unsigned oldTime = 0; + + FILETIME ft; + SYSTEMTIME st; + + GetSystemTime(&st); // gets current time + SystemTimeToFileTime(&st, &ft); // converts to file time format + + currTime = ft.dwHighDateTime * 4294967295LL + ft.dwLowDateTime; + + if (oldTime == 0) { + oldTime = currTime; + } + + deltaTime = currTime - oldTime; + return (unsigned long)(deltaTime / 10000); +} +#endif + +#ifdef unix +static unsigned long getTime() +{ + long long unsigned currTime; + long long unsigned deltaTime; + static long long unsigned oldTime = 0; + + struct timeval tv; + + gettimeofday(&tv, 0); + + currTime = tv.tv_sec * 1000000LL + tv.tv_usec; + + if (oldTime == 0) { + oldTime = currTime; + } + deltaTime = currTime - oldTime; + return (unsigned long)(deltaTime / 1000); +} +#endif + +GLUTPlatformStandalone::GLUTPlatformStandalone(int argc, char ** argv) +{ + m_running = true; + m_exitcode = 0; + /* default to fullscreen */ + m_glwin.fs = false; + + glutInit(&argc, argv); + + if (!createGLWindow("freepv", 640, 480, 24, m_glwin.fs)) + { + fprintf(stderr, "creation of GL window failed, exiting\n"); + m_running = false; + m_exitcode = 1; + } +} + +bool GLUTPlatformStandalone::startDownloadURL(const std::string & url) +{ + FILE * f; + f = fopen(url.c_str(),"rb"); + if (!f) + return false; + if (fseek(f, 0, SEEK_END) != 0 ) + return false; + size_t sz = ftell(f); + if (fseek(f, 0, SEEK_SET) != 0 ) + rewind(f); + void * buffer=malloc(sz); +// void * buffer = m_eventListener->onAllocateDownloadBuffer(sz); + size_t readsz = fread(buffer, 1, sz, f); + m_eventListener->onDownloadComplete( buffer, readsz ); + return true; +} + +const std::string & GLUTPlatformStandalone::currentDownloadURL() { + return ""; +} + +bool GLUTPlatformStandalone::startDownloadURLToFile(const std::string & url) +{ + m_eventListener->onDownloadComplete( url ); + return true; +} + + +void GLUTPlatformStandalone::quit(int ret) +{ + m_running = false; + m_exitcode = ret; +} + + +void GLUTPlatform::glutDisplayCallback(void) { + // processing a timer event always enforces a redraw + unsigned long t = getTime(); + m_eventListener->onTimer(t); +} + +void GLUTPlatform::glutReshapeCallback(int width, int height) +{ + m_eventListener->onResize(FPV::Size2D(width, height)); +} + +/* TODO: implement special keys (using glutSpecialFunc callback) +void GLUTPlatform::glutScrollCallback(unsigned char key,int x, int y) { + KeyEvent kev; + // TODO: need to translate to keysyms here + kev.keysym=key; + kev.down = true; + // TODO: add mouse buttons and modifier keys here (shift/ctrl/alt/meta etc) + kev.modifiers = 0; + m_eventListener->onKeyEvent(kev); +} +*/ + +void GLUTPlatform::glutKeyboardCallback(unsigned char key,int x, int y) { + KeyEvent kev; + // TODO: need to translate to keysyms here + kev.keysym=key; + kev.down = true; + // TODO: add mouse buttons and modifier keys here (shift/ctrl/alt/meta etc) + kev.modifiers = 0; + m_eventListener->onKeyEvent(kev); +} + +void GLUTPlatform::glutMouseCallback(int button, int state,int x, int y) { + MouseEvent mev; + printf("glutMouseCallback, button %d, state %d, pos: %d, %d\n", button, state, x, y); + mev.pos.x=x; + mev.pos.y=y; + int mask; + if (button==GLUT_LEFT_BUTTON) { + mev.buttonNr=1; + mask = BUTTON1_MASK; + } else if (button==GLUT_RIGHT_BUTTON) { + mev.buttonNr=3; + mask = BUTTON3_MASK; + } else if (button==GLUT_MIDDLE_BUTTON) { + mev.buttonNr=2; + mask = BUTTON2_MASK; + } else { + // unknown button, ignore + return; + } + if (state == GLUT_DOWN) { + mev.down=true; + mev.released=false; + m_modifiers |= mask; + } else { + mev.down=false; + mev.released=true; + m_modifiers &= ~mask; + } + + mev.modifiers = m_modifiers; + m_eventListener->onMouseEvent(mev); +} + + +void GLUTPlatform::glutScrollWheelCallback(int button, int state,int x, int y) +{ + MouseEvent mev; + printf("glutScrollWheelCallback, button %d, state %d, pos: %d, %d\n", button, state, x, y); + mev.pos.x=x; + mev.pos.y=y; + mev.modifiers = m_modifiers; + mev.down=true; + mev.released=false; + + if (state == 1) { + // up + mev.buttonNr = 4; + } else { + // down + mev.buttonNr = 5; + } + m_eventListener->onMouseEvent(mev); +} + +void GLUTPlatform::glutMouseMotionCallback(int x, int y) { + MouseEvent mev; + + mev.buttonNr=0; + mev.down=false; + mev.modifiers=m_modifiers; + mev.pos.x=x; + mev.pos.y=y; + mev.released=false; + mev.down=false; + m_eventListener->onMouseEvent(mev); +} + +void GLUTPlatform::glutIdleCallback(void) { + // force glut rendering + glutPostRedisplay(); +} + +// currently unused, render as fast as possible +void GLUTPlatform::glutOnTimerCallback(void) { + // call timer function, which does the animation and other stuff. + unsigned long t = getTime(); + printf("glutOnTimerCallback, t= %d\n", t); + m_eventListener->onTimer(t); + // restart timer + glutTimerFunc(10,timerCallback,0); +} + +void GLUTPlatform::ProcessEvents(void) +{ + /* the event loop */ +// glutDisplayFunc(renderScene); + glutMainLoop(); +} + +/** swap the gl buffers */ +void GLUTPlatform::glSwapBuffers() +{ +// glutSwapBuffers(m_glwin.dpy, m_glwin.win); + glutSwapBuffers(); +} + +/* this function creates our window and sets it up properly */ +/* FIXME: bits is currently unused */ +bool GLUTPlatformStandalone::createGLWindow(char* title, + int width, int height, int bits, + bool fullscreenflag) +{ + glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); + glutInitWindowPosition(100,100); + glutInitWindowSize(width,height); + glutCreateWindow(title); + return true; +} + +/** make the drawing surface current */ +void GLUTPlatformStandalone::glMakeCurrent() +{ +// glXMakeCurrent(m_glwin.dpy, m_glwin.win, m_glwin.ctx); +} + + + +/* function to release/destroy our resources and restoring the old desktop */ +void GLUTPlatformStandalone::killGLWindow() +{ +} + Property changes on: freepv/trunk/src/freepv-glut/glut_platform.cpp ___________________________________________________________________ Name: svn:keywords + Id Added: freepv/trunk/src/freepv-glut/glut_platform.h =================================================================== --- freepv/trunk/src/freepv-glut/glut_platform.h (rev 0) +++ freepv/trunk/src/freepv-glut/glut_platform.h 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,140 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Thomas Rauscher <t.r...@si...> + * Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + * 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. + */ + +#ifndef FPV_GLUT_PLATFORM +#define FPV_GLUT_PLATFORM + +#include <libfreepv/Platform.h> + +#include <stdio.h> +#include <stdlib.h> + + +using namespace FPV; + +/** base GLX platform for unix plugin and standalone executable */ +class GLUTPlatform : public Platform +{ +public: + + GLUTPlatform() + : m_timerPeriod(0), m_modifiers(0) + { + } + + /** start the timer, fires each \p delay milliseconds */ + virtual void startTimer(int delay) + { + m_timerPeriod = delay; + }; + + /** stop the timer */ + virtual void stopTimer() + { + m_timerPeriod = 0; + }; + + /** methode called by by the GLUT display callback */ + virtual void glutDisplayCallback(void); + /** methode called by by the GLUT keyboard callback */ + virtual void glutKeyboardCallback(unsigned char key,int x, int y); + /** methode called by by the GLUT mouse callback */ + virtual void glutMouseCallback(int button, int state,int x, int y); + /** method called by GLUT mouse wheel callback */ + virtual void glutScrollWheelCallback(int button, int state, int x, int y); + /** methode called by by the GLUT mousemotion callback */ + virtual void glutMouseMotionCallback(int x, int y); + /** methode called by by the GLUT idle callback */ + virtual void glutIdleCallback(void); + /** methode called by by the GLUT timer callback */ + virtual void glutOnTimerCallback(void); + /** method called by GLUT reshape callback */ + virtual void glutReshapeCallback(int width, int height); + + /** starts the event loop. + * This function will only return if the window is closed + * or quit() has been called + */ + virtual void ProcessEvents(void); + + /** swap the gl buffers */ + virtual void glSwapBuffers(); + +protected: + /* stuff about our window grouped together */ + typedef struct { + int screen; + bool fs; + int x, y; + unsigned int width, height; + unsigned int depth; + } GLWindow; + + GLWindow m_glwin; + int m_timerPeriod; + /// current state of modifiers (mouse buttons, shift keys etc), see ModifierType + int m_modifiers; +}; + +/** base GLUT platform for standalone executable */ +class GLUTPlatformStandalone : public GLUTPlatform +{ + +public: + /** construct a glut platform for standalone usage. + * + * This creates and initialises the opengl window, and sets + * up the event handler + */ + GLUTPlatformStandalone(int argc, char ** argv); + + /** Start file download (just reads the file from disk...) + */ + bool startDownloadURL(const std::string & url); + + bool startDownloadURLToFile(const std::string & url); + + virtual const std::string & GLUTPlatformStandalone::currentDownloadURL(); + + /** make the drawing surface current */ + virtual void glMakeCurrent(); + + + virtual void quit(int ret); + +protected: + + bool createGLWindow(char* title, int width, int height, int bits, + bool fullscreenflag); + + /* function to release/destroy our resources and restoring the old desktop */ + void killGLWindow(); + + bool m_running; + int m_exitcode; + +}; + +#endif Property changes on: freepv/trunk/src/freepv-glut/glut_platform.h ___________________________________________________________________ Name: svn:keywords + Id Added: freepv/trunk/src/freepv-glut/main.cpp =================================================================== --- freepv/trunk/src/freepv-glut/main.cpp (rev 0) +++ freepv/trunk/src/freepv-glut/main.cpp 2006-09-26 13:35:31 UTC (rev 13) @@ -0,0 +1,43 @@ +/* + * This file is part of the freepv panoramic viewer. + * + * Author: Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + * 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 "glut_platform.h" + +#include <libfreepv/PanoViewer.h> + +using namespace FPV; + +int main(int argc, char **argv) +{ + GLUTPlatformStandalone platform(argc, argv); + fprintf(stderr,"before processing events\n"); + + // setup viewer + PanoViewer viewer; + char ** argv1 = argv +1; + Parameters para(argc-1, argv1); + viewer.init(platform, para); + // run event loop + platform.ProcessEvents(); + return 0; +} Property changes on: freepv/trunk/src/freepv-glut/main.cpp ___________________________________________________________________ Name: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2006-09-16 21:00:19
|
Revision: 12 http://svn.sourceforge.net/freepv/?rev=12&view=rev Author: dangelo Date: 2006-09-16 14:00:14 -0700 (Sat, 16 Sep 2006) Log Message: ----------- updated configure script Modified Paths: -------------- freepv/trunk/configure.in freepv/trunk/m4/ax_opengl.m4 Modified: freepv/trunk/configure.in =================================================================== --- freepv/trunk/configure.in 2006-09-16 20:58:21 UTC (rev 11) +++ freepv/trunk/configure.in 2006-09-16 21:00:14 UTC (rev 12) @@ -5,8 +5,22 @@ AC_LANG_CPLUSPLUS AC_PROG_CXX +AC_LIBTOOL_DLOPEN AM_PROG_LIBTOOL +dnl debugging options +AC_ARG_ENABLE([debug], + AC_HELP_STRING([--enable-debug], + [enable debugging output (default=no).]), + [enable_debug=$enableval], + [enable_debug=no]) + +if test "x$enable_debug" != xno; then + CFLAGS="$CFLAGS -g -DDEBUG" + CXXFLAGS="$CXXFLAGS -g -DDEBUG" +fi + + AX_CHECK_JPEG if test "x$have_jpeg" != xyes; then AC_MSG_ERROR([ @@ -39,5 +53,56 @@ PKG_PROG_PKG_CONFIG PKG_CHECK_MODULES([QUICKTIME], [libquicktime]) +PKG_CHECK_MODULES([GTK2], [gtk+-2.0]) -AC_OUTPUT(Makefile src/Makefile src/libfreepv/Makefile src/freepv-glx/Makefile) +# Checks for libraries. + +# gecko sdk check from mplayerplug-in +# +#tell us where gecko-sdk is, try to find if not provided + +AC_ARG_WITH([gecko-sdk],[ --with-gecko-sdk=<path> prefix of gecko-sdk installation], +[GECKO_SDK_PREFIX=$with_gecko_sdk +AC_SUBST(GECKO_SDK_PREFIX) +if test -d ${GECKO_SDK_PREFIX}/xpcom/include; then + MOZPLUG_CFLAGS="-I${GECKO_SDK_PREFIX} -I${GECKO_SDK_PREFIX}/xpcom/include -I${GECKO_SDK_PREFIX}/nspr/include -I${GECKO_SDK_PREFIX}/string/include -I${GECKO_SDK_PREFIX}/plugin/include -I${GECKO_SDK_PREFIX}/java/include -DGECKOSDK_ENABLED" + GECKO_DEFINES="-DXPCOM_GLUE -DMOZILLA_STRICT_API" + AC_SUBST(GECKO_DEFINES) +else + echo "Using new (v1.7+) gecko-sdk" + MOZPLUG_CFLAGS="-I${GECKO_SDK_PREFIX} -I${GECKO_SDK_PREFIX}/include" + GECKO_DEFINES="-DXPCOM_GLUE -DMOZILLA_STRICT_API" + AC_SUBST(GECKO_DEFINES) +fi +AC_ARG_ENABLE(rpath, + AC_HELP_STRING([--enable-rpath], [Add gecko-sdk bin and lib directories to the rpath]), + [if test "$enableval" = ""; then use_rpath=yes; else use_rpath=$enableval; fi], [use_rpath=no]) + +if test "$use_rpath" = "yes"; then + LDFLAGS="$LDFLAGS -Wl,-R${GECKO_SDK_PREFIX}/bin:${GECKO_SDK_PREFIX}/lib" +fi + + +],[ + AC_MSG_NOTICE([Determining mozilla/firefox packages to build against]) + PKG_CHECK_MODULES(MOZPLUG,[mozilla-plugin],[AC_SUBST(MOZPLUG_CFLAGS) MOZPLUG_CFLAGS="${MOZPLUG_CFLAGS} -I`$PKG_CONFIG --variable=includedir mozilla-plugin`"],[AC_MSG_WARN([mozilla-plugin not found])]) + + if test "$MOZPLUG_CFLAGS" = ""; then + PKG_CHECK_MODULES(MOZPLUG,[firefox-plugin],[AC_SUBST(MOZPLUG_CFLAGS) MOZPLUG_CFLAGS="${MOZPLUG_CFLAGS} -I`$PKG_CONFIG --variable=includedir firefox-plugin`"],[AC_MSG_WARN([firefox-plugin not found])]) + fi + if test "$MOZPLUG_CFLAGS" = ""; then + PKG_CHECK_MODULES(MOZPLUG,[seamonkey-plugin],[AC_SUBST(MOZPLUG_CFLAGS) MOZPLUG_CFLAGS="${MOZPLUG_CFLAGS} -I`$PKG_CONFIG --variable=includedir seamonkey-plugin`"],[AC_MSG_WARN([seamonkey-plugin not found])]) + fi + if test "$MOZPLUG_CFLAGS" = ""; then + PKG_CHECK_MODULES(MOZPLUG,[xulrunner-plugin],[AC_SUBST(MOZPLUG_CFLAGS) MOZPLUG_CFLAGS="${MOZPLUG_CFLAGS} -I`$PKG_CONFIG --variable=includedir xulrunner-plugin`"],[AC_MSG_WARN([xulrunner-plugin not found])]) + fi + + if test "$MOZPLUG_CFLAGS" = ""; then + AC_MSG_ERROR([Unable to find mozilla or firefox development files]) + fi + ] +) + + +AC_OUTPUT(Makefile src/Makefile src/libfreepv/Makefile src/freepv-glx/Makefile src/libfreepv/glutfont/Makefile) +dnl AC_OUTPUT(Makefile src/Makefile src/libfreepv/Makefile src/freepv-glx/Makefile src/freepv-mozilla/Makefile src/pluginmoz/Makefile src/plugin_simple/Makefile src/libfreepv/glutfont/Makefile) Modified: freepv/trunk/m4/ax_opengl.m4 =================================================================== --- freepv/trunk/m4/ax_opengl.m4 2006-09-16 20:58:21 UTC (rev 11) +++ freepv/trunk/m4/ax_opengl.m4 2006-09-16 21:00:14 UTC (rev 12) @@ -49,10 +49,10 @@ AC_SEARCH_LIBS(glAccum, $GL_search_list, have_GL=yes, have_GL=no) AC_SEARCH_LIBS(gluBeginCurve, $GLU_search_list, have_GLU=yes, have_GLU=no) AC_SEARCH_LIBS(glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no) - AC_SEARCH_LIBS(glutInit, glut, have_glut=yes, have_glut=no) + dnl AC_SEARCH_LIBS(glutInit, glut, have_glut=yes, have_glut=no) + have_glut=no - # Restore pretty messages. exec AC_FD_MSG>&8 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2006-09-16 20:58:25
|
Revision: 11 http://svn.sourceforge.net/freepv/?rev=11&view=rev Author: dangelo Date: 2006-09-16 13:58:21 -0700 (Sat, 16 Sep 2006) Log Message: ----------- removed Removed Paths: ------------- freepv/trunk/src/libfreepv/glutfont/Makefile.in Deleted: freepv/trunk/src/libfreepv/glutfont/Makefile.in =================================================================== --- freepv/trunk/src/libfreepv/glutfont/Makefile.in 2006-09-16 20:57:15 UTC (rev 10) +++ freepv/trunk/src/libfreepv/glutfont/Makefile.in 2006-09-16 20:58:21 UTC (rev 11) @@ -1,467 +0,0 @@ -# Makefile.in generated by automake 1.7.9 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_triplet = @host@ -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GECKO_DEFINES = @GECKO_DEFINES@ -GECKO_SDK_PREFIX = @GECKO_SDK_PREFIX@ -GL_CFLAGS = @GL_CFLAGS@ -GL_LIBS = @GL_LIBS@ -GTK2_CFLAGS = @GTK2_CFLAGS@ -GTK2_LIBS = @GTK2_LIBS@ -HasJPEG_FALSE = @HasJPEG_FALSE@ -HasJPEG_TRUE = @HasJPEG_TRUE@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -JPEG_FLAGS = @JPEG_FLAGS@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIB_JPEG = @LIB_JPEG@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MOZPLUG_CFLAGS = @MOZPLUG_CFLAGS@ -MOZPLUG_LIBS = @MOZPLUG_LIBS@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -QUICKTIME_CFLAGS = @QUICKTIME_CFLAGS@ -QUICKTIME_LIBS = @QUICKTIME_LIBS@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -INCLUDES = $(all_includes) -METASOURCES = AUTO -lib_LIBRARIES = libglutfont.a -libglutfont_a_SOURCES = freeglut_font.c freeglut_font_data.c \ - freeglut_glutfont_definitions.c - -noinst_HEADERS = freeglut_font.h -subdir = src/libfreepv/glutfont -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(lib_LIBRARIES) - -libglutfont_a_AR = $(AR) cru -libglutfont_a_LIBADD = -am_libglutfont_a_OBJECTS = freeglut_font.$(OBJEXT) \ - freeglut_font_data.$(OBJEXT) \ - freeglut_glutfont_definitions.$(OBJEXT) -libglutfont_a_OBJECTS = $(am_libglutfont_a_OBJECTS) - -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/freeglut_font.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/freeglut_font_data.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/freeglut_glutfont_definitions.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ - $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DIST_SOURCES = $(libglutfont_a_SOURCES) -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.in Makefile.am -SOURCES = $(libglutfont_a_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/libfreepv/glutfont/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -libLIBRARIES_INSTALL = $(INSTALL_DATA) -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(RANLIB) $(DESTDIR)$(libdir)/$$p"; \ - $(RANLIB) $(DESTDIR)$(libdir)/$$p; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(libdir)/$$p"; \ - rm -f $(DESTDIR)$(libdir)/$$p; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) -libglutfont.a: $(libglutfont_a_OBJECTS) $(libglutfont_a_DEPENDENCIES) - -rm -f libglutfont.a - $(libglutfont_a_AR) libglutfont.a $(libglutfont_a_OBJECTS) $(libglutfont_a_LIBADD) - $(RANLIB) libglutfont.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_font.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_font_data.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_glutfont_definitions.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCC_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCC_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` - -.c.lo: -@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ -@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCC_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -CTAGS = ctags -CTAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = ../../.. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am \ - install-libLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ - uninstall-libLIBRARIES - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2006-09-16 20:57:51
|
Revision: 10 http://svn.sourceforge.net/freepv/?rev=10&view=rev Author: dangelo Date: 2006-09-16 13:57:15 -0700 (Sat, 16 Sep 2006) Log Message: ----------- added display of text messages, using code borrowed from freeglut. Modified Paths: -------------- freepv/trunk/src/libfreepv/Controller.h freepv/trunk/src/libfreepv/Image.cpp freepv/trunk/src/libfreepv/JpegReader.cpp freepv/trunk/src/libfreepv/Makefile.am freepv/trunk/src/libfreepv/OpenGLRenderer.cpp freepv/trunk/src/libfreepv/PanoViewer.cpp freepv/trunk/src/libfreepv/PanoViewer.h freepv/trunk/src/libfreepv/Platform.h freepv/trunk/src/libfreepv/QTVRDecoder.cpp freepv/trunk/src/libfreepv/Scene.cpp freepv/trunk/src/libfreepv/Scene.h freepv/trunk/src/libfreepv/utils.cpp freepv/trunk/src/libfreepv/utils.h Added Paths: ----------- freepv/trunk/src/libfreepv/glutfont/ freepv/trunk/src/libfreepv/glutfont/Makefile.am freepv/trunk/src/libfreepv/glutfont/Makefile.in freepv/trunk/src/libfreepv/glutfont/freeglut_font.c freepv/trunk/src/libfreepv/glutfont/freeglut_font.h freepv/trunk/src/libfreepv/glutfont/freeglut_font_data.c freepv/trunk/src/libfreepv/glutfont/freeglut_glutfont_definitions.c Property Changed: ---------------- freepv/trunk/src/libfreepv/Controller.h freepv/trunk/src/libfreepv/FPV_keysyms.h freepv/trunk/src/libfreepv/Image.cpp freepv/trunk/src/libfreepv/Image.h freepv/trunk/src/libfreepv/JpegReader.cpp freepv/trunk/src/libfreepv/JpegReader.h freepv/trunk/src/libfreepv/OpenGLRenderer.cpp freepv/trunk/src/libfreepv/OpenGLRenderer.h freepv/trunk/src/libfreepv/PanoViewer.cpp freepv/trunk/src/libfreepv/PanoViewer.h freepv/trunk/src/libfreepv/Parameters.cpp freepv/trunk/src/libfreepv/Parameters.h freepv/trunk/src/libfreepv/Platform.cpp freepv/trunk/src/libfreepv/Platform.h freepv/trunk/src/libfreepv/QTVRDecoder.cpp freepv/trunk/src/libfreepv/QTVRDecoder.h freepv/trunk/src/libfreepv/Renderer.h freepv/trunk/src/libfreepv/Scene.cpp freepv/trunk/src/libfreepv/Scene.h freepv/trunk/src/libfreepv/utils.cpp freepv/trunk/src/libfreepv/utils.h Modified: freepv/trunk/src/libfreepv/Controller.h =================================================================== --- freepv/trunk/src/libfreepv/Controller.h 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Controller.h 2006-09-16 20:57:15 UTC (rev 10) @@ -28,6 +28,7 @@ #include "utils.h" #include "math.h" +#include "FPV_keysyms.h" namespace FPV { @@ -42,8 +43,9 @@ Controller(Scene * scene) : m_scene(scene), m_yawSpeed(0), m_pitchSpeed(0), m_fovSpeed(0), - m_resetFovSpeed(0), - m_setYaw(false), m_setPitch(false), m_setFov(false) + m_setFovOnce(false), + m_setYaw(false), m_setPitch(false), m_setFov(false), + m_keyZoomIn(false), m_keyZoomOut(false) { } /** called when a mouse event happend */ @@ -57,7 +59,6 @@ if (mouse.modifiers & BUTTON1_MASK) { Point2D diff = mouse.pos - m_mouseDownPoint; // calculate speed in degree/s - // TODO: consider window size and fov. m_yawSpeed = (float)diff.y/100.0 * m_scene->getCamera()->fov; m_pitchSpeed = (float)diff.x/100.0f * m_scene->getCamera()->fov; m_setYaw = true; @@ -73,13 +74,15 @@ // if mouse wheel was used, if (mouse.buttonNr == 4 && mouse.down) { + DEBUG_TRACE("mb 4 down"); // calculate speed in a way that if the movement would take 1/2 second, // the visible horizontal length of the image is half of what it is now m_fovSpeed = 2*(2*r2d(atan(0.5*tan(d2r(m_scene->getCamera()->fov)/2.0))) - m_scene->getCamera()->fov); // reset speed on next update m_setFov= true; - m_resetFovSpeed = true; + m_setFovOnce = true; } + if (mouse.buttonNr == 5 && mouse.down) { // m_fovSpeed = 50; // calculate speed in a way that if the movement would take 1/2 second, @@ -87,7 +90,7 @@ m_fovSpeed = 2*(2*r2d(atan(2*(tan(d2r(m_scene->getCamera()->fov)/2.0)))) - m_scene->getCamera()->fov); // reset speed on next update m_setFov= true; - m_resetFovSpeed = true; + m_setFovOnce = true; } } @@ -95,6 +98,20 @@ virtual void onKeyEvent(const KeyEvent & event) { // TODO: implement keyboard control + if (event.keysym == FPV_Shift_L && event.down) { + m_keyZoomIn = true; + }; + if (event.keysym == FPV_Shift_L && !event.down) { + m_keyZoomIn = false; + } + + if (event.keysym == FPV_Control_L && event.down) { + m_keyZoomOut = true; + }; + if (event.keysym == FPV_Control_L && !event.down) { + m_keyZoomOut = false; + } + } /** timer event */ @@ -106,10 +123,18 @@ if (m_setFov) { m_scene->getCamera()->fov_speed = m_fovSpeed; } + if (m_keyZoomIn) { + m_fovSpeed = 2*(2*r2d(atan(0.5*tan(d2r(m_scene->getCamera()->fov)/2.0))) - m_scene->getCamera()->fov); + m_scene->getCamera()->fov_speed = m_fovSpeed; + } + if (m_keyZoomOut) { + m_fovSpeed = 2*(2*r2d(atan(2*(tan(d2r(m_scene->getCamera()->fov)/2.0)))) - m_scene->getCamera()->fov); + m_scene->getCamera()->fov_speed = m_fovSpeed; + } m_scene->getCamera()->onTimer(time_ms); - if (m_resetFovSpeed) { - m_fovSpeed=0; + + if (m_setFovOnce) { m_setFov = false; } } @@ -118,8 +143,9 @@ Scene * m_scene; Point2D m_mouseDownPoint; float m_yawSpeed, m_pitchSpeed, m_fovSpeed; - bool m_resetFovSpeed; + bool m_setFovOnce; bool m_setYaw, m_setPitch, m_setFov; + bool m_keyZoomOut, m_keyZoomIn; }; } // namespace Property changes on: freepv/trunk/src/libfreepv/Controller.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/FPV_keysyms.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/Image.cpp =================================================================== --- freepv/trunk/src/libfreepv/Image.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Image.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -4,7 +4,7 @@ * * Author: Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp,v 1.57 2006/08/19 06:58:51 dangelo Exp $ + * $Id$ * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as Property changes on: freepv/trunk/src/libfreepv/Image.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/Image.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/JpegReader.cpp =================================================================== --- freepv/trunk/src/libfreepv/JpegReader.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/JpegReader.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -4,7 +4,7 @@ * * Author: Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp,v 1.57 2006/08/19 06:58:51 dangelo Exp $ + * $Id$ * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as Property changes on: freepv/trunk/src/libfreepv/JpegReader.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/JpegReader.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/Makefile.am =================================================================== --- freepv/trunk/src/libfreepv/Makefile.am 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Makefile.am 2006-09-16 20:57:15 UTC (rev 10) @@ -6,3 +6,4 @@ OpenGLRenderer.cpp Image.cpp Scene.cpp JpegReader.cpp utils.cpp QTVRDecoder.cpp noinst_HEADERS = OpenGLRenderer.h Controller.h PanoViewer.h Parameters.h \ Platform.h Renderer.h Image.h Scene.h JpegReader.h utils.h QTVRDecoder.h +SUBDIRS = glutfont Modified: freepv/trunk/src/libfreepv/OpenGLRenderer.cpp =================================================================== --- freepv/trunk/src/libfreepv/OpenGLRenderer.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/OpenGLRenderer.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -4,7 +4,7 @@ * * Author: Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp,v 1.57 2006/08/19 06:58:51 dangelo Exp $ + * $Id$ * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as @@ -25,6 +25,7 @@ #include "OpenGLRenderer.h" #include "Scene.h" +#include "glutfont/freeglut_font.h" using namespace FPV; @@ -38,7 +39,33 @@ virtual void render() = 0; }; + /** render data for cubic panoramas */ +class OGL_TextRenderData : public OGL_RenderData +{ +public: + /// Create textures + OGL_TextRenderData(TextElement * txt) + : m_text(txt) + { + } + + void render() + { + // render text in single line + // TODO: support multiple lines of text + glColor3f(1.0, 1.0, 1.0); + glRasterPos2i(20,20); + glutBitmapString(GLUT_BITMAP_HELVETICA_18, reinterpret_cast<const unsigned char *>(m_text->m_text.c_str())); + } + +private: + TextElement * m_text; + +}; + + +/** render data for cubic panoramas */ class OGL_CubicRenderData : public OGL_RenderData { public: @@ -278,13 +305,17 @@ switch(pano.getType()) { case SceneElement::PANO_CUBIC: - // if called multiple times, delete renderdata and create new one. if (pano.m_renderData) { static_cast<OGL_CubicRenderData*>(pano.m_renderData)->update((CubicPano*) &pano); } else { pano.m_renderData = new OGL_CubicRenderData((CubicPano*) &pano); } break; + case SceneElement::TEXT: + if (!pano.m_renderData) { + pano.m_renderData = new OGL_TextRenderData((TextElement*) &pano); + } + break; case SceneElement::PANO_SPHERICAL: default: fprintf(stderr, "OpenGLRender: panoelement %d is not yet implemented\n", @@ -301,68 +332,14 @@ m_platform->glMakeCurrent(); -#if 0 - glViewport(0, 0, m_size.w, m_size.w); /* Reset The Current Viewport And Perspective Transformation */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(45.0f, (GLfloat)m_size.w / m_size.h, 0.1f, 100.0f); - glMatrixMode(GL_MODELVIEW); -#endif - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); gluPerspective(scene.getCamera()->fov, (GLfloat)m_size.w / (GLfloat)m_size.h, 0.1f, 100.0f); glMatrixMode(GL_MODELVIEW); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -#if 0 glLoadIdentity(); - glTranslatef(1.5f, 0.0f, -7.0f); - glRotatef(rotQuad, 1.0f, 0.0f, 0.0f); - glBegin(GL_QUADS); - /* top of cube */ - glColor3f(0.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, -1.0f); - glVertex3f(-1.0f, 1.0f, -1.0f); - glVertex3f(-1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - /* bottom of cube */ - glColor3f(1.0f, 0.5f, 0.0f); - glVertex3f(1.0f, -1.0f, 1.0f); - glVertex3f(-1.0f, -1.0f, 1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(1.0f, -1.0f, -1.0f); - /* front of cube */ - glColor3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(-1.0f, 1.0f, 1.0f); - glVertex3f(-1.0f, -1.0f, 1.0f); - glVertex3f(1.0f, -1.0f, 1.0f); - /* back of cube */ - glColor3f(1.0f, 1.0f, 0.0f); - glVertex3f(-1.0f, 1.0f, -1.0f); - glVertex3f(1.0f, 1.0f, -1.0f); - glVertex3f(1.0f, -1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - /* right side of cube */ - glColor3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, -1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, -1.0f, 1.0f); - glVertex3f(1.0f, -1.0f, -1.0f); - /* left side of cube */ - glColor3f(0.0f, 1.0f, 1.0f); - glVertex3f(-1.0f, 1.0f, 1.0f); - glVertex3f(-1.0f, 1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, -1.0f); - glVertex3f(-1.0f, -1.0f, 1.0f); - glEnd(); - -#endif - - - glLoadIdentity(); // gluLookAt( 0, 0, 0, // camera is always at 0,0,0 // 0, 0, 1, // camera always looks down the z-axis // 0, 1, 0); // up vector @@ -376,9 +353,32 @@ SceneElement * elem = scene.getSceneElement(); if (elem) { - static_cast<OGL_RenderData*>(elem->m_renderData)->render(); + if (!elem->m_renderData) { + init(*elem); + } + // render only if the render data is really available + if (elem->m_renderData) { + static_cast<OGL_RenderData*>(elem->m_renderData)->render(); + } } + // render 2D user interface elements + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0.0, (GLfloat)m_size.w , 0.0, (GLfloat)m_size.h); + glMatrixMode(GL_MODELVIEW); + + elem = scene.getUIElement(); + if (elem) { + if (!elem->m_renderData) { + init(*elem); + } + // render only if the render data is really available + if (elem->m_renderData) { + static_cast<OGL_RenderData*>(elem->m_renderData)->render(); + } + } + glFlush(); m_platform->glSwapBuffers(); }; Property changes on: freepv/trunk/src/libfreepv/OpenGLRenderer.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/OpenGLRenderer.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/PanoViewer.cpp =================================================================== --- freepv/trunk/src/libfreepv/PanoViewer.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/PanoViewer.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -4,7 +4,7 @@ * * Author: Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp,v 1.57 2006/08/19 06:58:51 dangelo Exp $ + * $Id$ * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as @@ -63,25 +63,39 @@ // create viewer structure // TODO: select suitable renderer here m_renderer = new OpenGLRenderer(&platform); + // notice: currently the scene constructs + // its own uiElement, just motify the renderer here. + m_renderer->init(*(m_scene->getUIElement())); // create the new controller m_controller = new Controller(m_scene); + m_scene->setStatusText("initializing"); // TODO: setup loading progress // TODO: check for preview image, once it is supported if (m_param.getSrc().size() != 0) { // check if we are downloading a .mov file if (getExtension(m_param.getSrc()) == "mov") { + FPV_S2S(m_statusMessage, "downloading " << m_param.getSrc()); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_DOWNLOADING_QTVR); if (!platform.startDownloadURLToFile( m_param.getSrc() ) ) { - m_errorMessage = "could not start panorama download"; + FPV_S2S(m_statusMessage, "download failed: " << m_param.getSrc()); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_ERROR); } } else { + FPV_S2S(m_statusMessage, "downloading " << m_param.getSrc()); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_DOWNLOADING_PANO); if (!platform.startDownloadURL( m_param.getSrc() ) ) { - m_errorMessage = "could not start panorama download"; + FPV_S2S(m_statusMessage, "download failed: " << m_param.getSrc()); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_ERROR); } } @@ -89,15 +103,22 @@ // try to download the cube faces if (m_param.getCubeSrc(0).size() > 0) { // download singe pano file + FPV_S2S(m_statusMessage, "downloading: " << m_param.getCubeSrc(0)); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_DOWNLOADING_CUBEFACES); m_currentCubeFaceDownload = 0; if (!platform.startDownloadURL( m_param.getCubeSrc(0) ) ) { - m_errorMessage = "download of first cubeface failed"; + FPV_S2S(m_statusMessage, "download failed: " << m_param.getCubeSrc(0)); + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_ERROR); } return false; } else { - m_errorMessage = "no panorama specified"; + m_statusMessage = "error: no panorama specified"; + m_scene->setStatusText( m_statusMessage ); + redraw(); changeState(STATE_ERROR); } } @@ -167,6 +188,13 @@ void PanoViewer::onDownloadProgress(size_t downloadedBytes) { + if (m_currentDownloadSize) { + FPV_S2S(m_statusMessage, "downloading " << m_platform->currentDownloadURL() << ", received " << downloadedBytes /1024 << " of " << m_currentDownloadSize/1024 << " kB."); + } else { + FPV_S2S(m_statusMessage, "downloading " << m_platform->currentDownloadURL() << ", received " << downloadedBytes/1024 << " kB."); + } + m_scene->setStatusText( m_statusMessage ); + redraw(); fprintf(stderr, "state %d: %d of %d bytes downloaded\n",m_state, downloadedBytes, m_currentDownloadSize); } @@ -182,17 +210,21 @@ switch (m_state) { case STATE_DOWNLOADING_PREVIEW: // TODO: setup preview rendering - changeState(STATE_DOWNLOADING_PANO); m_platform->startDownloadURL( m_param.getSrc() ); break; case STATE_DOWNLOADING_PANO: + /* if (sz != m_currentDownloadSize) { m_errorMessage = "panorama could not be downloaded completely"; changeState(STATE_ERROR); } + */ // TODO: create panorama object and set to renderer - + FPV_S2S(m_statusMessage, "equirectangular panorams currently not supported"); + m_scene->setStatusText( m_statusMessage ); + redraw(); + changeState(STATE_ERROR); delete[] m_currentDownload; m_currentDownload = 0; m_currentDownloadSize = 0; @@ -202,63 +234,61 @@ if (m_currentCubeFaceDownload == 0) { // we have downloaded the first cube // TODO: Create panorama object (and 5 empty images of the same size) - - Image * img = new Image(); - if (!decodeJPEG((unsigned char *)data, sz, *img)) { - delete img; - delete[] m_currentDownload; - m_currentDownload = 0; - m_errorMessage = "JPEG decoding error: Could not decode front cube face"; - changeState(STATE_ERROR); - } else { - delete[] m_currentDownload; - m_currentDownload = 0; - //img->writePPM("front.ppm"); - m_currentCube = new CubicPano(img->size()); - m_currentCube->setCubeFace((CubicPano::FaceID)m_currentCubeFaceDownload, img); - m_scene->setSceneElement(m_currentCube); - // notify renderer of new cube face - m_renderer->init(*m_currentCube); - } + FPV_S2S(m_statusMessage, "received first cubeface. preparing rendering"); + DEBUG_TRACE(m_statusMessage); + m_scene->setStatusText( m_statusMessage ); + redraw(); + } + { + Image * img = new Image(); + if (!decodeJPEG((unsigned char *)data, sz, *img)) { + delete img; + delete[] m_currentDownload; + m_currentDownload = 0; + FPV_S2S(m_statusMessage, "JPEG decoding error: " << m_platform->currentDownloadURL()); + m_scene->setStatusText( m_statusMessage ); + redraw(); + changeState(STATE_ERROR); } else { - // TODO: add new cubeface to model - Image * img = new Image(); - if (!decodeJPEG((unsigned char *)data, sz, *img)) { - delete img; - delete[] m_currentDownload; - m_currentDownload = 0; - m_errorMessage = "JPEG decoding error: Could not decode cube face"; - changeState(STATE_ERROR); - } else { - delete[] m_currentDownload; - m_currentDownload = 0; - m_currentCube->setCubeFace((CubicPano::FaceID)m_currentCubeFaceDownload, img); - // notify renderer of new cube face - m_renderer->init(*m_currentCube); - } + delete[] m_currentDownload; + m_currentDownload = 0; + //img->writePPM("front.ppm"); + m_currentCube = new CubicPano(img->size()); + m_currentCube->setCubeFace((CubicPano::FaceID)m_currentCubeFaceDownload, img); + m_scene->setSceneElement(m_currentCube); + // notify renderer of new cube face + m_renderer->init(*m_currentCube); } + } m_currentCubeFaceDownload++; - // start download of next cubeface, if required if (m_currentCubeFaceDownload <6){ + FPV_S2S(m_statusMessage, "Starting next cube face download."); + DEBUG_TRACE(m_statusMessage); + m_scene->setStatusText( m_statusMessage ); + redraw(); // more cube faces are waiting if (m_param.getCubeSrc(m_currentCubeFaceDownload).size() > 0) { if (!m_platform->startDownloadURL( m_param.getCubeSrc(m_currentCubeFaceDownload) ) ) { - m_errorMessage = "download of cubeface failed"; + FPV_S2S(m_statusMessage, "download failed: " << m_param.getCubeSrc(m_currentCubeFaceDownload)); + m_scene->setStatusText( m_statusMessage ); changeState(STATE_ERROR); } } else { - m_errorMessage = "not all cube faces specified"; - changeState(STATE_ERROR); + m_statusMessage = "not all cube faces specified"; + DEBUG_TRACE(m_statusMessage); + m_scene->setStatusText( m_statusMessage ); + redraw(); } } else { // start viewing! m_currentCubeFaceDownload = 0; + m_statusMessage = ""; + m_scene->setStatusText(m_statusMessage); changeState(STATE_VIEWING); m_platform->startTimer(10); } - // TODO: redraw scene break; default: break; @@ -274,9 +304,17 @@ case STATE_DOWNLOADING_QTVR: // TODO: create panorama object and set to renderer Image *cubeFaces[6]; + FPV_S2S(m_statusMessage, "Received " << m_platform->currentDownloadURL() << ", decoding QTVR."); + DEBUG_TRACE(m_statusMessage); + m_scene->setStatusText( m_statusMessage ); + redraw(); if (decodeQTVR(filename.c_str(), cubeFaces)) { + m_statusMessage = "Preparing rendering"; + DEBUG_TRACE(m_statusMessage); + m_scene->setStatusText( m_statusMessage ); + redraw(); m_currentCube = new CubicPano(cubeFaces[0]->size()); m_currentCube->setCubeFaces(cubeFaces); m_scene->setSceneElement(m_currentCube); @@ -286,16 +324,21 @@ m_currentDownload = 0; m_currentDownloadSize = 0; m_platform->startTimer(10); + m_statusMessage="viewing"; + m_scene->setStatusText(""); changeState(STATE_VIEWING); } else { m_currentDownload = 0; m_currentDownloadSize = 0; - m_errorMessage = "could not decode QTVR file"; + FPV_S2S(m_statusMessage, "Error during QTVR decoding: " << m_platform->currentDownloadURL() << "."); + m_scene->setStatusText( m_statusMessage ); changeState(STATE_ERROR); + redraw(); } break; default: - m_errorMessage = "internal error: invalid state after downloading to file"; + m_statusMessage = "internal error: invalid state after downloading to file"; + m_scene->setStatusText( m_statusMessage ); changeState(STATE_ERROR); break; } Property changes on: freepv/trunk/src/libfreepv/PanoViewer.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/PanoViewer.h =================================================================== --- freepv/trunk/src/libfreepv/PanoViewer.h 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/PanoViewer.h 2006-09-16 20:57:15 UTC (rev 10) @@ -61,6 +61,9 @@ bool init(Platform & platform, const Parameters & para); + /** set a status text */ + void setStatus(const std::string & str); + // ============================================================= // These function will be called by the platform @@ -116,6 +119,7 @@ protected: + /** an enum of the viewer state. useful to remember * what should be done next in the various callbacks */ @@ -133,12 +137,17 @@ /** internal function to change the state */ void changeState(State state) { - if (state == STATE_ERROR) { - fprintf(stderr, "STATE_ERROR: %s\n", m_errorMessage.c_str()); - } + fprintf(stderr, "state %d: %s\n", state, m_statusMessage.c_str()); m_state = state; } + void redraw() + { + if (m_renderer) { + m_renderer->render(*m_scene); + } + } + /** Note: all changes to state should be done through changeState() */ State m_state; @@ -158,8 +167,8 @@ CubicPano * m_currentCube; int m_currentCubeFaceDownload; - // the error message, if we ended up in STATE_ERROR - std::string m_errorMessage; + // a user visible message describing the current status + std::string m_statusMessage; }; } Property changes on: freepv/trunk/src/libfreepv/PanoViewer.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/Parameters.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/Parameters.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/Platform.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/Platform.h =================================================================== --- freepv/trunk/src/libfreepv/Platform.h 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Platform.h 2006-09-16 20:57:15 UTC (rev 10) @@ -171,17 +171,16 @@ // ================================================= // download events - /** called to notify the viewer about the size - * of the file requested for download - */ - virtual void * onAllocateDownloadBuffer( size_t nBytes ) = 0; - /** notify about the current download progress. * */ virtual void onDownloadProgress(size_t downloadedBytes) = 0; - /** notify about a finished download */ + /** notify about a finished download + * + * Ownership of the \p data buffer is transferred to the + * called function. The buffer should be released using free(). + */ virtual void onDownloadComplete(void * data, size_t downloadedBytes) = 0; /** notify about a finished file download. @@ -262,6 +261,7 @@ */ virtual bool startDownloadURLToFile(const std::string & url) = 0; + virtual const std::string & currentDownloadURL() = 0; protected: Platform(); Property changes on: freepv/trunk/src/libfreepv/Platform.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/QTVRDecoder.cpp =================================================================== --- freepv/trunk/src/libfreepv/QTVRDecoder.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/QTVRDecoder.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -30,19 +30,19 @@ if(!(file = quicktime_open(const_cast<char*>(input), 1, 0))) { - printf("Open failed\n"); + fprintf(stderr,"Open failed\n"); return false; } if(!quicktime_video_tracks(file)) { - printf("No video tracks.\n"); + fprintf(stderr,"No video tracks.\n"); return false; } if(strcmp(quicktime_video_compressor(file, 0), QUICKTIME_JPEG) != 0) { - printf("QTVR cube faces must be compressed with jpeg"); + fprintf(stderr,"QTVR cube faces must be compressed with jpeg"); return false; } @@ -55,7 +55,7 @@ if (new_length != 6) { - printf("QTVR with more than 6 images found"); + fprintf(stderr,"QTVR with more than 6 images found"); return false; } @@ -81,7 +81,7 @@ if (!FPV::decodeJPEG(data, bytes, *(imgs[i]))) { if (data) free(data); - printf("could not decode jpeg"); + fprintf(stderr,"could not decode jpeg"); return false; } } Property changes on: freepv/trunk/src/libfreepv/QTVRDecoder.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/QTVRDecoder.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: freepv/trunk/src/libfreepv/Renderer.h ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/Scene.cpp =================================================================== --- freepv/trunk/src/libfreepv/Scene.cpp 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Scene.cpp 2006-09-16 20:57:15 UTC (rev 10) @@ -4,7 +4,7 @@ * * Author: Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp,v 1.57 2006/08/19 06:58:51 dangelo Exp $ + * $Id$ * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as @@ -27,9 +27,9 @@ using namespace FPV; Scene::Scene() -: m_pano(0) + : m_pano(0) { - + m_ui = new TextElement(""); } Scene::~Scene() @@ -37,6 +37,9 @@ if (m_pano) { delete m_pano; } + if (m_ui) { + delete m_ui; + } } void Scene::setSceneElement(SceneElement * elem) @@ -52,6 +55,16 @@ return m_pano; } +void Scene::setStatusText(const std::string & text) +{ + m_ui->m_text = text; +} + +SceneElement * Scene::getUIElement() +{ + return m_ui; +} + Camera * Scene::getCamera() { return &m_camera; Property changes on: freepv/trunk/src/libfreepv/Scene.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: freepv/trunk/src/libfreepv/Scene.h =================================================================== --- freepv/trunk/src/libfreepv/Scene.h 2006-09-15 21:04:58 UTC (rev 9) +++ freepv/trunk/src/libfreepv/Scene.h 2006-09-16 20:57:15 UTC (rev 10) @@ -110,7 +110,7 @@ { public: /** List of all scene element types */ - enum Type { INVALID, PANO_CUBIC, PANO_SPHERICAL }; + enum Type { INVALID, PANO_CUBIC, PANO_SPHERICAL, TEXT }; SceneElement() : m_renderData(0), m_type(INVALID), m_depth(1) @@ -138,31 +138,6 @@ }; -/** This holds the scene. - * - * A scene consists of a PanoElement and a camera - * - * @TODO: support multiple PanoElements - */ -class Scene -{ - -public: - Scene(); - - virtual ~Scene(); - - void setSceneElement(SceneElement * elem); - - SceneElement * getSceneElement(); - Camera * getCamera(); -private: - /// our single scene element (probably only a pano...) - SceneElement * m_pano; - /// the camera - Camera m_camera; -}; - //=================================================================== // scene elements @@ -242,5 +217,52 @@ Size2D m_size; }; +/** 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 + * user interface element (like a status text line, or a controller) + * + * @TODO: support multiple pano and ui elements + */ +class Scene +{ + +public: + Scene(); + + virtual ~Scene(); + + void setStatusText(const std::string & text); + + void setSceneElement(SceneElement * elem); + SceneElement * getSceneElement(); + +// void setUIElement(SceneElement * elem); + SceneElement * getUIElement(); + Camera * getCamera(); +private: + /// our single scene element (probably only a pano...) + SceneElement * m_pano; + TextElement * m_ui; + /// the camera + Camera m_camera; +}; + + } #endif Property changes on: freepv/trunk/src/libfreepv/Scene.h ___________________________________________________________________ Name: svn:keywords + Id Added: freepv/trunk/src/libfreepv/glutfont/Makefile.am =================================================================== --- freepv/trunk/src/libfreepv/glutfont/Makefile.am (rev 0) +++ freepv/trunk/src/libfreepv/glutfont/Makefile.am 2006-09-16 20:57:15 UTC (rev 10) @@ -0,0 +1,6 @@ +INCLUDES = $(all_includes) +METASOURCES = AUTO +lib_LIBRARIES = libglutfont.a +libglutfont_a_SOURCES = freeglut_font.c freeglut_font_data.c \ + freeglut_glutfont_definitions.c +noinst_HEADERS = freeglut_font.h Added: freepv/trunk/src/libfreepv/glutfont/Makefile.in =================================================================== --- freepv/trunk/src/libfreepv/glutfont/Makefile.in (rev 0) +++ freepv/trunk/src/libfreepv/glutfont/Makefile.in 2006-09-16 20:57:15 UTC (rev 10) @@ -0,0 +1,467 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GECKO_DEFINES = @GECKO_DEFINES@ +GECKO_SDK_PREFIX = @GECKO_SDK_PREFIX@ +GL_CFLAGS = @GL_CFLAGS@ +GL_LIBS = @GL_LIBS@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +HasJPEG_FALSE = @HasJPEG_FALSE@ +HasJPEG_TRUE = @HasJPEG_TRUE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JPEG_FLAGS = @JPEG_FLAGS@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_JPEG = @LIB_JPEG@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MOZPLUG_CFLAGS = @MOZPLUG_CFLAGS@ +MOZPLUG_LIBS = @MOZPLUG_LIBS@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +QUICKTIME_CFLAGS = @QUICKTIME_CFLAGS@ +QUICKTIME_LIBS = @QUICKTIME_LIBS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = $(all_includes) +METASOURCES = AUTO +lib_LIBRARIES = libglutfont.a +libglutfont_a_SOURCES = freeglut_font.c freeglut_font_data.c \ + freeglut_glutfont_definitions.c + +noinst_HEADERS = freeglut_font.h +subdir = src/libfreepv/glutfont +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(lib_LIBRARIES) + +libglutfont_a_AR = $(AR) cru +libglutfont_a_LIBADD = +am_libglutfont_a_OBJECTS = freeglut_font.$(OBJEXT) \ + freeglut_font_data.$(OBJEXT) \ + freeglut_glutfont_definitions.$(OBJEXT) +libglutfont_a_OBJECTS = $(am_libglutfont_a_OBJECTS) + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/freeglut_font.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/freeglut_font_data.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/freeglut_glutfont_definitions.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libglutfont_a_SOURCES) +HEADERS = $(noinst_HEADERS) + +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.in Makefile.am +SOURCES = $(libglutfont_a_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/libfreepv/glutfont/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLIBRARIES_INSTALL = $(INSTALL_DATA) +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(RANLIB) $(DESTDIR)$(libdir)/$$p"; \ + $(RANLIB) $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libdir)/$$p"; \ + rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libglutfont.a: $(libglutfont_a_OBJECTS) $(libglutfont_a_DEPENDENCIES) + -rm -f libglutfont.a + $(libglutfont_a_AR) libglutfont.a $(libglutfont_a_OBJECTS) $(libglutfont_a_LIBADD) + $(RANLIB) libglutfont.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_font.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_font_data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freeglut_glutfont_definitions.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLIBRARIES clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am \ + install-libLIBRARIES install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-libLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Added: freepv/trunk/src/libfreepv/glutfont/freeglut_font.c =================================================================== --- freepv/trunk/src/libfreepv/glutfont/freeglut_font.c (rev 0) +++ freepv/trunk/src/libfreepv/glutfont/freeglut_font.c 2006-09-16 20:57:15 UTC (rev 10) @@ -0,0 +1,227 @@ +/* + * freeglut_font.c + * + * Bitmap and stroke fonts displaying. + * + * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. + * Written by Pawel W. Olszta, <ol...@so...> + * Creation date: Thu Dec 16 1999 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "freeglut_font.h" + +#include <assert.h> + +/* The bitmap font structure */ +typedef struct tagSFG_Font SFG_Font; +struct tagSFG_Font +{ + char* Name; /* The source font name */ + int Quantity; /* Number of chars in font */ + int Height; /* Height of the characters */ + const GLubyte** Characters; /* The characters mapping */ + + float xorig, yorig; /* Relative origin of the character */ +}; + +/* + * TODO BEFORE THE STABLE RELEASE: + * + * Test things out ... + */ + +/* -- IMPORT DECLARATIONS -------------------------------------------------- */ + +/* + * These are the font faces defined in freeglut_font_data.c file: + */ +extern SFG_Font fgFontFixed8x13; +extern SFG_Font fgFontFixed9x15; +extern SFG_Font fgFontHelvetica10; +extern SFG_Font fgFontHelvetica12; +extern SFG_Font fgFontHelvetica18; +extern SFG_Font fgFontTimesRoman10; +extern SFG_Font fgFontTimesRoman24; +//extern SFG_StrokeFont fgStrokeRoman; +//extern SFG_StrokeFont fgStrokeMonoRoman; + + +/* -- PRIVATE FUNCTIONS ---------------------------------------------------- */ + +/* + * Matches a font ID with a SFG_Font structure pointer. + * This was changed to match the GLUT header style. + */ +static SFG_Font* fghFontByID( void* font ) +{ + if( font == GLUT_BITMAP_8_BY_13 ) + return &fgFontFixed8x13; + if( font == GLUT_BITMAP_9_BY_15 ) + return &fgFontFixed9x15; + if( font == GLUT_BITMAP_HELVETICA_10 ) + return &fgFontHelvetica10; + if( font == GLUT_BITMAP_HELVETICA_12 ) + return &fgFontHelvetica12; + if( font == GLUT_BITMAP_HELVETICA_18 ) + return &fgFontHelvetica18; + if( font == GLUT_BITMAP_TIMES_ROMAN_10 ) + return &fgFontTimesRoman10; + if( font == GLUT_BITMAP_TIMES_ROMAN_24 ) + return &fgFontTimesRoman24; + + return 0; +} + + +/* -- INTERFACE FUNCTIONS -------------------------------------------------- */ + +/* + * Draw a bitmap character + */ +void FGAPIENTRY glutBitmapCharacter( void* fontID, int character ) +{ + const GLubyte* face; + SFG_Font* font; + font = fghFontByID( fontID ); + assert (( character >= 1 )&&( character < 256 ) ); + assert ( font ); + + /* + * Find the character we want to draw (???) + */ + face = font->Characters[ character ]; + + glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT ); + glPixelStorei( GL_UNPACK_SWAP_BYTES, GL_FALSE ); + glPixelStorei( GL_UNPACK_LSB_FIRST, GL_FALSE ); + glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); + glPixelStorei( GL_UNPACK_SKIP_ROWS, 0 ); + glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0 ); + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + glBitmap( + face[ 0 ], font->Height, /* The bitmap's width and height */ + font->xorig, font->yorig, /* The origin in the font glyph */ + ( float )( face[ 0 ] ), 0.0, /* The raster advance -- inc. x,y */ + ( face + 1 ) /* The packed bitmap data... */ + ); + glPopClientAttrib( ); +} + +void FGAPIENTRY glutBitmapString( void* fontID, const unsigned char *string ) +{ + unsigned char c; + float x = 0.0f ; + SFG_Font* font; + font = fghFontByID( fontID ); + assert( font ); + if ( !string || ! *string ) + return; + + glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT ); + glPixelStorei( GL_UNPACK_SWAP_BYTES, GL_FALSE ); + glPixelStorei( GL_UNPACK_LSB_FIRST, GL_FALSE ); + glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); + glPixelStorei( GL_UNPACK_SKIP_ROWS, 0 ); + glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0 ); + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + + /* + * Step through the string, drawing each character. + * A newline will simply translate the next character's insertion + * point back to the start of the line and down one line. + */ + while( ( c = *string++) ) + if( c == '\n' ) + { + glBitmap ( 0, 0, 0, 0, -x, (float) -font->Height, NULL ); + x = 0.0f; + } + else /* Not an EOL, draw the bitmap character */ + { + const GLubyte* face = font->Characters[ c ]; + + glBitmap( + face[ 0 ], font->Height, /* Bitmap's width and height */ + font->xorig, font->yorig, /* The origin in the font glyph */ + ( float )( face[ 0 ] ), 0.0, /* The raster advance; inc. x,y */ + ( face + 1 ) /* The packed bitmap data... */ + ); + + x += ( float )( face[ 0 ] ); + } + + glPopClientAttrib( ); +} + +/* + * Returns the width in pixels of a font's character + */ +int FGAPIENTRY glutBitmapWidth( void* fontID, int character ) +{ + SFG_Font* font; + font = fghFontByID( fontID ); + assert( character > 0 && character < 256); + assert( font); + return *( font->Characters[ character ] ); +} + +/* + * Return the width of a string drawn using a bitmap font + */ +int FGAPIENTRY glutBitmapLength( void* fontID, const unsigned char* string ) +{ + unsigned char c; + int length = 0, this_line_length = 0; + SFG_Font* font; + font = fghFontByID( fontID ); + assert( font ); + if ( !string || ! *string ) + return 0; + + while( ( c = *string++) ) + { + if( c != '\n' )/* Not an EOL, increment length of line */ + this_line_length += *( font->Characters[ c ]); + else /* EOL; reset the length of this line */ + { + if( length < this_line_length ) + length = this_line_length; + this_line_length = 0; + } + } + if ( length < this_line_length ) + length = this_line_length; + + return length; +} + +/* + * Returns the height of a bitmap font + */ +int FGAPIENTRY glutBitmapHeight( void* fontID ) +{ + SFG_Font* font; + font = fghFontByID( fontID ); + assert( font); + return font->Height; +} + + +/*** END OF FILE ***/ Added: freepv/trunk/src/libfreepv/glutfont/freeglut_font.h =================================================================== --- freepv/trunk/src/libfreepv/glutfont/freeglut_font.h (rev 0) +++ freepv/trunk/src/libfreepv/glutfont/freeglut_font.h 2006-09-16 20:57:15 UTC (rev 10) @@ -0,0 +1,122 @@ +#ifndef __FREEGLUT_FONT_COPY_H__ +#define __FREEGLUT_FONT_COPY_H__ + +/* + * freeglut_std.h + * + * The GLUT-compatible part of the freeglut library include file + * + * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. + * Written by Pawel W. Olszta, <ol...@so...> + * Creation date: Thu Dec 2 1999 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING... [truncated message content] |