[TeamTalk 229]: [765] vendor: Initial import of liveMaps from integration repository.
tk@edam.speech.cs.cmu.edu
tk at edam.speech.cs.cmu.edu
Sat Sep 22 01:34:13 EDT 2007
An HTML attachment was scrubbed...
URL: http://mailman.srv.cs.cmu.edu/pipermail/teamtalk-developers/attachments/20070922/4e22a0b3/attachment-0001.html
-------------- next part --------------
Added: vendor/liveMaps/current/Makefile
===================================================================
--- vendor/liveMaps/current/Makefile (rev 0)
+++ vendor/liveMaps/current/Makefile 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,98 @@
+# High Level Make file
+
+BASEDIR = ./
+BUILDDIR = $(BASEDIR)/build
+
+include $(BUILDDIR)/Makefile.head
+
+help:
+ $(ECHO) $(PROJECT_STRING)
+ $(ECHO) $(CONTACT_STRING)
+ $(SILENT) cat $(BUILDDIR)/helptext
+ $(ECHO) $(COPYRIGHT_STRING)
+
+all: include lib libshared test example targets cgfile
+
+ifdef INSTALLDIRINC
+ifdef INSTALLDIRLIB
+install: include libexport
+ @echo Installing include files to $(INSTALLDIRINC)
+ $(SILENT) cp include/*.h $(INSTALLDIRINC)
+ @echo Installing library files to $(INSTALLDIRLIB)
+ $(SILENT) cp lib/lib$(FULLARNAME).a $(INSTALLDIRLIB)
+else
+install:
+ @echo Error: INSTALLDIRLIB not defined : Edit makefile.config to set target
+endif
+else
+install:
+ @echo Error: INSTALLDIRINC not defined : Edit makefile.config to set target
+endif
+
+
+lib: libexport force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+libexport:
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+libshared: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+include: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+test: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+example: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+targets: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+cgfile: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+depend: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+clean: force
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+
+# Files are deleted if and only if they exisits
+
+LS01 = $(shell ls include/*.h 2> /dev/null)
+ifneq ($(LS01), )
+cleaninclude:
+ @echo "Removing files from include/"
+ $(SILENT) -$(RM) $(RMFLAGS) $(LS01)
+else
+cleaninclude:
+endif
+
+
+LS02 = $(shell ls lib/*.a lib/*.so 2> /dev/null)
+ifneq ($(LS02), )
+cleanlib:
+ @echo "Removing files from lib/"
+ $(SILENT) -$(RM) $(RMFLAGS) $(LS02)
+else
+cleanlib:
+endif
+
+LS03 = $(filter-out EMPTY, $(filter-out bin/CVS, $(shell ls -d bin/* 2> /dev/null)))
+ifneq ($(LS03), )
+cleanbin:
+ @echo "Removing files from bin/"
+ $(SILENT) -$(RM) $(RMFLAGS) $(LS03)
+else
+cleanbin:
+endif
+
+
+distclean: force cleaninclude cleanlib cleanbin
+ $(SILENT) $(MAKE) $(MFLAGS) -C src $@
+
+force:
Added: vendor/liveMaps/current/Makefile.base
===================================================================
--- vendor/liveMaps/current/Makefile.base (rev 0)
+++ vendor/liveMaps/current/Makefile.base 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1 @@
+BASEDIR := $(BASEDIR)
Added: vendor/liveMaps/current/Makefile.config
===================================================================
--- vendor/liveMaps/current/Makefile.config (rev 0)
+++ vendor/liveMaps/current/Makefile.config 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,26 @@
+PROJECT_STRING = "rCommerce Lab Software: Boeing Release Branch"
+CONTACT_STRING = "Contact: Marc Benjamin Zinck mbz at cmu.edu www.cs.cmu.edu/~mbz"
+COPYRIGHT_STRING = "Copyright 2005-2007 Carnegie Mellon University"
+
+#EXPORTLIBTARGET = rCommerce
+#FULLARNAME = rCommerce
+
+# Specifies the destination for library and header files
+# when make install is used
+INSTALLDIRINC =
+INSTALLDIRLIB =
+
+# Global Include and Library Paths
+GLOBALINCLUDEPATH +=
+
+GLOBALLIBPATH +=
+
+FLUID = $(BASEDIR)/external/fltk/bin/fluid
+
+#CC = gcc-3.3
+#CXX = g++-3.3
+#LD = g++-3.3
+
+CC = gcc-4.1
+CXX = g++-4.1
+LD = g++-4.1
Added: vendor/liveMaps/current/README
===================================================================
--- vendor/liveMaps/current/README (rev 0)
+++ vendor/liveMaps/current/README 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,39 @@
+LiveMaps Release v1320
+
+1) Demo Instructions
+
+ a) Build the source tree
+ % make all
+
+ b) Run the server in demo mode
+ % cd bin
+ % ./liveMapsServer -c 1
+
+ c) Run Viewer in a separate xterm
+ Launch xterm
+ % cd bin
+ % ./liveMapsViewer -P 300:0
+
+ liveMapsServer launches 3 windows with balls bouncing around a map
+ representing map data from from three robots. The three maps
+ are combined in the mapIntegrationServer which exposes a
+ boeing_map_server. A boeing_map_client compatible application
+ can connect to the liveMapsServer and access the aggregate map.
+
+ liveMapsViewer implements a boeing_map_client and displays the
+ aggregate map.
+
+ run liveMapsServer -h and liveMapsViewer -h for more options.
+
+2) Integrating other input into liveMapsServer.
+
+ Source code for liveMaps Server is located /src/modules/liveMaps/liveMapsServer
+
+ Access to external data is provided through the liveMapsClient class.
+ Data from robots or other sources can be included by inheriting
+ from liveMapsClient and implementing the functions init() and processEvents().
+
+ See the liveMapsDemo class for an example.
+
+EOF
+
Added: vendor/liveMaps/current/README.bak
===================================================================
--- vendor/liveMaps/current/README.bak (rev 0)
+++ vendor/liveMaps/current/README.bak 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,39 @@
+LiveMaps Release v1320
+
+1) Demo Instructions
+
+ a) Build the source tree
+ % make all
+
+ b) Run the server in demo mode
+ % cd bin
+ % ./liveMapsServer -c 1
+
+ c) Run Viewer in a separate xterm
+ Launch xterm
+ % cd bin
+ % ./liveMapsViewer -P 300:0
+
+ liveMapsServer launches 3 windows with balls bouncing around a map
+ representing map data from from three robots. The three maps
+ are combined in the mapIntegrationServer which exposes a
+ boeing_map_server. A boeing_map_client compatible application
+ can connect to the liveMapsServer and access the aggregate map.
+
+ liveMapsViewer implements a boeing_map_client and displays the
+ aggregate map.
+
+ run liveMapsServer -h and liveMapsViewer -h for more options.
+
+2) Integrating other input into liveMapsServer.
+
+ Source code for liveMaps Server is located /src/modules/liveMaps/liveMapsServer
+
+ Access to external data is provided through the liveMapsClient class.
+ Data from robots or other sources can be included by inheriting
+ from liveMapsClient and implimenting the functions init() and processEvents().
+
+ See the liveMapsDemo class for an example.
+
+EOF
+
Added: vendor/liveMaps/current/build/Makefile.compile
===================================================================
--- vendor/liveMaps/current/build/Makefile.compile (rev 0)
+++ vendor/liveMaps/current/build/Makefile.compile 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,44 @@
+# Makefile.compile
+
+#.SUFFIXES: .cc .cpp .cxx .c .fl
+
+%$(SUF).o : %.cc
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%.o : %.cc
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%$(SUF).o : %.cpp
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%.o : %.cpp
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%$(SUF).o : %.cxx
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%.o : %.cxx
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CXX) -c $(CXXFLAGS) $< -o $@
+
+%$(SUF).o : %.c
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CC) -c $(CFLAGS) $< -o $@
+
+%.o : %.c
+ @echo "$(NAME): Compiling $@"
+ $(SILENT) $(CC) -c $(CFLAGS) $< -o $@
+
+%.cc : %.fl
+ @echo "$(NAME): Creating $@"
+ $(SILENT) $(FLUID) -c $<
+
+%.h : %.fl
+ @echo "$(NAME): Creating $@"
+ $(SILENT) $(FLUID) -c $<
+
Added: vendor/liveMaps/current/build/Makefile.head
===================================================================
--- vendor/liveMaps/current/build/Makefile.head (rev 0)
+++ vendor/liveMaps/current/build/Makefile.head 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,107 @@
+# Makefile.head
+# Defines Variables
+
+CXX = g++
+CC = gcc
+
+DSUFFIX = _dbg
+STATICSUFFIX = _static
+
+SVNCMD := svnversion
+SVNCMDCHECK := $(findstring $(SVNCMD), $(shell which $(SVNCMD) ) )
+ifeq ($(SVNCMDCHECK),$(SVNCMD))
+SVNDEF := -D'SVN_REV="$(shell $(SVNCMD) -n .)"'
+else
+SVNDEF := -D'SVN_REV=""'
+endif
+
+# this is used for shared library targets
+ifdef DEBUG
+ LIBS2 := $(DBGLIBS)
+else
+ LIBS2 := $(LIBS)
+endif
+
+
+OS := $(shell uname -s)
+ifeq ($(findstring Linux,$(OS)), Linux)
+ OS_DEF = -DLINUX
+ LIBS += $(LIBS_LINUX)
+ DBGLIBS += $(DBGLIBS_LINUX)
+endif
+ifeq ($(findstring Darwin,$(OS)), Darwin)
+ OS_DEF = -DDARWIN
+ LIBS += $(LIBS_DARWIN)
+ DBGLIBS += $(DBGLIBS_DARWIN)
+endif
+ifeq ($(findstring CYGWIN,$(OS)), CYGWIN)
+ OS_DEF = -DCYGWIN
+ LIBS += $(LIBS_CYGWIN)
+ DBGLIBS += $(DBGLIBS_CYGWIN)
+endif
+ifeq ($(findstring QNX,$(OS)), QNX)
+ OS_DEF = -DQNX
+ LIBS += $(LIBS_QNX)
+ DBGLIBS += $(DBGLIBS_QNX)
+endif
+
+LD = g++
+LDFLAGS=
+
+ifdef DEBUG
+ CXXFLAGS += -Wall -g -DDEBUG $(OS_DEF) $(SVNDEF)
+ CFLAGS += -Wall -g -DDEBUG $(OS_DEF) $(SVNDEF)
+ SUF = $(DSUFFIX)
+ SUF_T = $(SUF)
+else
+ CXXFLAGS += -Wall -O3 $(OS_DEF) $(SVNDEF)
+ CFLAGS += -Wall -O3 $(OS_DEF) $(SVNDEF)
+ LDFLAGS =
+ SUF =
+ SUF_T = $(SUF)
+endif
+
+ifdef PROFILE
+ CXXFLAGS += -pg
+ CFLAGS += -pg
+ LDFLAGS += -pg
+else
+
+endif
+
+ifdef STATIC
+ LDFLAGS += -static
+ SUF_T := $(STATICSUFFIX)$(SUF_T)
+else
+
+endif
+
+
+
+FLUID = fluid
+
+CGC = cgc
+CGCFLAGS = -profile fp40 -nocode
+
+RM = rm
+RMFLAGS = -f
+
+ECHO = @echo
+
+PROJECTINCLUDEPATH = -I$(BASEDIR)/include
+PROJECTLIBPATH = -L$(BASEDIR)/lib
+
+ifdef VERBOSE
+ SILENT =
+ SENDTODEVNULL =
+else
+ MAKEFLAGS += -s
+ MAKE = make -s
+ SILENT = @
+ SENDTODEVNULL = &> /dev/null
+endif
+
+STATSCALC=$(BASEDIR)/tools/misc/srcStats 1
+
+
+include $(BASEDIR)/Makefile.config
Added: vendor/liveMaps/current/build/Makefile.module
===================================================================
--- vendor/liveMaps/current/build/Makefile.module (rev 0)
+++ vendor/liveMaps/current/build/Makefile.module 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,290 @@
+# Module makefile
+
+include $(BASEDIR)/build/Makefile.recurse
+
+LIBINSTALLPATH = $(BASEDIR)/lib
+INCLUDEINSTALLPATH = $(BASEDIR)/include
+TARGETDIR = $(BASEDIR)/bin/
+
+INCLUDEPATH2 = $(INCLUDEPATH) $(GLOBALINCLUDEPATH) $(PROJECTINCLUDEPATH)
+
+CFLAGS += $(INCLUDEPATH2)
+CXXFLAGS += $(INCLUDEPATH2)
+
+NAME = $(subst $(shell cd $(BASEDIR);pwd)/,,$(shell cd .;pwd))
+
+ifndef NAME
+ $(warning Warning: NAME not defined in $(shell pwd)/Makefile)
+endif
+
+ifdef DEBUG
+TARGETLIBS_0 = $(DBGLIBS)
+else
+TARGETLIBS_0 = $(LIBS)
+endif
+
+TARGETLIBS = $(GLOBALLIBPATH) $(PROJECTLIBPATH) $(TARGETLIBS_0)
+
+OBJFILES:=$(OBJFILES:.o=$(SUF).o)
+TARGETSFULL:=$(foreach i,$(TARGETS),$(TARGETDIR)$(i)$(SUF_T))
+EXAMPLETARGETSFULL:=$(foreach i,$(EXAMPLETARGETS),$(i)$(SUF_T))
+TESTTARGETSFULL:=$(foreach i,$(TESTTARGETS),$(i)$(SUF_T))
+
+ifdef LIBTARGET
+LIBTARGET:=$(LIBTARGET)$(SUF)
+FULLARNAME:=$(FULLARNAME)$(SUF)
+endif
+
+ifdef LIBSHAREDTARGET
+LIBSHAREDTARGET:=$(LIBSHAREDTARGET)$(SUF)
+endif
+
+include $(BASEDIR)/build/Makefile.compile
+
+help:
+ @echo "Module $(NAME)"
+ $(ECHO) $(PROJECT_STRING)
+ $(ECHO) $(CONTACT_STRING)
+ $(SILENT) cat $(BASEDIR)/build/helptext
+ $(ECHO) $(COPYRIGHT_STRING)
+
+all: include lib libshared test example targets cgfile
+ $(RECURSE)
+
+makefiletest:
+ @echo $(TARGETSFULL)
+ @echo $(addsuffix .o,$(TARGETS))
+ @echo $(subst $(TARGETDIR),,$(TARGETS))
+
+ifdef HEADERFILES
+#include: $(HEADERFILES)
+# @echo "$(NAME): Copying $(HEADERFILES)"
+# $(SILENT) cp $(HEADERFILES) $(INCLUDEINSTALLPATH)/
+
+include: $(foreach header,$(HEADERFILES),$(INCLUDEINSTALLPATH)/$(header))
+ $(RECURSE)
+else
+include:
+ $(RECURSE)
+endif
+
+$(INCLUDEINSTALLPATH)/%.h: %.h
+ @echo "$(NAME): Copying: $<"
+ $(SILENT) cp $< $(INCLUDEINSTALLPATH)/
+
+
+ifdef LIBTARGET
+ifdef OBJFILES
+lib: $(LIBINSTALLPATH)/lib$(LIBTARGET).a libexport
+ $(RECURSE)
+ifndef SURPRESSEXPORTLIBTARGET
+ifdef EXPORTLIBTARGET
+libexport: $(LIBINSTALLPATH)/lib$(FULLARNAME).a
+ $(RECURSE)
+else
+libexport:
+ $(RECURSE)
+endif
+else
+libexport:
+ $(RECURSE)
+endif
+else
+lib:
+ $(RECURSE)
+libexport:
+ $(RECURSE)
+endif
+else
+lib:
+ $(RECURSE)
+libexport:
+ $(RECURSE)
+endif
+
+
+ifdef LIBTARGET
+ifdef EXPORTLIBTARGET
+$(LIBINSTALLPATH)/lib$(FULLARNAME).a: $(OBJFILES)
+ @echo "$(NAME): Building library (lib$(FULLARNAME).a)"
+ $(SILENT) $(AR) $(ARFLAGS) $@ $^
+endif
+
+$(LIBINSTALLPATH)/lib$(LIBTARGET).a: $(OBJFILES)
+ @echo "$(NAME): Building library (lib$(LIBTARGET).a)"
+ $(SILENT) $(AR) $(ARFLAGS) $@ $^ $(SENDTODEVNULL)
+endif
+
+
+# Shared libraries
+
+ifdef LIBSHAREDTARGET
+ifdef OBJFILES
+libshared: $(LIBINSTALLPATH)/lib$(LIBSHAREDTARGET).so
+ $(RECURSE)
+else
+libshared:
+ $(RECURSE)
+endif
+else
+libshared:
+ $(RECURSE)
+endif
+
+ifdef LIBSHAREDTARGET
+$(LIBINSTALLPATH)/lib$(LIBSHAREDTARGET).so: $(OBJFILES)
+ @echo "$(NAME): Building shared library (lib$(LIBSHAREDTARGET).so)"
+ $(SILENT) $(CC) $^ $(LDFLAGS) $(TARGETLIBS) -shared -o $@ $(addsuffix .a,$(subst -l,$(LIBINSTALLPATH)/lib,$(LIBS2)))
+endif
+
+
+
+
+example: $(EXAMPLETARGETSFULL)
+ $(RECURSE)
+
+test: $(TESTTARGETSFULL)
+ $(RECURSE)
+
+targets : $(TARGETSFULL)
+ $(RECURSE)
+
+cgfile:
+ -for cgf in $(CGFILES) ; do \
+ $(CGC) $(CGCFLAGS) $$cgf ; \
+ done
+ $(RECURSE)
+
+stats:
+ echo $(NAME) `$(STATSCALC)`
+ $(RECURSE)
+
+$(TARGETSFULL): $(OBJFILES) $(addsuffix $(SUF).o,$(TARGETS))
+ $(ECHO) "$(NAME): Linking $@"
+ $(SILENT) $(LD) $(OBJFILES) $(subst $(TARGETDIR),, $(subst $(STATICSUFFIX),,$@.o)) $(LDFLAGS) $(TARGETLIBS) -o $@
+
+$(TESTTARGETSFULL): $(OBJFILES) $(addsuffix $(SUF).o,$(TESTTARGETS))
+ $(ECHO) "$(NAME): Linking Test $@"
+ $(SILENT) $(LD) $(OBJFILES) $(subst $(STATICSUFFIX),,$@.o) $(LDFLAGS) $(TARGETLIBS) -o $@
+
+$(EXAMPLETARGETSFULL): $(OBJFILES) $(addsuffix $(SUF).o,$(EXAMPLETARGETS))
+ $(ECHO) "$(NAME): Linking Example $@"
+ $(SILENT) $(LD) $(OBJFILES) $(subst $(STATICSUFFIX),,$@.o) $(LDFLAGS) $(TARGETLIBS) -o $@
+
+
+LSDEPEND = $(shell ls *.c *.cpp *.cc *.cxx 2> /dev/null)
+ifneq ($(LSDEPEND), )
+depend:
+ @echo "$(NAME) Creating Dependency File"
+ $(SILENT) -$(CC) -M $(CFLAGS) $(LSDEPEND) > makedepend
+ $(RECURSE)
+else
+depend:
+ $(RECURSE)
+endif
+
+
+
+ifdef TEMPFILES
+
+LS00 = $(shell ls $(TEMPFILES) 2> /dev/null)
+ifneq ($(LS00), )
+clean00:
+ @echo "$(NAME): Removing Temporary Files"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS00)
+else
+clean00:
+endif
+
+else
+clean00:
+endif
+
+LS01 = $(shell ls *.o *.a core 2> /dev/null)
+ifneq ($(LS01), )
+clean01:
+ @echo "$(NAME): Removing .o .a and core"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS01)
+else
+clean01:
+endif
+
+ifdef TESTTARGETSFULL
+LS02 = $(shell ls $(TESTTARGETS) $(addsuffix $(DSUFFIX),$(TESTTARGETS)) $(addsuffix $(STATICSUFFIX),$(TESTTARGETS)) $(addsuffix $(STATICSUFFIX)$(DSUFFIX),$(TESTTARGETS)) 2> /dev/null)
+ifneq ($(LS02), )
+clean02:
+ @echo "$(NAME): Removing Test Targets"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS02)
+else
+clean02:
+endif
+else
+clean02:
+endif
+
+ifdef EXAMPLETARGETSFULL
+#LS03 = $(shell ls $(EXAMPLETARGETSFULL) $(EXAMPLETARGETSFULL:=$(DSUFFIX)) 2> /dev/null)
+LS03 = $(shell ls $(EXAMPLETARGETS) $(addsuffix $(DSUFFIX),$(EXAMPLETARGETS)) $(addsuffix $(STATICSUFFIX),$(EXAMPLETARGETS)) $(addsuffix $(STATICSUFFIX)$(DSUFFIX),$(EXAMPLETARGETS)) 2> /dev/null)
+ifneq ($(LS03), )
+clean03:
+ @echo "$(NAME): Removing Example Targets"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS03)
+else
+clean03:
+endif
+else
+clean03:
+endif
+
+LS04 = $(shell ls makedepend 2> /dev/null)
+ifneq ($(LS04), )
+clean04:
+ @echo "$(NAME): Removing makedepend file"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS04)
+else
+clean04:
+endif
+
+LS05 = $(shell ls *_fl.cc *_fl.h 2> /dev/null)
+ifneq ($(LS05), )
+clean05:
+ @echo "$(NAME): Removing fluid created files"
+ #$(SILENT) $(RM) $(RMFLAGS) $(LS05)
+ $(RM) $(RMFLAGS) $(LS05)
+else
+clean05:
+endif
+
+ifdef TARGETS
+LS06 = $(shell ls $(TARGETS) $(TARGETS:=$(DSUFFIX)) 2> /dev/null)
+ifneq ($(LS06), )
+clean06:
+ @echo "$(NAME): Removing Targets"
+ $(SILENT) $(RM) $(RMFLAGS) $(LS06)
+else
+clean06:
+endif
+else
+clean06:
+endif
+
+LS07 = $(shell ls gmon.out 2> /dev/null)
+ifneq ($(LS07), )
+clean07:
+ @echo "$(NAME): Removing profile files (gmon.out)"
+ #$(SILENT) $(RM) $(RMFLAGS) $(LS07)
+ $(RM) $(RMFLAGS) $(LS07)
+else
+clean07:
+endif
+
+
+clean: clean00 clean01 clean04 clean05
+ $(RECURSE)
+
+distclean: clean clean02 clean03 clean06 clean07
+ $(RECURSE)
+
+force:
+
+-include makedepend
Added: vendor/liveMaps/current/build/Makefile.recurse
===================================================================
--- vendor/liveMaps/current/build/Makefile.recurse (rev 0)
+++ vendor/liveMaps/current/build/Makefile.recurse 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,15 @@
+MODULES = $(patsubst %/, %, $(filter-out CVS%, $(filter %/, $(shell ls -dF * 2> /dev/null)) ) )
+
+RECURSE = \
+ @for d in $(MODULES) ; do \
+ if [ -d $$d ] ; then \
+ if [ -f $$d/Makefile ] ; then \
+ if [ ! -f $$d/Makefile.donotbuild ] ; then \
+ if ! $(MAKE) $(MFLAGS) -C $$d $@ ; then \
+ echo "Error building $$d"; \
+ exit -1;\
+ fi; \
+ fi; \
+ fi; \
+ fi \
+ done
Added: vendor/liveMaps/current/build/helptext
===================================================================
--- vendor/liveMaps/current/build/helptext (rev 0)
+++ vendor/liveMaps/current/build/helptext 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,30 @@
+ Commands:
+ make <OPTIONS> all include, lib, test, example, target
+
+ make <OPTIONS> include Place include files include/
+ make <OPTIONS> lib compile and create libraries
+ make <OPTIONS> libshared compile and create shared libraries
+ make <OPTIONS> test compile and run tests
+ make <OPTIONS> examples compile examples
+ make <OPTIONS> targets compile target programs
+ make <OPTIONS> depend create dependency files
+
+ make <OPTIONS> clean remove intermediate files
+ make <OPTIONS> distclean returns source tree to distribution state
+
+ Options:
+ VERBOSE=1 display more output
+
+ DEBUG=1 Compiles with debugging options
+ CFLAGS/CXXFLAGS = -g -Wall -Werror -DDEBUG
+ normally compiles with
+ CFLAGS/CXXFLAGS = -Wall -O2
+
+ Object files and executables build with this option
+ have the suffix _dbg (i.e. foo.c -> foo_dbg.o)
+
+ PROFILE=1 Compile with support for profiling (gprof)
+ CFLAGS/CXXFLAGS/LDFLAGS += -pg
+
+ STATIC=1 Prevents linking with shared libraries.
+ LDFLAGS += -static
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_converter.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_converter.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_converter.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,30 @@
+#ifndef __BOEING_CONVERTER_H__
+#define __BOEING_CONVERTER_H__
+
+#include <stdio.h>
+#include <string>
+#include <vector>
+#include "boeing_robot_packet.h"
+
+using std::string;
+using std::vector;
+
+namespace Boeing {
+
+ //==== Conversion methods ===============================
+
+ /** convert from an action message into one of the predefined
+ command message packets. Returns the type of the message,
+ or -1 on failure to match a message. The result is put in the
+ union msgcmd
+ */
+ int convert(Boeing::MsgCmdAction *mcpa,Boeing::MsgCmd &result);
+
+ /**
+ * strip off the brackets so that we are compatable with the language
+ * syntax. We just replace them with spaces
+ */
+ string stripBraces(char const *msg);
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_client.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_client.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_client.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,61 @@
+/**
+ Boeing Map client ==
+*/
+
+#ifndef __BOEING_MAP_CLIENT_H__
+#define __BOEING_MAP_CLIENT_H__
+
+#include <vector>
+#include <string>
+using std::vector;
+using std::string;
+
+#include "boeing_map_packet.h"
+
+class UDPSocket;
+
+// client class to manage UDP connections to robots
+namespace Boeing {
+
+ class MapClient {
+ private:
+ UDPSocket *sock;
+ MsgMapClient rxdata;
+
+ public:
+ //=== Initiialization ===================================
+
+ // fill out any constructor/destructor info you need
+ MapClient();
+ ~MapClient();
+
+ /// returns the target client number
+ int open(char const *h, int p = MAP_PORT);
+ void close();
+
+ //=== Sending ==========================================
+
+ bool sendSubscribe(short invoice);
+ bool sendUnsubscribe(short invoice);
+ bool sendKeepAlive(short invoice);
+ bool sendAck(short invoice, int seq);
+
+ //=== Receiving ======================================
+
+ /** returns a pointer to the next received message.
+ REturns NULL on failure. Sets the client to be
+ the id of the sending client */
+ const MsgMapClient *getNextMessage();
+
+ int isConnected();
+ int getFD();
+
+ private:
+ //=== Local methods ==========================
+ // private method to actually send stuff out the socket
+ bool sendPacket(MsgHeader *msg);
+
+ };
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_packet.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_packet.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_packet.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,139 @@
+/**
+ Boeing Map Packet. This file contains all of the packet structures
+ for sending using the Boeing server/clients
+ */
+#ifndef __BOEING_MAP_PACKET_H__
+#define __BOEING_MAP_PACKET_H__
+
+#include <string.h>
+
+#include "boeing_net.h"
+
+#ifdef __cplusplus
+namespace Boeing {
+#endif
+
+#ifdef WIN32
+#pragma pack(1)
+#endif
+#ifndef PACKED
+#ifdef WIN32
+#define PACKED
+#else
+#define PACKED __attribute__((packed))
+#endif
+#endif
+
+ //===================================================-
+ // Message ID's
+
+ // we combine all of them into one
+ enum MapMsgID { MAP_SUBSCRIBE=0,
+ MAP_KEEPALIVE,
+ MAP_UNSUBSCRIBE,
+ MAP_ACK,
+ MAP_FULL,
+ MAP_DIFF
+ };
+
+ enum MapMsgEncoding { MAP_RAW=0, // a raster of bytes
+ MAP_RLE, // a run-length enoding
+ MAP_JPEG // a jpeg
+ };
+
+ //=== Commands for Map ===========================
+ // these are the commands received by the server,
+ // and sent by the client
+
+ struct MsgMapReq : public MsgHeader {
+ short invoice;
+ int seq;
+ static MsgMapReq factory(short invoice=0, int seq=0) {
+ MsgMapReq m;
+ m.MsgHeaderFill(MAP_SUBSCRIBE, sizeof(MsgMapReq));
+ m.invoice = invoice; m.seq = seq;
+ return m;
+ }
+ } PACKED;
+
+ // all the command messages. Note that action messages
+ // are variable length so this union is inappropriate
+ // to use as the receive buffer
+ union MsgMapServer {
+ MsgHeader hdr;
+ MsgMapReq msg_req;
+ char buff[1];
+ } PACKED;
+
+ //===================================================
+ // Map to client messages
+ //
+
+ // map messages: Note these are variable length!!!
+ struct MsgMap : public MsgHeader {
+ short invoice;
+ short encoding;
+ int seq;
+ int resolution; //cell size in centimenters
+ int x, y; //# of cells in x and y dimention
+ float x_origin, y_origin; //vector to the origin from map's ul corner (in meters)
+ int array_length; //size of compressed map array
+ int map[1];
+
+ static const int MAX_RUNLENGTH = 1<<23;
+
+ //puts a MsgMap into the buf
+ //interpretation of raw_map cell chars
+ // 0x00 -> unchanged
+ // 0x20 -> clear
+ // 0x40 -> unseen/unknown
+ // 0xff -> occupied
+ //raw map is interpreted to be left-handed and height-major
+ static void MsgMapFactory(MapMsgEncoding encodingType,
+ MsgMap *buf, const void* raw_map, int raw_map_size,
+ short invoice, int seq,
+ int x_in, int y_in, float x_o, float y_o,
+ int resolution_in = 10);
+
+ static void MsgMapFactory(MapMsgEncoding encodingType,
+ MsgMap *buf, const void* raw_map, int raw_map_size,
+ short invoice, int seq,
+ int x_in, int y_in,
+ int resolution_in = 10);
+
+ int getSize() const; //returns actual size of struct given the array_length (in bytes)
+ int getBuffSize() const; //returns the minimum size of the required decode buf (in bytes)
+
+ //decode
+ static void unencodeMap(MapMsgEncoding encoding,
+ unsigned char *raw_map, const unsigned char* compressed_map, int compressed_map_size);
+ static void unencodeMap_RLE(unsigned char *raw_map,
+ unsigned const char* compressed_map,
+ int compressed_map_size);
+ static void unencodeMap_JPEG(unsigned char *raw_map,
+ unsigned const char *compressed_map, int compressed_map_size);
+ void decode(unsigned char *raw_map) const;
+
+ //encode
+ static int encodeMap(MapMsgEncoding encoding, unsigned char *buf, const unsigned char* rawmap, unsigned int j);
+ static int encodeMap_RLE(unsigned char *buf, const unsigned char* rawmap, unsigned int j);
+ static int encodeMap_JPEG(unsigned char *buf, const unsigned char* rawmap, unsigned int j);
+
+ } PACKED;
+
+ union MsgMapClient {
+ MsgHeader hdr;
+ MsgMap map;
+ unsigned char buff[sizeof(MsgMap)+sizeof(int)*2000*2000];
+ } PACKED;
+
+#ifdef WIN32
+ // reset packing....
+#pragma pack()
+#endif
+
+#ifdef __cplusplus
+}; // namespace Boeing
+#endif
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_server.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_server.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_map_server.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,51 @@
+/**
+ Boeing Map Server ==
+*/
+
+#ifndef __BOEING_MAP_SERVER_H__
+#define __BOEING_MAP_SERVER_H__
+
+#include "boeing_map_packet.h"
+
+class UDPSocket;
+
+namespace Boeing {
+
+ class MapServer {
+ public:
+ //=== Initialization ==================================
+ MapServer();
+ ~MapServer();
+
+ bool open(int p = MAP_PORT);
+ void close();
+
+ //=== Rx Methods ======================================
+
+ /// get the next message (if there is one). Returns NULL if there is none
+ const MsgMapServer* getNextMessage();
+
+ //=== Send Methods ====================================
+
+ // sending operations
+ bool sendFullMap(MsgMap *msg);
+ bool sendDiffMap(MsgMap *msg);
+
+ //=== Accessors ========================================
+ int getFD();
+ bool isConnected();
+
+ private:
+ // raw send methods...use wisely
+ bool doSend(MsgHeader *msg);
+
+ private:
+ // socket controls
+ UDPSocket *sock;
+ MsgMapServer rxdata;
+
+ };
+
+}
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_net.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_net.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_net.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,91 @@
+/**
+ Boeing Net. This file contains all of the shared packet information
+ for sending using the Boeing server/clients
+ */
+#ifndef __BOEING_NET_H__
+#define __BOEING_NET_H__
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+namespace Boeing {
+#endif
+
+#ifdef WIN32
+#pragma pack(1)
+#endif
+#ifndef PACKED
+#ifdef WIN32
+#define PACKED
+#else
+#define PACKED __attribute__((packed))
+#endif
+#endif
+
+#ifndef SOCKET
+#ifndef WIN32
+#define SOCKET int
+#endif
+#endif
+
+ //==== PORTS =======================================
+ // socket port
+ static const int ROBOT_PORT = 32788;
+ static const int TRADER_PORT = 5001;
+ static const int MAP_PORT = 5002;
+
+ //===================================================-
+ // header packet used by all messages. Std TLV
+
+ // number of bytes defining a senders hostname
+ static const int SADDR_LENGTH=64;
+
+ // len - length in bytes of whole packet (including header)
+ // type - msg id
+ // tstamp - time of transmission in secs since Jan 1, 1970
+ // sender - senders hostname
+ struct MsgHeader {
+ uint16_t type;
+ uint16_t len;
+ double tstamp;
+
+ static MsgHeader factory(uint16_t _type, uint16_t _len, double _tstamp=0) {
+ MsgHeader m;
+ return m.MsgHeaderFill(_type, _len, _tstamp);
+ }
+
+ MsgHeader MsgHeaderFill(uint16_t _type, uint16_t _len, double _tstamp=0) {
+ type = _type;
+ len = _len;
+ tstamp = _tstamp;
+ return *this;
+ }
+ } PACKED;
+
+ // standard types
+ typedef uint16_t TaskID;
+ typedef uint16_t Priority;
+
+ // max string length
+ static const int MAX_STRING_LENGTH=1024;
+
+
+ // standard status returns
+ static const int16_t ABORTED = -2;
+ static const int16_t FAILED = -1;
+ static const int16_t INPROGRESS = 0;
+ static const int16_t SUCCEEDED = 1;
+
+ inline int hasFailed(int v) { return v<=FAILED; }
+
+#ifdef WIN32
+ // reset packing....
+#pragma pack()
+#endif
+#undef PACKED
+
+#ifdef __cplusplus
+}; // namespace Boeing
+#endif
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_client.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_client.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_client.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,100 @@
+/**
+ Boeing robot client ==
+*/
+#ifndef __BOEING_ROBOT_CLIENT_H__
+#define __BOEING_ROBOT_CLIENT_H__
+
+#include <vector>
+#include <string>
+
+#include "boeing_robot_packet.h"
+#include "boeing_map_packet.h"
+
+using std::vector;
+using std::string;
+
+class UDPSocket;
+
+// client class to manage UDP connections to robots
+namespace Boeing {
+
+ class RobotClient {
+ private:
+ // put your sock data here
+ // put list of robot servers here too
+ UDPSocket* sock;
+ int port;
+ string host;
+
+ // our host name
+ string our_host;
+ bool set_host;
+
+ MsgRobot rxdata;
+ public:
+ //=== Initiialization ===================================
+
+ // fill out any constructor/destructor info you need
+ RobotClient();
+ RobotClient(const RobotClient& x);
+ ~RobotClient();
+
+ /// returns the target client number
+ int open(char const *h, int p = ROBOT_PORT);
+ int reopen();
+ void close();
+
+ //=== Sending ==========================================
+
+ bool sendAction(Priority p,TaskID tid,char const *action);
+
+ bool sendEval(Priority p,TaskID tid,char const *eval);
+
+ /// halt all robots
+ bool sendHalt(Priority p,TaskID tid,bool ignore_play_stop=false);
+
+ /// send goto command
+ bool sendGoToCmd(Priority p,TaskID tid, float x, float y, float a,
+ bool use_angle = false, bool rel = false);
+
+ bool sendSetPos(Priority p, TaskID tid, float x, float y, float a);
+
+ /// passing return to absolute 0,0
+ bool sendHome(Priority p,TaskID tid);
+
+ /// passing pause command
+ bool sendPause(Priority p,TaskID tid);
+
+ /// passing resume command
+ bool sendResume(Priority p,TaskID tid);
+
+ /// passing follow command
+ bool sendFollow(Priority p,TaskID tid);
+
+ /// request the location of the robot
+ bool sendReqLocation();
+
+ /// request an image from the bot's camera
+ bool sendReqImage();
+
+ //=== Receiving ======================================
+
+ /** returns a pointer to the next received message.
+ REturns NULL on failure. Sets the client to be
+ the id of the sending client */
+ MsgRobot const *getNextMessage();
+
+ int isConnected() const;
+ int getFD();
+
+ bool sendPacket(MsgHeader *msg);
+
+ //=== Exposed attributes =============================
+
+ int getPort() const {return port;}
+ string getHost() const {return host;}
+
+ };
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_packet.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_packet.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_packet.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,314 @@
+/**
+ Boeing Robot Packet. This file contains all of the packet structures
+ for sending using the Boeing server/clients
+ */
+#ifndef __BOEING_ROBOT_PACKET_H__
+#define __BOEING_ROBOT_PACKET_H__
+
+#include <string.h>
+
+#include "boeing_net.h"
+#include "boeing_map_packet.h"
+
+#ifdef __cplusplus
+namespace Boeing {
+#endif
+
+ /// required for compilation under Win32 and linux
+#ifdef WIN32
+#pragma pack(1)
+#endif
+#ifndef PACKED
+#ifdef WIN32
+#define PACKED
+#else
+#define PACKED __attribute__((packed))
+#endif
+#endif
+
+ //===================================================-
+ // Message ID's
+
+ /// These are IDs for messages being sent to the server (ie commands)
+ enum CmdMsgID {
+ CMD_ACTION=0,
+ CMD_HALT,CMD_GOTO,CMD_HOME,CMD_FOLLOW,
+ CMD_COVER,CMD_SETPOS,CMD_PAUSE,CMD_RESUME,
+ REQ_LOCATION,REQ_IMAGE,
+ CMD_EVAL
+ };
+
+ /// these are the IDs for messages being sent from the robot
+ enum RobotMsgID {
+ ROB_ACK=0x0100,ROB_DONE,ROB_LOCATION,
+ ROB_ACTION_ACK,ROB_ACTION_ECHO,
+ ROB_IMAGE,ROB_PLAY_HALT,
+ ROB_EVAL
+ };
+
+ static const uint16_t CmdMsgIdMask = 0x00FF;
+ static const uint16_t RobMsgIdMask = 0xFF00;
+
+ //=== Commands for Robot ================================================-
+ /// Task Requests
+ struct MsgCmdTask : public MsgHeader {
+ Priority priority;
+ TaskID taskid;
+
+ static MsgCmdTask factory(Priority _priority, TaskID _taskid,
+ uint16_t _type, uint16_t _len) {
+ MsgCmdTask m;
+ return m.MsgCmdTaskFill(_priority, _taskid, _type, _len);
+ }
+
+ MsgCmdTask MsgCmdTaskFill(Priority _priority, TaskID _taskid, uint16_t _type,
+ uint16_t _len) {
+ MsgHeaderFill(_type, _len);
+ priority = _priority;
+ taskid = _taskid;
+ return *this;
+ }
+ } PACKED;
+
+ /** message packets
+ Halt message -> for stopping robots _now_
+ */
+ struct MsgCmdHalt : public MsgCmdTask {
+ int16_t ignore_play_stop;
+ } PACKED;
+
+ /** Go to an x,y location in absolute/relative coord frame
+ default is in global frame
+ (x,y) - point in meters
+ angle - orientation in radians
+ attr - attributes, default - no angle, global frame
+ */
+ struct MsgCmdGoTo : public MsgCmdTask {
+ static const uint16_t UseAngle = 0x0100;
+ static const uint16_t Relative = 0x0001;
+
+ uint16_t attr;
+ float x, y;
+ float angle;
+
+ bool useAngle() const { return ((attr & UseAngle) != 0); }
+ bool useRelative() const { return ((attr & Relative) != 0); }
+ bool useGlobal() const { return (!useRelative()); }
+ } PACKED;
+
+ struct MsgCmdSetPos : public MsgCmdTask {
+ float x, y;
+ float angle;
+ } PACKED;
+
+
+ /// execute the follow command
+ struct MsgCmdFollow : public MsgCmdTask {
+ char ip[MAX_STRING_LENGTH];
+ char search[MAX_STRING_LENGTH];
+ } PACKED;
+
+ /// Request robot location in absolute absolute frame
+ struct MsgReqLocation : public MsgCmdTask {
+ static MsgReqLocation factory(Priority priority, TaskID taskid) {
+ MsgReqLocation m;
+ m.MsgHeaderFill(REQ_LOCATION, sizeof(MsgReqLocation));
+ m.priority = priority;
+ m.taskid = taskid;
+ return m;
+ }
+ } PACKED;
+
+ /// Note req image is actually defined in boeing_map_packet.h
+
+ typedef MsgCmdTask MsgCmdHome;
+ typedef MsgCmdTask MsgCmdPause;
+ typedef MsgCmdTask MsgCmdResume;
+
+ /// N-sided polygon
+ struct RP_Polygon {
+ static const int MAX_POLYGON=6;
+
+ int n; //number of vertices
+ float xpoint[MAX_POLYGON+1];
+ float ypoint[MAX_POLYGON+1];
+ int taskIDs[MAX_POLYGON+1];
+ } PACKED;
+
+ ///only axis-aligned rectangles -a type of polygon- are currently supported
+ struct MsgCmdCover : public MsgCmdTask{
+ RP_Polygon cover_shape;
+ } PACKED;
+
+ /** play manager messages. Note these are variable length!!!
+ action will be a null terminated string. It will be no longer
+ than max_action
+ */
+ struct MsgCmdAction : public MsgCmdTask {
+ char action[MAX_STRING_LENGTH];
+
+ static MsgCmdAction factory(const char* _action,
+ Priority _priority, TaskID _taskid) {
+ MsgCmdAction m;
+ return m.MsgCmdActionFill(_action, _priority, _taskid);
+ }
+
+ MsgCmdAction MsgCmdActionFill(const char* _action, Priority _priority,
+ TaskID _taskid) {
+ MsgCmdTaskFill(_priority, _taskid, CMD_ACTION, 0);
+ strncpy(action, _action, MAX_STRING_LENGTH-1);
+ len = getSize();
+ return *this;
+ }
+
+ int getSize() const {
+ return (int) strnlen(action,MAX_STRING_LENGTH-1)+1+sizeof(MsgCmdTask);
+ }
+ } PACKED;
+
+ struct MsgCmdEval : public MsgCmdTask {
+ char eval[MAX_STRING_LENGTH];
+
+ int getSize() const {
+ return (int) strnlen(eval,MAX_STRING_LENGTH-1)+1+sizeof(MsgCmdTask);
+ }
+ } PACKED;
+
+
+ /** all the command messages. Note that action messages
+ are variable length so this union is inappropriate
+ to use as the receive buffer
+ */
+ //eval messages also variable length
+
+ union MsgCmd {
+ MsgHeader hdr;
+ MsgCmdTask msg_cmdtask;
+ MsgCmdHalt msg_halt;
+ MsgCmdGoTo msg_goto;
+ MsgCmdSetPos msg_setpos;
+ MsgCmdHome msg_home;
+ MsgCmdPause msg_pause;
+ MsgCmdResume msg_resume;
+ MsgCmdFollow msg_follow;
+ MsgCmdCover msg_cover;
+ MsgCmdAction msg_action;
+ MsgCmdEval msg_eval;
+
+ MsgMapReq msg_image;
+ MsgReqLocation req_location;
+
+ char buff[1000];
+ } PACKED;
+
+
+ //===================================================
+ /// Robot to Human messages
+
+ /// acknowledgement messages
+ /// responding task id
+ struct MsgRobAck : public MsgHeader {
+ TaskID taskid;
+ static MsgRobAck factory(TaskID taskID) {
+ MsgRobAck m;
+ m.MsgHeaderFill(ROB_ACK, sizeof(MsgRobAck));
+ m.taskid = taskID;
+ return m;
+ };
+ } PACKED;
+
+ /** Message to indicate that the play the robot is participating in
+ should halt */
+ typedef MsgHeader MsgRobPlayHalt;
+
+ /// the echo message...
+ typedef MsgCmdAction MsgActionEcho;
+
+ /// acknowledgement message for play manager
+ struct MsgActionAck : public MsgHeader {
+ TaskID taskid;
+ int16_t status;
+ static MsgActionAck factory(TaskID taskID, int16_t status) {
+ MsgActionAck m;
+ m.MsgHeaderFill(ROB_ACTION_ACK, sizeof(MsgActionAck));
+ m.taskid = taskID; m.status = status;
+ return m;
+ };
+ } PACKED;
+
+
+ /// evaluation message for play manager
+ //this should eventually be multiple data types, not just int16_t
+ struct MsgEvalResult : public MsgHeader {
+ TaskID taskid;
+ int16_t eresult;
+ } PACKED;
+
+
+ /** robot done status message
+ status - task status [Succeeded,Failed]
+ */
+ struct MsgRobDone : public MsgHeader {
+
+ TaskID taskid; //task that has been completed
+ int16_t status;
+ static MsgRobDone factory(TaskID taskID, int16_t status) {
+ MsgRobDone m;
+ m.MsgHeaderFill(ROB_DONE, sizeof(MsgRobDone));
+ m.taskid = taskID; m.status = status;
+ return m;
+ };
+ } PACKED;
+
+ /** robot location status message
+ (x,y) - location in global frame in meters
+ angle - angle in global frame in radians
+ moving - flag to indicate robot is in motion
+ */
+ struct MsgRobLocation : public MsgHeader {
+ float x, y;
+ float angle;
+ int16_t moving;
+ static MsgRobLocation factory(float x, float y, float angle, int16_t moving) {
+ MsgRobLocation m;
+ m.x = x; m.y = y; m.angle = angle; m.moving = moving;
+ return m;
+ }
+ bool operator!=(const MsgRobLocation& rhs) {
+ return x != rhs.x || y != rhs.y || angle != rhs.angle;
+ }
+ bool operator==(const MsgRobLocation& rhs) {
+ return !this->operator!=(rhs);
+ }
+ } PACKED;
+
+ /// Handshaking...why is this so large???
+ struct MsgPing : public MsgHeader {
+ char handle[0xff];
+ } PACKED;
+
+ union MsgRobot {
+ MsgHeader hdr;
+ MsgRobAck ack;
+ MsgRobDone done;
+ MsgRobLocation location;
+ MsgActionEcho echo;
+ MsgActionAck action_ack;
+ MsgEvalResult eval_result;
+
+ MsgRobPlayHalt play_halt;
+ MsgMap image;
+ char buff[50000];
+ } PACKED;
+
+#ifdef WIN32
+ // reset packing....
+#pragma pack()
+#endif
+#undef PACKED
+
+#ifdef __cplusplus
+}; // namespace Boeing
+#endif
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_server.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_server.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_robot_server.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,92 @@
+/**
+ Boeing robot server ==
+*/
+
+#ifndef __BOEING_ROBOT_SERVER_H__
+#define __BOEING_ROBOT_SERVER_H__
+
+#include <stdint.h>
+
+#ifdef WIN32
+
+#else
+//#include "geometry.h"
+#endif
+#include "boeing_robot_packet.h"
+
+class UDPSocket;
+
+namespace Boeing {
+
+ class RobotServer {
+ private:
+ // socket controls
+ UDPSocket* socket_s;
+ int socket_port;
+ char host[SADDR_LENGTH];
+
+ // raw send methods...use wisely
+ bool doSend(MsgHeader *msg);
+
+ double tlast_cmd,timeout;
+ MsgCmd rxdata;
+ Priority priority;
+ public:
+ //=== Initialization ==================================
+ RobotServer();
+ ~RobotServer();
+
+ bool open(int port = ROBOT_PORT);
+ void close();
+
+ //=== Rx Methods ======================================
+
+ /// get the next message (if there is one). Returns NULL if there is none
+ MsgCmd const *getNextMessage();
+
+ //=== Send Methods ====================================
+
+ /// send a task acknowledgement
+ bool sendTaskAck(int taskid);
+
+ /// send an action acknowledgement and the current status
+ bool sendActionAck(int taskid,int status);
+
+ // send robot result of evaluation (robot world model information)
+ bool sendEvalResult(int taskid,int eval_result);
+
+ /** inform the playmanager that we need to halt the play
+ (Generally called internally in the server code */
+ bool sendPlayHalt();
+
+ /// send a task done
+ bool sendDone(int taskid,bool ok);
+ bool sendAborted(int taskid);
+
+ /// send the updated robot pose
+ bool sendLocation(float x, float y, float a, bool moving);
+
+ /** Send a compressed image to the server
+ the image is a pointer to a jpeg image file
+ the image size is the size of the image file in bytes
+ */
+ bool sendJPEGImage(const void *image, int image_size,
+ int width, int height, int invoice);
+
+ //=== Accessors ========================================
+
+ /// get the file descriptor for the socket
+ int getFD();
+
+ /// return true if connected
+ bool isConnected();
+
+ /// set various timeouts
+ void setTimeout(double t) { timeout=t; }
+ double getTimeout() const { return timeout; }
+ double getLastCmdTime() const { return tlast_cmd; }
+ };
+
+}
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_client.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_client.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_client.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,60 @@
+/**
+ Boeing Trader client ==
+*/
+
+#ifndef __BOEING_TRADER_CLIENT_H__
+#define __BOEING_TRADER_CLIENT_H__
+
+#include <vector>
+#include <string>
+using std::vector;
+using std::string;
+
+#include "boeing_trader_packet.h"
+
+class UDPSocket;
+
+// client class to manage UDP connections to robots
+namespace Boeing {
+
+ class TraderClient {
+ private:
+ UDPSocket* sock;
+ MsgTraderClient rxdata;
+
+ public:
+ //=== Initiialization ===================================
+
+ // fill out any constructor/destructor info you need
+ TraderClient();
+ ~TraderClient();
+
+ /// returns the target client number
+ int open(char const *h, int p = ROBOT_PORT);
+ void close();
+
+ //=== Sending ==========================================
+
+ bool sendTask(TaskID tid,char const *task);
+
+ bool sendCancel(TaskID tid);
+
+ //=== Receiving ======================================
+
+ /** returns a pointer to the next received message.
+ REturns NULL on failure. Sets the client to be
+ the id of the sending client */
+ MsgTraderClient const *getNextMessage();
+
+ int isConnected();
+ int getFD();
+
+ private:
+ //=== Local methods ==========================
+ // private method to actually send stuff out the socket
+ bool sendPacket(MsgHeader *msg);
+
+ };
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_packet.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_packet.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_packet.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,100 @@
+/**
+ Boeing Trader Packet. This file contains all of the packet structures
+ for sending using the Boeing server/clients
+ */
+#ifndef __BOEING_TRADER_PACKET_H__
+#define __BOEING_TRADER_PACKET_H__
+
+#include <string.h>
+
+#include "boeing_net.h"
+
+#ifdef __cplusplus
+namespace Boeing {
+#endif
+
+#ifndef PACKED
+#ifdef WIN32
+#pragma pack(1)
+#define PACKED
+#else
+#define PACKED __attribute__((packed))
+#endif
+#endif
+
+
+ //===================================================-
+ // Message ID's
+
+ // we combine all of them into one
+ enum TraderMsgID { TRADER_TASK=0,
+ TASK_ACK=0x100,
+ TASK_CANCEL,
+ TASK_DONE,
+ INFO};
+
+ //=== Commands for Trader ===========================
+ // these are the commands received by the server,
+ // and sent by the client
+
+ // trader messages: Note these are variable length!!!
+ // action will be a null terminated string. It will be no longer
+ // than max_string
+ struct MsgTask : public MsgHeader {
+ TaskID taskid;
+ char task[MAX_STRING_LENGTH];
+
+ int getSize() const {
+ return (int) strnlen(task,MAX_STRING_LENGTH-1)+1+sizeof(MsgTask)-MAX_STRING_LENGTH;
+ }
+ } PACKED;
+
+ struct MsgTraderCancel : public MsgHeader {
+ TaskID taskid;
+ } PACKED;
+
+ // task string syntax: ({IP}: )?object [0-9a-ZA-Z]+ at "("{FLOAT} {FLOAT}")"
+ typedef MsgTask MsgInform;
+
+ // all the command messages. Note that action messages
+ // are variable length so this union is inappropriate
+ // to use as the receive buffer
+ union MsgTraderServer {
+ MsgHeader hdr;
+ MsgTask msg_task;
+ MsgTraderCancel cancel;
+ char buff[1];
+ } PACKED;
+
+ //===================================================
+ // Trader to client messages
+
+ // responding task id
+ struct MsgTraderAck : public MsgHeader {
+ TaskID taskid;
+ } PACKED;
+
+ // responding task id
+ struct MsgTraderDone : public MsgHeader {
+ TaskID taskid;
+ int16_t status;
+ } PACKED;
+
+ union MsgTraderClient {
+ MsgHeader hdr;
+ MsgTraderAck ack;
+ MsgTraderDone done;
+ MsgInform info;
+ char buff[1];
+ } PACKED;
+
+#ifdef WIN32
+ // reset packing....
+#pragma pack()
+#endif
+
+#ifdef __cplusplus
+}; // namespace Boeing
+#endif
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_server.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_server.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/boeing/boeing_trader_server.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,53 @@
+/**
+ Boeing Trader Server ==
+*/
+
+#ifndef __BOEING_TRADER_SERVER_H__
+#define __BOEING_TRADER_SERVER_H__
+
+#include <stdint.h>
+
+#include "boeing_trader_packet.h"
+
+class UDPSocket;
+
+namespace Boeing {
+
+ class TraderServer {
+ private:
+ // socket controls
+ UDPSocket* sock;
+ MsgTraderServer rxdata;
+ public:
+ //=== Initialization ==================================
+ TraderServer();
+ ~TraderServer();
+
+ bool open(int p = TRADER_PORT);
+ void close();
+
+ //=== Rx Methods ======================================
+
+ /// get the next message (if there is one). Returns NULL if there is none
+ MsgTraderServer const *getNextMessage();
+
+ //=== Send Methods ====================================
+
+ // sending operations
+ bool sendTaskAck(int taskid);
+ bool sendDone(int taskid,int status);
+ bool sendInfo(TaskID tid, char const *info);
+
+ //=== Accessors ========================================
+ int getFD();
+ bool isConnected();
+
+ private:
+ // raw send methods...use wisely
+ bool doSend(MsgHeader *msg);
+
+ };
+
+}
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/ansicolor.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/ansicolor.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/ansicolor.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,41 @@
+#ifndef __ANSI_COLOR_H__
+#define __ANSI_COLOR_H__
+
+#include <stdio.h>
+
+namespace AnsiColor{
+ enum Color{
+ Black = 0,
+ Red = 1,
+ Green = 2,
+ Yellow = 3,
+ Blue = 4,
+ Magenta = 5,
+ Cyan = 6,
+ White = 7,
+ Default = 9,
+ };
+
+ static inline void emit(FILE *out,int code) {fprintf(out,"%c[%dm",27,code);}
+
+ static inline void Reset(FILE *out) {emit(out,0);}
+
+ static inline void Bold(FILE *out) {emit(out,1);}
+ static inline void Italics(FILE *out) {emit(out,3);}
+ static inline void Underline(FILE *out) {emit(out,4);}
+ static inline void Inverse(FILE *out) {emit(out,7);}
+ static inline void Strike(FILE *out) {emit(out,9);}
+
+ static inline void BoldOff(FILE *out) {emit(out,22);}
+ static inline void ItalicsOff(FILE *out) {emit(out,23);}
+ static inline void UnderlineOff(FILE *out) {emit(out,24);}
+ static inline void InverseOff(FILE *out) {emit(out,27);}
+ static inline void StrikeOff(FILE *out) {emit(out,29);}
+
+ static inline void SetFgColor(FILE *out,Color fg) {emit(out,30+fg);}
+ static inline void SetBgColor(FILE *out,Color bg) {emit(out,40+bg);}
+ static inline void SetColor(FILE *out,Color fg,Color bg)
+ {emit(out,30+fg); emit(out,30+bg);}
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/battery.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/battery.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/battery.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,71 @@
+// reads the apm to fidn out battery stats
+
+#ifndef __BATTERY_H__
+#define __BATTERY_H__
+
+
+class Battery {
+public:
+ double charge; // [0, 1]
+ double time_left; // in seconds
+private:
+ bool has_apm;
+ static const double warning_level = 15.0 * 60.0;
+
+public:
+ Battery() {
+ charge = 1.0;
+ time_left = HUGE_VAL;
+ has_apm = true;
+
+ struct stat s;
+ if (stat("/proc/apm", &s) != 0)
+ has_apm = false;
+ }
+
+ bool reachedWarningLevel() {
+ if (has_apm)
+ return (time_left < warning_level);
+ else
+ return (false);
+ }
+
+ double minutesToDischarge() {
+ if (has_apm)
+ return (time_left / 60.0);
+ else
+ return (10000.0);
+ }
+
+ // returns true if APM works okay
+ bool readStats() {
+ if (has_apm) {
+ FILE *f;
+ if ((f = fopen("/proc/apm", "r")) == NULL) {
+ has_apm = false;
+ return (false);
+ }
+
+ float ignore1, ignore2;
+ int ignore3, ignore4, ignore5, ignore6;
+ int val, t;
+ fscanf(f, "%f %f %i %i %i %i %i%% %i",
+ &ignore1, &ignore2, &ignore3, &ignore4,
+ &ignore5, &ignore6, &val, &t);
+ fclose(f);
+
+ charge = (double) val / 100.0;
+ time_left = (double) t * 60.0;
+ }
+
+ return (true);
+ }
+
+ void print(FILE *f = stdout) {
+ fprintf(f, "charge = %f\%, time left = %ih:%im\n",
+ charge * 100.0, (int) time_left / 60.0 / 60.0,
+ (int) fmod(time_left / 60.0, 60.0));
+ }
+};
+
+#endif
Added: vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/colors.h
===================================================================
--- vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/colors.h (rev 0)
+++ vendor/liveMaps/current/external/boeingLib.gcc-4.1/include/coralshared/colors.h 2007-09-22 05:34:12 UTC (rev 765)
@@ -0,0 +1,397 @@
+/*========================================================================
+ colors.h : Color definitions for CMVision2 and the Simple Image class
+ ------------------------------------------------------------------------
+ Copyright (C) 1999-2002 James R. Bruce
+ School of Computer Science, Carnegie Mellon University
+ ------------------------------------------------------------------------
+ This software is distributed under the GNU General Public License,
+ version 2. If you do not have a copy of this licence, visit
+ www.gnu.org, or write: Free Software Foundation, 59 Temple Place,
+ Suite 330 Boston, MA 02111-1307 USA. This program is distributed
+ in the hope that it will be useful, but WITHOUT ANY WARRANTY,
+ including MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ========================================================================*/
+
+/** Modified by Brett Browning */
+
+#ifndef __COLORS_H__
+#define __COLORS_H__
+
+#include "util.h"
+
+// this is not always defined for some reason
+typedef unsigned char uchar;
+
+namespace Colors {
+
+
+ //==== Color Classes =================================================//
+
+ //== Non-Planar representations ===/
+
+ // Details on these can be found
+ // from http://www.fourcc.org/
+
+ struct rgb {
+ uchar r,g,b;
+ };
+
+ struct bgr {
+ uchar b,g,r;
+ };
+
+ struct rgba {
+ uchar r,g,b,a;
+ };
+
+ struct bgra {
+ uchar b,g,r,a;
+ };
+
+ struct yuv {
+ uchar y,u,v;
+ };
+
+ struct uyv {
+ uchar u,y,v;
+ };
+
+ struct yuvi{
+ int y,u,v;
+ };
+
+ struct yuyv{
+ uchar y1,u,y2,v;
+ };
+
+ struct uyvy {
+ uchar u,y1,v,y2;
+ };
+
+ static const int uyvy_offset[4]={1,3};
+
+ // a macro pixel consisting of 4*Y, 1*U,1*v
+ // the u,v are probably at position 3...but it is not clear
+ struct uyyvyy {
+ uchar u,y1,y2,v,y3,y4;
+ };
+
+ typedef uyyvyy yuv411;
+ typedef uyyvyy uy2vy2;
+
+ static const int uyyvyy_offset[4]={1,2,4,5};
+
+
+ // Pixel sizes
+ inline int nrPixels(rgb c) { return 1; }
+ inline int nrPixels(bgr c) { return 1; }
+ inline int nrPixels(rgba c) { return 1; }
+ inline int nrPixels(bgra c) { return 1; }
+ inline int nrPixels(yuv c) { return 1; }
+ inline int nrPixels(uyv c) { return 1; }
+ inline int nrPixels(yuvi c) { return 1; }
+ inline int nrPixels(yuyv c) { return 2; }
+ inline int nrPixels(uyvy c) { return 2; }
+
+ // a macro pixel consisting of 4*Y, 1*U,1*v
+ // the u,v are probably at position 3...but it is not clear
+ inline int nrPixels(uyyvyy c) { return 4; }
+
+ //=== Predefined color values ========================================//
+
+ // RGB:
+
+ // standardized colors
+ const rgb Black = { 0, 0, 0};
+ const rgb Brown = {128, 64, 0};
+ const rgb Red = {255, 0, 0};
+ const rgb Orange = {255, 128, 0};
+ const rgb Yellow = {255, 255, 0};
+ const rgb Green = { 0, 255, 0};
+ const rgb Blue = { 0, 0, 255};
+ const rgb Purple = {255, 0, 255};
+ const rgb Cyan = {0 , 255, 255};
+ const rgb Gray = {128, 128, 128};
+ const rgb Pink = {255, 0, 128};
+ const rgb White = {255, 255, 255};
+
+ const uchar dark = 160;
+ const rgb DarkBlue = { 0, 0,dark};
+ const rgb DarkGreen = { 0,dark, 0};
+ const rgb DarkRed = {dark, 0, 0};
+ const rgb DarkYellow = {dark,dark, 0};
+ const rgb DarkCyan = { 0,dark,dark};
+ const rgb DarkPurple = {dark, 0,dark};
+ const rgb DarkGray = { 32, 32, 48};
+ const rgb DarkPink = {dark, 0, dark/2};
+
+
+ // standardized colors
+ const uchar uvo = 128;
+ const yuv yuvBlack = { 0, uvo, uvo};
+ const yuv yuvGray = {128, uvo, uvo};
+ const yuv yuvWhite = {255, uvo, uvo};
+
+ const yuv yuvBlue = { 29, 107, 256};
+ const yuv yuvGreen = {150, 21, 44};
+ const yuv yuvRed = { 76, 255, 85};
+
+ const yuv yuvYellow = {226, 149, 0};
+ const yuv yuvCyan = {179, 0, 171};
+ const yuv yuvPurple = {105, 235, 212};
+ const yuv yuvPink = { 91, 245, 149};
+
+
+ //=== Initializers ================================//
+
+ inline rgb mkrgb(uchar r,uchar g,uchar b) {
+ return (rgb) {r,g,b};
+ }
+
+ inline bgr mkbgr(uchar r,uchar g,uchar b) {
+ return (bgr) {b,g,r};
+ }
+
+ // Logical operations. Note on floating point == and != don't
+ // make sense
+#define RGB_LOGIC_OP(opr,comb,type) \
+ inline bool operator opr (const type a, const type b) { \
+ return ((a.r opr b.r) comb (a.g opr b.g) \
+ comb (a.b opr b.b)); \
+ }
+
+ RGB_LOGIC_OP(==,&&,rgb);
+ RGB_LOGIC_OP(!=,||,rgb);
+ RGB_LOGIC_OP(> ,&&,rgb);
+ RGB_LOGIC_OP(>=,&&,rgb);
+ RGB_LOGIC_OP(< ,&&,rgb);
+ RGB_LOGIC_OP(<=,&&,rgb);
+
+ RGB_LOGIC_OP(==,&&,bgr);
+ RGB_LOGIC_OP(!=,||,bgr);
+ RGB_LOGIC_OP(> ,&&,bgr);
+ RGB_LOGIC_OP(>=,&&,bgr);
+ RGB_LOGIC_OP(< ,&&,bgr);
+ RGB_LOGIC_OP(<=,&&,bgr);
+
+
+ // Arithmetic operations. Note on RGB +- can wrap
+#define RGB_ARITHM_OP(opr,type) \
+ inline type operator opr (const type a, const type b) { \
+ type r; \
+ r.r = a.r opr b.r; \
+ r.g = a.g opr b.g; \
+ r.b = a.b opr b.b; \
+ return (r); \
+ }
+
+ // note these may wrap
+ // rgb operators
+ RGB_ARITHM_OP(+,rgb);
+ RGB_ARITHM_OP(-,rgb);
+ RGB_ARITHM_OP(&,rgb);
+ RGB_ARITHM_OP(|,rgb);
+ RGB_ARITHM_OP(^,rgb);
+
+ RGB_ARITHM_OP(+,bgr);
+ RGB_ARITHM_OP(-,bgr);
+ RGB_ARITHM_OP(&,bgr);
+ RGB_ARITHM_OP(|,bgr);
+ RGB_ARITHM_OP(^,bgr);
+
+ // scalar arithmetic
+#define RGB_SCALAR_OP(opr,type,stype) \
+ inline type operator opr (const type a, const stype s) { \
+ type r; \
+ r.r = a.r opr s; \
+ r.g = a.g opr s; \
+ r.b = a.b opr s; \
+ return r; \
+ }
+
+ // note these may (and probably will) wrap
+ RGB_SCALAR_OP(*,rgb,int);
+ RGB_SCALAR_OP(/,rgb,int);
+
+ RGB_SCALAR_OP(*,bgr,int);
+ RGB_SCALAR_OP(/,bgr,int);
+
+ // Color Arithmetic
+ inline rgb blend(const rgb a,const rgb b,const float t) {
+ rgb r;
+ r.r = (int)((a.r * (1.0 - t)) + (b.r * t));
+ r.g = (int)((a.g * (1.0 - t)) + (b.g * t));
+ r.b = (int)((a.b * (1.0 - t)) + (b.b * t));
+ return(r);
+ }
+
+ inline int sum(const rgb a) {
+ return (((int)a.r+(int)a.g+(int)a.b));
+ }
+ inline int getGray(const rgb a) {
@@ Diff output truncated at 60000 characters. @@
More information about the TeamTalk-developers
mailing list