- Reestructuración de ficheros y directorios general

- merge v0.01 --> Añadido fileselector
- Añadidas fuentes de Gem y Pure Data
- pix2jpg incluído en Gem. Archivos de construcción de Gem modificados.
- Añadido fichero ompiling.txt con instrucciones de compilación
This commit is contained in:
Santi Noreña 2013-02-04 18:00:17 +01:00
parent c9adfd020b
commit e85d191b46
3100 changed files with 775434 additions and 3073 deletions

48
Gem/COPYING.txt Normal file
View file

@ -0,0 +1,48 @@
GEM - Graphics Environment for Multimedia
Copyright © 1997-2000 Mark Danks
Copyright © Günter Geiger
Copyright © 2001-2011 IOhannes m zmölnig,
Copyright © 2003-2007 James Tittle II,
Copyright © 2003-2008 Chris Clepper
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
In the official GEM distribution, the GNU General Public License is
in the file GnuGPL.LICENSE
---------------------------------------------------------
ACKNOWLEDGMENTS
---------------------------------------------------------
Not all of the source code provided here has entirely been written by me.
I would like to point at the great openGL-tutorials at http://nehe.gamedev.net
Since these are tutorials, there is no copyright notice here.
Some of the pix_fx code is borrowed from effecTV by Kentarou Fukuchi et al.
at http://effectv.sourceforge.net released under the Gnu GPL, some other pix_fx
code has been ported from Pete Warden's fine collection of FreeFrame plugins at
http://petewarden.com released under the Gnu GPL.
---------------------------------------------------------
OTHER COPYRIGHT NOTICES
---------------------------------------------------------
particle:
Author: David McAllister
davemc[AT]cs.unc.edu
http://www.cs.unc.edu/~davemc/Particle/
Copyright (c) 1998 David K. McAllister

12942
Gem/ChangeLog Normal file

File diff suppressed because it is too large Load diff

10
Gem/Gem-meta.pd.in Normal file
View file

@ -0,0 +1,10 @@
#N canvas 1 51 320 90 10;
#N canvas 1 51 382 134 META 1;
#X text 10 10 NAME Gem;
#X text 10 30 VERSION @PACKAGE_VERSION@;
#X text 10 50 DESCRIPTION Graphics Environment for Multimedia;
#X text 10 70 AUTHOR IOhannes m zmölnig & the Gem development team
;
#X text 10 90 LICENSE GPL-2+;
#X restore 43 36 pd META;
#X text 39 15 Gem: Graphics Environment for Multimedia;

14
Gem/Gem.pc.in Normal file
View file

@ -0,0 +1,14 @@
# Gem pkg-config file
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
###############################
# core configuration
Name: Gem
Description: Gem plugins and externals
Version: @PACKAGE_VERSION@
Cflags: -I${includedir}/@PACKAGE@ @GEM_EXTERNAL_CPPFLAGS@ @GEM_EXTERNAL_CFLAGS@
Libs: -L${libdir}/@PACKAGE@ @GEM_EXTERNAL_LIBS@

290
Gem/GnuGPL.LICENSE.txt Normal file
View file

@ -0,0 +1,290 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This General
Public License applies to most of the Free Software Foundation's
software and to any other program whose authors commit to using it.
(Some other Free Software Foundation software is covered by the
GNU Library General Public License instead.) You can apply it to your
programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you distribute
copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you have. You
must make sure that they, too, receive or can get the source code. And
you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on,
we want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must
be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS FOR
COPYING, DISTRIBUTION AND
MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed under
the terms of this General Public License. The "Program", below, refers
to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it, either
verbatim or with modifications and/or translated into another language.
(Hereinafter, translation is included without limitation in the term
"modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program
(independent of having been made by running the Program). Whether
that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the notices
that refer to this License and to the absence of any warranty; and give
any other recipients of the Program a copy of this License along with the
Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide a
warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but does
not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, and
can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based on
the Program, the distribution of the whole must be on the terms of this
License, whose permissions for other licensees extend to the entire
whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise the
right to control the distribution of derivative or collective works based
on the Program.
In addition, mere aggregation of another work not based on the
Program with the Program (or with a work based on the Program) on a
volume of a storage or distribution medium does not bring the other
work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding
machine-readable source code, which must be distributed under
the terms of Sections 1 and 2 above on a medium customarily
used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your cost
of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with
such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies the
executable.
If distribution of executable or object code is made by offering access to
copy from a designated place, then offering equivalent access to copy
the source code from the same place counts as distribution of the source
code, even though third parties are not compelled to copy the source
along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However, parties
who have received copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain in full
compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and all
its terms and conditions for copying, distributing or modifying the
Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these terms
and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein. You are not responsible
for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot distribute
so as to satisfy simultaneously your obligations under this License and
any other pertinent obligations, then as a consequence you may not
distribute the Program at all. For example, if a patent license would not
permit royalty-free redistribution of the Program by all those who
receive copies directly or indirectly through you, then the only way you
could satisfy both it and this License would be to refrain entirely from
distribution of the Program.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents
or other property right claims or to contest validity of any such claims;
this section has the sole purpose of protecting the integrity of the free
software distribution system, which is implemented by public license
practices. Many people have made generous contributions to the wide
range of software distributed through that system in reliance on
consistent application of that system; it is up to the author/donor to
decide if he or she is willing to distribute software through any other
system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be
a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an
explicit geographical distribution limitation excluding those countries, so
that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number
of this License, you may choose any version ever published by the Free
Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF
CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM,
TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW
OR AGREED TO IN WRITING WILL ANY COPYRIGHT
HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

34
Gem/Makefile.am Normal file
View file

@ -0,0 +1,34 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
SUBDIRS =src abstractions
SUBDIRS+=help doc examples
SUBDIRS+=build
## plugins
SUBDIRS+=plugins
## window objects
SUBDIRS+=src/Output
## extra objects
SUBDIRS+=extra
#pkg-config support
## this is a bit hacky: we abused $(libdir) to point to .../lib/pd/extra
## so we cannot use it for the pkgconfigdir
## instead, we have to build it crom scratch
#pkgconfigdir = $(libdir)/pkgconfig
pkgconfigdir = ${exec_prefix}/lib/pkgconfig
pkgconfig_DATA = Gem.pc
gemdir=$(pkglibdir)
dist_gem_DATA = \
Gem-meta.pd \
ChangeLog \
COPYING.txt \
GnuGPL.LICENSE.txt \
README.txt
EXTRA_DIST = autogen.sh

184
Gem/README.txt Normal file
View file

@ -0,0 +1,184 @@
This is GEM - Graphics Environment for Multimedia
=================================================
You can get the current distribution from:
http://gem.iem.at
http://sourceforge.net/projects/pd-gem
if you want to compile the newest (bleeding edge, and possibly unstable) source
code yourself, you can get a copy from the public git repository on sourceforge:
read-only access: git://pd-gem.git.sourceforge.net/gitroot/pd-gem/Gem
read-write access: ssh://pd-gem.git.sourceforge.net/gitroot/pd-gem/Gem
usually, you will only need the read-only repository, which you can get with
$ git clone git://pd-gem.git.sourceforge.net/gitroot/pd-gem/Gem
=============================================
NEW:::
------
Gem is now supported by W32, linux and macOS-X
the IRIX version might work (but most probably will not): if you want to use Gem
under IRIX, feel free to make it work and report failure and success to me, so i
can incorporate any needed changes into the main Gem-trunk.
for installation instructions see below
NEW (Gem>=0.87):::
-----------------
(note: this NEWs only refer to the packaging, not to features of Gem)
As with GEM-0.87, i have broken the distribution into various packages
Gem-<gemver>.tgz :: quite everything (except binaries and auxiliary libraries)
Gem-doc-<gemver>.tgz :: example-patches, manual, ...
Gem-bin-<gemver>.zip :: W32-binary (containing a single file "Gem.dll")
Gem-bin-doc-<gemver>.zip :: W32-binary + documentation
GemLibs-<OS>-<libver>.tgz :: auxiliary libraries (used to be "AuxLibs")
1) the core Gem-packages:
the core Gem-packages all extract into the same directory Gem-<gemver>/
there are install-scripts for windoze (and probably IRIX)
these will install the documentation...
2) the GemLib-package:
Gem supports many 3rd party libraries, bundling all of them seems like a waste
of space and might impose legal issues. OTOH, it makes it much easier to setup
an environment to build Gem (esp. on systems that don't have package managers)
GemLibs is a small collections of libraries that can add some capabilities to
Gem, which it would lack otherwise (e.g. support for a given image format). It
is far from complete and most likely outdated, so usually you are better off, if
you just install any needed libraries manually.
Most of these libraries are only needed to build certain plugins.
GemLibs have their own version numbering, starting with 1.
You can get the newest GemLib from the place mentioned above
-------------------------------------
-------------------------------------
INSTALLATION:
=============
-------------------------------------
To install GEM on linux/OSX/...:
run
$ ./configure
$ make
$ make install
note that you might want to help Gem to find the Pd-headers, e.g. by doing
$ ./configure --with-pd=/usr/include/pd
try
$ ./configure --help to see more options
-------------------------------------
To install GEM on W32:
a) installer (preferred method)
use the installer executable to install Gem into ...\pd\extra
(to _build_ the installer you will have to have NSIS installed
see build/win-nsis for details)
b) archive (do it by hand)
1) unzip the GEM package
2) put the subfolders of Gem-<version>\ into a directory where Pd will
find it. If you are using an up-to-date version of Pd (>=0.43), put them
into the folder "Application Data\Pd\" in your home directory.
For older versions of Pd, put them into the "extra" folder of your Pd
installation.
e.g. if you installed Pd as "C:\Program Files\Pd-0.43-0" you should
end up with:
"C:\Program Files\Pd-0.43-0\extra\Gem"
and eventually with
"C:\Program Files\Pd-0.43-0\extra\pix_drum"
"C:\Program Files\Pd-0.43-0\extra\pix_mano"
...
there is no need to copy the README.txt found in Gem-<version>\
3) please note that the archive comes with all plugins
in most cases, you won't need all of them, and having plugins
installed that you don't need, will considerably slow down load
time of patches and might leed to undesired side-effects.
therefore, if loading is too slow (or you experience weird
things), it might be a good idea to disable plugins you don't
need.
disabling plugins is as simple as deleting them (or moving them
into a subfolder)
plugins are files of the form: "gem_<type><NAME>.dll"
e.g. "gem_filmQT.dll" is a plugin for reading films using the
QuickTime framework.
in order to use videoPYLON, videoHALCON and videoAVT, you need
to install proprietary libraries yourself; if you haven't done
so or don't own a device that can interact with those libraries,
you can safely remove these plugins.
if you have no clue what this is about, these plugins are most
likely not for you (so remove them)
-------------------------------------
-------------------------------------
RUNNING:
========
just installing Gem is not enough !
you will have to tell pd that it should load that library !!
you cannot create any Gem-objects without having loaded the Gem-library into pd !!!
make sure you have the proper binary for you OS
- windows: Gem.dll, Gem.m_i386, Gem.m_*
- macOS-X: Gem.pd_darwin, Gem.d_fat, Gem.d_ppc, Gem.d_*
- linux : Gem.pd_linux, Gem.l_i386, Gem.l_ia64, Gem.l_*
- freeBSD: Gem.pd_freebsd, Gem.b_i386, Gem.b_*
- irix : Gem.pd_irix
- ...
when starting pd, tell it to load Gem with the "-lib" flag
if your Gem-binary lives in pd/extra/, you could just try "pd -lib Gem"
if your Gem-binary lives somewhere else use something like "pd -lib /path/to/my/Gem"
you could also use "pd -path /path/to/my -lib Gem"
after loading Gem you will see a bit of a welcome message on the konsole
NOTE: there *must not* be any file extension with the "-lib"-flag.
e.g. this will fail miserably:
"pd -lib Gem.dll"
NOTE: please note the spelling: it is "Gem" and not "gem" nor "GEM"
if you have problems loading any library including Gem, have a look at the
pd-documentation.
if you have problems loading just Gem (but other libraries work), send me a
bug-report (see below)
BUG-REPORTS:
============
please do not hesitate to report any crashes, weirdnesses or other issues, using
the bugtracker at sourceforge:
http://sourceforge.net/projects/pd-gem/
or the gem-dev mailinglist (subscription at http://lists.puredata.info)
if your mail only says "hey, it does not work !", it is an annoyance and no bug-report
please specify at least the following things:
Operating-System (kernel-version,...)
video-card, driver
other hardware that is related to your problem (e.g.: camera)
does your system work with similar applications (e.g.: capture-software,
openGL (games, "glxgears")
what is the output of pd when you start it with the "-verbose" flag
(e.g.:"pd -verbose -lib Gem")
please do not use the puredata bugtracker for reporting Gem-specific bugs.
----
have fun
zmoelnig@iem.at

77
Gem/TODO Normal file
View file

@ -0,0 +1,77 @@
General:
osx: carbon/QuickTime not supported anymore since 10.6
Optimization:
use a more performant float2int conversion as described in
http://www.mega-nerd.com/FPcast/
Output:
multiple output
"external" windows
alpha in gemwindow?
linux: sometimes window freezes on "destroy"; (JMZ: i experience this sometimes on improper shutdown, but after some (up to 30) seconds, the window finally gets destroyed and pd exits fine; if this is the same as the reported bug, than it is rather an inconvenience than a real bug; does this also happens with Output/ objects or only with the old code?)
linux: resizing the window yields weird results
osx: [gemcocoawindow] compatible with [gemmacwindow]?
Controls:
selectables
Geos:
vertex stuff
Manips:
Nongeos:
add other light-types
check for the maximum number of lights during runtime
Pixes:
windows movie loader (have a look at guliverkli?; use gmerlin?)
upsidedown: pix_rectangle does not respect the upside-down flag and thus sometimes the rectangle appears in the upper-left corner and sometimes in the lower-left corner
generally all images on all platforms should have the same (upsidedown!) orientation
see http://stackoverflow.com/questions/443086/opengl-topdown-bottomup-textures
pix_rtx: flickering on OSX/ppc in mode#0;
how to prevent execessive memory usage?
pix_threshold: intial arguments
pix_crop: arguments/inlets differ!
pix_freeframe not supported on x86_64 architectures (newer versions of FF support x86_64; check whether this is compatible)
videopipes:
W32:AVIsynth/frameserver (http://www.debugmode.com/frameserver/)
W32:VirtualCamera
OSX:Syphon (http://syphon.v002.info/)
osx: pix_movie flickers (check whether this is still true)
w32: [pix_share_*] does not exist since the shared-memory concept has not made it to redmond yet
w32: crashes when texturing movies (related to GLEW?)
dreaming:
Pd-callbacks:
remove the entire callback-stuff for Pd-messages from the obj_realSetup()
instead this should be handled centrally in CPPExtern
- each member function called <name>Mess() provides a method for "<name>"
- dispatching can be done by Pd or Gem (the latter being easier)
info/ideas
- http://www.codeproject.com/KB/winsdk/callback_adapter.aspx
- Qt slot concept (http://sigslot.sourceforge.net/)
- reflection/inspection
- function-name demangling: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/proguide/ref/rkcxxflt.htm
wrap the entire Pd thing into C++:
GemOutlet()->send(int val);
BUGS:
look into flext conflict (i guess it's related to "new/delete")
single-object externals will run the setup-function twice; this gives nasty warnings in Pd-0.42

View file

@ -0,0 +1,29 @@
AUTOMAKE_OPTIONS = foreign
SUFFIXES = .pd
gemabsdir=$(pkglibdir)
nodist_gemabs_DATA = \
gemdefaultwindow.pd
dist_gemabs_DATA = \
gemhead.pd \
gemmouse.pd \
gemorb.pd \
gemtablet.pd \
gemwin.pd \
hsv2rgb-help.pd \
hsv2rgb.pd \
pix_blobtracker-help.pd \
pix_blobtracker.pd \
pix_buffer_filmopen-help.pd \
pix_buffer_filmopen.pd \
pix_write.pd \
rgb2hsv-help.pd \
rgb2hsv.pd \
rgb2yuv-help.pd \
rgb2yuv.pd \
yuv2rgb-help.pd \
yuv2rgb.pd

View file

@ -0,0 +1,17 @@
#N canvas 3 45 450 300 10;
#X obj 125 66 inlet;
#X obj 125 243 outlet;
#X obj 125 145 t a a;
#X obj 175 187 route bang;
#X obj 175 167 spigot;
#X obj 208 143 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 232 208 print gem\$0win;
#X obj 125 100 @GEM_DEFAULT_WINDOW@;
#X connect 0 0 7 0;
#X connect 2 0 1 0;
#X connect 2 1 4 0;
#X connect 3 1 6 0;
#X connect 4 0 3 0;
#X connect 5 0 4 1;
#X connect 7 0 2 0;

View file

@ -0,0 +1,90 @@
#N canvas 255 164 769 392 10;
#N canvas 443 22 581 526 gemreceive 0;
#X obj 109 413 outlet;
#X obj 288 58 inlet order;
#X obj 288 177 select 0;
#X msg 288 198 50;
#X obj 109 365 spigot 1;
#X obj 109 390 t a;
#X obj 288 222 t f f f;
#X obj 334 275 t f f;
#X obj 334 301 > 0;
#X obj 366 301 < 0;
#X obj 313 365 spigot 0;
#X obj 520 283 abs;
#X obj 109 342 gemreceive __gem_render \$1;
#X obj 313 342 gemreceive __gem_render_osd \$1;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 0;
#X connect 3 0 6 0;
#X connect 4 0 5 0;
#X connect 5 0 0 0;
#X connect 6 0 12 1;
#X connect 6 1 11 0;
#X connect 6 2 7 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 4 1;
#X connect 9 0 10 1;
#X connect 10 0 5 0;
#X connect 11 0 13 1;
#X connect 12 0 4 0;
#X connect 13 0 10 0;
#X restore 170 69 pd gemreceive;
#X obj 170 155 gemlist;
#N canvas 602 92 635 363 material 0;
#X obj 98 88 inlet gemlist;
#X obj 98 258 outlet gemlist;
#X obj 98 117 GEMglColor4f 1 1 1 1;
#X obj 98 143 GEMglMaterialfv GL_FRONT_AND_BACK GL_AMBIENT 0.2 0.2
0.2 1;
#X obj 98 163 GEMglMaterialfv GL_FRONT_AND_BACK GL_DIFFUSE 0.8 0.8
0.8 1;
#X obj 98 183 GEMglMaterialfv GL_FRONT_AND_BACK GL_EMISSION 0 0 0 1
;
#X obj 98 203 GEMglMaterialfv GL_FRONT_AND_BACK GL_SPECULAR 0 0 0 1
;
#X obj 98 223 GEMglMaterialfv GL_FRONT_AND_BACK GL_SHININESS 0;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 1 0;
#X restore 170 197 pd material;
#X obj 170 221 t a a a;
#X obj 216 242 GEMglPushMatrix;
#X obj 170 282 GEMglPopMatrix;
#X obj 193 306 outlet gemlist;
#X obj 130 18 inlet control;
#X obj 130 40 route bang float set;
#X obj 223 94 i;
#X obj 170 116 spigot 1;
#N canvas 0 0 650 510 defaultarg 0;
#X obj 134 132 loadbang;
#X obj 134 265 outlet;
#X obj 134 157 f \$1;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 286 39 pd defaultarg;
#X obj 71 174 GEMglFlush;
#X obj 71 122 gemlist;
#X obj 71 144 t a a;
#X connect 0 0 10 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 3 1 6 0;
#X connect 3 2 4 0;
#X connect 7 0 8 0;
#X connect 8 0 13 0;
#X connect 8 1 9 0;
#X connect 8 2 0 0;
#X connect 9 0 10 1;
#X connect 10 0 1 0;
#X connect 11 0 0 0;
#X connect 13 0 14 0;
#X connect 14 0 12 0;
#X connect 14 1 2 0;

View file

@ -0,0 +1,154 @@
#N canvas 0 0 786 465 10;
#X obj 60 327 outlet x;
#X obj 130 327 outlet y;
#X obj 250 327 outlet Left;
#X obj 360 327 outlet Middle;
#X obj 470 327 outlet Right;
#N canvas 340 91 557 430 arguments 1;
#X obj 139 87 inlet reset;
#X obj 139 110 t b;
#N canvas 0 0 877 440 argcount 0;
#X obj 32 46 inlet;
#X obj 50 178 select s;
#X obj 50 128 t b b;
#X obj 156 155 makefilename $%d-test;
#X obj 50 155 symbol \$1-test;
#X msg 156 135 1;
#X obj 570 178 select s;
#X obj 570 128 t b b;
#X obj 676 155 makefilename $%d-test;
#X msg 676 135 3;
#X obj 50 242 t f;
#X obj 32 306 f;
#X obj 32 74 t b b b;
#X msg 78 279 -1;
#X obj 32 360 outlet;
#X obj 570 155 symbol \$3-test;
#X msg 50 199 0;
#X obj 310 178 select s;
#X obj 310 128 t b b;
#X obj 416 155 makefilename $%d-test;
#X msg 416 135 2;
#X obj 310 155 symbol \$2-test;
#X msg 310 199 1;
#X msg 570 199 2;
#X obj 287 101 t b b b;
#X connect 0 0 12 0;
#X connect 1 0 16 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 3 0 1 1;
#X connect 4 0 1 0;
#X connect 5 0 3 0;
#X connect 6 0 23 0;
#X connect 7 0 15 0;
#X connect 7 1 9 0;
#X connect 8 0 6 1;
#X connect 9 0 8 0;
#X connect 10 0 11 1;
#X connect 11 0 14 0;
#X connect 12 0 11 0;
#X connect 12 1 24 0;
#X connect 12 2 13 0;
#X connect 13 0 11 1;
#X connect 15 0 6 0;
#X connect 16 0 10 0;
#X connect 17 0 22 0;
#X connect 18 0 21 0;
#X connect 18 1 20 0;
#X connect 19 0 17 1;
#X connect 20 0 19 0;
#X connect 21 0 17 0;
#X connect 22 0 10 0;
#X connect 23 0 10 0;
#X connect 24 0 2 0;
#X connect 24 1 18 0;
#X connect 24 2 7 0;
#X restore 139 134 pd argcount;
#X obj 139 182 select 0 1 2;
#X obj 253 352 outlet yscale;
#X obj 139 322 outlet yscale;
#X obj 139 160 i;
#X obj 253 323 /;
#X obj 201 201 t b b;
#X obj 166 223 f \$1;
#X obj 201 223 f \$1;
#X obj 233 223 f \$2;
#X obj 366 142 unpack 0 0;
#X obj 334 121 t b l;
#X obj 166 244 pack 0 500;
#X obj 139 270 pack 500 500;
#X obj 253 300 pack 500 500;
#X obj 139 293 /;
#X obj 334 97 inlet dimen;
#X floatatom 65 186 5 0 0 0 - - -;
#X msg 77 87 bang;
#X msg 139 203 1 1;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 6 0;
#X connect 3 0 21 0;
#X connect 3 1 9 0;
#X connect 3 2 8 0;
#X connect 6 0 3 0;
#X connect 6 0 19 0;
#X connect 7 0 4 0;
#X connect 8 0 10 0;
#X connect 8 1 11 0;
#X connect 9 0 14 0;
#X connect 10 0 15 0;
#X connect 11 0 16 0;
#X connect 12 0 15 1;
#X connect 12 0 17 1;
#X connect 12 1 14 1;
#X connect 12 1 16 1;
#X connect 13 0 6 0;
#X connect 13 1 12 0;
#X connect 14 0 15 0;
#X connect 14 0 16 0;
#X connect 15 0 17 0;
#X connect 16 0 7 0;
#X connect 17 0 5 0;
#X connect 18 0 13 0;
#X connect 20 0 1 0;
#X connect 21 0 15 0;
#X connect 21 0 16 0;
#X restore 147 173 pd arguments;
#X obj 60 241 * 1;
#X obj 130 241 * 1;
#X obj 147 148 loadbang;
#X obj 104 31 r __gem;
#X obj 104 52 route mouse dimen;
#X obj 396 88 route motion button;
#X obj 364 67 t b a;
#X obj 396 111 unpack;
#X obj 196 277 pack 0 0 0 0 0;
#X obj 196 303 unpack 0 0 0 0 0;
#X obj 166 277 f;
#X obj 234 207 del 0;
#X obj 243 245 route 0 1 2;
#X connect 5 0 6 1;
#X connect 5 1 7 1;
#X connect 6 0 16 1;
#X connect 7 0 14 1;
#X connect 8 0 5 0;
#X connect 9 0 10 0;
#X connect 10 0 12 0;
#X connect 10 1 5 1;
#X connect 11 0 13 0;
#X connect 11 1 18 0;
#X connect 12 0 17 0;
#X connect 12 1 11 0;
#X connect 13 0 6 0;
#X connect 13 1 7 0;
#X connect 14 0 15 0;
#X connect 15 0 0 0;
#X connect 15 1 1 0;
#X connect 15 2 2 0;
#X connect 15 3 3 0;
#X connect 15 4 4 0;
#X connect 16 0 14 0;
#X connect 17 0 16 0;
#X connect 18 0 14 2;
#X connect 18 1 14 3;
#X connect 18 2 14 4;

View file

@ -0,0 +1,22 @@
#N canvas 66 407 682 381 10;
#X text 53 56 the object has been taken out of Gem \, since Gem is
a graphics library \, and not a hardware-interfacing library.;
#X text 49 98 you should be able to build a functional replacement
using the [hid] external.;
#X text 54 36 this is a fake replacement of Gem's [gemorb].;
#X obj 41 341 outlet Position (x y z);
#X obj 231 341 outlet Rotation (x y z);
#X obj 421 341 outlet Buttons (a b c d e f g);
#X obj 172 142 loadbang;
#X obj 172 278 print error;
#X msg 172 244 [gemorb] is no longer available! \, use [hid] or similar
for interfacing a SpaceOrb;
#X obj 26 143 inlet;
#X obj 26 163 t b;
#X msg 26 182 you are interfacing a dummy replacement of [gemorb]!
\, please build your own [gemorb];
#X connect 6 0 8 0;
#X connect 8 0 7 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 11 0 7 0;

View file

@ -0,0 +1,21 @@
#N canvas 24 279 928 367 10;
#X obj 107 178 loadbang;
#X obj 107 250 print error;
#X msg 107 207 [gemtablet] is no longer available! \, use [hid] or
similar for interfacing a graph-tablet;
#X obj 127 312 outlet X-pos;
#X obj 137 331 outlet Y-pos;
#X obj 287 282 outlet Pressure;
#X obj 297 302 outlet Azimuth;
#X obj 307 322 outlet Altitude;
#X obj 317 342 outlet Twist;
#X obj 537 302 outlet Middle-Buttoh;
#X obj 547 322 outlet Right-Button;
#X obj 527 282 outlet Left-Button;
#X text 54 36 this is a fake replacement of Gem's [gemtablet].;
#X text 53 56 the object has been taken out of Gem \, since Gem is
a graphics library \, and not a hardware-interfacing library.;
#X text 51 98 you should be able to build a functional replacement
using the [hid] external.;
#X connect 0 0 2 0;
#X connect 2 0 1 0;

2802
Gem/abstractions/gemwin.pd Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,65 @@
#N canvas 172 190 600 500 10;
#X text 418 26 GEM object;
#X text 89 388 convert between RGB colorspace and HSV colorspace;
#X text 91 412 RGB is red \, green \, blue;
#X text 91 434 HSV is hue \, saturation \, value (luminance);
#X obj 119 207 cnv 15 70 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 123 218 rgb2hsv;
#X msg 163 182 1 0 0;
#X msg 155 156 0 0.2 0.5;
#X obj 123 257 unpack 0 0 0;
#X floatatom 202 279 5 0 0 1 Value - -;
#X floatatom 162 299 5 0 0 1 Saturation - -;
#X floatatom 123 322 5 0 0 1 Hue - -;
#X obj 321 206 cnv 15 70 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 325 256 unpack 0 0 0;
#X floatatom 404 278 5 0 0 1 Blue - -;
#X floatatom 364 298 5 0 0 1 Green - -;
#X floatatom 325 321 5 0 0 1 Red - -;
#X obj 325 217 hsv2rgb;
#X msg 365 152 0 1 1;
#X msg 387 176 0.6 1 0.5;
#X floatatom 178 84 5 0 1 1 Blue - -;
#X floatatom 141 67 5 0 1 1 Green - -;
#X floatatom 123 49 5 0 1 1 Red - -;
#X obj 123 122 pack 0 0 0;
#X floatatom 380 94 5 0 1 1 Value - -;
#X floatatom 343 76 5 0 1 1 Saturation - -;
#X floatatom 325 58 5 0 1 1 Hue - -;
#X obj 141 103 t b f;
#X obj 178 103 t b f;
#X obj 325 130 pack 0 0 0;
#X obj 343 111 t b f;
#X obj 380 111 t b f;
#X text 83 9 [rgb2hsv];
#X text 175 11 [hsv2rgb];
#X connect 5 0 8 0;
#X connect 6 0 5 0;
#X connect 7 0 5 0;
#X connect 8 0 11 0;
#X connect 8 1 10 0;
#X connect 8 2 9 0;
#X connect 13 0 16 0;
#X connect 13 1 15 0;
#X connect 13 2 14 0;
#X connect 17 0 13 0;
#X connect 18 0 17 0;
#X connect 19 0 17 0;
#X connect 20 0 28 0;
#X connect 21 0 27 0;
#X connect 22 0 23 0;
#X connect 23 0 5 0;
#X connect 24 0 31 0;
#X connect 25 0 30 0;
#X connect 26 0 29 0;
#X connect 27 0 23 0;
#X connect 27 1 23 1;
#X connect 28 0 23 0;
#X connect 28 1 23 2;
#X connect 29 0 17 0;
#X connect 30 0 29 0;
#X connect 30 1 29 1;
#X connect 31 0 29 0;
#X connect 31 1 29 2;

143
Gem/abstractions/hsv2rgb.pd Normal file
View file

@ -0,0 +1,143 @@
#N canvas 206 49 450 568 10;
#X obj 187 84 route 0;
#X msg 187 56 \$2 \$3 \$1;
#X obj 187 409 f;
#X obj 231 111 unpack 0 0 0;
#X text 250 71 svh;
#X obj 187 28 inlet hsv;
#X obj 187 520 outlet rgb;
#X obj 401 149 * 6;
#X obj 380 196 % 6;
#X obj 350 173 t f f;
#X msg 350 149 0;
#X text 406 196 i;
#X obj 350 219 -;
#X obj 231 217 *;
#X obj 231 178 - 1;
#X obj 231 198 * -1;
#X obj 263 330 *;
#X obj 263 291 - 1;
#X obj 263 311 * -1;
#X obj 263 269 *;
#X obj 350 240 t f f;
#X obj 380 262 - 1;
#X obj 380 283 * -1;
#X obj 302 356 *;
#X obj 302 317 - 1;
#X obj 302 337 * -1;
#X obj 302 295 *;
#X obj 231 151 t f f f;
#X obj 241 392 pack 0 0 0 0;
#N canvas 387 255 646 315 select 0;
#X obj 290 37 inlet;
#X obj 16 247 outlet;
#X obj 92 104 t b l;
#X obj 125 128 unpack 0 0 0 0;
#X obj 89 43 inlet p q t v;
#X obj 92 128 i;
#X obj 92 151 select 0 1 2 3 4 5;
#X obj 16 223 pack 0 0 0;
#X obj 16 203 f;
#X obj 96 223 pack 0 0 0;
#X obj 96 203 f;
#X obj 176 223 pack 0 0 0;
#X obj 176 203 f;
#X obj 256 223 pack 0 0 0;
#X obj 256 203 f;
#X obj 336 223 pack 0 0 0;
#X obj 336 203 f;
#X obj 416 223 pack 0 0 0;
#X obj 416 203 f;
#X connect 0 0 5 1;
#X connect 2 0 5 0;
#X connect 2 1 3 0;
#X connect 3 0 7 2;
#X connect 3 0 9 2;
#X connect 3 0 12 1;
#X connect 3 0 14 1;
#X connect 3 0 15 1;
#X connect 3 0 17 1;
#X connect 3 1 10 1;
#X connect 3 1 13 1;
#X connect 3 1 17 2;
#X connect 3 2 7 1;
#X connect 3 2 11 2;
#X connect 3 2 16 1;
#X connect 3 3 8 1;
#X connect 3 3 9 1;
#X connect 3 3 11 1;
#X connect 3 3 13 2;
#X connect 3 3 15 2;
#X connect 3 3 18 1;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 6 0 8 0;
#X connect 6 1 10 0;
#X connect 6 2 12 0;
#X connect 6 3 14 0;
#X connect 6 4 16 0;
#X connect 6 5 18 0;
#X connect 7 0 1 0;
#X connect 8 0 7 0;
#X connect 9 0 1 0;
#X connect 10 0 9 0;
#X connect 11 0 1 0;
#X connect 12 0 11 0;
#X connect 13 0 1 0;
#X connect 14 0 13 0;
#X connect 15 0 1 0;
#X connect 16 0 15 0;
#X connect 17 0 1 0;
#X connect 18 0 17 0;
#X restore 241 416 pd select;
#X msg 187 478 \$1 \$1 \$1;
#X obj 187 450 clip 0 1;
#X obj 231 131 clip 0 1;
#X obj 270 173 clip 0 1;
#X obj 350 109 clip 0 1;
#X obj 350 129 select 1;
#X connect 0 0 2 0;
#X connect 0 1 3 0;
#X connect 1 0 0 0;
#X connect 2 0 31 0;
#X connect 3 0 32 0;
#X connect 3 1 33 0;
#X connect 3 2 34 0;
#X connect 5 0 1 0;
#X connect 7 0 9 0;
#X connect 8 0 12 1;
#X connect 8 0 29 1;
#X connect 9 0 12 0;
#X connect 9 1 8 0;
#X connect 10 0 9 0;
#X connect 12 0 20 0;
#X connect 13 0 28 0;
#X connect 14 0 15 0;
#X connect 15 0 13 0;
#X connect 16 0 28 1;
#X connect 17 0 18 0;
#X connect 18 0 16 0;
#X connect 19 0 17 0;
#X connect 20 0 19 1;
#X connect 20 1 21 0;
#X connect 21 0 22 0;
#X connect 22 0 26 1;
#X connect 23 0 28 2;
#X connect 24 0 25 0;
#X connect 25 0 23 0;
#X connect 26 0 24 0;
#X connect 27 0 14 0;
#X connect 27 1 19 0;
#X connect 27 2 26 0;
#X connect 28 0 29 0;
#X connect 29 0 6 0;
#X connect 30 0 6 0;
#X connect 31 0 30 0;
#X connect 32 0 27 0;
#X connect 33 0 13 1;
#X connect 33 0 28 3;
#X connect 33 0 16 1;
#X connect 33 0 23 1;
#X connect 34 0 35 0;
#X connect 35 0 10 0;
#X connect 35 1 7 0;

View file

@ -0,0 +1,420 @@
#N canvas 35 25 662 452 10;
#X text 452 8 GEM object;
#X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 40 267 Inlets:;
#X text 39 362 Outlets:;
#X obj 9 227 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 18 226 Arguments:;
#X obj 8 56 cnv 15 430 165 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 200 320 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 544 330 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X msg 67 70 set destroy;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X msg 156 71 set create;
#X obj 67 41 route create;
#X connect 2 0 7 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X connect 7 1 6 0;
#X connect 7 1 5 0;
#X restore 549 369 pd gemwin;
#X msg 549 350 create;
#X text 545 329 Create window:;
#X obj 451 173 cnv 15 185 120 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 83 gemhead;
#X text 17 376 Outlet 1: gemlist;
#X text 24 281 Inlet 1: gemlist;
#X obj 451 300 pix_texture;
#X obj 451 151 pix_film;
#X obj 515 151 t f;
#X obj 464 103 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 0 450 300 open 0;
#X obj 85 49 inlet;
#X obj 85 237 outlet;
#X obj 85 145 openpanel;
#X msg 85 179 open \$1;
#X msg 259 213 auto 1;
#X obj 259 189 loadbang;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 4 0;
#X restore 464 131 pd open;
#X text 505 77 open a supported;
#X text 506 88 movie-clip;
#X text 523 114 macOS: quicktime;
#X text 516 104 windos: *.AVI;
#X text 523 124 linux: depends...;
#X floatatom 463 190 3 0 100 2 threshold - -;
#X obj 463 207 / 100;
#X text 50 12 Synopsis: [pix_blobtracker];
#X text 71 31 Class: pix object (analysis);
#X text 29 57 Description: blob detector and tracker;
#X obj 451 262 pix_blobtracker;
#X obj 451 322 square 4;
#X msg 463 228 threshold \$1;
#X floatatom 553 190 3 0 100 2 blobsize - -;
#X obj 553 207 / 100;
#X msg 553 228 blobSize \$1;
#N canvas 0 0 450 300 showblobs 0;
#X obj 67 113 route 0 1 2 3 4 5;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 58 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 85 unpack;
#X obj 102 108 * 8;
#X obj 102 131 - 4;
#X obj 145 106 * 8;
#X obj 145 129 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 67 136 pd showblob;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 58 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 85 unpack;
#X obj 102 108 * 8;
#X obj 102 131 - 4;
#X obj 145 106 * 8;
#X obj 145 129 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 86 155 pd showblob;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 58 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 92 unpack;
#X obj 102 115 * 8;
#X obj 102 138 - 4;
#X obj 145 113 * 8;
#X obj 145 136 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 105 174 pd showblob;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 58 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 85 unpack;
#X obj 102 108 * 8;
#X obj 102 131 - 4;
#X obj 145 106 * 8;
#X obj 145 129 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 124 193 pd showblob;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 60 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 85 unpack;
#X obj 102 108 * 8;
#X obj 102 131 - 4;
#X obj 145 106 * 8;
#X obj 145 129 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 143 212 pd showblob;
#N canvas 0 0 451 339 showblob 0;
#X obj 76 184 gemhead;
#X obj 76 266 translateXYZ;
#X obj 102 58 pack;
#X obj 102 34 inlet x|y;
#X obj 76 225 color 1 1 1;
#X obj 219 75 loadbang;
#X obj 219 122 random 256;
#X obj 219 143 / 256;
#X obj 219 185 hsv2rgb;
#X msg 219 166 \$1 1 1;
#X obj 219 97 t b b;
#X obj 76 286 sphere 0.2;
#X msg 249 233 0;
#X msg 216 233 0.2;
#X obj 216 254 f;
#X obj 298 47 t b;
#X obj 298 24 inlet reset;
#X obj 139 183 t f b;
#X obj 102 85 unpack;
#X obj 102 108 * 8;
#X obj 102 131 - 4;
#X obj 145 106 * 8;
#X obj 145 129 - 4;
#X connect 0 0 4 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 6 0;
#X connect 10 1 12 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 1 2;
#X connect 17 1 13 0;
#X connect 18 0 19 0;
#X connect 18 1 21 0;
#X connect 19 0 20 0;
#X connect 20 0 1 1;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X restore 162 231 pd showblob;
#X obj 67 86 inlet blobinformation;
#X connect 0 0 1 0;
#X connect 0 1 2 0;
#X connect 0 2 3 0;
#X connect 0 3 4 0;
#X connect 0 4 5 0;
#X connect 0 5 6 0;
#X connect 7 0 0 0;
#X restore 541 301 pd showblobs;
#X text 17 78 [pix_blobtracker] is able to detect multiple blobs within
an image and tries to keep track of which blob is which to keep indices
consistant while the blobs are moving.;
#X text 16 127 [pix_blobtracker] is an abstraction based on [pix_multiblob]
for blob-detection and some mtx-objects from "iemmatrix" (which you
need to have installed on your system!) to do the actual tracking.
;
#X text 64 237 int: max number of blobs to detect;
#X text 21 187 like [pix_multiblob] this object only takes the luminance
into account for blob-tracking;
#X text 20 408 see also:;
#X obj 104 405 pix_multiblob;
#X text 24 296 Inlet 1: threshold <float>: minimum luminance of a pixel
to be considered part of a blob. (default=0.04);
#X text 24 325 Inlet 1: blobSize <float>: minimum relative size of
a blob. (default=0.1);
#X connect 10 0 11 0;
#X connect 11 0 10 0;
#X connect 14 0 18 0;
#X connect 17 0 33 0;
#X connect 18 0 32 0;
#X connect 18 2 19 0;
#X connect 19 0 18 1;
#X connect 20 0 21 0;
#X connect 21 0 18 0;
#X connect 27 0 28 0;
#X connect 28 0 34 0;
#X connect 32 0 17 0;
#X connect 32 1 38 0;
#X connect 34 0 32 0;
#X connect 35 0 36 0;
#X connect 36 0 37 0;
#X connect 37 0 32 0;

View file

@ -0,0 +1,132 @@
#N canvas 77 45 654 552 10;
#X declare -lib Gem -lib iemmatrix;
#N canvas 0 0 571 399 matrix->indexlist 0;
#X obj 133 90 inlet;
#X obj 133 298 outlet;
#X obj 133 163 mtx;
#X msg 133 137 row;
#X obj 133 109 t b a b;
#X obj 212 227 i;
#X obj 239 228 + 1;
#X obj 133 248 pack 0 0 0 0;
#X obj 133 210 t l b;
#X msg 133 273 \$4 \$1 \$2 \$3;
#X msg 228 206 0;
#X msg 133 189 \$1 \$2 \$3;
#X connect 0 0 4 0;
#X connect 2 0 11 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 1 2 1;
#X connect 4 2 10 0;
#X connect 5 0 6 0;
#X connect 5 0 7 3;
#X connect 6 0 5 1;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 8 1 5 0;
#X connect 9 0 1 0;
#X connect 10 0 5 1;
#X connect 11 0 8 0;
#X restore 324 518 pd matrix->indexlist;
#X obj 97 197 inlet gemlist;
#X obj 97 402 outlet gemlist;
#X obj 231 429 t a;
#X obj 231 343 t a a;
#X obj 324 428 mtx_mul;
#X obj 354 490 outlet numblobs;
#X obj 324 449 t a a;
#X obj 354 471 mtx_size;
#X obj 231 363 mtx_resize \$1 2;
#N canvas 0 0 518 479 mtx_matcher 0;
#X obj 61 200 mtx_distance2;
#X obj 61 176 t a a;
#X obj 61 244 t a a;
#X obj 61 279 mtx_mul;
#X obj 61 325 outlet matched;
#X obj 171 325 outlet matcher;
#X obj 147 177 inlet dest;
#X obj 61 149 inlet source;
#X text 25 105 both "source" and "dest" must have the same number of
columns (dimension in feature-space);
#N canvas 0 0 618 479 mtx_rowpermutate 0;
#X obj 150 214 t b a;
#X obj 150 235 mtx;
#X obj 150 256 mtx_mul;
#X obj 111 192 mtx_pivot -1;
#X text 17 19 this unfortunately does not guarantee to give as a minimum
trace of the result!;
#X obj 150 309 outlet rowpermutator;
#X obj 111 141 inlet permutans;
#X connect 0 0 1 0;
#X connect 0 1 2 1;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 1 0 0;
#X connect 3 2 1 1;
#X connect 6 0 3 0;
#X restore 61 221 pd mtx_rowpermutate;
#X text 34 383 this algorithm is _far_ from being perfect! the [mtx_rowpermutate]
does not really guarantee that the trace of the result is a global
mimimum \; if it is not \, than the match will be sub-optimal! this
will be even worse \, if there are several _equal_ (sub)minima in the
distance-matrix.;
#X text 158 194 greater distances have an extra penalty (^2) \; is
this ok?;
#X text 32 52 we calculate the euclidean distance between the vectors
of the 2 sets and try to find a trace with minimum penalty;
#X text 32 22 this tries to get the best (weighted) match between 2
sets of feature-vectors.;
#X connect 0 0 9 0;
#X connect 1 0 0 0;
#X connect 1 1 3 1;
#X connect 2 0 3 0;
#X connect 2 1 5 0;
#X connect 3 0 4 0;
#X connect 6 0 0 1;
#X connect 7 0 1 0;
#X connect 9 0 2 0;
#X restore 231 397 pd mtx_matcher;
#X text 91 114 this blobtracker is far from being perfect. for an explanation
read the comments in [pd mtx_matcher];
#X text 93 536 we don't want to output "matrix" \, but pure pd-lists
instead;
#X obj 324 566 outlet bloblists;
#X text 344 402 this is the work-horse for the tracking;
#X text 95 10 part of Gem;
#X text 51 253 the work-horse for detection;
#X obj 301 224 loadbang;
#X obj 301 243 f \$1;
#X obj 301 262 moses 1;
#X msg 331 343 6 2;
#X obj 301 281 t b b;
#X text 56 155 TODO: output only those blobs that are really detected
;
#X obj 231 322 mtx_resize \$1 0;
#X msg 331 302 6 0;
#X obj 97 269 pix_multiblob \$1;
#X obj 97 30 declare -lib Gem -lib iemmatrix;
#X text 92 66 copyright (c) IOhannes m zmoelnig \, 2005 \; you may
use this under the terms of the GnuGPL v2.0 or later;
#X connect 0 0 13 0;
#X connect 1 0 25 0;
#X connect 3 0 10 1;
#X connect 4 0 9 0;
#X connect 4 1 5 1;
#X connect 5 0 7 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 6 0;
#X connect 9 0 10 0;
#X connect 10 0 3 0;
#X connect 10 1 5 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 21 0;
#X connect 20 0 9 1;
#X connect 21 0 20 0;
#X connect 21 1 24 0;
#X connect 23 0 4 0;
#X connect 24 0 23 1;
#X connect 25 0 2 0;
#X connect 25 1 23 0;

View file

@ -0,0 +1,86 @@
#N canvas 621 114 691 473 10;
#X obj 9 265 cnv 15 430 185 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 40 267 Inlets:;
#X obj 9 227 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 18 226 Arguments:;
#X obj 8 56 cnv 15 430 165 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 200 280 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 536 293 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X msg 67 70 set destroy;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X msg 156 71 set create;
#X obj 67 41 route create;
#X connect 2 0 7 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X connect 7 1 6 0;
#X connect 7 1 5 0;
#X restore 541 332 pd gemwin;
#X msg 541 313 create;
#X text 537 292 Create window:;
#X obj 461 206 cnv 15 180 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X text 71 31 Class: pix object;
#X text 64 237 list: <buffer_name>;
#X text 26 312 Inlet 1: message: set <buffer_name>: write to another
buffer.;
#X text 440 363 see also:;
#X obj 508 382 pix_buffer_read;
#X obj 461 84 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 461 112 openpanel;
#X msg 461 156 open \$1 \$2;
#X obj 461 135 pack s 0;
#X msg 474 182 set depot;
#X obj 507 362 pix_buffer depot 10;
#X text 50 12 Synopsis: [pix_buffer_filmopen];
#X text 29 57 Description: reads a movie into a [pix_buffer];
#X text 11 79 [pix_buffer_filmopen] reads a movie into a named buffer
in the [pix_buffer] object \, starting at an (optional) bufferindex
(defaults to 0). The film is read as fast as possible and the entire
film is read \, so you might get clicks.;
#X text 13 151 This object is meant to be used at initialzation time.
;
#X text 26 280 Inlet 1: message: open <filename> <bufferindex>: read
a filename into buffer starting at index.;
#X text 15 172 This object needs the gemwindow to be created.;
#X obj 461 212 pix_buffer_filmopen depot;
#X obj 461 242 unpack f f f;
#X floatatom 461 264 5 0 0 0 - - -;
#X floatatom 495 264 5 0 0 0 - - -;
#X floatatom 530 264 5 0 0 0 - - -;
#X obj 632 262 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 49 341 Outlets:;
#X text 26 356 Outlet 1: list: <length> <width> <height>: gets the
dimensions (in fps and pixels) of a film when it gets loaded. if length
is not available (video-streams) -1 is returned.;
#X text 26 413 Outlet 2: bangs when finished loading;
#X text 452 8 GEM abstraction;
#X connect 8 0 9 0;
#X connect 9 0 8 0;
#X connect 17 0 18 0;
#X connect 18 0 20 0;
#X connect 19 0 29 0;
#X connect 20 0 19 0;
#X connect 21 0 29 0;
#X connect 29 0 30 0;
#X connect 29 1 34 0;
#X connect 30 0 31 0;
#X connect 30 1 32 0;
#X connect 30 2 33 0;

View file

@ -0,0 +1,78 @@
#N canvas 1416 206 863 652 10;
#X obj 79 77 inlet;
#X obj 122 240 gemhead;
#X msg 153 263 open \$1;
#X obj 122 288 pix_film;
#X obj 180 382 until;
#X obj 180 342 t f b;
#X obj 180 402 i;
#X obj 213 403 + 1;
#X msg 122 215 0;
#X obj 122 193 loadbang;
#X obj 79 100 route set open;
#X msg 79 142 set \$1;
#X obj 122 503 pix_buffer_write \$1;
#X obj 153 158 unpack s 0;
#X obj 153 132 t a b;
#X obj 226 184 t f;
#X msg 231 158 0;
#X msg 219 80 open data/homer.avi 5;
#X obj 79 121 symbol;
#X obj 180 425 t b f f f;
#X msg 294 129 set myImages;
#X obj 220 451 + 0;
#X msg 225 382 0;
#X text 379 81 open film "data/homer.avi" and write it into buffer
starting at bufferposition "5";
#X text 392 132 set the buffer to write to;
#X text 63 29 read a film into a buffer;
#X text 356 244 TODO:;
#X text 401 244 set upper limit to write to;
#X text 400 259 guess write-limit from pix_buffer size;
#X text 361 328 ATTENTION:;
#X text 446 328 this object will only work with rendering turned on
;
#X obj 148 542 outlet info;
#X obj 277 542 outlet finished;
#X obj 223 344 t b;
#X text 413 451 (c) copyleft 2009 Max Neupert;
#X obj 148 316 t a a;
#X obj 148 465 t a b;
#X text 412 433 (c) copyleft 2008-2009 IOhannes m zmoelnig \, IEM \,
KUG;
#X connect 0 0 10 0;
#X connect 1 0 3 0;
#X connect 2 0 3 0;
#X connect 3 0 12 0;
#X connect 3 1 35 0;
#X connect 3 2 33 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 5 1 22 0;
#X connect 6 0 7 0;
#X connect 6 0 19 0;
#X connect 7 0 6 1;
#X connect 8 0 1 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 10 1 14 0;
#X connect 11 0 12 0;
#X connect 13 0 2 0;
#X connect 13 1 15 0;
#X connect 14 0 13 0;
#X connect 14 1 16 0;
#X connect 15 0 21 1;
#X connect 16 0 15 0;
#X connect 17 0 10 0;
#X connect 18 0 11 0;
#X connect 19 0 1 0;
#X connect 19 1 3 1;
#X connect 19 2 21 0;
#X connect 20 0 10 0;
#X connect 21 0 12 1;
#X connect 22 0 6 1;
#X connect 33 0 4 1;
#X connect 35 0 36 0;
#X connect 35 1 5 0;
#X connect 36 0 31 0;
#X connect 36 1 32 0;

View file

@ -0,0 +1,197 @@
#N canvas 1638 263 859 513 10;
#X obj 81 82 inlet gemlist;
#X obj 351 471 outlet gemlist;
#X obj 351 439 pix_writer;
#X obj 351 298 pix_snap;
#X obj 669 133 loadbang;
#N canvas 0 0 450 300 once 0;
#X obj 82 68 inlet;
#X obj 82 136 spigot;
#X obj 82 163 t a b;
#X msg 122 108 0;
#X obj 270 61 inlet reset;
#X obj 270 90 t b;
#X msg 269 113 1;
#X obj 82 197 outlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 7 0;
#X connect 2 1 3 0;
#X connect 3 0 1 1;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 1 1;
#X restore 374 245 pd once;
#X obj 351 192 t a b b;
#X msg 374 265 snap;
#X obj 420 224 i 0;
#X obj 438 198 r \$0-auto;
#X obj 460 223 r \$0-banged;
#X obj 81 204 s \$0-banged;
#X obj 81 182 t b;
#X obj 395 400 r \$0-banged;
#X obj 81 155 route bang auto file vert_size vert_pos;
#X obj 135 227 i;
#X obj 135 247 != 0;
#X obj 135 267 s \$0-auto;
#X obj 189 325 list prepend file;
#X obj 189 350 list trim;
#X obj 189 370 t a;
#X obj 474 59 inlet size;
#X obj 619 61 inlet pos;
#N canvas 1530 407 698 419 arguments 0;
#X obj 112 44 inlet init;
#X text 252 61 4: xoff yoff width height;
#X text 254 79 2: width height;
#X text 254 95 0:;
#N canvas 52 114 1249 422 argcount 0;
#X obj 69 46 inlet;
#X obj 50 178 select s;
#X obj 50 128 t b b;
#X obj 156 155 makefilename $%d-test;
#X obj 50 155 symbol \$1-test;
#X msg 156 135 1;
#X obj 570 178 select s;
#X obj 570 128 t b b;
#X obj 676 155 makefilename $%d-test;
#X obj 850 178 select s;
#X obj 850 128 t b b;
#X obj 956 155 makefilename $%d-test;
#X obj 1120 178 select s;
#X obj 1120 128 t b b;
#X obj 1226 155 makefilename $%d-test;
#X msg 676 135 3;
#X msg 956 135 4;
#X msg 1226 135 5;
#X obj 50 242 t f;
#X obj 27 306 f;
#X obj 322 61 t b b b b b;
#X obj 27 74 t b b b;
#X msg 73 291 -1;
#X obj 27 360 outlet;
#X obj 570 155 symbol \$3-test;
#X obj 850 155 symbol \$4-test;
#X obj 1120 155 symbol \$5-test;
#X msg 50 199 0;
#X obj 310 178 select s;
#X obj 310 128 t b b;
#X obj 416 155 makefilename $%d-test;
#X msg 416 135 2;
#X obj 310 155 symbol \$2-test;
#X msg 310 199 1;
#X msg 570 199 2;
#X msg 850 199 3;
#X msg 1120 199 4;
#X connect 0 0 21 0;
#X connect 1 0 27 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 3 0 1 1;
#X connect 4 0 1 0;
#X connect 5 0 3 0;
#X connect 6 0 34 0;
#X connect 7 0 24 0;
#X connect 7 1 15 0;
#X connect 8 0 6 1;
#X connect 9 0 35 0;
#X connect 10 0 25 0;
#X connect 10 1 16 0;
#X connect 11 0 9 1;
#X connect 12 0 36 0;
#X connect 13 0 26 0;
#X connect 13 1 17 0;
#X connect 14 0 12 1;
#X connect 15 0 8 0;
#X connect 16 0 11 0;
#X connect 17 0 14 0;
#X connect 18 0 19 1;
#X connect 19 0 23 0;
#X connect 20 0 2 0;
#X connect 20 1 29 0;
#X connect 20 2 7 0;
#X connect 20 3 10 0;
#X connect 20 4 13 0;
#X connect 21 0 19 0;
#X connect 21 1 20 0;
#X connect 21 2 22 0;
#X connect 22 0 19 1;
#X connect 24 0 6 0;
#X connect 25 0 9 0;
#X connect 26 0 12 0;
#X connect 27 0 18 0;
#X connect 28 0 33 0;
#X connect 29 0 32 0;
#X connect 29 1 31 0;
#X connect 30 0 28 1;
#X connect 31 0 30 0;
#X connect 32 0 28 0;
#X connect 33 0 18 0;
#X connect 34 0 18 0;
#X connect 35 0 18 0;
#X connect 36 0 18 0;
#X restore 112 118 pd argcount;
#X obj 112 181 list append \$1 \$2 \$3 \$4;
#X obj 112 142 select 4 2 0;
#X obj 112 312 pack 0 0 0 0;
#X obj 112 337 t l l;
#X obj 112 385 outlet offset;
#X obj 232 386 outlet size;
#X msg 112 362 \$1 \$2;
#X msg 232 362 \$3 \$4;
#X obj 139 211 list append 0 0 \$1 \$2;
#X obj 112 290 t a;
#X msg 193 255 0 0 128 128;
#X obj 193 232 t b b;
#X obj 283 275 print error;
#X msg 283 255 [pix_write] needs 0 2 or 4 arguments;
#X connect 0 0 4 0;
#X connect 4 0 6 0;
#X connect 5 0 14 0;
#X connect 6 0 5 0;
#X connect 6 1 13 0;
#X connect 6 3 16 0;
#X connect 7 0 8 0;
#X connect 8 0 11 0;
#X connect 8 1 12 0;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 13 0 14 0;
#X connect 14 0 7 0;
#X connect 15 0 14 0;
#X connect 16 0 15 0;
#X connect 16 1 18 0;
#X connect 18 0 17 0;
#X restore 669 152 pd arguments;
#X obj 538 364 r \$0-auto;
#X msg 538 385 auto \$1;
#X connect 0 0 14 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 23 0;
#X connect 5 0 7 0;
#X connect 6 0 3 0;
#X connect 6 1 5 0;
#X connect 6 2 8 0;
#X connect 7 0 3 0;
#X connect 8 0 5 1;
#X connect 9 0 8 1;
#X connect 10 0 5 1;
#X connect 12 0 11 0;
#X connect 13 0 2 0;
#X connect 14 0 12 0;
#X connect 14 1 15 0;
#X connect 14 2 18 0;
#X connect 14 3 3 1;
#X connect 14 4 3 2;
#X connect 14 5 6 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 2 0;
#X connect 21 0 3 1;
#X connect 22 0 3 2;
#X connect 23 0 3 2;
#X connect 23 1 3 1;
#X connect 24 0 25 0;
#X connect 25 0 2 0;

View file

@ -0,0 +1,150 @@
#N canvas 253 66 836 530 10;
#X obj 110 23 inlet gemlist;
#X obj 227 125 outlet gemlist;
#X obj 537 418 pix_buffer \$0-buf 1;
#X obj 254 199 pix_buffer_write \$0-buf;
#X obj 227 102 t a a;
#X obj 453 88 unpack s 0;
#X obj 510 139 t f f;
#N canvas 1 51 450 300 spigot 0;
#X obj 49 62 inlet gemlist;
#X obj 49 242 spigot;
#X obj 49 272 outlet gemlist;
#X obj 193 63 inlet;
#N canvas 1 51 450 300 bang 0;
#X obj 187 163 i;
#X obj 187 183 t f b;
#X msg 214 162 0;
#X msg 202 144 1;
#X obj 279 85 inlet;
#X obj 279 105 t b;
#X obj 74 84 inlet;
#X obj 187 203 outlet;
#X connect 0 0 1 0;
#X connect 1 0 7 0;
#X connect 1 1 2 0;
#X connect 2 0 0 1;
#X connect 3 0 0 1;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 6 0 0 0;
#X restore 154 166 pd bang;
#X obj 193 83 route bang float;
#X obj 154 145 t b b;
#N canvas 1 51 450 300 float 0;
#X obj 187 163 i;
#X obj 279 85 inlet;
#X obj 74 84 inlet;
#X obj 187 203 outlet;
#X connect 0 0 3 0;
#X connect 1 0 0 1;
#X connect 2 0 0 0;
#X restore 204 166 pd float;
#X obj 154 186 &&;
#X obj 49 82 t a b;
#X connect 0 0 9 0;
#X connect 1 0 2 0;
#X connect 3 0 5 0;
#X connect 4 0 8 0;
#X connect 5 0 4 1;
#X connect 5 1 7 1;
#X connect 6 0 4 0;
#X connect 6 1 7 0;
#X connect 7 0 8 1;
#X connect 8 0 1 1;
#X connect 9 0 1 0;
#X connect 9 1 6 0;
#X restore 254 160 pd spigot;
#X obj 254 180 t a b;
#X msg 389 180 0;
#X obj 254 219 t b;
#X obj 254 239 i;
#X obj 254 259 t f f;
#X obj 281 239 + 1;
#X obj 254 279 makefilename gem%05d.tif;
#X obj 510 159 select 0;
#X msg 510 179 tif;
#X msg 555 179 jpg;
#X obj 510 199 symbol;
#X obj 453 220 pack s s;
#X obj 537 337 t f b;
#X msg 537 377 setProps quality \$1;
#X obj 537 357 select 0;
#X msg 601 357 clearProps;
#X obj 510 115 clip 0 100;
#X msg 254 363 save \$1 0;
#X obj 537 396 t a a;
#X msg 453 260 set \$1%05d.\$2;
#X obj 453 240 t l b;
#X msg 284 220 0;
#X text 104 427 (c) 2011 Jack/RYBN;
#X text 104 437 (c) 2011 IOhannes m zmölnig;
#X obj 537 438 s \$0-info;
#X obj 709 477 outlet info;
#X obj 110 63 f;
#X obj 152 63 t b;
#X obj 110 83 t a;
#X obj 110 43 route auto bang;
#X obj 209 43 route file;
#X obj 277 43 route enumProps clearProps setProps;
#X obj 277 62 t b;
#X obj 346 62 t b;
#X msg 461 357 enumProps;
#X obj 682 357 list prepend setProps;
#X obj 682 377 list trim;
#X obj 709 458 r \$0-info;
#X connect 0 0 37 0;
#X connect 2 0 32 0;
#X connect 3 0 10 0;
#X connect 4 0 1 0;
#X connect 4 1 7 0;
#X connect 5 0 19 0;
#X connect 5 1 24 0;
#X connect 6 0 15 0;
#X connect 6 1 20 0;
#X connect 7 0 8 0;
#X connect 8 0 3 0;
#X connect 8 1 9 0;
#X connect 9 0 3 1;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 14 0;
#X connect 12 1 13 0;
#X connect 13 0 11 1;
#X connect 14 0 25 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 16 0 18 0;
#X connect 17 0 18 0;
#X connect 18 0 19 1;
#X connect 19 0 28 0;
#X connect 20 0 22 0;
#X connect 20 1 23 0;
#X connect 21 0 26 0;
#X connect 22 1 21 0;
#X connect 23 0 26 0;
#X connect 24 0 6 0;
#X connect 25 0 26 0;
#X connect 26 0 2 0;
#X connect 27 0 14 0;
#X connect 28 0 27 0;
#X connect 28 1 29 0;
#X connect 29 0 11 1;
#X connect 34 0 36 0;
#X connect 35 0 36 0;
#X connect 36 0 7 1;
#X connect 37 0 34 0;
#X connect 37 1 35 0;
#X connect 37 2 38 0;
#X connect 38 0 5 0;
#X connect 38 1 39 0;
#X connect 39 0 40 0;
#X connect 39 1 41 0;
#X connect 39 2 43 0;
#X connect 39 3 4 0;
#X connect 40 0 42 0;
#X connect 41 0 23 0;
#X connect 42 0 26 0;
#X connect 43 0 44 0;
#X connect 44 0 26 0;
#X connect 45 0 33 0;

View file

@ -0,0 +1,21 @@
#N canvas 172 190 600 500 10;
#X text 124 68 GEM object;
#X text 138 23 rgb2hsv;
#X text 89 388 convert between RGB colorspace and HSV colorspace;
#X text 91 412 RGB is red \, green \, blue;
#X text 91 434 HSV is hue \, saturation \, value (luminance);
#X obj 123 220 rgb2hsv;
#X msg 122 156 1 0 0;
#X msg 357 160 0 1 1;
#X obj 123 299 print hsv;
#X obj 357 303 print rgb;
#X obj 357 226 hsv2rgb;
#X msg 414 159 0.6 1 0.5;
#X msg 185 155 0 0.2 0.5;
#X text 215 21 hsv2rgb;
#X connect 5 0 8 0;
#X connect 6 0 5 0;
#X connect 7 0 10 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 12 0 5 0;

301
Gem/abstractions/rgb2hsv.pd Normal file
View file

@ -0,0 +1,301 @@
#N canvas 359 28 479 587 10;
#X obj 186 29 inlet;
#X obj 196 551 outlet;
#X obj 249 303 unpack 0 0 0;
#X obj 196 529 pack 0 0 0;
#X obj 186 142 t f f;
#X obj 186 163 t f f;
#X obj 186 185 -;
#X obj 186 224 /;
#X obj 186 244 t f f;
#X obj 145 266 select 0;
#X msg 145 286 0;
#X obj 186 204 t f f;
#N canvas 0 0 450 515 sort3 0;
#X obj 55 109 inlet;
#X obj 55 375 outlet;
#X obj 205 375 outlet;
#X obj 55 313 unpack;
#X obj 105 313 unpack;
#X obj 155 313 unpack;
#X msg 55 156 \$1 0;
#X msg 97 155 \$1 1;
#X msg 145 156 \$1 2;
#X obj 55 132 unpack 0 0 0;
#X obj 55 352 pack 0 0 0;
#X obj 205 352 pack 0 0 0;
#N canvas 0 0 489 412 sort_header 0;
#X obj 67 27 inlet;
#X obj 67 318 outlet;
#X obj 212 318 outlet;
#X obj 67 79 t f l;
#X obj 157 27 inlet;
#X obj 157 79 t f l;
#X obj 67 119 >;
#X obj 67 149 select 0 1;
#X obj 67 181 t b b;
#X obj 227 175 t b b;
#X obj 67 291 pack;
#X obj 83 250 unpack;
#X obj 67 271 f;
#X obj 117 291 pack;
#X obj 133 250 unpack;
#X obj 117 271 f;
#X obj 227 291 pack;
#X obj 243 250 unpack;
#X obj 227 271 f;
#X obj 277 291 pack;
#X obj 293 250 unpack;
#X obj 277 271 f;
#X connect 0 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 11 0;
#X connect 3 1 20 0;
#X connect 4 0 5 0;
#X connect 5 0 6 1;
#X connect 5 1 14 0;
#X connect 5 1 17 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 12 0;
#X connect 8 1 15 0;
#X connect 9 0 18 0;
#X connect 9 1 21 0;
#X connect 10 0 1 0;
#X connect 11 0 12 1;
#X connect 11 1 10 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 14 0 15 1;
#X connect 14 1 13 1;
#X connect 15 0 13 0;
#X connect 16 0 1 0;
#X connect 17 0 18 1;
#X connect 17 1 16 1;
#X connect 18 0 16 0;
#X connect 19 0 2 0;
#X connect 20 0 21 1;
#X connect 20 1 19 1;
#X connect 21 0 19 0;
#X restore 110 178 pd sort_header;
#N canvas 0 0 450 300 sort_header 0;
#X obj 67 27 inlet;
#X obj 67 318 outlet;
#X obj 212 318 outlet;
#X obj 67 79 t f l;
#X obj 157 27 inlet;
#X obj 157 79 t f l;
#X obj 67 119 >;
#X obj 67 149 select 0 1;
#X obj 67 181 t b b;
#X obj 227 175 t b b;
#X obj 67 291 pack;
#X obj 83 250 unpack;
#X obj 67 271 f;
#X obj 117 291 pack;
#X obj 133 250 unpack;
#X obj 117 271 f;
#X obj 227 291 pack;
#X obj 243 250 unpack;
#X obj 227 271 f;
#X obj 277 291 pack;
#X obj 293 250 unpack;
#X obj 277 271 f;
#X connect 0 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 11 0;
#X connect 3 1 20 0;
#X connect 4 0 5 0;
#X connect 5 0 6 1;
#X connect 5 1 14 0;
#X connect 5 1 17 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 12 0;
#X connect 8 1 15 0;
#X connect 9 0 18 0;
#X connect 9 1 21 0;
#X connect 10 0 1 0;
#X connect 11 0 12 1;
#X connect 11 1 10 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 14 0 15 1;
#X connect 14 1 13 1;
#X connect 15 0 13 0;
#X connect 16 0 1 0;
#X connect 17 0 18 1;
#X connect 17 1 16 1;
#X connect 18 0 16 0;
#X connect 19 0 2 0;
#X connect 20 0 21 1;
#X connect 20 1 19 1;
#X connect 21 0 19 0;
#X restore 55 205 pd sort_header;
#N canvas 0 0 450 300 sort_header 0;
#X obj 67 27 inlet;
#X obj 67 318 outlet;
#X obj 212 318 outlet;
#X obj 67 79 t f l;
#X obj 157 27 inlet;
#X obj 157 79 t f l;
#X obj 67 119 >;
#X obj 67 149 select 0 1;
#X obj 67 181 t b b;
#X obj 227 175 t b b;
#X obj 67 291 pack;
#X obj 83 250 unpack;
#X obj 67 271 f;
#X obj 117 291 pack;
#X obj 133 250 unpack;
#X obj 117 271 f;
#X obj 227 291 pack;
#X obj 243 250 unpack;
#X obj 227 271 f;
#X obj 277 291 pack;
#X obj 293 250 unpack;
#X obj 277 271 f;
#X connect 0 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 11 0;
#X connect 3 1 20 0;
#X connect 4 0 5 0;
#X connect 5 0 6 1;
#X connect 5 1 14 0;
#X connect 5 1 17 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 12 0;
#X connect 8 1 15 0;
#X connect 9 0 18 0;
#X connect 9 1 21 0;
#X connect 10 0 1 0;
#X connect 11 0 12 1;
#X connect 11 1 10 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 14 0 15 1;
#X connect 14 1 13 1;
#X connect 15 0 13 0;
#X connect 16 0 1 0;
#X connect 17 0 18 1;
#X connect 17 1 16 1;
#X connect 18 0 16 0;
#X connect 19 0 2 0;
#X connect 20 0 21 1;
#X connect 20 1 19 1;
#X connect 21 0 19 0;
#X restore 116 236 pd sort_header;
#X connect 0 0 9 0;
#X connect 3 0 10 0;
#X connect 3 1 11 0;
#X connect 4 0 10 1;
#X connect 4 1 11 1;
#X connect 5 0 10 2;
#X connect 5 1 11 2;
#X connect 6 0 13 0;
#X connect 7 0 12 0;
#X connect 8 0 12 1;
#X connect 9 0 6 0;
#X connect 9 1 7 0;
#X connect 9 2 8 0;
#X connect 10 0 1 0;
#X connect 11 0 2 0;
#X connect 12 0 13 1;
#X connect 12 1 14 1;
#X connect 13 0 3 0;
#X connect 13 1 14 0;
#X connect 14 0 4 0;
#X connect 14 1 5 0;
#X restore 186 77 pd sort3;
#X msg 186 98 \$3 \$1;
#X obj 186 121 unpack;
#X msg 239 98 \$3;
#X obj 196 398 -;
#X obj 240 379 t f f f;
#X obj 233 438 + 2;
#X obj 233 398 -;
#X obj 268 398 -;
#X obj 268 418 /;
#X obj 233 418 /;
#X obj 196 418 /;
#X obj 268 438 + 4;
#N canvas 0 0 450 300 select3 0;
#X obj 106 87 inlet;
#X obj 234 85 inlet;
#X obj 115 222 outlet;
#X obj 232 107 unpack 0 0 0;
#X obj 117 194 f;
#X obj 180 192 f;
#X obj 240 190 f;
#X obj 110 137 select 0 1 2;
#X obj 184 224 outlet;
#X obj 236 222 outlet;
#X connect 0 0 7 0;
#X connect 1 0 3 0;
#X connect 3 0 4 1;
#X connect 3 1 5 1;
#X connect 3 2 6 1;
#X connect 4 0 2 0;
#X connect 5 0 8 0;
#X connect 6 0 9 0;
#X connect 7 0 5 0;
#X connect 7 1 6 0;
#X connect 7 2 4 0;
#X restore 196 329 pd select3;
#X obj 196 287 b;
#X obj 196 307 i;
#X obj 186 55 t l l l;
#X obj 196 480 moses 0;
#X obj 196 459 / 6;
#X obj 196 500 + 1;
#X connect 0 0 28 0;
#X connect 2 0 19 1;
#X connect 2 1 20 1;
#X connect 2 2 16 1;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 4 1 3 2;
#X connect 5 0 6 0;
#X connect 5 1 7 1;
#X connect 6 0 11 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 8 1 3 1;
#X connect 9 0 10 0;
#X connect 9 1 26 0;
#X connect 10 0 3 0;
#X connect 11 0 7 0;
#X connect 11 1 17 0;
#X connect 12 0 13 0;
#X connect 12 1 15 0;
#X connect 13 0 14 0;
#X connect 14 0 4 0;
#X connect 14 1 6 1;
#X connect 15 0 27 1;
#X connect 16 0 23 0;
#X connect 17 0 23 1;
#X connect 17 1 22 1;
#X connect 17 2 21 1;
#X connect 18 0 30 0;
#X connect 19 0 22 0;
#X connect 20 0 21 0;
#X connect 21 0 24 0;
#X connect 22 0 18 0;
#X connect 23 0 30 0;
#X connect 24 0 30 0;
#X connect 25 0 20 0;
#X connect 25 1 16 0;
#X connect 25 2 19 0;
#X connect 26 0 27 0;
#X connect 27 0 25 0;
#X connect 28 0 12 0;
#X connect 28 1 2 0;
#X connect 28 2 25 1;
#X connect 29 0 31 0;
#X connect 29 1 3 0;
#X connect 30 0 29 0;
#X connect 31 0 3 0;

View file

@ -0,0 +1,36 @@
#N canvas 457 99 472 501 10;
#X text 333 19 GEM object;
#X text 91 412 RGB is red \, green \, blue;
#X text 91 434 YUV is luma and chroma;
#X obj 119 207 cnv 15 70 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 123 218 rgb2yuv;
#X msg 163 182 1 0 0;
#X msg 155 156 0 0.2 0.5;
#X obj 123 257 unpack 0 0 0;
#X floatatom 178 84 5 0 1 1 Blue - -;
#X floatatom 141 67 5 0 1 1 Green - -;
#X floatatom 123 49 5 0 1 1 Red - -;
#X obj 123 122 pack 0 0 0;
#X obj 141 103 t b f;
#X obj 178 103 t b f;
#X text 83 9 [rgb2yuv];
#X text 175 11 [yuv2rgb];
#X text 89 388 convert between RGB colorspace and YUV colorspace;
#X floatatom 190 284 5 0 1 1 V=ChromaR - -;
#X floatatom 156 305 5 0 1 1 U=ChromaB - -;
#X floatatom 123 327 5 0 1 1 Y=Luma - -;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 6 0 4 0;
#X connect 7 0 19 0;
#X connect 7 1 18 0;
#X connect 7 2 17 0;
#X connect 8 0 13 0;
#X connect 9 0 12 0;
#X connect 10 0 11 0;
#X connect 11 0 4 0;
#X connect 12 0 11 0;
#X connect 12 1 11 1;
#X connect 13 0 11 0;
#X connect 13 1 11 2;

105
Gem/abstractions/rgb2yuv.pd Normal file
View file

@ -0,0 +1,105 @@
#N canvas 236 111 450 476 10;
#N canvas 286 158 450 300 rgb2y 0;
#X obj 82 57 inlet;
#X obj 82 236 outlet;
#X obj 82 119 * 65.738;
#X obj 143 120 * 129.075;
#X obj 215 119 * 25.064;
#X obj 82 142 +;
#X obj 82 164 +;
#X obj 82 207 + 16;
#X obj 82 186 / 256;
#X obj 143 57 inlet;
#X obj 215 57 inlet;
#X connect 0 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 5 1;
#X connect 4 0 6 1;
#X connect 5 0 6 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 8 0 7 0;
#X connect 9 0 3 0;
#X connect 10 0 4 0;
#X restore 103 206 pd rgb2y;
#N canvas 286 158 450 300 rgb2u 0;
#X obj 82 57 inlet;
#X obj 82 236 outlet;
#X obj 82 142 +;
#X obj 82 164 +;
#X obj 82 186 / 256;
#X obj 82 119 * -37.945;
#X obj 143 120 * -74.494;
#X obj 215 119 * 112.439;
#X obj 82 207 + 128;
#X obj 143 57 inlet;
#X obj 215 57 inlet;
#X connect 0 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 8 0;
#X connect 5 0 2 0;
#X connect 6 0 2 1;
#X connect 7 0 3 1;
#X connect 8 0 1 0;
#X connect 9 0 6 0;
#X connect 10 0 7 0;
#X restore 163 206 pd rgb2u;
#N canvas 286 158 450 300 rgb2v 0;
#X obj 82 57 inlet;
#X obj 82 236 outlet;
#X obj 82 142 +;
#X obj 82 164 +;
#X obj 82 186 / 256;
#X obj 82 207 + 128;
#X obj 82 119 * 112.439;
#X obj 143 120 * -94.154;
#X obj 215 119 * -18.285;
#X obj 143 57 inlet;
#X obj 215 57 inlet;
#X connect 0 0 6 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 7 0 2 1;
#X connect 8 0 3 1;
#X connect 9 0 7 0;
#X connect 10 0 8 0;
#X restore 224 207 pd rgb2v;
#X text 106 37 convert RGB to YUV;
#X obj 103 245 pack 0 0 0;
#X obj 103 69 inlet RGB;
#X obj 103 104 pack \$1 \$2 \$3;
#X obj 103 353 outlet YUV;
#X obj 103 226 / 256;
#X obj 163 226 / 256;
#X obj 224 226 / 256;
#X obj 103 125 unpack 0 0 0;
#X obj 103 166 t f f f;
#X obj 103 146 * 256;
#X obj 136 146 * 256;
#X obj 170 146 * 256;
#X connect 0 0 8 0;
#X connect 1 0 9 0;
#X connect 2 0 10 0;
#X connect 4 0 7 0;
#X connect 5 0 6 0;
#X connect 6 0 11 0;
#X connect 8 0 4 0;
#X connect 9 0 4 1;
#X connect 10 0 4 2;
#X connect 11 0 13 0;
#X connect 11 1 14 0;
#X connect 11 2 15 0;
#X connect 12 0 0 0;
#X connect 12 1 1 0;
#X connect 12 2 2 0;
#X connect 13 0 12 0;
#X connect 14 0 0 1;
#X connect 14 0 1 1;
#X connect 14 0 2 1;
#X connect 15 0 2 2;
#X connect 15 0 1 2;
#X connect 15 0 0 2;

View file

@ -0,0 +1,35 @@
#N canvas 172 190 600 500 10;
#X text 418 26 GEM object;
#X text 91 412 RGB is red \, green \, blue;
#X text 91 434 YUV is luma and chroma;
#X obj 121 206 cnv 15 70 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 125 256 unpack 0 0 0;
#X floatatom 204 278 5 0 0 1 Blue - -;
#X floatatom 164 298 5 0 0 1 Green - -;
#X floatatom 125 321 5 0 0 1 Red - -;
#X obj 125 217 yuv2rgb;
#X msg 165 152 0 1 1;
#X msg 187 176 0.6 1 0.5;
#X floatatom 180 94 5 0 1 1 V=ChromaR - -;
#X floatatom 143 76 5 0 1 1 U=ChromaB - -;
#X floatatom 125 58 5 0 1 1 Y=Luma - -;
#X obj 125 130 pack 0 0 0;
#X obj 143 111 t b f;
#X obj 180 111 t b f;
#X text 175 11 [yuv2rgb];
#X text 89 388 convert between YUV colorspace and RGB colorspace;
#X connect 4 0 7 0;
#X connect 4 1 6 0;
#X connect 4 2 5 0;
#X connect 8 0 4 0;
#X connect 9 0 8 0;
#X connect 10 0 8 0;
#X connect 11 0 16 0;
#X connect 12 0 15 0;
#X connect 13 0 14 0;
#X connect 14 0 8 0;
#X connect 15 0 14 0;
#X connect 15 1 14 1;
#X connect 16 0 14 0;
#X connect 16 1 14 2;

View file

@ -0,0 +1,84 @@
#N canvas 574 31 450 414 10;
#X obj 103 96 unpack 0 0 0;
#X obj 103 140 - 16;
#X obj 136 140 - 128;
#X obj 170 140 - 128;
#X obj 103 163 * 298.082;
#X obj 136 186 pack;
#N canvas 0 0 450 300 yu2r 0;
#X obj 128 46 inlet;
#X obj 130 234 outlet;
#X obj 128 69 unpack;
#X obj 130 110 * 408.583;
#X connect 0 0 2 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X restore 136 234 pd yu2r;
#N canvas 0 0 450 300 yu2g 0;
#X obj 128 46 inlet;
#X obj 128 164 outlet;
#X obj 128 69 unpack;
#X obj 159 108 * -208.12;
#X obj 128 89 * -100.291;
#X obj 128 135 +;
#X connect 0 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 3 0;
#X connect 3 0 5 1;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
#X restore 186 234 pd yu2g;
#N canvas 0 0 450 300 yu2b 0;
#X obj 128 46 inlet;
#X obj 128 234 outlet;
#X obj 128 69 unpack;
#X obj 128 110 * 516.411;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X restore 257 234 pd yu2b;
#X obj 136 207 t l l l;
#X obj 103 289 +;
#X obj 103 263 t f f f;
#X obj 173 289 +;
#X obj 244 289 +;
#X obj 103 74 pack \$1 \$2 \$3;
#X obj 103 49 inlet YUV;
#X obj 103 341 pack 0 0 0;
#X obj 103 380 outlet RGB;
#X obj 103 118 * 256;
#X obj 136 118 * 256;
#X obj 170 118 * 256;
#X obj 103 312 / 65536;
#X obj 173 312 / 65536;
#X obj 244 312 / 65536;
#X text 102 26 convert YUV to RGB (everything is 0..1);
#X connect 0 0 18 0;
#X connect 0 1 19 0;
#X connect 0 2 20 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 5 1;
#X connect 4 0 11 0;
#X connect 5 0 9 0;
#X connect 6 0 10 1;
#X connect 7 0 12 1;
#X connect 8 0 13 1;
#X connect 9 0 6 0;
#X connect 9 1 7 0;
#X connect 9 2 8 0;
#X connect 10 0 21 0;
#X connect 11 0 10 0;
#X connect 11 1 12 0;
#X connect 11 2 13 0;
#X connect 12 0 22 0;
#X connect 13 0 23 0;
#X connect 14 0 0 0;
#X connect 15 0 14 0;
#X connect 16 0 17 0;
#X connect 18 0 1 0;
#X connect 19 0 2 0;
#X connect 20 0 3 0;
#X connect 21 0 16 0;
#X connect 22 0 16 1;
#X connect 23 0 16 2;

165
Gem/autogen.sh Executable file
View file

@ -0,0 +1,165 @@
#!/bin/sh
package=Gem
KERN=$(uname -s)
# debugging output to see which path is in effect
echo PATH: $PATH
IEM_AUTORECONF=$(which autoreconf)
IEM_AUTOHEADER=$(which autoheader)
IEM_AUTOMAKE=$(which automake)
IEM_ACLOCAL=$(which aclocal)
IEM_LIBTOOL=$(which libtool)
IEM_LIBTOOLIZE=$(which libtoolize)
IEM_AUTOCONF=$(which autoconf)
case "${KERN}" in
MINGW*)
## on MinGW autoreconf is (still?) known to be somewhat broken
IEM_AUTORECONF=""
;;
*)
;;
esac
## debug printout to see which build scripts we are (or might be) using
echo "AUTORECONF: $IEM_AUTORECONF"
echo "AUTOHEADER: $IEM_AUTOHEADER"
echo "AUTOMAKE : $IEM_AUTOMAKE"
echo "ACLOCAL : $IEM_ACLOCAL"
echo "LIBTOOL : $IEM_LIBTOOL"
echo "LIBTOOLIZE: $IEM_LIBTOOLIZE"
echo "AUTOCONF : $IEM_AUTOCONF"
#check whether the system supports pushd/popd
if pushd . > /dev/null 2>&1
then
popd > /dev/null 2>&1
else
## some shells (namely dash) don't support pushd/popd
## here we provide some dummies
pushd () {
echo "ignoring pushd to $@"
}
popd () {
echo "ignoring popd ..."
}
fi
autoconf_getsubdirs () {
if [ -e configure.ac ]; then
cat configure.ac | sed -e 's|#.*$||' | grep AC_CONFIG_SUBDIRS | \
sed -e 's|^.*AC_CONFIG_SUBDIRS(\[\(.*\)\]).*$|\1|'
fi
}
runit () {
echo " $@"
$@
}
manual_autoreconf_doit () {
echo faking autoreconf for $1
pushd $1
runit $IEM_ACLOCAL -I . -I $BASEDIR/m4 || exit 1
runit $IEM_LIBTOOLIZE --automake -c || exit 1
runit $IEM_AUTOCONF || exit 1
if test -e configure.ac && grep AC_CONFIG_HEADER configure.ac > /dev/null 2>&1; then
runit $IEM_AUTOHEADER --force || exit 1
fi
if [ -e Makefile.am ]; then
runit $IEM_AUTOMAKE --add-missing -c || exit 1
fi
popd
}
manual_autoreconf () {
echo faking autoreconf..
BASEDIR=${0%/*}
pushd $BASEDIR
BASEDIR=$(pwd)
popd
if [ "x${SUBDIRS}" = "x" ]; then
#SUBDIRS=autoconf_getsubdirs
SUBDIRS="."
SUBDIRS="${SUBDIRS} plugins/videoAVT plugins/videoHALCON plugins/videoPYLON"
SUBDIRS="${SUBDIRS} extra extra/pix_artoolkit"
fi
# check for all the needed helpers
DIE=0
($IEM_AUTOCONF --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile $package."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
($IEM_AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to compile $package."
echo "Download the appropriate package for your system,"
echo "or get the source from one of the GNU ftp sites"
echo "listed in http://www.gnu.org/order/ftp.html"
DIE=1
}
($IEM_ACLOCAL --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have aclocal installed to compile $package."
echo "Download the appropriate package for your system,"
echo "or get the source from one of the GNU ftp sites"
echo "listed in http://www.gnu.org/order/ftp.html"
DIE=1
}
($IEM_LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have libtool installed to compile $package."
echo "Download the appropriate package for your system,"
echo "or get the source from one of the GNU ftp sites"
echo "listed in http://www.gnu.org/order/ftp.html"
DIE=1
}
($IEM_LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have libtoolize installed to compile $package."
echo "Download the appropriate package for your system,"
echo "or get the source from one of the GNU ftp sites"
echo "listed in http://www.gnu.org/order/ftp.html"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
for s in ${SUBDIRS}; do
manual_autoreconf_doit ${BASEDIR}/${s}
done
}
if test x$IEM_AUTORECONF != x; then
echo running autoreconf
$IEM_AUTORECONF --force --verbose --install
else
echo "not running autoreconf...falling back to"
manual_autoreconf
fi

50
Gem/build/Makefile.am Normal file
View file

@ -0,0 +1,50 @@
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = \
osx-projectbuilder/Gem.pbproj/project.pbxproj \
win-nsis/Gem.nsi \
win-nsis/buildinstaller.bat \
win-nsis/uninstaller1.nsi \
win-nsis/uninstaller2.nsi \
win-vs2003/installer.vcproj \
win-vs2003/README_W32.txt.template \
win-vs2003/installer.bat \
win-vs2003/Gem.sln \
win-vs2003/release.bat \
win-vs2003/Gem.vcproj \
win-vs2003/libraries.txt \
win-vs2003/installerCVS.bat \
win-vs6/gem_vc6.dsw \
win-vs6/README.txt \
win-vs6/gem.dsp \
win-vs7/gem_vc7.sln \
win-vs7/gem.vcproj \
win-vs7/README.txt \
win-vs2008/Gem.sln \
win-vs2008/Gem.vcproj \
win-vs2008/Debug.vsprops \
win-vs2008/DirectShow.vsprops \
win-vs2008/extraCommon.vsprops \
win-vs2008/extra.vsprops \
win-vs2008/FTGL_Debug.vsprops \
win-vs2008/FTGL_Release.vsprops \
win-vs2008/FTGL.vsprops \
win-vs2008/GemInternal.vsprops \
win-vs2008/Gem.vsprops \
win-vs2008/pluginCommon.vsprops \
win-vs2008/plugin.vsprops \
win-vs2008/pthread.vsprops \
win-vs2008/puredata.vsprops \
win-vs2008/QuickTime.vsprops \
win-vs2008/Release.vsprops \
win-vs2008/SIMD.vsprops \
win-vs2008/VFW.vsprops \
win-vs2008/w32.vsprops \
win-vs2008/installer.vcproj \
win-vs2008/installer.bat \
win-vs2008/installerCVS.bat \
win-vs2008/release.bat \
win-vs2008/README_W32.txt.template \
osx-xcode/Gem.xcodeproj/project.pbxproj \
autoconf/README.txt

View file

@ -0,0 +1,33 @@
building Gem using autoconf
===========================
autoconf is the preferred way to build Gem.
#0 preparation
if you installed Gem from a released version, just go to the .../Gem directory
if you grabbed a development snapshot of Gem, you have to generate the autotools
first; just go to the .../Gem directory and do
.../Gem$ ./autogen.sh
#1 configuration step
run configure with the appropriate options
.../Gem$ ./configure
for a complete list of options try
.../Gem$ ./configure --help=recursive
a typical call would look like:
.../Gem$ ./configure --with-pd=/usr/include/pd --prefix=/usr -C CXXFLAGS="-g -O2"
#2 build
once configuration succeeded (it will not succeed if you miss crucial libraries
like openGL), build Gem:
.../Gem$ make
#3 finally install
.../Gem$ make install
this will install Gem e.g. into /usr/lib/pd/extra/Gem/

View file

@ -0,0 +1,37 @@
#!/bin/sh
## this is for documentary purposes
## how i configured Gem on mingw to build with a number of external libraries
## TODO: QuickTime, ImageMagick, GMerlin
## TODO: avt, halcon, pylon
PROGRAMFILES=/home/zmoelnig/programfiles/i386
GEMLIBS=/home/zmoelnig/src/GemLibs
## where to find pd headers and lib
PDPATH="${PROGRAMFILES}/pd"
## image loading
JPEG="${GEMLIBS}/libjpeg-turbo-gcc"
TIFF="${GEMLIBS}/tiff-4.0.0/libtiff"
IMAGEMAGICK="${GEMLIBS}/ImageMagick-6.7.2-gcc"
## video capture
VLC="${PROGRAMFILES}/VideoLAN/VLC"
## model loading
ASSIMP="/home/zmoelnig/src/assimp--2.0.863-sdk"
./configure --with-pd=${PDPATH} \
PKG_JPEG_CFLAGS="-I${JPEG}/include " \
PKG_JPEG_LIBS="-L${JPEG}/lib -ljpeg " \
PKG_TIFF_CFLAGS="-I${TIFF} " \
PKG_TIFF_LIBS="-L${TIFF} -ltiff" \
PKG_IMAGEMAGICK_CFLAGS="-I${IMAGEMAGICK} " \
PKG_IMAGEMAGICK_LIBS="-L${IMAGEMAGICK}/magick -lMagickCore" \
PKG_LIBVLC_CFLAGS="-I${VLC}/sdk/include " \
PKG_LIBVLC_LIBS="-L${VLC} -lvlc " \
PKG_ASSIMP_CFLAGS="-I${ASSIMP}/include -DHAVE_ASSIMP_H" \
PKG_ASSIMP_LIBS="-L${ASSIMP}/bin/assimp_release-dll_win32 -Xlinker -l:Assimp32.dll " \

Binary file not shown.

View file

@ -0,0 +1,52 @@
#!/bin/sh
## this is shamelessly taken from Pd-extended...
SRCDIR=$1
PACKAGE_NAME=${SRCDIR%/}
VOLUME_NAME="${PACKAGE_NAME}"
VOLUME_NAME="Gem Installer"
DESTDIR="/Volumes/${VOLUME_NAME}"
if [ -d "${SRCDIR}" ]; then
echo "creating Gem installer from ${SRCDIR}"
else
echo "please provide a valid /path/to/Gem" 1>&2
exit 1
fi
hdiutil create -format UDRW -fs HFS+ -srcfolder "${SRCDIR}" -volname "${VOLUME_NAME}" build.dmg
# detach one with the same name first
hdiutil detach "${DESTDIR}"
hdiutil attach build.dmg
#install -p ${SRCDIR}${manualsdir}/Pd/ReadMe.html "${DESTDIR}"
# add link to /Library/Pd for easy install
SYSTEMINSTALLER="${DESTDIR}/Gem System-wide Installer.app"
/usr/bin/osacompile -o "${SYSTEMINSTALLER}" installer_system.applescript
./icon2app "${SYSTEMINSTALLER}" /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/GroupFolder.icns
## add link to ~/Library/Pd for easy install
USERINSTALLER="${DESTDIR}/Gem User-specific Installer.app"
/usr/bin/osacompile -o "${USERINSTALLER}" installer_user.applescript
./icon2app "${USERINSTALLER}" /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/UsersFolderIcon.icns
# a manually crafted .DS_Store file
test -e DS_Store && install -p DS_Store "${DESTDIR}/.DS_Store"
# To enable the local image icon
#install -p VolumeIcon.icns "${DESTDIR}/.VolumeIcon.icns"
#/Developer/Tools/SetFile -a C "${DESTDIR}/.VolumeIcon.icns" "${DESTDIR}"
chmod -R a-w "${DESTDIR}/${PD_APP_NAME}.app/Contents/Resources"
hdiutil detach $(mount | grep "${VOLUME_NAME}" | cut -d ' ' -f 1)
echo "now creating RO-image ${PACKAGE_NAME}.dmg from build.dmg"
hdiutil convert -format UDZO -o "${PACKAGE_NAME}.dmg" build.dmg && rm -f build.dmg
# install license
hdiutil unflatten "${PACKAGE_NAME}.dmg"
/Developer/Tools/Rez /Developer/Headers/FlatCarbon/*.r SLA.r -a -o "${PACKAGE_NAME}.dmg"
hdiutil flatten "${PACKAGE_NAME}.dmg"

View file

@ -0,0 +1,11 @@
#compile this with
# > /usr/bin/osacompile -o droplet.app droplet.as
on open thefiles
set outputFolder to (path to library folder as text) & "Pd:"
do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder
tell application "Finder"
duplicate thefiles to outputFolder replacing true
end tell
end open

View file

@ -0,0 +1,11 @@
#compile this with
# > /usr/bin/osacompile -o droplet.app droplet.as
on open thefiles
set outputFolder to (path to library folder from user domain as text) & "Pd:"
do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder
tell application "Finder"
duplicate thefiles to outputFolder replacing true
end tell
end open

View file

@ -0,0 +1,97 @@
#!/bin/sh
## OSX cmdline utility
## changes the icon of an app (or any other folder)
# example iconfile: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/HomeFolderIcon.icns
OLDDIR=$(pwd)
usage () {
echo "$0 <app or directory(writeable)> <iconfile.icns>" 1>&2
exit 1
}
mywhich() {
for i in $@
do
if [ -x "$(which $i)" ]; then
echo "$(which $i)"
return
fi
done
echo "unable to find executable: $@" 1>&2
exit 1
}
APP=$1
ICON=$2
DEVTOOLS=/Developer/Tools
REZ=$(mywhich Rez ${DEVTOOLS}/Rez)
SETFILE=$(mywhich SetFile ${DEVTOOLS}/SetFile)
if [ "x${REZ}" = "x" ]; then exit 1; fi
if [ "x${SETFILE}" = "x" ]; then exit 1; fi
if [ -f "${ICON}" ]; then
:
else
if [ -f "${OLDDIR}/${ICON}" ]; then
ICON="${OLDDIR}/${ICON}"
else
usage
fi
fi
if [ -d "${APP}" ]; then
# this is the output file
ICONFILE=$'Icon\r'
RSRCFILE="${ICONFILE}"
DIR=${APP}
else
if [ -f "${APP}" ]; then
:
else
usage
fi
DIR=${APP%/*}
if [ "x${DIR}" = "x" ]; then
DIR=.
fi
if [ "x${DIR}" = "x${APP}" ]; then
DIR=.
fi
# this is the output file
ICONFILE=${APP##*/}
RSRCFILE="${ICONFILE}.r"
fi
echo DIR $DIR
echo ICO $ICONFILE
echo RSR $RSRCFILE
cd "${DIR}"
touch "${RSRCFILE}" || usage
cat << EOF > "${RSRCFILE}"
/*
* process this file with:
* ${REZ} <thisfile> -o <file-to-add-icon-to>
* after that, enable the icon with
* ${SETFILE} -a C <file-to-add-icon-to>
*/
read 'icns' (-16455) "${ICON}";
EOF
Rez "${RSRCFILE}" -o "${ICONFILE}"
if [ "x${RSRCFILE}" = "x${ICONFILE}" ]; then
# we are woriking on a directory
SetFile -a C .
else
# we are woriking on a file
SetFile -a C "${ICONFILE}"
rm "${RSRCFILE}"
fi

View file

@ -0,0 +1,31 @@
try
-- create the output folder if necessary
set outputFolder to (path to library folder as text) & "Pd:"
do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder
-- find the directories on the dmg disk
set myPath to path to me
tell application "Finder"
set myContainer to container of myPath
set installDirs to (folders of myContainer) as alias list
end tell
-- copy the templates to the output folder
-- NOTE: the script will error if any of the templates already exist
-- therefore we use a repeat loop and duplicate each file separately with a try block
-- around it to avoid errors in case some templates have already been installed.
tell application "Finder"
repeat with aDir in installDirs
try
duplicate aDir to folder outputFolder with replacing
end try
end repeat
end tell
-- tell the user everything was OK
tell me to activate
display dialog "Gem and friends were successfully installed! You may now use them in Pd." buttons {"OK"} default button 1 with title "Gem System-wide Installer" with icon note
on error
tell me to activate
display dialog "There was an error installing Gem and friends. Please manually install them by copying" & (installDirs) & "to the following folder." & return & return & (POSIX path of outputFolder) buttons {"OK"} default button 1 with title "Gem System-wide Installer"
end try

View file

@ -0,0 +1,31 @@
try
-- create the output folder if necessary
set outputFolder to (path to library folder from user domain as text) & "Pd:"
do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder
-- find the directories on the dmg disk
set myPath to path to me
tell application "Finder"
set myContainer to container of myPath
set installDirs to (folders of myContainer) as alias list
end tell
-- copy the templates to the output folder
-- NOTE: the script will error if any of the templates already exist
-- therefore we use a repeat loop and duplicate each file separately with a try block
-- around it to avoid errors in case some templates have already been installed.
tell application "Finder"
repeat with aDir in installDirs
try
duplicate aDir to folder outputFolder with replacing
end try
end repeat
end tell
-- tell the user everything was OK
tell me to activate
display dialog "Gem and friends were successfully installed! You may now use them in Pd." buttons {"OK"} default button 1 with title "Gem User-specific Installer" with icon note
on error
tell me to activate
display dialog "There was an error installing Gem and friends. Please manually install them by copying" & (installDirs) & "to the following folder." & return & return & (POSIX path of outputFolder) buttons {"OK"} default button 1 with title "Gem User-specific Installer"
end try

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

617
Gem/build/win-nsis/Gem.nsi Normal file
View file

@ -0,0 +1,617 @@
; TODO
; - check whether Pd is installed
; this is where Pd stores it's settings:
; HKEY_LOCAL_MACHINE\SOFTWARE\Pd
; this is the uninstaller-information of Pd-extended
; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\pd_is1 InstallLocation
; - ask to set env-variables
; GEM_SINGLE_CONTEXT /* ??? */
; GEM_RECTANGLE_TEXTURE /* unneeded since glew? */
; GEM_NO_TABLET /* unneeded as [gemtablet] was dropped */
; GEM_DEFAULT_FONT /* "$INSTDIR/examples/data/vera.ttf" */
; system-envvars:
; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
; user-envvars:
; HKEY_CURRENT_USER\Environment
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Gem"
!ifndef PRODUCT_VERSION
!define PRODUCT_VERSION "0.93"
!endif
!define PRODUCT_ARCH "-W32-i686"
!define PRODUCT_PUBLISHER "iem et al."
!define PRODUCT_WEB_SITE "http://gem.iem.at"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
OutFile "Gem-${PRODUCT_VERSION}${PRODUCT_ARCH}.exe"
!define BASE_INDIR "..\.."
!define BUILD_INDIR "..\win-vs2003"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "..\..\GnuGPL.LICENSE.txt"
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
;InstallDir "$PROGRAMFILES\pd\extra\Gem"
InstallDir "$%COMMONPROGRAMFILES%\Pd\Gem"
ShowInstDetails show
ShowUnInstDetails show
Var /GLOBAL GEM_OUTDIR
Var /GLOBAL GEMDEV_OUTDIR
Var /GLOBAL EXTRA_OUTDIR
; the sections for the library itself (binary+abstractions)
SectionGroup "Gem" SEC_Gem
Section "Gem-binary" SEC_GemBinary
StrCpy $EXTRA_OUTDIR "$INSTDIR\.."
StrCpy $GEM_OUTDIR "$INSTDIR"
StrCpy $GEMDEV_OUTDIR "$GEM_OUTDIR\dev"
SetOverwrite ifnewer
SectionIn RO
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\Gem.dll"
File "${BASE_INDIR}\GnuGPL.LICENSE.txt"
File "${BASE_INDIR}\COPYING.txt"
File "${BASE_INDIR}\ChangeLog"
File "${BASE_INDIR}\README.txt"
SectionEnd
Section "Gem-abstractions" SEC_GemAbs
SectionIn RO
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BASE_INDIR}\abstractions\*.pd"
SectionEnd
SectionGroupEnd
SectionGroup "Documentation" SEC_documentation
Section "reference" SEC_ref
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File /r /x .svn "${BASE_INDIR}\help\*.pd"
SectionEnd
Section "examples" SEC_examples
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR\examples\"
File /r /x .svn /x "Makefile*" "${BASE_INDIR}\examples\*.*"
; this should only be set if there is no entry yet
WriteRegStr SHCTX "Environment" "GEM_DEFAULT_FONT" "$GEM_OUTDIR\examples\data\vera.ttf"
SectionEnd
Section "manual" SEC_manual
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR\manual"
File /r /x .svn "${BASE_INDIR}\doc\manual\*.*"
SectionEnd
Section "doc" SEC_doc
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BASE_INDIR}\doc\cMatrix.html"
File "${BASE_INDIR}\doc\gem.known_bugs.txt"
File "${BASE_INDIR}\doc\GemPrimer.pdf"
File "${BASE_INDIR}\doc\gem.release_notes.txt"
File "${BASE_INDIR}\doc\gem.todo.txt"
SectionEnd
SectionGroupEnd
SectionGroup "plugins" SEC_plugin
SectionGroup "film" SEC_plugin_film
Section "DirectShow movies" SEC_plugin_filmDS
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_filmDS.dll"
SectionEnd
Section "QuickTime movies" SEC_plugin_filmQT
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_filmQT.dll"
SectionEnd
Section /o "AVI movies" SEC_plugin_filmAVI
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_filmAVI.dll"
SectionEnd
SectionGroupEnd
SectionGroup "image" SEC_plugin_image
Section "ImageMagick images" SEC_plugin_imageMAGICK
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_imageMAGICK.dll"
SectionEnd
Section /o "QuickTime images" SEC_plugin_imageQT
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_imageQT.dll"
SectionEnd
Section /o "SGI images" SEC_plugin_imageSGI
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_imageSGI.dll"
SectionEnd
Section /o "JPEG images" SEC_plugin_imageJPEG
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_imageJPEG.dll"
SectionEnd
Section /o "TIFF images" SEC_plugin_imageTIFF
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_imageTIFF.dll"
SectionEnd
SectionGroupEnd
SectionGroup "record" SEC_plugin_record
Section "QuickTime recording" SEC_plugin_recordQT
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_recordQT.dll"
SectionEnd
SectionGroupEnd
SectionGroup "video" SEC_plugin_video
Section "DirectShow capturing" SEC_plugin_videoDS
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_videoDS.dll"
SectionEnd
Section /o "VFW capturing" SEC_plugin_videoVFW
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_videoVFW.dll"
SectionEnd
; Section /o "Allied Vision Technologies capturing" SEC_plugin_videoAVT
; SetOverwrite ifnewer
; SetOutPath "$GEM_OUTDIR"
; File "${BUILD_INDIR}\gem_videoAVT.dll"
; SectionEnd
Section /o "MVTec/HALCON capturing" SEC_plugin_videoHALCON
SetOverwrite ifnewer
SetOutPath "$GEM_OUTDIR"
File "${BUILD_INDIR}\gem_videoHALCON.dll"
SectionEnd
; Section /o "Basler/PYLON capturing" SEC_plugin_videoPYLON
; SetOverwrite ifnewer
; SetOutPath "$GEM_OUTDIR"
; File "${BUILD_INDIR}\gem_videoPYLON.dll"
; SectionEnd
SectionGroupEnd
SectionGroupEnd
SectionGroup "extra" SEC_extra
Section "pix_drum" SEC_extra_pix_drum
SetOverwrite ifnewer
SetOutPath "$EXTRA_OUTDIR\pix_drum"
File "${BASE_INDIR}\extra\pix_drum\pix_drum.dll"
File "${BASE_INDIR}\extra\pix_drum\pix_drum-help.pd"
File "${BASE_INDIR}\extra\pix_drum\LICENSE.txt"
SectionEnd
Section "pix_mano" SEC_extra_pix_mano
SetOverwrite ifnewer
SetOutPath "$EXTRA_OUTDIR\pix_mano"
File "${BASE_INDIR}\extra\pix_mano\pix_mano.dll"
File "${BASE_INDIR}\extra\pix_mano\pix_mano-help.pd"
File "${BASE_INDIR}\extra\pix_mano\LICENSE.txt"
SectionEnd
Section "pix_fiducialtrack" SEC_extra_pix_fiducialtrack
SetOverwrite ifnewer
SetOutPath "$EXTRA_OUTDIR\pix_fiducialtrack"
File "${BASE_INDIR}\extra\pix_fiducialtrack\pix_fiducialtrack.dll"
File "${BASE_INDIR}\extra\pix_fiducialtrack\pix_fiducialtrack-help.pd"
File "${BASE_INDIR}\extra\pix_fiducialtrack\all.trees"
SectionEnd
Section "pix_artoolkit" SEC_extra_pix_artoolkit
SetOverwrite ifnewer
SetOutPath "$EXTRA_OUTDIR\pix_artoolkit"
File "${BASE_INDIR}\extra\pix_artoolkit\pix_artoolkit.dll"
File "${BASE_INDIR}\extra\pix_artoolkit\pix_artoolkit-help.pd"
File "${BASE_INDIR}\extra\pix_artoolkit\README.txt"
File "${BASE_INDIR}\extra\pix_artoolkit\camera_para.dat"
File "${BASE_INDIR}\extra\pix_artoolkit\patt.hiro"
File "${BASE_INDIR}\extra\pix_artoolkit\pattHiro.pdf"
SectionEnd
SectionGroupEnd
Section "Development" SEC_dev
SetOverwrite ifnewer
SetOutPath "$GEMDEV_OUTDIR"
File "${BUILD_INDIR}\Gem.lib"
SetOutPath "$GEMDEV_OUTDIR\RTE"
File ${BASE_INDIR}\src\RTE\MessageCallbacks.h
File ${BASE_INDIR}\src\RTE\Array.h
SetOutPath "$GEMDEV_OUTDIR\Gem"
File ${BASE_INDIR}\src\Gem\ThreadSemaphore.h
File ${BASE_INDIR}\src\Gem\ThreadMutex.h
File ${BASE_INDIR}\src\Gem\SynchedWorkerThread.h
File ${BASE_INDIR}\src\Gem\WorkerThread.h
File ${BASE_INDIR}\src\Gem\PixConvert.h
File ${BASE_INDIR}\src\Gem\ImageIO.h
File ${BASE_INDIR}\src\Gem\Image.h
File ${BASE_INDIR}\src\Gem\GLStack.h
File ${BASE_INDIR}\src\Gem\wglew.h
File ${BASE_INDIR}\src\Gem\glxew.h
File ${BASE_INDIR}\src\Gem\glew.h
File ${BASE_INDIR}\src\Gem\GemGL.h
File ${BASE_INDIR}\src\Gem\Event.h
File ${BASE_INDIR}\src\Gem\PBuffer.h
File ${BASE_INDIR}\src\Gem\Manager.h
File ${BASE_INDIR}\src\Gem\Loaders.h
File ${BASE_INDIR}\src\Gem\Settings.h
File ${BASE_INDIR}\src\Gem\Properties.h
File ${BASE_INDIR}\src\Gem\ContextData.h
File ${BASE_INDIR}\src\Gem\Files.h
File ${BASE_INDIR}\src\Gem\Dylib.h
File ${BASE_INDIR}\src\Gem\Exception.h
File ${BASE_INDIR}\src\Gem\Cache.h
File ${BASE_INDIR}\src\Gem\State.h
File ${BASE_INDIR}\src\Gem\RTE.h
File ${BASE_INDIR}\src\Gem\Version.h
File ${BASE_INDIR}\src\Gem\ExportDef.h
SetOutPath "$GEMDEV_OUTDIR\Utils"
File ${BASE_INDIR}\src\Utils\Vector.h
File ${BASE_INDIR}\src\Utils\SIMD.h
File ${BASE_INDIR}\src\Utils\PixPete.h
File ${BASE_INDIR}\src\Utils\Matrix.h
File ${BASE_INDIR}\src\Utils\GemMath.h
File ${BASE_INDIR}\src\Utils\GLUtil.h
File ${BASE_INDIR}\src\Utils\Functions.h
File ${BASE_INDIR}\src\Utils\any.h
SetOutPath "$GEMDEV_OUTDIR\Base"
File ${BASE_INDIR}\src\Base\GemContext.h
File ${BASE_INDIR}\src\Base\GemWindow.h
File ${BASE_INDIR}\src\Base\TextBase.h
File ${BASE_INDIR}\src\Base\GemShape.h
File ${BASE_INDIR}\src\Base\GemPixDualObj.h
File ${BASE_INDIR}\src\Base\GemPixObj.h
File ${BASE_INDIR}\src\Base\GemPathBase.h
File ${BASE_INDIR}\src\Base\GemGluObj.h
File ${BASE_INDIR}\src\Base\GemGLBase.h
File ${BASE_INDIR}\src\Base\GemBase.h
File ${BASE_INDIR}\src\Base\CPPExtern.h
SetOutPath "$GEMDEV_OUTDIR\plugins"
File ${BASE_INDIR}\src\plugins\video.h
File ${BASE_INDIR}\src\plugins\record.h
File ${BASE_INDIR}\src\plugins\imagesaver.h
File ${BASE_INDIR}\src\plugins\imageloader.h
File ${BASE_INDIR}\src\plugins\film.h
File ${BASE_INDIR}\src\plugins\PluginFactoryTimple.h
File ${BASE_INDIR}\src\plugins\PluginFactory.h
SetOutPath "$GEMDEV_OUTDIR\Base"
File ${BASE_INDIR}\src\deprecated\Base\Matrix.h
File ${BASE_INDIR}\src\deprecated\Base\GemVersion.h
File ${BASE_INDIR}\src\deprecated\Base\GemVector.h
File ${BASE_INDIR}\src\deprecated\Base\GemState.h
File ${BASE_INDIR}\src\deprecated\Base\GemSIMD.h
File ${BASE_INDIR}\src\deprecated\Base\GemPixUtil.h
File ${BASE_INDIR}\src\deprecated\Base\GemPixPete.h
File ${BASE_INDIR}\src\deprecated\Base\GemPixImageSave.h
File ${BASE_INDIR}\src\deprecated\Base\GemPixImageLoad.h
File ${BASE_INDIR}\src\deprecated\Base\GemPixConvert.h
File ${BASE_INDIR}\src\deprecated\Base\GemPBuffer.h
File ${BASE_INDIR}\src\deprecated\Base\GemMath.h
File ${BASE_INDIR}\src\deprecated\Base\GemMan.h
File ${BASE_INDIR}\src\deprecated\Base\GemLoaders.h
File ${BASE_INDIR}\src\deprecated\Base\GemGLUtil.h
File ${BASE_INDIR}\src\deprecated\Base\GemGL.h
File ${BASE_INDIR}\src\deprecated\Base\GemFuncUtil.h
File ${BASE_INDIR}\src\deprecated\Base\GemExportDef.h
File ${BASE_INDIR}\src\deprecated\Base\GemEvent.h
File ${BASE_INDIR}\src\deprecated\Base\GemContextData.h
File ${BASE_INDIR}\src\deprecated\Base\GemCache.h
WriteRegStr SHCTX "Environment" "GemDevDir" "$GEMDEV_OUTDIR"
SectionEnd
Function .onInit
; prevent multiple instances running at the same time
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "gemInstallerMutex") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
Abort
FunctionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) has been successfully uninstalled."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you really want to uninstall $(^Name) and all it's components?" IDYES +2
Abort
StrCpy $EXTRA_OUTDIR "$INSTDIR\.."
StrCpy $GEM_OUTDIR "$INSTDIR"
StrCpy $GEMDEV_OUTDIR "$GEM_OUTDIR\dev"
FunctionEnd
; uäh: isn't there a way to only delete the files we actually installed?
; that is: without having to enumerate them here
Section Uninstall
Delete "$GEM_OUTDIR\manual\*.*"
RMDir "$GEM_OUTDIR\manual"
Delete "$GEM_OUTDIR\cMatrix.html"
Delete "$GEM_OUTDIR\gem.known_bugs.txt"
Delete "$GEM_OUTDIR\GemPrimer.pdf"
Delete "$GEM_OUTDIR\gem.release_notes.txt"
Delete "$GEM_OUTDIR\gem.todo.txt"
Delete "$GEM_OUTDIR\examples\data\*.*"
Delete "$GEM_OUTDIR\examples\99.games\*.pd"
Delete "$GEM_OUTDIR\examples\13.recursion\*.pd"
Delete "$GEM_OUTDIR\examples\13.recursion\README"
Delete "$GEM_OUTDIR\examples\12.multi_screen_projection\*.pd"
Delete "$GEM_OUTDIR\examples\12.multi_screen_projection\*.frag"
Delete "$GEM_OUTDIR\examples\12.multi_screen_projection\*.vert"
Delete "$GEM_OUTDIR\examples\12.multi_screen_projection\config.txt"
Delete "$GEM_OUTDIR\examples\12.multi_screen_projection\grid.jpg"
Delete "$GEM_OUTDIR\examples\11.obj-exporter\*.pd"
Delete "$GEM_OUTDIR\examples\10.glsl\*.frag"
Delete "$GEM_OUTDIR\examples\10.glsl\*.vert"
Delete "$GEM_OUTDIR\examples\10.glsl\*.geom"
Delete "$GEM_OUTDIR\examples\10.glsl\*.jpg"
Delete "$GEM_OUTDIR\examples\10.glsl\*.pd"
Delete "$GEM_OUTDIR\examples\09.openGL\*.pd"
Delete "$GEM_OUTDIR\examples\08.io\*.pd"
Delete "$GEM_OUTDIR\examples\07.texture\*.pd"
Delete "$GEM_OUTDIR\examples\06.particle\*.pd"
Delete "$GEM_OUTDIR\examples\05.text\*.ttf"
Delete "$GEM_OUTDIR\examples\05.text\*.pd"
Delete "$GEM_OUTDIR\examples\04.video\*.pd"
Delete "$GEM_OUTDIR\examples\04.pix\*.pd"
Delete "$GEM_OUTDIR\examples\03.lighting\*.pd"
Delete "$GEM_OUTDIR\examples\02.advanced\*.pd"
Delete "$GEM_OUTDIR\examples\01.basic\*.pd"
RMDir "$GEM_OUTDIR\examples\data"
RMDir "$GEM_OUTDIR\examples\99.games"
RMDir "$GEM_OUTDIR\examples\13.recursion"
RMDir "$GEM_OUTDIR\examples\12.multi_screen_projection"
RMDir "$GEM_OUTDIR\examples\11.obj-exporter"
RMDir "$GEM_OUTDIR\examples\10.glsl"
RMDir "$GEM_OUTDIR\examples\09.openGL"
RMDir "$GEM_OUTDIR\examples\08.io"
RMDir "$GEM_OUTDIR\examples\07.texture"
RMDir "$GEM_OUTDIR\examples\06.particle"
RMDir "$GEM_OUTDIR\examples\05.text"
RMDir "$GEM_OUTDIR\examples\04.video"
RMDir "$GEM_OUTDIR\examples\04.pix"
RMDir "$GEM_OUTDIR\examples\03.lighting"
RMDir "$GEM_OUTDIR\examples\02.advanced"
RMDir "$GEM_OUTDIR\examples\01.basic"
RMDir "$GEM_OUTDIR\examples"
Delete "$GEM_OUTDIR\pix_*.pd"
Delete "$GEM_OUTDIR\*-help.pd"
Delete "$GEM_OUTDIR\*.pd"
Delete "$GEM_OUTDIR\gem_filmAVI.dll"
Delete "$GEM_OUTDIR\gem_filmDS.dll"
Delete "$GEM_OUTDIR\gem_filmQT.dll"
Delete "$GEM_OUTDIR\gem_imageJPEG.dll"
Delete "$GEM_OUTDIR\gem_imageMAGICK.dll"
Delete "$GEM_OUTDIR\gem_imageQT.dll"
Delete "$GEM_OUTDIR\gem_imageSGI.dll"
Delete "$GEM_OUTDIR\gem_imageTIFF.dll"
Delete "$GEM_OUTDIR\gem_recordQT.dll"
; Delete "$GEM_OUTDIR\gem_videoAVT.dll"
Delete "$GEM_OUTDIR\gem_videoDS.dll"
Delete "$GEM_OUTDIR\gem_videoHALCON.dll"
; Delete "$GEM_OUTDIR\gem_videoPYLON.dll"
Delete "$GEM_OUTDIR\gem_videoVFW.dll"
Delete "$GEM_OUTDIR\Gem.dll"
Delete "$GEM_OUTDIR\GnuGPL.LICENSE.txt"
Delete "$GEM_OUTDIR\COPYING.txt"
Delete "$GEM_OUTDIR\ChangeLog"
Delete "$GEM_OUTDIR\README.txt"
/* Development */
Delete "$GEMDEV_OUTDIR\Gem.lib"
Delete "$GEMDEV_OUTDIR\RTE\MessageCallbacks.h"
Delete "$GEMDEV_OUTDIR\RTE\Array.h"
Delete "$GEMDEV_OUTDIR\Gem\ThreadSemaphore.h"
Delete "$GEMDEV_OUTDIR\Gem\ThreadMutex.h"
Delete "$GEMDEV_OUTDIR\Gem\SynchedWorkerThread.h"
Delete "$GEMDEV_OUTDIR\Gem\WorkerThread.h"
Delete "$GEMDEV_OUTDIR\Gem\PixConvert.h"
Delete "$GEMDEV_OUTDIR\Gem\ImageIO.h"
Delete "$GEMDEV_OUTDIR\Gem\Image.h"
Delete "$GEMDEV_OUTDIR\Gem\GLStack.h"
Delete "$GEMDEV_OUTDIR\Gem\wglew.h"
Delete "$GEMDEV_OUTDIR\Gem\glxew.h"
Delete "$GEMDEV_OUTDIR\Gem\glew.h"
Delete "$GEMDEV_OUTDIR\Gem\GemGL.h"
Delete "$GEMDEV_OUTDIR\Gem\Event.h"
Delete "$GEMDEV_OUTDIR\Gem\PBuffer.h"
Delete "$GEMDEV_OUTDIR\Gem\Manager.h"
Delete "$GEMDEV_OUTDIR\Gem\Loaders.h"
Delete "$GEMDEV_OUTDIR\Gem\Settings.h"
Delete "$GEMDEV_OUTDIR\Gem\Properties.h"
Delete "$GEMDEV_OUTDIR\Gem\ContextData.h"
Delete "$GEMDEV_OUTDIR\Gem\Files.h"
Delete "$GEMDEV_OUTDIR\Gem\Dylib.h"
Delete "$GEMDEV_OUTDIR\Gem\Exception.h"
Delete "$GEMDEV_OUTDIR\Gem\Cache.h"
Delete "$GEMDEV_OUTDIR\Gem\State.h"
Delete "$GEMDEV_OUTDIR\Gem\RTE.h"
Delete "$GEMDEV_OUTDIR\Gem\Version.h"
Delete "$GEMDEV_OUTDIR\Gem\ExportDef.h"
Delete "$GEMDEV_OUTDIR\Utils\Vector.h"
Delete "$GEMDEV_OUTDIR\Utils\SIMD.h"
Delete "$GEMDEV_OUTDIR\Utils\PixPete.h"
Delete "$GEMDEV_OUTDIR\Utils\Matrix.h"
Delete "$GEMDEV_OUTDIR\Utils\GemMath.h"
Delete "$GEMDEV_OUTDIR\Utils\GLUtil.h"
Delete "$GEMDEV_OUTDIR\Utils\Functions.h"
Delete "$GEMDEV_OUTDIR\Utils\any.h"
Delete "$GEMDEV_OUTDIR\Base\GemContext.h"
Delete "$GEMDEV_OUTDIR\Base\GemWindow.h"
Delete "$GEMDEV_OUTDIR\Base\TextBase.h"
Delete "$GEMDEV_OUTDIR\Base\GemShape.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixDualObj.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixObj.h"
Delete "$GEMDEV_OUTDIR\Base\GemPathBase.h"
Delete "$GEMDEV_OUTDIR\Base\GemGluObj.h"
Delete "$GEMDEV_OUTDIR\Base\GemGLBase.h"
Delete "$GEMDEV_OUTDIR\Base\GemBase.h"
Delete "$GEMDEV_OUTDIR\Base\CPPExtern.h"
Delete "$GEMDEV_OUTDIR\plugins\video.h"
Delete "$GEMDEV_OUTDIR\plugins\record.h"
Delete "$GEMDEV_OUTDIR\plugins\imagesaver.h"
Delete "$GEMDEV_OUTDIR\plugins\imageloader.h"
Delete "$GEMDEV_OUTDIR\plugins\film.h"
Delete "$GEMDEV_OUTDIR\plugins\PluginFactoryTimple.h"
Delete "$GEMDEV_OUTDIR\plugins\PluginFactory.h"
Delete "$GEMDEV_OUTDIR\Base\Matrix.h"
Delete "$GEMDEV_OUTDIR\Base\GemVersion.h"
Delete "$GEMDEV_OUTDIR\Base\GemVector.h"
Delete "$GEMDEV_OUTDIR\Base\GemState.h"
Delete "$GEMDEV_OUTDIR\Base\GemSIMD.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixUtil.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixPete.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixImageSave.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixImageLoad.h"
Delete "$GEMDEV_OUTDIR\Base\GemPixConvert.h"
Delete "$GEMDEV_OUTDIR\Base\GemPBuffer.h"
Delete "$GEMDEV_OUTDIR\Base\GemMath.h"
Delete "$GEMDEV_OUTDIR\Base\GemMan.h"
Delete "$GEMDEV_OUTDIR\Base\GemLoaders.h"
Delete "$GEMDEV_OUTDIR\Base\GemGLUtil.h"
Delete "$GEMDEV_OUTDIR\Base\GemGL.h"
Delete "$GEMDEV_OUTDIR\Base\GemFuncUtil.h"
Delete "$GEMDEV_OUTDIR\Base\GemExportDef.h"
Delete "$GEMDEV_OUTDIR\Base\GemEvent.h"
Delete "$GEMDEV_OUTDIR\Base\GemContextData.h"
Delete "$GEMDEV_OUTDIR\Base\GemCache.h"
RMDir "$GEMDEV_OUTDIR\RTE"
RMDir "$GEMDEV_OUTDIR\Gem"
RMDir "$GEMDEV_OUTDIR\Utils"
RMDir "$GEMDEV_OUTDIR\Base"
RMDir "$GEMDEV_OUTDIR\plugins"
RMDir "$GEMDEV_OUTDIR\Base"
RMDir "$GEMDEV_OUTDIR"
/* extra */
Delete "$EXTRA_OUTDIR\pix_drum\pix_drum.dll"
Delete "$EXTRA_OUTDIR\pix_drum\pix_drum-help.pd"
Delete "$EXTRA_OUTDIR\pix_drum\LICENSE.txt"
Delete "$EXTRA_OUTDIR\pix_mano\pix_mano.dll"
Delete "$EXTRA_OUTDIR\pix_mano\pix_mano-help.pd"
Delete "$EXTRA_OUTDIR\pix_mano\LICENSE.txt"
Delete "$EXTRA_OUTDIR\pix_fiducialtrack\pix_fiducialtrack.dll"
Delete "$EXTRA_OUTDIR\pix_fiducialtrack\pix_fiducialtrack-help.pd"
Delete "$EXTRA_OUTDIR\pix_fiducialtrack\all.trees"
Delete "$EXTRA_OUTDIR\pix_artoolkit\pix_artoolkit.dll"
Delete "$EXTRA_OUTDIR\pix_artoolkit\pix_artoolkit-help.pd"
Delete "$EXTRA_OUTDIR\pix_artoolkit\README.txt"
Delete "$EXTRA_OUTDIR\pix_artoolkit\camera_para.dat"
Delete "$EXTRA_OUTDIR\pix_artoolkit\patt.hiro"
Delete "$EXTRA_OUTDIR\pix_artoolkit\pattHiro.pdf"
RMDir "$EXTRA_OUTDIR\pix_drum"
RMDir "$EXTRA_OUTDIR\pix_mano"
RMDir "$EXTRA_OUTDIR\pix_fiducialtrack"
RMDir "$EXTRA_OUTDIR\pix_artoolkit"
Delete "$GEM_OUTDIR\uninst.exe"
RMDir "$GEM_OUTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
; try to delete SHCTX \"Environment"\"GEM_DEFAULT_FONT" if it is "$GEM_OUTDIR\examples\data\vera.ttf"
SetAutoClose true
SectionEnd
Section -Post
WriteUninstaller "$GEM_OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$GEM_OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_Gem} "Graphical Environment for Multimedia"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_GemBinary} "the Gem binary"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_GemAbs} "Gem-abstractions"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_documentation} "Gem documentation: patches, HTML, PDFs,..."
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_ref} "reference patches for Gem-objects"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_examples} "a large number of patches showing what to do with GEM"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_manual} "HTML-manual"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_doc} "Gem primer,..."
#plugins
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin} "plugins to enhance Gem's capabilities"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_film} "plugins for movie loading"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_filmDS} "allows to read movies using DirectShow filters"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_filmQT} "allows to read movies using Apple's QuickTime library (if present)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_filmAVI} "allows to read movies using Microsoft's old (and deprecated) AVI library"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_record} "plugins for video output"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_recordQT} "allows to output Gem-pixes into QuickTime MOVie files"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_image} "plugins for image loading/saving"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_imageMAGICK} "allows to read/write still images using ImageMagick (this can virtually read/write any image format, including but not limited to JPEG, TIFF and SGI, so it's probably the only 'image' plugin you need)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_imageQT} "allows to read/write still images using Apple's QuickTime; NOTE that this will disable threaded loading of images"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_imageSGI} "allows to read SGI images"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_imageJPEG} "allows to read/write JPEG images"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_imageTIFF} "allows to read/write TIFF images"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_video} "plugins for live video capturing"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_videoDS} "allows to capture live video sources using DirectShow filters"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_videoVFW} "allows to capture live video using Microsoft's old (and deprecated) Video-For-Windows method"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_videoAVT} "allows to capture live video from GigE-cameras using AVT (Allied Vision Technologies); supported cameras include the Prosilica family (http://www.alliedvisiontec.com) "
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_videoHALCON} "allows to capture live video from a number of devices (including GigE-cameras and industry grade frame grabbers) using MVTec's HALCON library; you will need to purchase a license from MVTec in order to be able to use this plugin (http://www.mvtec.com) "
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_plugin_videoPYLON} "allows to capture live video from GigE-cameras using Basler's PYLON library; mainly supports Basler cameras; you might need to download additional software in order to use this plugin (http://www.baslerweb.com)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_extra} "additional objectclasses"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_extra_pix_drum} "Jaime Olivier's [pix_drum] object for his 'Silent Drum'"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_extra_pix_mano} "Jaime Olivier's [pix_mano] object"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_extra_pix_fiducialtrack} "a port of the reactable(tm)'s fiducial tracking algorithm"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_extra_pix_artoolkit} "fiducial tracking using ARToolkit markers"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_dev} "Headers and Library-Files for developing your own Gem objects"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

View file

@ -0,0 +1,11 @@
set NSISDIR=%ProgramFiles%\NSIS\
set GEMNSIS=%CD%
cd %NSISDIR%
set PROD=/DPRODUCT_VERSION=%1
if "%1"=="" set PROD="/DBLABLA"
makensis %PROD% %GEMNSIS%\Gem.nsi
cd %GEMNSIS%

View file

@ -0,0 +1,91 @@
;
; uninstall only (and all) installed files
; ripped from http://nsis.sourceforge.net/Uninstall_only_installed_files
;
; Part 1/2: THIS HAS TO GO DIRECTLY BEFORE THE "SECTIONS"
;
; Instead of using SetOutPath, CreateDirectory, File, CopyFiles, Rename and
; WriteUninstaller instructions in your sections, use ${SetOutPath},
; ${CreateDirectory}, ${File}, ${CopyFiles}, ${Rename} and ${WriteUninstaller}
; instead.
;
; When using ${SetOutPath} to create more than one upper level directory, e.g.:
; ${SetOutPath} "$INSTDIR\dir1\dir2\dir3", you need to add entries for each lower
; level directory for them all to be deleted:
; ${AddItem} "$INSTDIR\dir1"
; ${AddItem} "$INSTDIR\dir1\dir2"
; ${SetOutPath} "$INSTDIR\dir1\dir2\dir3"
!define UninstLog "uninstall.log"
Var UninstLog
; Uninstall log file missing.
LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!"
; AddItem macro
!macro AddItem Path
FileWrite $UninstLog "${Path}$\r$\n"
!macroend
!define AddItem "!insertmacro AddItem"
; File macro
!macro File FilePath FileName
IfFileExists "$OUTDIR\${FileName}" +2
FileWrite $UninstLog "$OUTDIR\${FileName}$\r$\n"
File "${FilePath}${FileName}"
!macroend
!define File "!insertmacro File"
; CreateShortcut macro
!macro CreateShortcut FilePath FilePointer
FileWrite $UninstLog "${FilePath}$\r$\n"
CreateShortcut "${FilePath}" "${FilePointer}"
!macroend
!define CreateShortcut "!insertmacro CreateShortcut"
; Copy files macro
!macro CopyFiles SourcePath DestPath
IfFileExists "${DestPath}" +2
FileWrite $UninstLog "${DestPath}$\r$\n"
CopyFiles "${SourcePath}" "${DestPath}"
!macroend
!define CopyFiles "!insertmacro CopyFiles"
; Rename macro
!macro Rename SourcePath DestPath
IfFileExists "${DestPath}" +2
FileWrite $UninstLog "${DestPath}$\r$\n"
Rename "${SourcePath}" "${DestPath}"
!macroend
!define Rename "!insertmacro Rename"
; CreateDirectory macro
!macro CreateDirectory Path
CreateDirectory "${Path}"
FileWrite $UninstLog "${Path}$\r$\n"
!macroend
!define CreateDirectory "!insertmacro CreateDirectory"
; SetOutPath macro
!macro SetOutPath Path
SetOutPath "${Path}"
FileWrite $UninstLog "${Path}$\r$\n"
!macroend
!define SetOutPath "!insertmacro SetOutPath"
; WriteUninstaller macro
!macro WriteUninstaller Path
WriteUninstaller "${Path}"
FileWrite $UninstLog "${Path}$\r$\n"
!macroend
!define WriteUninstaller "!insertmacro WriteUninstaller"
Section -openlogfile
CreateDirectory "$INSTDIR"
IfFileExists "$INSTDIR\${UninstLog}" +3
FileOpen $UninstLog "$INSTDIR\${UninstLog}" w
Goto +4
SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL
FileOpen $UninstLog "$INSTDIR\${UninstLog}" a
FileSeek $UninstLog 0 END
SectionEnd

View file

@ -0,0 +1,60 @@
;
; uninstall only (and all) installed files
; ripped from http://nsis.sourceforge.net/Uninstall_only_installed_files
;
; Part 2/2: THIS HAS TO GO DIRECTLY AFTER THE "SECTIONS"
;
; LATER: allow the user to proceed uninstallation even without an uninstall.log
; (e.g. by deleting the entire tree - at the users own risk!)
Section -closelogfile
FileClose $UninstLog
SetFileAttributes "$INSTDIR\${UninstLog}" READONLY|SYSTEM|HIDDEN
SectionEnd
Section Uninstall
; Can't uninstall if uninstall log is missing!
IfFileExists "$INSTDIR\${UninstLog}" +3
MessageBox MB_OK|MB_ICONSTOP "$(UninstLogMissing)"
Abort
Push $R0
Push $R1
Push $R2
SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL
FileOpen $UninstLog "$INSTDIR\${UninstLog}" r
StrCpy $R1 -1
GetLineCount:
ClearErrors
FileRead $UninstLog $R0
IntOp $R1 $R1 + 1
StrCpy $R0 $R0 -2
Push $R0
IfErrors 0 GetLineCount
Pop $R0
LoopRead:
StrCmp $R1 0 LoopDone
Pop $R0
IfFileExists "$R0\*.*" 0 +3
RMDir $R0 #is dir
Goto +3
IfFileExists $R0 0 +2
Delete $R0 #is file
IntOp $R1 $R1 - 1
Goto LoopRead
LoopDone:
FileClose $UninstLog
Delete "$INSTDIR\${UninstLog}"
RMDir "$INSTDIR"
Pop $R2
Pop $R1
Pop $R0
SectionEnd

View file

@ -0,0 +1,294 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Gem", "Gem.vcproj", "{E6CFDE67-C343-44D0-8584-5D82E396D594}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_artoolkit", "..\..\extra\pix_artoolkit\win-vs2003\pix_artoolkit.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer.vcproj", "{6965876A-4A92-470C-95EF-EB554B13B336}"
ProjectSection(ProjectDependencies) = postProject
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmAVI", "..\..\plugins\filmAVI\win-vs2003\filmAVI.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmDS", "..\..\plugins\filmDS\win-vs2003\filmDS.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmQT", "..\..\plugins\filmQT\win-vs2003\filmQT.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recordQT", "..\..\plugins\recordQT\win-vs2003\recordQT.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoDS", "..\..\plugins\videoDS\win-vs2003\videoDS.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoVFW", "..\..\plugins\videoVFW\win-vs2003\videoVFW.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoHALCON", "..\..\plugins\videoHALCON\win-vs2003\videoHALCON.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_drum", "..\..\extra\pix_drum\win-vs2003\pix_drum.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_mano", "..\..\extra\pix_mano\win-vs2003\pix_mano.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_fiducialtrack", "..\..\extra\pix_fiducialtrack\win-vs2003\pix_fiducialtrack.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageQT", "..\..\plugins\imageQT\win-vs2003\imageQT.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageJPEG", "..\..\plugins\imageJPEG\win-vs2003\imageJPEG.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageTIFF", "..\..\plugins\imageTIFF\win-vs2003\imageTIFF.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageMAGICK", "..\..\plugins\imageMAGICK\win-vs2003\imageMAGICK.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageSGI", "..\..\plugins\imageSGI\win-vs2003\imageSGI.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modelOBJ", "..\..\plugins\modelOBJ\win-vs2003\modelOBJ.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modelASSIMP2", "..\..\plugins\modelASSIMP2\win-vs2003\modelASSIMP2.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_hit", "..\..\extra\pix_hit\win-vs2003\pix_hit.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Release = Release
ReleaseDummy = ReleaseDummy
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release.ActiveCfg = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release.Build.0 = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.ReleaseDummy.ActiveCfg = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.ReleaseDummy.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.Release.ActiveCfg = Release|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.ReleaseDummy.ActiveCfg = Release|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.ReleaseDummy.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy.Build.0 = ReleaseDummy|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,22 @@
this Gem.dll is the Gem-binary for w32
it is optimized for Pentium-Pro, so it should run on quite every machine
this file has been compiled and tested on winXP
it probably can be used on w2k too, but chances are low that you can run it on older versions of w32.
you might have to install a recent version of DirectX (>9.0)
if you want to play-back QuickTime-videos, you have to install QuickTime first (current version is 7.2)
this is an alpha-release: please test it an report back any bugs you encounter
mfga.sdr
IOhannes m zmölnig
contact emails:
zmoelnig <at> iem <tod> at
gem-dev <at> iem <tod> at

View file

@ -0,0 +1,10 @@
set _=%CD%
set NSISDIR=..\win-nsis\
xcopy /y Gem.dll %NSISDIR%\
cd %NSISDIR%
buildinstaller.bat %1
cd %_%

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="installer"
ProjectGUID="{6965876A-4A92-470C-95EF-EB554B13B336}"
Keyword="MakeFileProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="0">
<Tool
Name="VCNMakeTool"
BuildCommandLine="buildinstaller.bat"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="0">
<Tool
Name="VCNMakeTool"
BuildCommandLine="installerCVS.bat"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -0,0 +1,2 @@
installer SVN%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
rem installer 0.93.0

View file

@ -0,0 +1,48 @@
just a sketchpad for me to remember which libraries we really need
Multithreaded-Debug (/MTd)
working configuration#1(+QuickTime)
msvcrtD.lib
msvcprtD.lib
OLDNAMES.lib
pd.lib
opengl32.lib
glu32.lib
vfw32.lib
QTMLClient.lib
working configuration#2(#1+DirectShow)
msvcrtD.lib (C/C++)
msvcprtD.lib (C/C++)
OLDNAMES.lib (C/C++)
pd.lib (Pure data)
opengl32.lib (openGL)
glu32.lib (openGL)
QTMLClient.lib (QuickTime)
vfw32.lib (Video4Windows)
ddraw.lib (DirectShow)
strmiids.lib (DirectShow)
strmbasD.lib (DirectShow - part of DirectShow/BaseClasses sample)
atlsD.lib (DirectShow - ATLclasses)
winmm.lib (DirectShow - time)
working configuration#3(#2+FTGL+jpeg/tiff)
msvcrtD.lib (C/C++)
msvcprtD.lib (C/C++)
OLDNAMES.lib (C/C++)
pd.lib (Pure data)
opengl32.lib (openGL)
glu32.lib (openGL)
libjpeg.lib (jpeg/tiff)
libtiff.lib (jpeg/tiff)
FTGL_static_mtD.lib (FTGL)
freetype214mt_D.lib (FTGL)
QTMLClient.lib (QuickTime)
vfw32.lib (video4windows)
ddraw.lib (DirectShow)
strmiids.lib (DirectShow)
strmbasD.lib (DirectShow - part of DirectShow/BaseClasses sample)
atlsD.lib (DirectShow - ATLclasses)
winmm.lib (DirectShow - time)

View file

@ -0,0 +1,40 @@
set ZIP=%ProgramFiles%\7-Zip\7z.exe
rem set ZIP=echo
set GEMVERSION=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
set GEMDIR=gem-%GEMVERSION%
set GEMARC=gem-CVS%GEMVERSION%-W32-i686
mkdir %GEMDIR%
xcopy Gem.dll %GEMDIR%\
copy README_W32.txt.template %GEMDIR%\README_W32.txt
%ZIP% a %GEMARC%-bin.zip %GEMDIR%
read
cd ..\..\
xcopy /E /I abstractions build\win-vs2003\%GEMDIR%\abstractions
xcopy /E /I help build\win-vs2003\%GEMDIR%\help
xcopy /E /I examples build\win-vs2003\%GEMDIR%\examples
xcopy /E /I doc build\win-vs2003\%GEMDIR%\doc
xcopy /E /I manual build\win-vs2003\%GEMDIR%\manual
xcopy /E /I tests build\win-vs2003\%GEMDIR%\tests
copy ChangeLog build\win-vs2003\%GEMDIR%
copy GEM_INSTALL.bat build\win-vs2003\%GEMDIR%
copy GEM.LICENSE.TERMS build\win-vs2003\%GEMDIR%
copy GEM.README build\win-vs2003\%GEMDIR%
copy GnuGPL.LICENSE build\win-vs2003\%GEMDIR%
cd build\win-vs2003
%ZIP% a %GEMARC%-bin-doc.zip %GEMDIR%

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="Debug"
>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="0"
FavorSizeOrSpeed="0"
PreprocessorDefinitions="_DEBUG;DEBUG"
RuntimeLibrary="1"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="DirectShow"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;C:\DXSDK\samples\C++\DirectShow\BaseClasses&quot;"
PreprocessorDefinitions="HAVE_DIRECTSHOW"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ddraw.lib atls.lib strmiids.lib strmbase.lib"
AdditionalLibraryDirectories="&quot;C:\DXSDK\samples\C++\DirectShow\BaseClasses\Release&quot;"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="FTGL"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;$(FREETYPE)\include&quot;;&quot;$(FTGL)\src&quot;"
PreprocessorDefinitions="HAVE_LIBFTGL;HAVE_FTGL_FTGL_H;FTGL_LIBRARY_STATIC"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="FTGL.lib"
AdditionalLibraryDirectories="&quot;$(FTGL)\msvc\Build&quot;;&quot;$(FTGL)\win32_vcpp\Build&quot;;&quot;$(FREETYPE)\objs&quot;"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="FTGL Debug"
InheritedPropertySheets=".\FTGL.vsprops"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="freetype235mt_D.lib"
AdditionalLibraryDirectories=""
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="FTGL Release"
InheritedPropertySheets=".\FTGL.vsprops"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\src;&quot;$(FREETYPE)\include&quot;;&quot;$(FTGL)\src&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="freetype235mt.lib"
AdditionalLibraryDirectories=""
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,340 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Gem", "Gem.vcproj", "{E6CFDE67-C343-44D0-8584-5D82E396D594}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_artoolkit", "..\..\extra\pix_artoolkit\win-vs2008\pix_artoolkit.vcproj", "{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer.vcproj", "{6965876A-4A92-470C-95EF-EB554B13B336}"
ProjectSection(ProjectDependencies) = postProject
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC} = {FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmAVI", "..\..\plugins\filmAVI\win-vs2008\filmAVI.vcproj", "{F2368753-AF77-43B7-BE96-1292EC104941}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmDS", "..\..\plugins\filmDS\win-vs2008\filmDS.vcproj", "{6EA41ED7-ECCD-4A9A-BED0-E8E4B4BD77EB}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filmQT", "..\..\plugins\filmQT\win-vs2008\filmQT.vcproj", "{92E57A6D-B582-46F0-B02D-E0F29A594143}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recordQT", "..\..\plugins\recordQT\win-vs2008\recordQT.vcproj", "{FE35B992-784A-4DE2-A538-9285C83618C4}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoDS", "..\..\plugins\videoDS\win-vs2008\videoDS.vcproj", "{3B5EC55E-FC95-45EB-B9C1-ACDA01D49061}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoVFW", "..\..\plugins\videoVFW\win-vs2008\videoVFW.vcproj", "{1A49951B-8C31-45F4-B738-B36B960913C7}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoHALCON", "..\..\plugins\videoHALCON\win-vs2008\videoHALCON.vcproj", "{4B82D19E-ABA3-4DE8-8144-AA6087C52454}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_drum", "..\..\extra\pix_drum\win-vs2008\pix_drum.vcproj", "{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_mano", "..\..\extra\pix_mano\win-vs2008\pix_mano.vcproj", "{F9C06216-B28B-40CD-927E-2E63266F64D8}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_fiducialtrack", "..\..\extra\pix_fiducialtrack\win-vs2008\pix_fiducialtrack.vcproj", "{138446C3-B0DB-4A1F-A30D-71F00C54F596}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageQT", "..\..\plugins\imageQT\win-vs2008\imageQT.vcproj", "{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageJPEG", "..\..\plugins\imageJPEG\win-vs2008\imageJPEG.vcproj", "{94CA04E7-CCF9-4733-A1BD-F3283C21288A}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageTIFF", "..\..\plugins\imageTIFF\win-vs2008\imageTIFF.vcproj", "{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageMAGICK", "..\..\plugins\imageMAGICK\win-vs2008\imageMAGICK.vcproj", "{9E650453-D08D-416F-AE68-F8EDE6E92892}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imageSGI", "..\..\plugins\imageSGI\win-vs2008\imageSGI.vcproj", "{4755C755-FB54-41CF-BECE-EC63B14F6151}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modelOBJ", "..\..\plugins\modelOBJ\win-vs2008\modelOBJ.vcproj", "{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modelASSIMP2", "..\..\plugins\modelASSIMP2\win-vs2008\modelASSIMP2.vcproj", "{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoOptiTrack", "..\..\plugins\videoOptiTrack\win-vs2008\videoOptiTrack.vcproj", "{9DC8B017-773B-426C-83D2-467723E09CBD}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoTEST", "..\..\plugins\videoTEST\win-vs2008\videoTEST.vcproj", "{AEFA779E-A699-4C47-8406-FBEED28AACF1}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix_hit", "..\..\extra\pix_hit\win-vs2008\pix_hit.vcproj", "{EE21F78A-1620-4206-931A-ACABA1598567}"
ProjectSection(ProjectDependencies) = postProject
{E6CFDE67-C343-44D0-8584-5D82E396D594} = {E6CFDE67-C343-44D0-8584-5D82E396D594}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
ReleaseDummy|Win32 = ReleaseDummy|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Debug|Win32.ActiveCfg = Debug|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Debug|Win32.Build.0 = Debug|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release|Win32.ActiveCfg = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release|Win32.Build.0 = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.ReleaseDummy|Win32.ActiveCfg = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.ReleaseDummy|Win32.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release|Win32.ActiveCfg = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.Release|Win32.Build.0 = Release|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{FF21A158-2BDE-483F-85C3-80C9DF0A0ABC}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.Debug|Win32.ActiveCfg = Debug|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.Debug|Win32.Build.0 = Debug|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.Release|Win32.ActiveCfg = Release|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.ReleaseDummy|Win32.ActiveCfg = Release|Win32
{6965876A-4A92-470C-95EF-EB554B13B336}.ReleaseDummy|Win32.Build.0 = Release|Win32
{F2368753-AF77-43B7-BE96-1292EC104941}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{F2368753-AF77-43B7-BE96-1292EC104941}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{F2368753-AF77-43B7-BE96-1292EC104941}.Release|Win32.ActiveCfg = Release|Win32
{F2368753-AF77-43B7-BE96-1292EC104941}.Release|Win32.Build.0 = Release|Win32
{F2368753-AF77-43B7-BE96-1292EC104941}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{6EA41ED7-ECCD-4A9A-BED0-E8E4B4BD77EB}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{6EA41ED7-ECCD-4A9A-BED0-E8E4B4BD77EB}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{6EA41ED7-ECCD-4A9A-BED0-E8E4B4BD77EB}.Release|Win32.ActiveCfg = Release|Win32
{6EA41ED7-ECCD-4A9A-BED0-E8E4B4BD77EB}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{92E57A6D-B582-46F0-B02D-E0F29A594143}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{92E57A6D-B582-46F0-B02D-E0F29A594143}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{92E57A6D-B582-46F0-B02D-E0F29A594143}.Release|Win32.ActiveCfg = Release|Win32
{92E57A6D-B582-46F0-B02D-E0F29A594143}.Release|Win32.Build.0 = Release|Win32
{92E57A6D-B582-46F0-B02D-E0F29A594143}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{FE35B992-784A-4DE2-A538-9285C83618C4}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{FE35B992-784A-4DE2-A538-9285C83618C4}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{FE35B992-784A-4DE2-A538-9285C83618C4}.Release|Win32.ActiveCfg = Release|Win32
{FE35B992-784A-4DE2-A538-9285C83618C4}.Release|Win32.Build.0 = Release|Win32
{FE35B992-784A-4DE2-A538-9285C83618C4}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{3B5EC55E-FC95-45EB-B9C1-ACDA01D49061}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{3B5EC55E-FC95-45EB-B9C1-ACDA01D49061}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{3B5EC55E-FC95-45EB-B9C1-ACDA01D49061}.Release|Win32.ActiveCfg = Release|Win32
{3B5EC55E-FC95-45EB-B9C1-ACDA01D49061}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{1A49951B-8C31-45F4-B738-B36B960913C7}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{1A49951B-8C31-45F4-B738-B36B960913C7}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{1A49951B-8C31-45F4-B738-B36B960913C7}.Release|Win32.ActiveCfg = Release|Win32
{1A49951B-8C31-45F4-B738-B36B960913C7}.Release|Win32.Build.0 = Release|Win32
{1A49951B-8C31-45F4-B738-B36B960913C7}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{4B82D19E-ABA3-4DE8-8144-AA6087C52454}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{4B82D19E-ABA3-4DE8-8144-AA6087C52454}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{4B82D19E-ABA3-4DE8-8144-AA6087C52454}.Release|Win32.ActiveCfg = Release|Win32
{4B82D19E-ABA3-4DE8-8144-AA6087C52454}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}.Release|Win32.ActiveCfg = Release|Win32
{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}.Release|Win32.Build.0 = Release|Win32
{D4A0BA99-E00E-4E4B-97E9-FEB8D5B27881}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{F9C06216-B28B-40CD-927E-2E63266F64D8}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{F9C06216-B28B-40CD-927E-2E63266F64D8}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{F9C06216-B28B-40CD-927E-2E63266F64D8}.Release|Win32.ActiveCfg = Release|Win32
{F9C06216-B28B-40CD-927E-2E63266F64D8}.Release|Win32.Build.0 = Release|Win32
{F9C06216-B28B-40CD-927E-2E63266F64D8}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{138446C3-B0DB-4A1F-A30D-71F00C54F596}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{138446C3-B0DB-4A1F-A30D-71F00C54F596}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{138446C3-B0DB-4A1F-A30D-71F00C54F596}.Release|Win32.ActiveCfg = Release|Win32
{138446C3-B0DB-4A1F-A30D-71F00C54F596}.Release|Win32.Build.0 = Release|Win32
{138446C3-B0DB-4A1F-A30D-71F00C54F596}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}.Release|Win32.ActiveCfg = Release|Win32
{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}.Release|Win32.Build.0 = Release|Win32
{7AD29AEA-D4FD-4E87-B8C8-2C4CEAD24523}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{94CA04E7-CCF9-4733-A1BD-F3283C21288A}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{94CA04E7-CCF9-4733-A1BD-F3283C21288A}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{94CA04E7-CCF9-4733-A1BD-F3283C21288A}.Release|Win32.ActiveCfg = Release|Win32
{94CA04E7-CCF9-4733-A1BD-F3283C21288A}.Release|Win32.Build.0 = Release|Win32
{94CA04E7-CCF9-4733-A1BD-F3283C21288A}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}.Release|Win32.ActiveCfg = Release|Win32
{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}.Release|Win32.Build.0 = Release|Win32
{6D5697D9-964B-43B0-B5F8-5779E5EF7FCC}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{9E650453-D08D-416F-AE68-F8EDE6E92892}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{9E650453-D08D-416F-AE68-F8EDE6E92892}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{9E650453-D08D-416F-AE68-F8EDE6E92892}.Release|Win32.ActiveCfg = Release|Win32
{9E650453-D08D-416F-AE68-F8EDE6E92892}.Release|Win32.Build.0 = Release|Win32
{9E650453-D08D-416F-AE68-F8EDE6E92892}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{4755C755-FB54-41CF-BECE-EC63B14F6151}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{4755C755-FB54-41CF-BECE-EC63B14F6151}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{4755C755-FB54-41CF-BECE-EC63B14F6151}.Release|Win32.ActiveCfg = Release|Win32
{4755C755-FB54-41CF-BECE-EC63B14F6151}.Release|Win32.Build.0 = Release|Win32
{4755C755-FB54-41CF-BECE-EC63B14F6151}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.Release|Win32.ActiveCfg = Release|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.Release|Win32.Build.0 = Release|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{958A7694-C3A6-4CE8-A4EB-6AD0D55D3511}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.Release|Win32.ActiveCfg = Release|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.Release|Win32.Build.0 = Release|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{32A8EA41-EC6E-4F4D-9A82-8B2175F549A2}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.Debug|Win32.ActiveCfg = Debug|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.Debug|Win32.Build.0 = Debug|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.Release|Win32.ActiveCfg = Release|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.Release|Win32.Build.0 = Release|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{9DC8B017-773B-426C-83D2-467723E09CBD}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.Release|Win32.ActiveCfg = Release|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.Release|Win32.Build.0 = Release|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{AEFA779E-A699-4C47-8406-FBEED28AACF1}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.Debug|Win32.ActiveCfg = ReleaseDummy|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.Debug|Win32.Build.0 = ReleaseDummy|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.Release|Win32.ActiveCfg = Release|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.Release|Win32.Build.0 = Release|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.ReleaseDummy|Win32.ActiveCfg = ReleaseDummy|Win32
{EE21F78A-1620-4206-931A-ACABA1598567}.ReleaseDummy|Win32.Build.0 = ReleaseDummy|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="Gem"
InheritedPropertySheets=".\puredata.vsprops"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\..\..\src&quot;;&quot;$(ProjectDir)\..\..\src&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Gem.lib"
AdditionalLibraryDirectories="&quot;$(SolutionDir)&quot;;&quot;$(ProjectDir)\..\..\build\win-vs2008&quot;;"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="GemInternal"
OutputDirectory="$(ProjectDir)"
IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\src"
PreprocessorDefinitions="GEM_INTERNAL;GLEW_BUILD"
PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="QuickTime"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(ProgramFiles)\QuickTime SDK\CIncludes"
PreprocessorDefinitions="HAVE_QUICKTIME"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="QTMLClient.lib"
AdditionalLibraryDirectories="$(ProgramFiles)\QuickTime SDK\Libraries"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,22 @@
this Gem.dll is the Gem-binary for w32
it is optimized for Pentium-Pro, so it should run on quite every machine
this file has been compiled and tested on winXP
it probably can be used on w2k too, but chances are low that you can run it on older versions of w32.
you might have to install a recent version of DirectX (>9.0)
if you want to play-back QuickTime-videos, you have to install QuickTime first (current version is 7.2)
this is an alpha-release: please test it an report back any bugs you encounter
mfga.sdr
IOhannes m zmölnig
contact emails:
zmoelnig <at> iem <tod> at
gem-dev <at> iem <tod> at

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="Release"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
FavorSizeOrSpeed="1"
PreprocessorDefinitions="NDEBUG"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="SIMD"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="__MMX__;__SSE2__"
EnableEnhancedInstructionSet="2"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="VFW"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="HAVE_VFW_H;HAVE_LIBVFW32"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="vfw32.lib"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="extra"
InheritedPropertySheets=".\Gem.vsprops;.\extraCommon.vsprops;.\Release.vsprops"
>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="extra - common config"
OutputDirectory="$(ProjectDir)"
IntermediateDirectory="$(ProjectDir)/$(ConfigurationName)"
>
<Tool
Name="VCCLCompilerTool"
PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\..\$(ProjectName).dll"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,10 @@
set _=%CD%
set NSISDIR=..\win-nsis\
xcopy /y Gem.dll %NSISDIR%\
cd %NSISDIR%
buildinstaller.bat %1
cd %_%

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="installer"
ProjectGUID="{6965876A-4A92-470C-95EF-EB554B13B336}"
Keyword="MakeFileProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="0"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="buildinstaller.bat"
ReBuildCommandLine=""
CleanCommandLine=""
Output=""
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="0"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="installerCVS.bat"
ReBuildCommandLine=""
CleanCommandLine=""
Output=""
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
</Files>
</VisualStudioProject>

View file

@ -0,0 +1,2 @@
installer SVN%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
rem installer 0.93.0

View file

@ -0,0 +1,48 @@
just a sketchpad for me to remember which libraries we really need
Multithreaded-Debug (/MTd)
working configuration#1(+QuickTime)
msvcrtD.lib
msvcprtD.lib
OLDNAMES.lib
pd.lib
opengl32.lib
glu32.lib
vfw32.lib
QTMLClient.lib
working configuration#2(#1+DirectShow)
msvcrtD.lib (C/C++)
msvcprtD.lib (C/C++)
OLDNAMES.lib (C/C++)
pd.lib (Pure data)
opengl32.lib (openGL)
glu32.lib (openGL)
QTMLClient.lib (QuickTime)
vfw32.lib (Video4Windows)
ddraw.lib (DirectShow)
strmiids.lib (DirectShow)
strmbasD.lib (DirectShow - part of DirectShow/BaseClasses sample)
atlsD.lib (DirectShow - ATLclasses)
winmm.lib (DirectShow - time)
working configuration#3(#2+FTGL+jpeg/tiff)
msvcrtD.lib (C/C++)
msvcprtD.lib (C/C++)
OLDNAMES.lib (C/C++)
pd.lib (Pure data)
opengl32.lib (openGL)
glu32.lib (openGL)
libjpeg.lib (jpeg/tiff)
libtiff.lib (jpeg/tiff)
FTGL_static_mtD.lib (FTGL)
freetype214mt_D.lib (FTGL)
QTMLClient.lib (QuickTime)
vfw32.lib (video4windows)
ddraw.lib (DirectShow)
strmiids.lib (DirectShow)
strmbasD.lib (DirectShow - part of DirectShow/BaseClasses sample)
atlsD.lib (DirectShow - ATLclasses)
winmm.lib (DirectShow - time)

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="plugin"
InheritedPropertySheets=".\Gem.vsprops;.\Release.vsprops;.\pluginCommon.vsprops"
>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="plugin - common config"
OutputDirectory="$(SolutionDir)"
IntermediateDirectory="$(ProjectDir)/$(ConfigurationName)"
>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/gem_$(ProjectName).dll"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="pthread"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\pd\src;&quot;$(ProgramFiles)\pd\src&quot;"
PreprocessorDefinitions="HAVE_PTHREADS;HAVE_PTHREAD_H"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="pthreadVC.lib"
AdditionalLibraryDirectories="..\..\..\pd\bin;&quot;$(ProgramFiles)\pd\bin&quot;"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="puredata"
InheritedPropertySheets=".\w32.vsprops"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;..\..\..\pure-data\pd\src&quot;;..\..\..\pd\src;&quot;$(ProjectDir)\..\..\..\..\pd\src&quot;;&quot;$(ProgramFiles)\pd\src&quot;"
PreprocessorDefinitions="MSW"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="pd.lib"
AdditionalLibraryDirectories="&quot;..\..\..\pure-data\pd\bin&quot;;..\..\..\pd\bin;&quot;$(ProjectDir)\..\..\..\..\pd\bin&quot;;&quot;$(ProgramFiles)\pd\bin&quot;"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,40 @@
set ZIP=%ProgramFiles%\7-Zip\7z.exe
rem set ZIP=echo
set GEMVERSION=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
set GEMDIR=gem-%GEMVERSION%
set GEMARC=gem-CVS%GEMVERSION%-W32-i686
mkdir %GEMDIR%
xcopy Gem.dll %GEMDIR%\
copy README_W32.txt.template %GEMDIR%\README_W32.txt
%ZIP% a %GEMARC%-bin.zip %GEMDIR%
read
cd ..\..\
xcopy /E /I abstractions build\win-vs2003\%GEMDIR%\abstractions
xcopy /E /I help build\win-vs2003\%GEMDIR%\help
xcopy /E /I examples build\win-vs2003\%GEMDIR%\examples
xcopy /E /I doc build\win-vs2003\%GEMDIR%\doc
xcopy /E /I manual build\win-vs2003\%GEMDIR%\manual
xcopy /E /I tests build\win-vs2003\%GEMDIR%\tests
copy ChangeLog build\win-vs2003\%GEMDIR%
copy GEM_INSTALL.bat build\win-vs2003\%GEMDIR%
copy GEM.LICENSE.TERMS build\win-vs2003\%GEMDIR%
copy GEM.README build\win-vs2003\%GEMDIR%
copy GnuGPL.LICENSE build\win-vs2003\%GEMDIR%
cd build\win-vs2003
%ZIP% a %GEMARC%-bin-doc.zip %GEMDIR%

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="w32"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;_WINDOWS;__WIN32__;NT;WIN32_LEAN_AND_MEAN;_LANGUAGE_C_PLUS_PLUS"
StringPooling="true"
DefaultCharIsUnsigned="false"
/>
<Tool
Name="VCLinkerTool"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
</VisualStudioPropertySheet>

View file

@ -0,0 +1,16 @@
this is the project-file to build Gem using Microsoft's VisualStudio 6
DEPRECATION WARNING
===================
this MSVC-Project is deprecated and has not been used for a long time.
do not expect it to work out of the box.
these files have been moved here in an attempt to cleanup the project
originally these files have been located in <Gem>/src/ instead of
<Gem>/build/win-vs6, so all the paths in the project-file might be wrong
either fix the project-files or copy them over to the src/ directory
i don't do it, as i don't have a VC6 anymore (it is outdated anyhow)

4545
Gem/build/win-vs6/gem.dsp Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
###############################################################################
Project: "gem"=.\gem.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View file

@ -0,0 +1,16 @@
this is the project-file to build Gem using Microsoft's VisualStudio 7
DEPRECATION WARNING
===================
this MSVC-Project is deprecated and has not been used for a long time.
do not expect it to work out of the box.
these files have been moved here in an attempt to cleanup the project
originally these files have been located in <Gem>/src/ instead of
<Gem>/build/win-vs7, so all the paths in the project-file might be wrong
either fix the project-files or copy them over to the src/ directory
i don't do it, as i don't have a VC7 anymore (it is outdated anyhow)

3237
Gem/build/win-vs7/gem.vcproj Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 7.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gem", "gem.vcproj", "{E6CFDE67-C343-44D0-8584-5D82E396D594}"
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
ConfigName.0 = Debug
ConfigName.1 = Release
EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Debug.ActiveCfg = Debug|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Debug.Build.0 = Debug|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release.ActiveCfg = Release|Win32
{E6CFDE67-C343-44D0-8584-5D82E396D594}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

720
Gem/configure.ac Normal file
View file

@ -0,0 +1,720 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.60)
AC_INIT([Gem],[0.93],[zmoelnig@iem.at],[Gem],[http://gem.iem.at])
AM_INIT_AUTOMAKE([1.10 foreign])
#
AC_CONFIG_FILES([Makefile abstractions/Makefile])
# documentation
AC_CONFIG_FILES([help/Makefile doc/Makefile examples/Makefile])
# src
AC_CONFIG_FILES([src/Makefile src/Gem/Makefile src/Utils/Makefile])
AC_CONFIG_FILES([src/RTE/Makefile src/Base/Makefile src/plugins/Makefile ])
AC_CONFIG_FILES([src/Output/Makefile ])
AC_CONFIG_FILES([src/deprecated/Makefile ])
## plugins that use this autoconf instance for configuration
AC_CONFIG_FILES([plugins/Makefile])
AC_CONFIG_FILES([plugins/imageQT/Makefile])
AC_CONFIG_FILES([plugins/imageMAGICK/Makefile])
AC_CONFIG_FILES([plugins/imageTIFF/Makefile])
AC_CONFIG_FILES([plugins/imageJPEG/Makefile])
AC_CONFIG_FILES([plugins/imageSGI/Makefile])
AC_CONFIG_FILES([plugins/filmAVI/Makefile])
AC_CONFIG_FILES([plugins/filmAVIPLAY/Makefile])
AC_CONFIG_FILES([plugins/filmDS/Makefile])
AC_CONFIG_FILES([plugins/filmDarwin/Makefile])
AC_CONFIG_FILES([plugins/filmGMERLIN/Makefile])
AC_CONFIG_FILES([plugins/filmMPEG1/Makefile])
AC_CONFIG_FILES([plugins/filmMPEG3/Makefile])
AC_CONFIG_FILES([plugins/filmQT/Makefile])
AC_CONFIG_FILES([plugins/filmQT4L/Makefile])
AC_CONFIG_FILES([plugins/filmTEST/Makefile])
AC_CONFIG_FILES([plugins/modelOBJ/Makefile])
AC_CONFIG_FILES([plugins/modelASSIMP2/Makefile])
AC_CONFIG_FILES([plugins/recordQT/Makefile])
AC_CONFIG_FILES([plugins/recordQT4L/Makefile])
AC_CONFIG_FILES([plugins/recordV4L/Makefile])
AC_CONFIG_FILES([plugins/recordV4L2/Makefile])
AC_CONFIG_FILES([plugins/videoDC1394/Makefile])
AC_CONFIG_FILES([plugins/videoDS/Makefile])
AC_CONFIG_FILES([plugins/videoDV4L/Makefile])
AC_CONFIG_FILES([plugins/videoDarwin/Makefile])
AC_CONFIG_FILES([plugins/videoSGI/Makefile])
AC_CONFIG_FILES([plugins/videoTEST/Makefile])
AC_CONFIG_FILES([plugins/videoUNICAP/Makefile])
AC_CONFIG_FILES([plugins/videoV4L/Makefile])
AC_CONFIG_FILES([plugins/videoV4L2/Makefile])
AC_CONFIG_FILES([plugins/videoVFW/Makefile])
AC_CONFIG_FILES([plugins/videoVLC/Makefile])
## extra holds additional objects/libraries
# some of them have their own build system
#AC_CONFIG_FILES([extra/Makefile])
# some do not
AC_CONFIG_FILES([extra/pix2jpg/Makefile])
# other stuff
AC_CONFIG_FILES([build/Makefile Gem.pc Gem-meta.pd])
##########################
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([src/config.h])
AC_CONFIG_SRCDIR([src/Base/GemBase.h])
AC_CONFIG_SUBDIRS([extra])
if test -d "$srcdir/plugins/videoAVT"; then
AC_CONFIG_SUBDIRS([plugins/videoAVT])
fi
if test -d "$srcdir/plugins/videoHALCON"; then
AC_CONFIG_SUBDIRS([plugins/videoHALCON])
fi
if test -d "$srcdir/plugins/videoPYLON"; then
AC_CONFIG_SUBDIRS([plugins/videoPYLON])
fi
AC_LANG(C++)
ARCH=$(uname -m)
KERN=$(uname -s)
AC_SUBST(CXXCPP)
AC_SUBST(CXX)
AC_SUBST(GEM_TARGETS)
AC_SUBST(EXT)
AC_SUBST(LIBS)
AC_SUBST(CXXFLAGS)
AC_SUBST(CPPFLAGS)
AC_SUBST(DEFS)
AC_SUBST(DEFINES)
AC_SUBST(X_CFLAGS)
AC_SUBST(X_PRE_LIBS)
AC_SUBST(X_LIBS)
AC_SUBST(X_EXTRA_LIBS)
AC_SUBST(PKG_CFLAGS)
AC_SUBST(PKG_LIBS)
AC_SUBST(prefix)
# Checks for programs.
AC_PROG_CXX
m4_ifdef([AC_PROG_OBJC], [AC_PROG_OBJC])
m4_ifdef([AC_PROG_OBJCXX], [AC_PROG_OBJCXX])
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_SED
AC_ARG_WITH([ALL],
AS_HELP_STRING([--without-ALL],[en/disable ALL libraries by default]))
GEM_CHECK_RTE()
AC_SUBST(GEM_CPPFLAGS)
AC_SUBST(GEM_CFLAGS)
AC_SUBST(GEM_CXXFLAGS)
AC_SUBST(GEM_LIBS)
AC_SUBST(GEM_EXTERNAL_CPPFLAGS)
AC_SUBST(GEM_EXTERNAL_CFLAGS)
AC_SUBST(GEM_EXTERNAL_LIBS)
GEM_CPPFLAGS="-DGEM_INTERNAL"
if test "x$have_pddll" = "xyes"; then
GEM_EXTERNAL_LIBS="${GEM_EXTERNAL_LIBS}${GEM_EXTERNAL_LIBS:+ }-Xlinker -l:Gem.dll"
fi
GEM_ARG_ENABLE([mmx], [MMX-support])
dnl disabled SSE2 by default, since there are still few chips around that fully support it
dnl unlike MMX or SSE
GEM_ARG_DISABLE([sse2], [SSE2-support])
GEM_ARG_ENABLE([altivec], [AltiVec-support])
GEM_ARG_DISABLE([powerpc], [PowerPC specific optimizations])
GEM_ARG_ENABLE([pascalstrings], [containing '\p'])
GEM_ARG_ENABLE([registerstruct], [use \"-freg-struct-return\" (needed for FreeFrame)], [force])
GEM_TARGET(Controls)
GEM_TARGET(Geos)
GEM_TARGET(Manips)
GEM_TARGET(Nongeos)
GEM_TARGET(Particles)
GEM_TARGET(Pixes)
GEM_TARGET(openGL)
GEM_TARGET_DISABLED(Vertex)
# Checks for libraries.
AC_CHECK_LIB([m],[sin])
AC_CHECK_LIB([z],[main])
AC_CHECK_LIB([dl],[dlopen])
# w32 compatibility library
AC_CHECK_LIB([OLDNAMES], [close])
AC_CHECK_LIB([coldname], [close])
# Standard C++ Libray:
AC_CHECK_LIB([libcpmt], [main])
# C runtime library:
AC_CHECK_LIB([msvcrt], [fclose])
# Standard C++ Libray:
AC_CHECK_LIB([msvcprt], [main])
# Winsock Library
AC_CHECK_LIB([ws2_32], [main])
AC_CHECK_LIB([wsock32], [main])
# w32 window creating
AC_CHECK_LIB([gdi32], [main])
## on OSX X shouldn't be used by default as there are other ways
## however, if people really want it ("--with-x") they should get it
if test "x$KERN" = "xDarwin"; then
if test "x$with_x" = "x"; then
with_x="no"
fi
fi
AC_PATH_X
AC_PATH_XTRA
if test "x$with_x" != "xno"; then
# AC_CHECK_LIB([X11],[main])
# AC_CHECK_LIB([Xext],[main])
AC_CHECK_LIB([Xxf86vm],[XF86VidModeGetAllModeLines])
fi
IEM_CHECK_GL
IEM_CHECK_GLU
IEM_CHECK_GLUT
IEM_CHECK_GLX
IEM_CHECK_AGL
## use system's libGLEW
GEM_CHECK_LIB([glew], [GLEW], [glewInit],,,,[OpenGL Extension Wrangler library], [no])
if test "x${have_glew}" != "xyes"; then
GEM_CPPFLAGS+=" -DGLEW_BUILD"
fi
GEM_CHECK_LIB([sdl], [SDL], [SDL_Quit],,,,[SDL windowing], [yes])
## http://wiki.fifengine.de/Segfault_in_cxa_allocate_exception#Workaround_.231
### "-lstdc++" really has to be added before e.g. "-lGL" in order to avoid
### triggering the bug
### however, libtool is way to clever and eliminates duplicate LIBS entries.
### since "-lstdc++" is usually found in the postdeps, this would remove the
### entry found in LIBS; so we add it to the predeps_CXX (only)
stdcxx_LIBS=$LIBS
AC_CHECK_LIB([stdc++],[main],[predeps_CXX="$predeps_CXX -lstdc++"])
LIBS=$stdcxx_LIBS
dnl some checks for osX
GEM_CHECK_FRAMEWORK([Cocoa],
[have_cocoa_framework="yes"],
[have_cocoa_framework="no"])
GEM_CHECK_FRAMEWORK([Carbon],
[have_carbon_framework="yes"],
[have_carbon_framework="no"])
GEM_CHECK_FRAMEWORK([QuickTime],
[have_quicktime_framework="yes"],
[have_quicktime_framework="no"])
AM_CONDITIONAL(VIDEODARWIN, test "x${have_carbon_framework}" = "xyes" && test "x${have_quicktime_framework}" = "xyes")
#fallback to imagemagick if people are too lazy to type ImageMagick
if test "x$with_ImageMagick" = "x"; then
with_ImageMagick="$with_imagemagick"
fi
if test "x$with_MagickCore" = "x"; then
with_MagickCore="$with_ImageMagick"
fi
GEM_CHECK_LIB([ImageMagick++],
[Magick++],
[main],
AC_DEFINE([HAVE_LIBMAGICKPLUSPLUS], [1], [image loading/saving with ImageMagick++]),
,,[image loader])
GEM_CHECK_LIB([MagickCore],
[Magick],
[main],
AC_DEFINE([HAVE_LIBMAGICK], [1], [image loading/saving with ImageMagick (Core)]),
,,[image loader])
#if test "x${have_ImageMagick}" = "xyes"
#then
# with_tiff=no
# with_jpeg=no
#fi
GEM_CHECK_LIB([tiff], [tiff], [TIFFOpen],,,,[image loader])
GEM_CHECK_LIB([jpeg], [jpeg], [jpeg_read_header],,,,[image loader])
IEM_CHECK_FTGL()
GEM_CHECK_LIB([fribidi], [fribidi],[fribidi_log2vis],,,, [bidrectional text rendering using FriBidi])
## film en/decoders
GEM_CHECK_LIB([avifile], [aviplay], [CreateIAviReadFile],,,,[movie loader])
GEM_CHECK_LIB([gmerlin_avdec], [gmerlin_avdec], [gavl_start],,,,[movie loader])
GEM_CHECK_LIB([mpeg], [mpeg], [OpenMPEG],,,,[movie loader])
GEM_CHECK_LIB([libmpeg3], [mpeg3], [mpeg3_check_sig],,,,[movie loader])
GEM_CHECK_LIB([libquicktime], [quicktime], [quicktime_init],,,,[movie loader])
GEM_CHECK_LIB([lqt], [quicktime], [quicktime_init],,,,[movie loader])
# special function in libquicktime
old_cflags=${CFLAGS}
old_ldflags=${LDFLAGS}
CFLAGS="${CFLAGS} $GEM_LIB_LIBQUICKTIME_CFLAGS $GEM_LIB_LQT_CFLAGS"
LDFLAGS="${LDFLAGS} $GEM_LIB_LIBQUICKTIME_LIBS $GEM_LIB_LQT_LIBS"
AC_CHECK_FUNCS([lqt_seek_video])
AC_CHECK_FUNCS([lqt_open_write])
CFLAGS=${old_cflags}
LDFLAGS=${old_ldflags}
#video
GEM_CHECK_LIB([libdc1394-2], [dc1394], [main],,,, [video input])
GEM_CHECK_LIB([libdv],[dv], [main],,,, [video input])
GEM_CHECK_LIB([libraw1394], [raw1394], [main],,,, [video input])
GEM_CHECK_LIB([libiec61883], [iec61883], [main],,,, [video input])
AC_CHECK_HEADERS([vl/vl.h])
GEM_ARG_WITH([unicap], [video input], [force])
GEM_CHECK_LIB([libunicap], [unicap], [unicap_check_version],,,, [video input])
if test "x$have_unicap" = "xyes"; then
AC_CHECK_HEADER([unicap/unicap.h],
[
AC_DEFINE([HAVE_UNICAP], [], [video capturing using UNICAP])
have_unicap="yes"
],[have_unicap="no"])
fi
if test "x$have_libunicap"; then
have_unicap="yes"
fi
AM_CONDITIONAL([HAVE_LIB_UNICAP], [test "x${have_unicap}" = "xyes"])
have_v4l="no"
GEM_ARG_WITH([v4l], [video input], [force])
AC_CHECK_HEADERS([linux/videodev.h], have_v4l="yes")
GEM_CHECK_LIB([libv4l1], [v4l1], [v4l1_open],,,, [video output])
if test "x$have_libv4l1" = "xyes"; then
have_v4l="yes (libv4l)"
fi
if test "x$with_v4l" = "xno"; then
have_v4l="no"
fi
AM_CONDITIONAL([HAVE_V4L], [test "x${have_v4l}" != "xno"])
have_v4l2="no"
GEM_ARG_WITH([v4l2], [video input], [force])
AC_CHECK_HEADERS([linux/videodev2.h])
GEM_CHECK_LIB([libv4l2], [v4l2], [v4l2_open],,,, [video input])
# AC_DEFINE([HAVE_VIDEO4LINUX2], [], [video capturing using v4l2])
if test "x$have_libv4l2" = "xyes"; then
have_v4l2="yes (libv4l)"
fi
if test "x$with_v4l2" = "xno"; then
have_v4l2="no"
fi
AM_CONDITIONAL([HAVE_V4L2], [test "x${have_v4l2}" != "xno"])
dnl GEM_CHECK_LIB([vfw32], [vfw32], [AVIFileInit],,,, [video input])
GEM_CHECK_LIB([vfw32], [vfw32], [main],,,, [video input])
# is this needed?
dnl GEM_CHECK_LIB([avicap32],[avicap32],[main],,,,[video input])
# VLC
GEM_CHECK_LIB([libvlc], [vlc], [libvlc_video_set_callbacks],,,, [video input])
# assimp
GEM_CHECK_LIB([assimp], [assimp], [aiDetachAllLogStreams],,,, [3D model loading])
AC_ARG_WITH([default-font],
AS_HELP_STRING([--with-default-font=vera.ttf],[specify the default font for text-rendering])
)
if test "x$with_default_font" != "x" && \
test "x$with_default_font" != "xno" &&
test "x$with_default_font" != "xyes"; then
AC_DEFINE_UNQUOTED([GEM_DEFAULT_FONT], "${with_default_font}", [default font for text rendering])
AC_MSG_RESULT([using "${with_default_font}" as default font])
fi
# threading
GEM_CHECK_THREADS
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h float.h memory.h stddef.h stdlib.h string.h strings.h sys/ioctl.h sys/time.h termios.h unistd.h])
AC_CHECK_HEADERS([wordexp.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_CHECK_SIZEOF([unsigned int])
AC_CHECK_SIZEOF([void *])
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_FORK
AC_FUNC_MALLOC
AC_FUNC_MMAP
AC_CHECK_FUNCS([bzero floor gettimeofday memset munmap pow sqrt strchr strdup strrchr strstr strnlen])
# enabling recording with quicktime4linux
gem_tmp_lqt_libs="$LIBS"
LIBS="$LIBS $PKG_LIBS"
AC_MSG_CHECKING(for lqt_open_write)
AC_LINK_IFELSE([AC_LANG_CALL([], [lqt_open_write])],
AC_DEFINE([HAVE_LQT_OPEN_WRITE], [], [film recording using quicktime4linux])
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
LIBS="$gem_tmp_lqt_libs"
### make-depend flags
if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
AC_SUBST(MAKEDEP_FLAGS, "-MM")
else
AC_SUBST(MAKEDEP_FLAGS, "-M")
fi
# using pix_videoOS rather than pix_video
AC_ARG_WITH([video], AS_HELP_STRING([--with-video=plugins|Darwin|DS|NT],[use plugins for video capture or OS-specific "pix_video"]))
## on OSX we still default to the olde way
#if test "x$KERN" = "xDarwin"; then
# if test "x$with_film" = "x"; then
# with_film="Darwin"
# fi
# if test "x$with_video" = "x"; then
# with_video="Darwin"
# fi
#fi
if test "x$with_video" = "x"; then
with_video="plugins"
elif test "x$with_video" = "xyes"; then
with_video="plugins"
elif test "x$with_video" = "xno"; then
# hmm, what to do here?
AC_MSG_RESULT([ignoring request for no video...using plugins])
with_video="plugins"
elif test "x$with_video" = "xplugins"; then
:
else
AC_DEFINE_UNQUOTED([GEM_VIDEOBACKEND], [GEM_VIDEOBACKEND_$with_video], [backend for deprecated video-capture objects])
AC_MSG_RESULT([using deprecated video-loader $with_video])
fi
# using pix_filmOS rather than pix_film
AC_ARG_WITH([film], AS_HELP_STRING([--with-film=plugins|Darwin],[use plugins for video decoding or OS-specific "pix_film"]))
if test "x$with_film" = "x"; then
with_film="plugins"
elif test "x$with_film" = "xyes"; then
with_film="plugins"
elif test "x$with_film" = "xno"; then
# hmm, what to do here?
AC_MSG_RESULT([ignoring request for no film...using plugins])
with_film="plugins"
elif test "x$with_film" = "xplugins"; then
:
else
AC_DEFINE_UNQUOTED([GEM_FILMBACKEND], [GEM_FILMBACKEND_$with_film], [backend for deprecated film-decoding objects])
AC_MSG_RESULT([using deprecated film-loader $with_film])
fi
# enabling "-freg-struct-return" (for FreeFrame)
# i wonder could we make this the default ???
if test "x$enable_registerstruct" != "xno"; then
GEM_CHECK_CXXFLAGS([-freg-struct-return],
[enable_registerstruct="yes"], [enable_registerstruct="no"])
if test "x$enable_registerstruct" = "xyes"; then
AC_MSG_RESULT([enabling "register struct return"
allows to make use of FreeFrame-effects without recompiling them
might break things, if you are using several different compilers])
fi
fi
if test "x$WINDOWS" = "xyes"; then
GEM_CHECK_CXXFLAGS([-mms-bitfields], [GEM_EXTERNAL_CFLAGS+="-mms-bitfields"])
fi
if test "x$KERN" = "xDarwin"; then
GEM_CHECK_CXXFLAGS([-Os],,GEM_CHECK_CXXFLAGS([-O3]))
# shall we built FAT-binaries ?
## this needs more thinking! running just the preprocessor does not like these flags
## for now we could live with just adding these manually with GEM_EXTRA_CXXFLAGS and GEM_EXTRA_LDFLAGS
dnl GEM_CHECK_CXXFLAGS([-arch i386 -arch ppc], GEM_CHECK_LDFLAGS([-arch i386 -arch ppc], [EXT="d_fat"]))
else
GEM_CHECK_CXXFLAGS([-O3])
fi
dnl this is only useful for debugging and might break things on older compilers
dnl GEM_CHECK_CXXFLAGS([-fno-builtin])
GEM_CHECK_CXXFLAGS([-falign-loops -falign-functions -falign-jumps -funroll-loops],,
GEM_CHECK_CXXFLAGS([-falign-loops -funroll-loops])
)
GEM_CHECK_CXXFLAGS([-ffast-math])
## SIMD support
# naive approach is to just check, which SIMD-flags the compiler takes
# and use these
# drawback: while the compiler might support compilation for a specific
# SIMD instruction set, the hardware you are compiling for might not
# proposal:
# by default the configure-task should only enable flags that are known
# to work on the machine we are compiling.
# the user can override this by explicitely stating that they want the
# flag to be enabled (if possible)
# e.g. "./configure --enable-sse2" on a pentium-3 should
# produce a binary that will only run on machines with SSE2 registers
# whereas "./configure" will make a binary with only MMX enabled.
#
# but how do we test for the CPU-caps? on linux we could just read /proc/cpuinfo
# but on other OSs?
# we make it a bit complicated in order to allow people to enforce the
# compilation with a specific SIMD-instruction set, even on platforms
# that don't support it
# why? think cross-compilation
GEM_CHECK_FAT(GEM_ARCH)
AC_MSG_RESULT($GEM_ARCH)
AC_SUBST(GEM_ARCH_CXXFLAGS)
AC_SUBST(GEM_ARCH_LDFLAGS)
if test "x${ARCH}" = "xi386" || test "x${ARCH}" = "xi686" || test "x${ARCH}" = "xx86_64"; then
if test "x$enable_altivec" != "xyes"; then enable_altivec="no"; fi
fi
if test "x${ARCH}" = "xPower Macintosh" || test "x${ARCH}" = "xpowerpc"; then
if test "x$enable_mmx" != "xyes"; then enable_mmx="no" ; fi
if test "x$enable_sse2" != "xyes"; then enable_sse2="no"; fi
fi
if test "x$enable_mmx" != "xno"; then
GEM_CHECK_CXXFLAGS([-mmmx])
fi
if test "x$enable_sse2" = "xyes"; then
GEM_CHECK_CXXFLAGS([-msse2])
fi
if test "x$enable_altivec" != "xno"; then
GEM_CHECK_CXXFLAGS([-faltivec])
fi
if test "x$enable_powerpc" = "xyes"; then
GEM_CHECK_CXXFLAGS([-mpowerpc-gfxopt])
fi
# on os-x we might come across "pascal strings" containing "\p"...
if test "x$enable_pascalstrings" != "xno"; then
GEM_CHECK_CXXFLAGS([-fpascal-strings])
fi
AC_ARG_WITH([defaultwindow],
AS_HELP_STRING([--with-defaultwindow=<>],[specify default window backend (default: auto)]))
case "$with_defaultwindow" in
gem*)
GEM_DEFAULT_WINDOW="$with_defaultwindow"
;;
*)
GEM_DEFAULT_WINDOW=""
;;
esac
if test "x${GEM_DEFAULT_WINDOW}" = "x"; then
if test "x$WINDOWS" = "xyes"; then
GEM_DEFAULT_WINDOW="gemw32window"
elif test "x$DARWIN" = "xyes"; then
#GEM_DEFAULT_WINDOW="gemmacwindow"
GEM_DEFAULT_WINDOW="gemcocoawindow"
elif test "x$no_glx" != "xyes"; then
GEM_DEFAULT_WINDOW="gemglxwindow"
elif test "x$no_glut" != "xyes"; then
GEM_DEFAULT_WINDOW="gemglutwindow"
fi
fi
AC_SUBST(GEM_DEFAULT_WINDOW)
AC_CONFIG_FILES([abstractions/gemdefaultwindow.pd])
## dummy conditionals that are always "true" (ENABLED) or "false" (DISABLED)
enabled="yes"
AM_CONDITIONAL([ENABLED], test "x${enabled}" = "xyes")
AM_CONDITIONAL([DISABLED], test "x${enabled}" = "xno")
# damned: gcc on osX seems to report that it supports "-ip -ipo_obj" although they are only icc flags
dnl GEM_CHECK_CXXFLAGS([-ip -ipo_obj])
dnl we want dos2unix...
dnl AC_CHECK_TOOL([DOS2UNIX], [dos2unix], [true])
AC_OUTPUT
dnl GEM compilation options:
dnl =======================================
dnl
dnl give some feedback about the configuration
if test "x$have_ftgl" = "xyes"; then
have_font=FTGL
fi
if test "x$have_ImageMagick" = "xyes"; then
have_ImageMagick="yes (Magick++)"
else
if test "x$have_MagickCore" = "xyes"; then
have_ImageMagick="yes (MagickCore)"
fi
fi
if test "x$have_quicktime_framework" = "x"; then have_quicktime_framework="no"; fi
if test "x$have_quicktime_framework" = "xyes"; then
have_libquicktime="yes (framework)"
fi
have_ieee1394=""
if test "x$have_libdc1394_2" = "xyes"; then
have_ieee1394="$have_ieee1394 libdc1394"
fi
if test "x$have_ieee1394" = "x"; then
have_ieee1394="no";
else
have_ieee1394="yes (${have_ieee1394# })"
fi
if test "x${have_v4l}" = "x"; then have_v4l="no"; fi
if test "x${have_v4l2}" = "x"; then have_v4l2="no"; fi
if test "x${have_ieee1394}" = "x"; then have_ieee1394="no"; fi
if test "x${have_libdv}" = "x"; then have_libdv="no"; fi
if test "x${have_unicap}" = "x"; then have_unicap="no"; fi
if test "x${have_vfw32}" = "x"; then have_vfw32="no"; fi
# TODO: have_ds
if test "x$with_film" = "xplugins"; then
use_film_plugins="yes"
else
use_film_plugins="no (using $with_film backend)"
fi
if test "x$with_video" = "xplugins"; then
use_video_plugins="yes"
else
use_video_plugins="no (using $with_video backend)"
fi
AC_MSG_RESULT([
Result:
Target : Gem.${EXT}
Objects : ${GEM_TARGETS}
default window : ${GEM_DEFAULT_WINDOW}
Configuration:
Compiler : ${CXX}
CXXFLAGS : ${CXXFLAGS} ${X_CFLAGS}
: ${PKG_CFLAGS}
DEFINES : ${DEFINES}
LIBS : ${LIBS}
: ${PKG_LIBS}
LDFLAGS : ${LDFLAGS}
: ${X_LIBS}
Install path : ${prefix}
RTE (${GEM_RTE}):
external-extension : ${GEM_RTE_EXTENSION}
CFLAGS : ${GEM_RTE_CFLAGS}
LIBS : ${GEM_RTE_LIBS}
used optional libraries:
font-rendering : ${have_font}
default font : ${GEM_DEFAULT_FONT}
image-support
use ImageMagick : ${have_ImageMagick}
use QuickTime : ${have_quicktime_framework}
use TIFF : ${have_tiff}
use JPEG : ${have_jpeg}
moviefile-support
use PLUGINS : ${use_film_plugins}
use mpeg : ${have_mpeg}
use mpeg-3 : ${have_libmpeg3}
use QuickTime : ${have_libquicktime}
use aviplay : ${have_avifile}
use gmerlin : ${have_gmerlin_avdec}
capture-support
use PLUGINS : ${use_video_plugins}
use v4l : ${have_v4l}
use v4l2 : ${have_v4l2}
use ieee1394 : ${have_ieee1394}
use DV : ${have_libdv}
use Unicap : ${have_unicap}
use Video-for-WinDOS : ${have_vfw32}
use QuickTime : ${have_quicktime_framework}
])
if test "x$have_pd" = "xno"; then
AC_MSG_ERROR([Pd (header) is mandatory and seems to be missing!])
fi
if test "x$no_gl" = "xyes"; then
AC_MSG_ERROR([GL (headers) not found! you need openGL!!!])
fi
if test "x$no_glu" = "xyes" && test "x$no_agl" = "xyes"; then
AC_MSG_ERROR([GLU (headers) not found! you need openGL Utility Library!!!])
fi
AC_MSG_RESULT([Now run make ...])

145
Gem/doc/CodingStyle.txt Normal file
View file

@ -0,0 +1,145 @@
Coding Guidelines for Gem
=========================
2011, IOhannes m zmölnig
in no special order...
directory structure
-------------------
src/Gem
Gem core architecture classes
src/Utils
Utilitiy code that can be re-used in several different contexts
src/RTE
Pd-specific code (RTE=Real Time Environment)
(in the far future i would like to have all Pd-specific code wrapped in
here)
src/plugins
plugin infrastructure and (pure virtual) baseclasses for the various
plugins
src/Base
Base classes for objectclasses
src/deprecated
deprecated headers for backward compatibility
src/Controls/
objectclasses: CONTROL
src/Manips/
objectclasses: MANIPulatorS
src/Geos/
objectclasses: GEometric ObjectS
src/Nongeos/
objectclasses: positionable Objects that are not Geos
src/openGL/
objectclasses: OPENGL wrapper objects
src/Particles/
objectclasses: PARTICLE engine
src/Pixes/
objectclasses: PIXEl proceSsing
src/Output/
objectclasses: window handling
plugins/*/
plugin implementations for various backends
extra/*/
additional objectclasses
directories containing objectclasses, should not hold auxiliary files!
these should go into src/Utils/ (if they are of general interest) or the code
should be embedded into the objectclass code.
a noteable exception is the extra/*/ folder
file structure
--------------
C++ files are suffixed ".cpp".
they are accompanied by a header file ".h" containing the public interface.
there is a file for each objectclass named like the objectclass. e.g.
> src/Manips/ortho.cpp
contains the code for the [ortho] objectclass.
private/protected/public
------------------------
ctor/dtor should be public
methods should be protected/public
members should be protected
private members should be hidden using a PIMPL idiom
callbacks
---------
message callbacks from the RTE should be implemented using the CPPEXTERN_MSG*
macros defined in src/RTE/MessageCallbacks.h
this removes the need for static callbacks in the header-files
C-style vs C++-style
--------------------
while Pd is written in C, Gem is written in C++;
please try to use C++ idioms whenever possible.
use STL instead of inventing your own data containers!
esp. use "std::string" instead of "char*" whenever possible
the Gem code base is full of C-idioms and types; this is mainly because i
started as a C-programmer and only gradually learned using C++; don't repeat my
follies :-)
variable naming
---------------
member variables are usually prefixed with "m_"
static variables are usually prefixed with "s_"
initialization
--------------
initialize all member variables in the constructor(s).
use "member initialization lists" when possible.
e.g. use
> foo::foo(void) : m_x(0), m_y(0) {}
rather than
> foo::foo(void) { m_x=0; m_y=0; }
import/export
-------------
all functions/classes that should be visible from outside must be exported using
the GEM_EXTERN macro.
all objectclasses are exported.
all utility classes are exported.
dependencies
------------
the dependencies of Gem should be kept at a minimum (ideally only openGL)
objectclasses that use special libraries should go into extra/
if you want to add functionality to Gem that is (or can be) implemented by a
number of different backends (libraries), this should be done via an abstract
interface and plugins, thus moving the binary dependency outside of Gem.
Indentation
-----------
TODO
git commits
-----------
try to avoid committing pd-patches and C++ code within the same
commit. conflicts in C++-code can usually easily be resolved, whereas
conflicts in Pd-patches are usually impossible to resolve (but for the
most trivial cases)
git branching
-------------
try to avoid forking from branches other than master.
esp. avoid branches on top of branches.
before committing a pull rqeuest, make sure that your branch applies clean to
current master.

BIN
Gem/doc/GemPrimer.pdf Normal file

Binary file not shown.

47
Gem/doc/Makefile.am Normal file
View file

@ -0,0 +1,47 @@
AUTOMAKE_OPTIONS = foreign
gemdocdir=$(pkglibdir)
nobase_dist_gemdoc_DATA = \
cMatrix.html \
gem.known_bugs.txt \
GemPrimer.pdf \
gem.release_notes.txt \
gem.todo.txt \
manual/add.jpg \
manual/addResult.jpg \
manual/Advanced.html \
manual/basicCube.jpg \
manual/BasicObj.html \
manual/counter.jpg \
manual/GemFaq.html \
manual/gemwin.jpg \
manual/GemWPd.html \
manual/Gloss.html \
manual/Images.html \
manual/index.html \
manual/Input.html \
manual/Intro.html \
manual/invertFrac.jpg \
manual/invert.jpg \
manual/Lighting.html \
manual/light.jpg \
manual/ListObjects.html \
manual/mask.jpg \
manual/maskResult.jpg \
manual/normalFrac.jpg \
manual/Particles.html \
manual/Pixes.html \
manual/pixImage.jpg \
manual/redSquare.jpg \
manual/sphere15.jpg \
manual/sphere5.jpg \
manual/Texture.html \
manual/texture.jpg \
manual/transXYZ.jpg \
manual/tribar.gif \
manual/tripleLine.jpg \
manual/tripleRand.jpg \
manual/Utility.html \
manual/world_light.jpg \
manual/WriteCode.html

270
Gem/doc/cMatrix.html Normal file
View file

@ -0,0 +1,270 @@
<html>
<head>
<title>Matrix Operations for Image Processing</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<!--no_print--><br><center><table width=564><tr><td>
<h2>Matrix Operations for Image Processing</h2>
<!--no_print--><h3>Paul Haeberli</h3>
<h3>Nov 1993</h3>
<img src=../tribar.gif alt="Horiz Bar" width=561 height=3>
<h3>Introduction</h3>
<p>
Four by four matrices are commonly used to transform geometry for 3D
rendering. These matrices may also be used to transform RGB colors, to scale
RGB colors, and to control hue, saturation and contrast. The most important
advantage of using matrices is that any number of color transformations
can be composed using standard matrix multiplication.
<p>
Please note that for these operations to be correct, we really must operate
on linear brightness values. If the input image is in a non-linear brightness
space RGB colors must be transformed into a linear space before these
matrix operations are used.
<h3>Color Transformation</h3>
RGB colors are transformed by a four by four matrix as shown here:
<pre>
xformrgb(mat,r,g,b,tr,tg,tb)
float mat[4][4];
float r,g,b;
float *tr,*tg,*tb;
{
*tr = r*mat[0][0] + g*mat[1][0] +
b*mat[2][0] + mat[3][0];
*tg = r*mat[0][1] + g*mat[1][1] +
b*mat[2][1] + mat[3][1];
*tb = r*mat[0][2] + g*mat[1][2] +
b*mat[2][2] + mat[3][2];
}
</pre>
<h3>The Identity</h3>
This is the identity matrix:
<pre>
float mat[4][4] = {
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Transforming colors by the identity matrix will leave them unchanged.
<h3>Changing Brightness</h3>
To scale RGB colors a matrix like this is used:
<pre>
float mat[4][4] = {
rscale, 0.0, 0.0, 0.0,
0.0, gscale, 0.0, 0.0,
0.0, 0.0, bscale, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where rscale, gscale, and bscale specify how much to scale the r, g, and b
components of colors. This can be used to alter the color balance of an image.
<p>
In effect, this calculates:
<pre>
tr = r*rscale;
tg = g*gscale;
tb = b*bscale;
</pre>
<h3>Modifying Saturation</h3>
<h3>Converting to Luminance</h3>
To convert a color image into a black and white image, this matrix is used:
<pre>
float mat[4][4] = {
rwgt, rwgt, rwgt, 0.0,
gwgt, gwgt, gwgt, 0.0,
bwgt, bwgt, bwgt, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This is the
luminance vector. Notice here that we do not use the standard NTSC weights
of 0.299, 0.587, and 0.114. The NTSC weights are only applicable to RGB
colors in a gamma 2.2 color space. For linear RGB colors the values above
are better.
<p>
In effect, this calculates:
<pre>
tr = r*rwgt + g*gwgt + b*bwgt;
tg = r*rwgt + g*gwgt + b*bwgt;
tb = r*rwgt + g*gwgt + b*bwgt;
</pre>
<h3>Modifying Saturation</h3>
To saturate RGB colors, this matrix is used:
<pre>
float mat[4][4] = {
a, b, c, 0.0,
d, e, f, 0.0,
g, h, i, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where the constants are derived from the saturation value s
as shown below:
<pre>
a = (1.0-s)*rwgt + s;
b = (1.0-s)*rwgt;
c = (1.0-s)*rwgt;
d = (1.0-s)*gwgt;
e = (1.0-s)*gwgt + s;
f = (1.0-s)*gwgt;
g = (1.0-s)*bwgt;
h = (1.0-s)*bwgt;
i = (1.0-s)*bwgt + s;
</pre>
One nice property of this saturation matrix is that the luminance
of input RGB colors is maintained. This matrix can also be used
to complement the colors in an image by specifying a saturation
value of -1.0.
<p>
Notice that when <code>s</code> is set to 0.0, the matrix is exactly
the "convert to luminance" matrix described above. When <code>s</code>
is set to 1.0 the matrix becomes the identity. All saturation matrices
can be derived by interpolating between or extrapolating beyond these
two matrices.
<p>
This is discussed in more detail in the note on
<a href="../interp/index.html">Image Processing By Interpolation and Extrapolation</a>.
<h3>Applying Offsets to Color Components</h3>
To offset the r, g, and b components of colors in an image this matrix is used:
<pre>
float mat[4][4] = {
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
roffset,goffset,boffset,1.0,
};
</pre>
This can be used along with color scaling to alter the contrast of RGB
images.
<h3>Simple Hue Rotation</h3>
To rotate the hue, we perform a 3D rotation of RGB colors about the diagonal
vector [1.0 1.0 1.0]. The transformation matrix is derived as shown here:
<p>
If we have functions:<br><br>
<dl>
<dt><code>identmat(mat)</code>
<dd>that creates an identity matrix.
</dl>
<dl>
<dt><code>xrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the x (red) axis.
</dl>
<dl>
<dt><code>yrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the y (green) axis.
</dl>
<dl>
<dt><code>zrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the z (blue) axis.
</dl>
Then a matrix that rotates about the 1.0,1.0,1.0 diagonal can be
constructed like this:
<br>
First we make an identity matrix
<pre>
identmat(mat);
</pre>
Rotate the grey vector into positive Z
<pre>
mag = sqrt(2.0);
xrs = 1.0/mag;
xrc = 1.0/mag;
xrotatemat(mat,xrs,xrc);
mag = sqrt(3.0);
yrs = -1.0/mag;
yrc = sqrt(2.0)/mag;
yrotatemat(mat,yrs,yrc);
</pre>
Rotate the hue
<pre>
zrs = sin(rot*PI/180.0);
zrc = cos(rot*PI/180.0);
zrotatemat(mat,zrs,zrc);
</pre>
Rotate the grey vector back into place
<pre>
yrotatemat(mat,-yrs,yrc);
xrotatemat(mat,-xrs,xrc);
</pre>
The resulting matrix will rotate the hue of the input RGB colors. A rotation
of 120.0 degrees will exactly map Red into Green, Green into Blue and
Blue into Red. This transformation has one problem, however, the luminance
of the input colors is not preserved. This can be fixed with the following
refinement:
<h3>Hue Rotation While Preserving Luminance</h3>
We make an identity matrix
<pre>
identmat(mmat);
</pre>
Rotate the grey vector into positive Z
<pre>
mag = sqrt(2.0);
xrs = 1.0/mag;
xrc = 1.0/mag;
xrotatemat(mmat,xrs,xrc);
mag = sqrt(3.0);
yrs = -1.0/mag;
yrc = sqrt(2.0)/mag;
yrotatemat(mmat,yrs,yrc);
matrixmult(mmat,mat,mat);
</pre>
Shear the space to make the luminance plane horizontal
<pre>
xformrgb(mmat,rwgt,gwgt,bwgt,&lx,&ly,&lz);
zsx = lx/lz;
zsy = ly/lz;
zshearmat(mat,zsx,zsy);
</pre>
Rotate the hue
<pre>
zrs = sin(rot*PI/180.0);
zrc = cos(rot*PI/180.0);
zrotatemat(mat,zrs,zrc);
</pre>
Unshear the space to put the luminance plane back
<pre>
zshearmat(mat,-zsx,-zsy);
</pre>
Rotate the grey vector back into place
<pre>
yrotatemat(mat,-yrs,yrc);
xrotatemat(mat,-xrs,xrc);
</pre>
<h3>Conclusion</h3>
I've presented several matrix transformations that may be applied
to RGB colors. Each color transformation is represented by
a 4 by 4 matrix, similar to matrices commonly used to transform 3D geometry.
<p>
<a href="matrix.c">Example C code</a>
that demonstrates these concepts is provided for your enjoyment.
<p>
These transformations allow us to adjust image contrast, brightness, hue and
saturation individually. In addition, color matrix transformations concatenate
in a way similar to geometric transformations. Any sequence of
operations can be combined into a single matrix using
matrix multiplication.
<!--no_print--><p>
<!--no_print--><center>
<!--no_print--><a href=../index.html#matrix><img src=../gobot.gif width=564 height=25 border=0></a>
<!--no_print--><br>
<!--no_print--></center>
<!--no_print--></td></tr></table></center>
</body>
</html>

298
Gem/doc/gem.known_bugs.txt Normal file
View file

@ -0,0 +1,298 @@
GEM ONLINE DOCUMENTATION CHAPTER 4: Known bugs
----------------------------------------------
---------------------------- KNOWN BUGS -----------------------------
[pix_lumaoffset] crashes
--------------
POSTED 15/05/04
--------------
BUG: pix_lumaoffset crashes when the offset-factor is very high and fill+smooth is turned on
ANS: yes; but we haven't found where the bug is hidden yet
loading movies leaks memory under Win32
--------------
POSTED 4/16/02
--------------
BUG: each time an AVI is loaded, the used memory increases for about 400k.
after some time (and opening MANY files) this will be too much...
ANS: i fear, this is really a mikro$oft bug! (probably not;-))
loading MPEG-movies crashes under Win32
--------------
POSTED 4/05/04
--------------
BUG: loading MPEG-movies (*.MPG) crashes pd
ANS: MPEG is not really supported under the Win32-version of Gem
however Gem tries to decode MPEGs via QuickTime which might crash (see below)
loading AVI-movies does not work under Win32
--------------
POSTED 4/05/04
--------------
BUG: loading some AVI-movies with certain codecs does not work under Win2k and bigger.
ANS: Gem is (still) using a rather old API for decoding videos.
it might well be, that not all installed codecs are supported (e.g. Indeo-5)
have to destroy / create window to change lighting state in buffer == 1
--------------
POSTED 11/07/98
--------------
BUG: If you want to change the lighting when GEM is running in single
buffer mode, you have to destroy and then create the window.
ANS: hopefully we will drop single-buffer mode soon (enabling double-buffer feedback instead) (2004)
WinNT pix_video object
--------------
POSTED 6/25/98
-------------
BUG: The WinNT pix_video object has a lot of problems. It is not
very stable, tends to lock up the machine, etc.
ANS: don't have much problems with it.
daniel's directshow-support enables support for most newer (ieee1394,usb) cameras under win,
although the interface is somewhat different than on other OS's
(eg: set dimensions via pop-up menu,...)
splines are incorrect
--------------
POSTED 6/25/98
--------------
BUG: In preventing the crasher in the spline object, I have introduced
another bug. Mainly, the end points don't get computed correctly.
Polygon doesn't tesselate (ie, polygons sometimes look strange)
--------------
POSTED 5/19/97
--------------
BUG: Because the polygon object doesn't tesselate itself,
if it is concave, the behavior is undefined under OpenGL.
glxContext memory leak
--------------
POSTED 5/18/97
--------------
BUG: The dummy glxContext doesn't ever get destroyed. Use a static object
to create and destroy it when the DSO is loaded/unloaded.
Indycam broken
--------------
POSTED 5/1/97
--------------
BUG: The Indycam object doesn't seem to work. While getting the O2cam
up, I seem to have broken the Indycam object. One known
bug is that the Indycam doesn't accept the dimen message.
ANS: i don't have a running SGI with an indycam at hand, so i
don't know how to fix it
---------------------------- FIXED BUGS -----------------------------
some geos don't render data from pix_movie correctly
--------------
POSTED 19/03/2004
FIXED 20/03/2004
--------------
BUG: Some objects don't render images correctly
ANS: Gem tries to use rectangle-textures when available
GLU-objects cannot handle such textures
FIX: send a "mode 0" message to the [pix_texture]
FIX2:put the specific GLU-code into Gem and fixed the problem
some geos don't render data from pix_movie correctly
--------------
POSTED 4/24/99
FIXED 20/03/2004
--------------
BUG: Sphere and cone don't texture map movie data correctly because
they ignore the texture coordinates that pix_movie sets.
ANS: as long as we use the libGLU for these objects there is not much chance
to fix the core of this problem
FIX: put the specific GLU-code into Gem and fixed the problem
Cone and sphere ignore textCoords
--------------
POSTED 4/12/99
FIXED 20/03/2004
--------------
BUG: The glu library is used to create the cone and sphere, so gem
doesn't control the texture coordinates used.
FIX: put the specific GLU-code into Gem and fixed the problem
text2d is messed up
--------------
FIXED 01/01/04
POSTED 2/22/98
--------------
BUG: text2d doesn't really work at all. There seems to be a bug
in the GLTT library which is messing up the rasterpos.
FIX: use FTGL rather than GLTT
curve is broken under Linux
--------------
FIXED 01/01/04
POSTED 0/24/99
--------------
BUG: if curve is used under Linux, it core dumps when rendering.
It dumps on glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, m_numInputs, &(m_vert[0][0]));
ANS: seems to work now
model crashes when nothing is loaded
---------------
FIXED 01/01/04
POSTED 10/25/02
---------------
BUG: if rendering is started without a model being loaded before, pd crashes
ANS: seems to be fixed sime time ago...
pix_imageInPlace crashes when nothing is loaded
---------------
FIXED 01/01/04
POSTED 10/25/02
---------------
BUG: when trying to download non-existant images (by specifying the wrong
preload-name), pd-crashes
ANS: seems to be fixed now...
Can't process pix_movie data with pix objects
--------------
FIXED 4/15/02
POSTED 4/24/99
--------------
BUG: pix_movie sends the data immediately to OpenGL,
so there is no chance to process the data.
ANS: it does what it does; [pix_film] does not send the image-data immediately, so use it instead
pix_2grey doesn't process the correct number of pixels
--------------
FIXED 2/19/00
POSTED 2/18/00
--------------
BUG: The pixel count is calculated with addition instead of multiplying.
ANS: Just changed how the calculation occurs.
tablet not reset on exit
--------------
FIXED 1/24/99
POSTED 8/29/98
--------------
BUG: If the user has a tablet, it is not reset to the default settings
on exit, making it unusable as a mouse.
ANS: Just needed to do some more cleanup on exit. Should be okay now.
text object can't be found
--------------
FIXED 2/21/98
POSTED 5/1/97
--------------
BUG: Because the text is a special keyword and object inside of
pd, the text object cannot be found as a GEM object. The solution
is to rename it to something else.
ANS: I am using a cool library called gltt which will render true type
fonts in OpenGL.
Memory exception on WinNT
--------------
FIXED 12/15/97
POSTED 11/30/97
--------------
BUG: If you use pix_image, then there is a memory exception (ie, crash) when
you exit Pd. It doesn't happen while actually running Pd/GEM.
ANS: Mysterious...it went away.
Polygon and curve under NT
--------------
FIXED 10/21/97
POSTED 10/21/97
--------------
BUG: The vertex calls are receiving 0, 0, 0 for x, y, z
ANS: Extra type * parameter in the vert_* calls
Single buffering under NT
--------------
FIXED 10/21/97
POSTED 10/19/97
--------------
BUG: Single buffering doesn't work under NT.
ANS: Need an explicit glFlush(). gemHead calls glFlush after a bang message.
Geos texture coordinates
--------------
FIXED 10/17/97
POSTED 6/16/97
--------------
BUG: The vertex and texture coordinates should start so that the first
S,T is 0,0
ANS: Just did it.
pix_composite is backwards
--------------
FIXED 7/12/97
POSTED 6/16/97
--------------
BUG: The pix_composite object should have its inlets swapped. Conceptually
it doesn't make sense the way it works currently.
FIX: Just did it.
pix_convolve is broken
--------------
FIXED 7/13/97
POSTED 6/16/97
--------------
BUG: Sometimes pix_convolve doesn't work - seems to do with the scale factor
ANS: I'm not sure why it wasn't working. I have hammered it with a variey
of kernels and scales and never had a problem...
ANS2: I found a bug where pix_image didn't automatically refresh its image
at the start of rendering
pix_alpha is backwards
--------------
FIXED 7/12/92
POSTED 6/16/97
--------------
BUG: Sometimes it works, sometimes it doesn't
ANS: Swapped around the inlet creations
polygon's first inlet doesn't work
--------------
FIXED 5/18/97
POSTED 5/17/97
--------------
BUG: The first vertex of polygon doesn't work. It is always set to the
origin. Also, polygon defaults to line drawing. Check Curve for
the same problems (it is derived from polygon).
ANS: The first inlet no longer takes the first vertex. I added another
inlet.
fonts do not load
--------------
FIXED 4/02/02
POSTED 4/01/02
--------------
BUG: the example fonts for text2d/text3d do not load
FIX: accidentally i did a dos2unix to the *.ttf files. this damaged them.
Get new ones from ftp://iem.at/pd/Externals/GEM/misc

File diff suppressed because it is too large Load diff

65
Gem/doc/gem.todo.txt Normal file
View file

@ -0,0 +1,65 @@
GEM ONLINE DOCUMENTATION CHAPTER 7: TODO
----------------------------------------
This is a list of future improvements and changes.
No importance should be given to the order...it is just
when I thought of things.
- Mark D.
- IOhannes m z
---------------------------- TODO -----------------------------
GENERAL
-------
only connect to tablet if gem_tablet exists
make a separate Gem-thread (to do parallel audio/video-processing)
enable output to other "devices": like files, video-editing-cards,...
PARTICLE
--------
OBJECTS
-------
triangle_fan
stereoscopic display with hardware glasses
NURBS/bezier patches
3DstudioMax file loader
CAL3d (character animation library): (not sure anymore. maybe quake2-files would be better ?)
Alias|Wavefront file data
- articulation hierarchies in Wavefront's Kinemation
- read Preview's .mov files (an ascii list of x, y, and/or z values)
morphing between alias|wavefront models
- assume same number of points in each model
PIXES
-----
pix_dv (under linux this still needs a lot of testing)
motion and image analysis
some way to fragment an image so that it can be used as multiple
texture maps (hopefully arbitrary shapes, but possibly only rectangular)
pix_erosion
pix_dilation
pix_median/min/max filter
pix_lowpass
pix_highpass
video external keyer
- three inputs - the matte and two image inputs
increased control of the Threshold object.
- upper and lower levels adjustable
stereoscopic texture loader
pix_circle
pix_triangle
test pix_video - espec offset message
OPENGL
------
be able to switch between single and double buffering on the fly
have multiple graphics windows
increased control of view port, etc.
be able to use multiple pipes (MCO)
try out glMatrixMode(GL_TEXTURE) to deal with nonstandard texture mapping
render to a pixblock (use pbuffers or offscreen renderer)
on systems that run in console mode only (like linux with(out) XFree86), render to the console with beautiful ASCII-art
multipass rendering
multitexturing

View file

@ -0,0 +1,27 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Advanced</title>
</head>
<body>
<center>
<h2>
<u>Advanced objects</u></h2></center>
<p><br>Todo:
<p>more than 8 lights
<br>pix_imageInPlace
<br>accumrotate
<br>camera
<br>polygon and curve
<br>text3d
<br>pix_data
<br>linear_path
<br>spline_path
<p><a href="index.html">[return]</a>
</body>
</html>

View file

@ -0,0 +1,115 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Basic Objects</title>
</head>
<body>
<center>
<h2>
<u>Basic Objects</u></h2></center>
<p><br>There are a number of objects which are the foundation for GEM.
These objects are used in every patch and control the graphics and rendering.
<p><a href="#gemwin">[gemwin]</a> - The window manager
<br><a href="#gemhead">[gemhead]</a> - The start of a rendering chain
<br><a href="#manips">manips</a> - Move an object in the window
<br><a href="#geos">geos</a> - Render a shape
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="gemwin"></a>[gemwin]</h3>
The graphics window is created and destroyed with the <i>[gemwin]</i> object.
With the <i>[gemwin]</i> object, you can set the default size of the graphics
window, create and destroy the graphics window, turn on and off rendering,
etc. All basic GEM patches will have the following <i>[gemwin]</i>
object with these messages:
<center>
<p><img SRC="gemwin.jpg" BORDER=1 height=128 width=78></center>
The create and destroy messages will display and remove the graphics window.
The 1 and 0 messages start and stop rendering.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="gemhead"></a>[gemhead]</h3>
The <i>[gemhead]</i> object is the start of every rendering chain.
A simple patch, which is located in examples/gem_basic/gem1.redSquare.pd
looks like:
<center>
<p><img SRC="redSquare.jpg" BORDER=1 height=138 width=91></center>
<p>This patch will render a red square. The <i>[gemhead]</i> object
signifies the start of rendering. The <i>[color]</i> object sets the color
for all objects after it in the chain. The <i>[square]</i> object renders
a square into the graphics window based on the current color, texturing,
and transformations. In this case, there is no texturing and no transformation.
<p>Every rendering chain <b>MUST</b> start with a [gemhead]. If you
do not put a <i>[gemhead]</i> at the beginning of the chain, then nothing
will be rendered for that part of the patch.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="manips"></a>manips</h3>
In the patch 01.basic/02.cube.pd, the <i>[translateXYZ]</i> object is
introduced.
<center>
<p><img SRC="basicCube.jpg" BORDER=1 height=133 width=93></center>
<p>The graphics are transformed and moved by the <i>manipulator</i> objects,
or the manips. GEM has the following manips:
<p><i>[color]</i> - set the color with a vector
<br><i>[colorRGB]</i> - set the color with 3 discrete values
<br><i>[rotate]</i> - rotate with an angle and vector
<br><i>[rotateXYZ]</i> - rotate with 3 discrete values
<br><i>[scale]</i> - scale with a vector
<br><i>[scaleXYZ]</i> - scale with 3 discrete values
<br><i>[translate]</i> - translate with a vector
<br><i>[translateXYZ]</i> - translate with 3 discrete values
<p>To understand the difference between the vector and discrete values
version, realize that everything in is defined in 3 dimensions. These
dimensions can be XYZ values, or RGB colors.
<center>
<p><img SRC="transXYZ.jpg" BORDER=1 height=92 width=201></center>
<p>The two translate objects above will do exactly the same thing in a
patch, but they provide two different ways to do it. <i>[translate]</i> accepts
a scalar and vector. <i>[translateXYZ]</i> accepts three floats which
specify a point in space. The manips will transform any object which
appears after it in the rendering chain.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="geos"></a>geos</h3>
Up above, we saw the <i>[square]</i> and <i>[cube]</i> objects. The other
primary geos are:
<p><i>[square]</i> - render a square
<br><i>[circle]</i> - render a circle
<br><i>[triangle]</i> - render a triangle
<br><i>[cube]</i> - render a cube
<br><i>[sphere]</i> - render a sphere
<br><i>[cone]</i> - render a cone
<p>The <i>[square]</i>, <i>[circle]</i>, <i>[cube]</i>, and <i>[triangle]</i> objects
have a right-hand inlet to set the size of the shape. The default
size is 1.
<p>The <i>[cone]</i> and <i>[sphere]</i> objects are not perfectly smooth.
They are actually composed of a number of polygons. In order to control
the rendering better, the middle inlet is the size of the object, while
the right-hand inlet is the number of slices to define the shape.
Take a look at the patch gem_basic/gem3.sphere.pd to see how the number
of slices can change the look of a sphere. Don't worry about the
<i><a href="Lighting.html#world_light">[world_light]</a></i>
object, it is just there to make it easier to see the difference in the
number of slices. Make sure to click the 'lighting 0' message before
closing the patch (if you don't, then other patches will probably be completely
black until you quit and restart pd/GEM).
<p>Your graphics window should look like this for 5 and 15 slices:
<center>
<p><img SRC="sphere5.jpg" BORDER=0 height=150 width=150><img SRC="sphere15.jpg" height=150 width=150></center>
Obviously, the more slices that you use, the better the sphere looks.
However, each slice adds more polygons, which can slow down your frame
rate. In computer graphics, there is always a trade off between resolution
and speed.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

667
Gem/doc/manual/GemFaq.html Normal file
View file

@ -0,0 +1,667 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Gem FAQ</title>
</head>
<body>
<center>
<h2>
<u>GEM FAQ</u></h2></center>
<p><br>* : new question
<br>+ : changed question
<p><img SRC="tribar.gif" height=13 width=561>
<h2>
<u>QUESTIONS</u></h2>
<i><a href="#General">GENERAL</a></i>
<br><a href="#1.1">1.1) What is GEM?</a>
<br><a href="#1.2">1.2) What is Pd?</a>
<br><a href="#1.3">1.3) What platforms do GEM and Pd run on?</a>
<br><a href="#1.4.0">1.4.0) How do I install GEM and Pd on IRIX?</a>
<br><a href="#1.4.1">1.4.1) How do I install GEM and Pd on linux?</a>
<br><a href="#1.4.2">1.4.2) How do I install GEM and Pd on WinNT?</a>
<br><a href="#1.7">1.7) What is a good intro to OpenGL?</a>
<br><a href="#1.8">1.8) Are there any web sites for Pd or GEM?</a>
<br><a href="#1.9">1.9) What libraries does GEM use? (aka: Who does Mark
want to thank?)</a>
<br><a href="#1.10">1.10) Are there any restrictions on GEM?</a>
<br><a href="#1.11">1.11) How do I use GEM in a performance?</a>
<p><i><a href="#UsingGem">USING GEM</a></i>
<br><a href="#2.1">2.1) How do I (???)</a>
<br><a href="#2.2">2.2) How do I make GEM run?</a>
<br><a href="#2.3">2.3) Why doesn't GEM run?</a>
<br><a href="#2.4">2.4) I've got it running. Now what?</a>
<br><a href="#2.5">2.5) On IRIX 5.3, why does GEM dump with an rld error?</a>
<br><a href="#2.6">2.6) Why can't I compile GEM on IRIX 5.3?</a>
<br><a href="#2.7">2.7) Why is GEM slow in general?</a>
<br><a href="#2.8">2.8) Why is GEM slow on IRIX?</a>
<br><a href="#2.9">2.9) Why is GEM slow on WinNT/Win95?</a>
<br><a href="#2.10">2.10) Why is GEM slow on Linux?</a>
<br><a href="#2.11">2.11) If I resize the window, everything looks strange.</a>
<br><a href="#2.12">2.12) Can GEM run on a 3Dfx Voodoo card?</a>
<br><a href="#2.13">2.13) Will GEM support hardware transform and lighting
(T&amp;L) ?</a>
<br><a href="#2.14">2.14) I get an error "GEM needs Truecolor visual support".</a>
<p><i><a href="#ViewingObjects">VIEWING OBJECTS</a></i>
<br><a href="#3.1">3.1) Why does everything seem dim?</a>
<br><a href="#3.2">3.2) Why does everything seem dark?</a>
<p><i><a href="#TextureMapping">TEXTURE MAPPING</a></i>
<br><a href="#4.1">4.1) My image doesn't appear. What is going on?</a>
<br><a href="#4.2">4.2) My image looks strange. What is going on?</a>
<br><a href="#4.3">4.3) Why does GEM say that it can't handle a gray image?</a>
<br><a href="#4.4">4.4) What image formats can GEM handle?</a>
<br><a href="#4.5">4.5) What movie formats can GEM handle?</a>
<br><a href="#4.6">4.6) Why is pix_draw so slow?</a>
<p><i><a href="#WorkingWithPd">WORKING WITH PD</a></i>
<br><a href="#5.1">5.1) Why do I get clicks in the audio?</a>
<br><a href="#5.2">5.2) How do I get audio data to GEM?</a>
<br><a href="#5.3">5.3) Why can't GEM find an image/model file?</a>
<br><a href="#5.4">5.4) How can I optimize my patches?</a>
<p><i><a href="#NewGemObjects">WRITING NEW GEM OBJECTS</a></i>
<br><a href="#6.1">6.1) How do I write a new GEM object?</a>
<br><a href="#6.2">6.2) What are the default OpenGL states?</a>
<p><i><a href="#ObjectSpecific">OBJECT SPECIFIC</a></i>
<br><a href="#7.1">7.1) Why doesn't &lt;object> exist on &lt;platform>?</a>
<br><a href="#7.2">7.2) Why doesn't gemtablet work?</a>
<br><a href="#7.3">7.3) I don't want GEM to take over my tablet.
How do I stop it?</a>
<br><a href="#7.4">7.4) Why doesn't gemmouse work in IRIX/Linux?</a>
<br><a href="#7.5">7.5) Why doesn't gemorb work?</a>
<br><a href="#7.6">7.6) What is wrong with pix_video in WinNT?</a>
<p><img SRC="tribar.gif" height=13 width=561>
<h2>
<u>ANSWERS</u></h2>
<a NAME="General"></a><h3>GENERAL</h3>
<br><a NAME="1.1"></a>1.1) What is GEM?
<p>GEM is the Graphics Environment for Multimedia.
It was originally written by <a href="mailto:mark@danks.org">Mark Danks</a> to generate real-time computer
graphics, especially for audio-visual compositions. It originally ran under
FTS/Max (which is why you might see some papers reference it), but all
new development is under Pd.
<p>You can get GEM at <a href="http://www.iem.at/GEM">http://gem.iem.at/</a>
<p>GEM was sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
<p>GEM was ported to <a href="http://www.linux.org">linux</a> by <a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a>.
<p>the core-development team consists of<ul>
<li>chris clepper</li>
<li>günter geiger</li>
<li>daniel heckenberg</li>
<li>james tittle</li>
<li>IOhannes m zmölnig</li></ul>
lots of contributions are made by various people (thanks to all of them)
<p>----
<br><a NAME="1.2"></a>1.2) What is Pd?
<p>Pd is a real-time environment for audio and MIDI.
It was written by <a href="mailto:msp@ucsd.edu">Miller Puckette</a>, who created FTS/Max when
he was at IRCAM. Basically, Pd can be seen as the next generation
of real-time visual programming languages. GEM runs inside of the
Pd environment.
<p>You can get Pd at <a href="http://www.crca.ucsd.edu/~msp/software.html">http://www.crca.ucsd.edu/~msp/software.html</a>
<p>Pd is sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
<p>----
<br><a NAME="1.3"></a>1.3) What platforms do GEM and Pd run on?
<p>GEM and Pd run on Windows (95, 98, ME, NT 4.0, 2000, XP), linux and macOS-X (&gt;10.2).
SGI-Irix (&gt; 6.2) used to be supported but i don't have any prove that it still works).
<a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
has done an initial port of GEM and Pd to Linux <a href="http://gige.epy.co.at/">http://gige.epy.co.at</a>).
<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">me</a> and
developed by a team of several independent programmers (see <a href="1.1">section 1.1</a>)
<p>----
<br><a NAME="1.4"></a>1.4) How do I install GEM ?
<p>----
<br><a NAME="1.4.0"></a>1.4.0) How do I install GEM and Pd on IRIX?
<p>See the readme for installing Pd.
<p>GEM should be at
<p>pd/gem
<p>If you run GEM.INSTALL.sh, then all of the example files and documention
should be put in the correct locations.
<p>----
<br><a NAME="1.4.1"></a>1.4.1) How do I install GEM and Pd on linux?
<p>See the readme for installing Pd.
<p>GEM should be at
<p>chdir to &lt;gem&gt;/src/Gnu and build Gem following the instructions in the README.build
(<tt>./configure; make</tt>)
<p>If you then <tt>make install</tt>, then all of the example files and documention
should be put in the correct locations.
<p>if you are using debian, Gem should be available via apt</p>
<p>if you are using an rpm-based distribution, check out the builds at planetCCRMA</p>
<p>----
<br><a NAME="1.4.2"></a>1.4.2) How do I install GEM and Pd on WinNT?
<p>See the readme for installing Pd.
<p>unzip GEM so that it is at
<p>pd\gem
<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
should be put in the correct locations.
<p>there is also an installer for windows.
<p>----
<br><a NAME="1.4.3"></a>1.4.3) How do I install GEM and Pd on macOS?
<p>See the readme for installing Pd.
<p>there is also an installer for macOS.
<p>----
<br><a NAME="1.7"></a>1.7) What is a good intro to OpenGL?
<p>The best book is the <u>OpenGL Programming Manual</u>
by Mason and Woo. This is also called the "Red Book". If you search
the web, there are many sites on OpenGL. A good starting point is
<a href="http://www.opengl.org">http://www.opengl.org</a>.
Also, Mark Kilgard (who used to work for SGI) has a wonderful site with
lots of links (<a href="http://reality.sgi.com/mjk">http://reality.sgi.com/mjk</a>)
Also, Normal Lin has written another great book on <u>3D-graphics under linux</u>
<p>----
<br><a NAME="1.8"></a>1.8) Are there any web sites for Pd or GEM?
<p>Except for the ones noted above, there is the Japanese
installation page at
<br><a href="http://www.rinc.or.jp/~kotobuki/gem/index.htm">http://www.rinc.or.jp/~kotobuki/gem/index.htm</a>
<p>There is a Pd mailing list. Subscription info
is on IEM's site <a href="http://www.iem.at/mailinglists/pd-list">http://www.iem.at/mailinglists/pd-list</a>
<p>One of pd's unofficial home-pages is at <a href="http://pd.iem.at">http://pd.iem.at</a> hosted by the
<a href="http://iem.at">Institute of Electronic Music and Acoustics, Graz, Austria</a>
<p>Also hosted by the <a href="http://iem.at">iem</a> is the site of the pd-community
<a href="http://www.puredata.info">http://www.puredata.info</a>
<p>An interesting place might also be G&uuml;nter Geiger's size <a href="http://gige.epy.co.at/">http://gige.epy.co.at/</a>
<p>there are lot's of other cool pages (search the net...)
<p>----
<br><a NAME="1.9"></a>1.9) What libraries does GEM use?
(aka: Who does Mark want to thank?)
<p>All copyrights and license info can be found in
<br> GEM.LICENSE.TERMS
<br> Thanks to Sam Leffner for libTiff, the TIFF image
loader.
<br>
sam@engr.sgi.com
<br> <a href="ftp://ftp.sgi.com/graphics/tiff/">ftp://ftp.sgi.com/graphics/tiff/</a>
<br> Thanks to Masayuki Matsumoto for fstimage for OpenGL,
the SGI
<br> image loader.
<br>
matumot@dst.nk-exa.co.jp
<br> Thanks to the Independent JPEG Group for libjpeg,
the JPEG image loader.
<br>
jpeg-info@uunet.uu.net
<br> <a href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/">ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/</a>
<br> Thanks to Mark Kilgard at al. (and SGI) for glut, the openGL Utility Toolkit
<br> <a href="http://www.pobox.com/~ndr">http://www.pobox.com/~ndr</a>
<br> Thanks to Stephane Rehel for GLTT, the OpenGL TrueType
render.
<br>
rehel@worldnet.fr
<br> <a href="http://home.worldnet.fr/~rehel/gltt/gltt.html">http://home.worldnet.fr/~rehel/gltt/gltt.html</a>
<br> Thanks to David Turner, Robert Wilhelm, and Werner
Lemberg for
<br> Freetype, a TrueType font
rendering engine.
<br>
turner@enst.fr
<br>
robert@physiol.med.tu-muenchen.de
<br>
a7971428@unet.univie.ac.at
<br> <a href="http://www.physiol.med.tu-muenchen.de/~robert/freetype.html">http://www.physiol.med.tu-muenchen.de/~robert/freetype.html</a>
<br> Thanks to the MPEG Software Simulation Group, for
libmpeg, the
<br>MPEG-2 Encoder/Decoder
<br>
mssg@mpeg.org
<br> <a href="http://www.mpeg.org/MSSG/">http://www.mpeg.org/MSSG/</a>
<br> Thanks to Heroine for quicktime4linux
a quickime Decoder
and libmpeg3, another MPEG-2 Encoder/Decoder
<br>MPEG-2 Encoder/Decoder
<br>
mssg@mpeg.org
<br> <a href="http://heroinewarrior.com/">http://heroinewarrior.com/</a>
<br> Thanks to LCS/Telegraphics for Wintab, the Windows
tablet library.
<br>
wintab@pointing.com
<br> Thanks to David McAllister for the Particle System
library.
<br>
davemc@cs.unc.edu
<br> <a href="http://www.cs.unc.edu/~davemc/Particle/">http://www.cs.unc.edu/~davemc/Particle/</a>
<br> Thanks to John Stone for the Space Orb library,
libOrb
<br>
j.stone@acm.org
<br> <a href="http://www.umr.edu/~johns/projects/liborb/">http://www.umr.edu/~johns/projects/liborb/</a>
<p>----
<br><a NAME="1.10"></a>1.10) Are there any restrictions on GEM?
<p>GEM is under the Gnu Public License. This basically
means that it will always be free software.Check out <a href="http://www.gnu.org">http://www.gnu.org</a>
for more information and read the full license in GnuGPL.LICENSE in the GEM release.
<p>----
<br><a NAME="1.11"></a>1.11) How do I use GEM in a performance?
<p>This is a constant problem, because there is no consistent
way to display video on any platform. Also, you usually do not want
to send the entire screen, but only the GEM window. It is also useful
to be able to edit/control the Pd patch window while the patch is actually
running.
<p>On SGIs, the best way is to get a video out option.
On the SGI O2, Impact, and Onyx (Mark has used all of these), there is a
simple connector or breakout box to do video.
If you run the video out program, then you will get a rectangle on your screen
which shows what is being sent out the video connector.
Make your GEM window a little larger than 640x480 and center it in the rectangle.
You can now project this with a standard video projector.
<p>On PCs it is a bit harder.
Several modern video-cards have the possibility to output several screens
(either 2 (or more) VGA-screens or 1 VGA-screen and 1 TV (Composite or S-HVS)
or a combination with DFTs)
If you have a Canopus Voodoo2 card it has a video and s-video output on it. As described
in <a href="#2.12">question 2.12</a>, you can get a Voodoo to work with
GEM. If any one else has a better solution, please let me know.
The nVidia Riva TNTs require that you output the full screen, so this is
not a very good option. You can use a video scan convertor.
Some of them only display a part of the scene, which is exactly what you
want.
<p>With modern multi-headed cards it is more simple:
Configure your card to display the desktop spread over your multiple screens
(e.g.: from left-to-right).
On windows and macOS you can do this via the display-properties dialog.
On linux you will have to edit your /etc/X11/XF86Config-4 file either by hand or
(if your system supports it) via an appropriate editor (yes, nowadays there are some).
Now create your gem-window on the second screen:
it should have the same dimensions as the 2nd screen (e.g: "[dimen 800 600(").
to place it at the second screen use the offset (e.g: if your primary sreen
(the one you want for patch-editing) has the dimension 1024x768 use "[offset 1024 0(",
which will create the gem-window 1024 pixels right of the upper-left corner
of the total screen (and 0 pixels below it),
which is exactly the upper-left corner of the 2nd screen.
You most probably want to turn off the borders with "[border 0(".<br>
<em>Note:</em> some grafix-card have openGL-hardware-acceleration only on the 1st screen
(so you should create the gem-window on the 1st screen and move
your patches to the 2nd screen)
<p>If you are using an XServer for displaying (under linux) you can also use another
computer for rendering.
You can specify the place where the gem-window should be created with something like
"create &lt;<em>render.host</em>&gt;:0.0"
<p>If you are doing audio with graphics, the only solution
to prevent clicking (<a href="#5.1">question 5.1</a>) is to run 2 computers
and have them communicate with netsend/netreceive. We are working
on making Pd/GEM multi-processor friendly, so if you have a multi-processor
system, you can run everything on one machine eventually.
<p>
<hr WIDTH="100%"><a NAME="UsingGem"></a><h3><i>USING GEM</i></h3>
<br><a NAME="2.1"></a>2.1)How do I (???)
<p>Many of the general usage questions are probably
answered in the manual or release notes. The pd mailing list is also
a good place to find answers as well.
<p><a NAME="2.2"></a>2.2) How do I make GEM run?
<p>GEM is not an executable. It requires Pd to
work and is loaded in at run time. For example, I have an alias on
the SGI which does
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>and on WinNT
<p>\pdDir\pd\bin\pd -lib /pdDir/pd/gem/Gem
<p>on UNIX-systems you will probably want to use a <tt>.pdrc</tt> file,
where you can put the command-line arguments for pd that you "always" need.
<p>If you don't see a startup message from GEM, then something went wrong.
<p>Most people use use the command shell to start Pd.
It is not very difficult to configure Pd to run from double-clicking on the icon.
<p>----
<br><a NAME="2.3"></a>2.3) Why doesn't GEM run?
<p><b>Notice that the -lib flag always requires Unix
styles slashes</b>. This is the case even on Windows.
<p>You may also want to use the -nosound flag.
For instance, my PC has problems using audio (it leaks memory), so I just
turn off the audio part of Pd. However, other people can't get GEM
to work if the -nosound is used (on Win95). You can also try the
-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
only).
<p>----
<br><a NAME="2.4"></a>2.4) I've got it running. Now what?
<p>Try out the manual. It will step you through
the basics.
<br> You will also want to look at the example files.
Assuming that everything is installed correctly, you can get to the examples
by going to the Help menu in Pd and selecting examples. A bunch of
the patches should start with gem&lt;something>. The best one is
<i>gem/01.basic/01.redSquare.pd</i>
It puts a red square up on the screen and allows you to rotate it. <i>gemImage.pd</i>
shows how to load in a TIFF file. <i>gem/03.lighting/04.moveSpheres.pd</i>
moves two spheres around the screen. Try the other ones.
<br> Most of the GEM objects have test patches which
give some information about the various controls for the object.
<p>----
<br><a NAME="2.5"></a>2.5) On IRIX 5.3, why does GEM dump with an rld error?
<p>GEM only works under IRIX 6.2+. The rld error
is probably something about not having glBindTextureEXT (or something).
OpenGL 1.0 has some extensions to speed up texture mapping (which are an
integral part of OpenGL 1.1). However, these don't exist on IRIX
5.3. If you recompile GEM (see the next question), things should
work fine.
<br> I don't have access to an IRIX machine, so don't
expect any builds from me. Upgrading to IRIX 6.2+ is worth it.
<p>----
<br><a NAME="2.6"></a>2.6) Why can't I compile GEM on IRIX 5.3?
<p>There was probably an error saying that the compiler
couldn't find the file "dmedia/vl_vino.h" in pix_videoSGI.cpp. IRIX
6.2+ adds new functionality to the media libraries which makes life much
easier. You cannot compile pix_video or pix_indycam as is under 5.3.
You can remove them from the Pix/Makefile and from the linker part of the
global Makefile. You will also need to recompile the Td and Tiff
libraries.
<p>There shouldn't be any problems doing this. I haven't tried any
of this, so if it works for someone, please let me know.
<p>----
<br><a NAME="2.7"></a>2.7) Why is GEM slow in general?
<p>Examine what you are doing. If you are constantly
changing textures, then this is probably your problem. If you have
models with a million triangles, then this is probably the problem.
Compare what you are doing with realistic specs on your system. Some
systems slow down when they have to draw very large polygons (slow fill
rate).
<br> You can also turn on profiling to see how long it
takes to render a frame. Send a profile message to the gemwin object.
The number that is printed is the number of milliseconds one frame takes
to render. 50 milliseconds is 20 frames per second. 'profile 2' is
good if you want to see how long the image processing is taking.
<br> profile 0 - turn off profiling
<br> profile 1 - turn on profiling
<br> profile 2 - turn on profiling
and don't cache pixes
<p>----
<br><a NAME="2.8"></a>2.8) Why is GEM slow on IRIX?
<p>If you are having major slowdowns, then please let
me know. I have gotten very good performance on most machines (Indy,
O2, Impact, Onyx2).
<p>----
<br><a NAME="2.9"></a>2.9) Why is GEM slow on WinNT/Win95?
<p>You probably don't have hardware acceleration.
You can use software rendering, but it basically useless except for extremely
basic patches. You can get a good graphics accelerator for really
cheap these days. I recommend a card based on nVidia's chipsets,
such as the TNT2 or GeForce, but there are other companies such as 3dfx
and Matrox. Make sure that you are running the latest drivers for
your card. The basic drivers that come with the cards are usually
very bad.
<br> Also, PCs don't deal with lots of texture maps very
well (they are bus limited, at least until AGP), so if you are trying to
use lots of constantly changing texture maps
(especially with [pix_multiimage], [pix_video] or [pix_film]), that will cause problems.
<p>----
<br><a NAME="2.10"></a>2.10) Why is GEM slow on Linux?
<p>It is because you have to use Mesa, which might be
running iin software. Mesa (<a href="http://www.mesa.org">http://www.mesa.org</a>)
is an awesome package by Brian Paul (brianp@avid.com) which "emulates"
OpenGL. Basically, it is a fully compliant OpenGL package, but it
isn't officially sanctioned by the OpenGL ARB, such, it is doesn't have
the OpenGL name. There is an acceleration package for the many graphics
card, but I don't know anything about it.
<br>nVidia is being very supportive of Linux:
their TNT2 and GeForce cards work under Linux with hardware-acceleration of openGL.
(but the drivers are proprietary)
<br>radeon cards should also be supported very well under linux (even with open-source drivers)
<p>----
<br><a NAME="2.11"></a>2.11) If I resize the window, everything looks strange.
<p>GEM doesn't trap resize events in IRIX or Linux (this
is not a problem in WinNT). This means that OpenGL doesn't have the
correct information to render properly. If you want to resize the
window, send a 'dimen x y' message to gemwin before you create the window.
<p>----
<br><a NAME="2.12"></a>2.12) Can GEM run on a 3Dfx Voodoo card?
<p>I (this is: Mark Danks) have a Voodoo2 card, which runs fine under WinNT.
I use the OpenGL beta driver from 3Dfx at work all the time without any
problems and, except that the Voodoo takes over the full screen, it seems
to work fine. You will need to download the OpenGL Beta driver from
3Dfx's web site at http://www.3dfx.com and put the OpenGL32.dll into the
same directory as pd.exe (NOT gem.dll). Debugging patches is much
easier if you have two monitors, one for the 3-D card and one for the 2-D
card.
<p>IMPORTANT: You MUST set the environment variable
<p>GEM_SINGLE_CONTEXT = 1
<p>to make the Voodoo card work. It will make a window 640x480 (which
is the correct size for TV video out on my Canopus V2 card). On WinNT,
right click "My Computer" and go to "Properties". On the "Environment"
tab, you need to add the variable "GEM_SINGLE_CONTEXT" with a value of
1.
<br>Resizing the GEM window with a Voodoo card is not
a great idea. The Voodoo card can only display certain window sizes and
will clip the graphics.
<p>For the tech heads in the audience...I create an
OpenGL context at startup and never actually display its associated window.
This means that GEM objects can create display lists, call OpenGL commands,
etc. in their constructors, even if no window is actually being displayed.
However, with the Voodoo card, there can only be one OpenGL context.
So, instead of creating one context and just holding onto it in the background,
I create the normal GEM window and associate the OpenGL context with it...and
the user can never destroy or close that window.
<p>----
<br><a NAME="2.13"></a>2.13) Will GEM support hardware transform and lighting
(T &amp; L)?
<p>Absolutely! Unlike some other APIs, OpenGL
will automatically use hardware accelerated transform and lighting if the
card has it. GEM gets great performance from cards like nVidia's
GeForce.
<p><a NAME="2.14"></a>2.14) I get an error "GEM needs Truecolor visual
support".
<p>This error means that your X display is running with
paletted colors, which is the result of limited color depth. If you
start the X display with
<p>startx -- -bpp 16
<p>or some higher number, then it should work fine. 32-bit color
is the best.
<p>
<hr WIDTH="100%"><a NAME="ViewingObjects"></a><h3><i>VIEWING OBJECTS</i></h3>
<br><a NAME="3.1"></a>3.1)Why does everything seem dim?<
<p>You probably turned on lighting but don't have any
lights in the world. Either add a light with <i>world_light</i> or
<i>light</i>
or turn lighting off by sending a message 'lighting 0' to the <i>gemwin</i>.
You can also send a reset message to <i>gemwin</i> to set it back to the
startup state (which doesn't have any lighting).
<p>----
<br><a NAME="3.2"></a>3.2) Why does everything seem dark?
<p>See question 3.1.
<br> If you are using <tt>view</tt> in your patch to change the viewpoint,
you may not be pointing in the correct direction. You also might have translated
everything outside of the current viewport.
<br> Also, if you have been using single buffering ('buffer
1' message to <i>gemwin</i>), then you might still be in that mode.
Either send a 'buffer 2' message or a 'reset' message to <i>gemwin</i>.
Then, destroy and create your window.
<p>
<hr WIDTH="100%"><a NAME="TextureMapping"></a><h3><i>TEXTURE MAPPING</i></h3>
<br><a NAME="4.1"></a>4.1) My image doesn't appear. What is going
on?
<p>Normally images have to be texture-mapped onto Geos.
You have to use [pix_texture] to map the current image onto a Geo.
"Current" means that any pix-manipulation that is done after texturing will not be displayed.
<p>Any Geo has a color (which is initially set to white).
If you have set the color to black, your Geo (including the image) might be very dark.
If you are using alpha-blending, make sure that the Geo is not invisible.
<p>Normally images that want to be texture mapped with openGL should have dimensions that are a power of 2 in both height and width.
Now [pix_texture] will make this totally transparent to you (so normally you don't have to care about the size of the image).
However with non-power-of-2 images <i>pix_coordinate</i> might not behave as expected,
because these images need absolute texture-coordinates rather than normalized ones
(as are used with power-of-2 images): so if the texture-coordinates are set to "(0,0) (1,0) (1,1) (0,1)" you might see only the first pixel of the image (which might be black).
<p>Also, make sure that GEM can find your image (ie,
that the path name is correct).
<p>----
<br><a NAME="4.2"></a>4.2) My image looks strange. What is going
on?
<p>GEM supports gray8, YUV, and RGBA images. If
it sees that the number of bits per channel and the number of channels
is something that it should be able to handle, it tries to load the raw
data. If you have compressed or stored the pixel data in some "strange"
format, then GEM will probably not read the information correctly.
<br> Also, if it is an RGBA image, then make sure that
the alpha channel is something useful (this only matters if you are using
the alpha channel, like in the alpha object or pix_mask).
<p>----
<br><a NAME="4.3"></a>4.3) Why does GEM say that it can't handle a gray
image?
<p>This error message occurs whenever a pix object receives
a gray8 image and the implementor hasn't provided a way to deal with that
format of image. (Implementors often only provide functions for GEM's <i>native</i>
color-format RGBA. Any other color-format (like BGR) will try to call the function
for gray8 images, which might not be supported.)
If you do not want to change the image format with some extern image-programm
(like Photoshop or the Gimp) you might want to try <i>pix_rgba</a>
or harass whoever made the object to add the functionality.
<p>----
<br><a NAME="4.4"></a>4.4) What image formats can GEM handle?
<p>GEM can read in TIFF, JPEG, and SGI images.
These can be in any color format. Gray scale images are loaded in
as gray scale (ie, one byte per pixel). Everything else is loaded
in or converted to an RGBA image (ie, four bytes per pixel). If there
is an alpha channel, then it will be respected. Otherwise, the alpha
channel will be set to fully opaque (alpha == 255).
<p>GEM can write TIFF and JPEG images.
TIFF-images will be full RGBA-images, wheras JPEG-files only support (compressed) RGB.
<p>----
<br><a NAME="4.5"></a>4.5) What movie formats can GEM handle?
<p>The movie formats GEM can handle (still) depend on the platform
you are using.
<p>On Windoze you can read all AVI-files you have codecs for
<p>On linux the readable formats depend on the libraries you had installed when you compiled GEM.
Currently there is (optional) support for AVI, quicktime (*.MOV) and MPEG (*.MPG) files.
Not all quicktime-formats are supported. This is unfortunate but is due to linux restrictions.
I highly recommend that you install the mpeg3-library from Heroine because it is much more stable than mpeg1 (which comes with many linux-distributions).
If you have compiled in support for libavifile, you will be able to open Micro$oft-AVI-files.
If you have installed the proper codecs
(libavifile supports a mechanism for loading codecs from windows-DLLs) you should be able to
open almost any format.
If you have serious problems, mail them <a href="mailto:zmoelnig@iem.at">to me</a>.
(Be ready to upload the movie-file that won't work)
<p>----
<br><a NAME="4.6"></a>4.6) Why is <i>pix_draw</i> so slow?
<p><i>pix_draw</i> is almost never hardware accelerated
on PCs graphics accelerator. This means that it runs <i>extremely</i>
slowly. Always use <i>pix_texture</i>, even if you are just displaying
an image.
<p>
<hr WIDTH="100%"><a NAME="WorkingWithPd"></a><h3><i>WORKING WITH PD</i></h3>
<br><a NAME="5.1"></a>5.1) Why do I get clicks in the audio?
<p>If you are getting a constant stream of clicks in
your audio, then it is probably because you are trying to do graphics and
audio in the same process. Rendering a graphics frame usually takes
longer than the size of the audio buffer, which is why you get clicks (the
clicks are usually at 20Hz...the typical frame rate).
<br> One way around this is to use two computers, one
for graphics and one for audio. If you have enough processing power
(or dual processors), then you can run two versions of Pd, one for graphics
and one for audio. Just use <i>netsend</i> and <i>netreceive</i>
to have the two versions of Pd talk to each other.
<p>----
<br><a NAME="5.2"></a>5.2) How do I get audio data to GEM?
<p>One simple way to get raw audio values right now is
to use <i>snapshot~</i>. Just set up a <i>metro</i> which bangs <i>snapshot~</i>
and use the floating point value. If you want "musical" information,
then use objects such as <i>env~</i>.
You might also have a look at the <i>pix_sig2pix~</i> which interprets audio-data as pixels
and its counterpart <i>pix_pix2sig~</i>
<p>----
<br><a NAME="5.3"></a>5.3) Why can't GEM find an image/model file?
<p>This means that GEM can't locate the file.
If you use an absolute path (with / for instance), then GEM will look there.
Otherwise, GEM will look in the directory of where the patch is.
Then pd/GEM will search the paths you specified at startup with the <i>-path</i> flag.
<p>Check the following:
<p>1) Does the file exist?
<br> 2) Did you make a typo in the filename?
<br> 3) Is the file in the search-path ?
<p>----
<br><a NAME="5.4"></a>5.4) How can I optimize my patches?
<p>One of the biggest performance hits is having UI
elements in your patch which have to be updated. The biggest performance
hog is the number box. While the number box is great for debugging,
make sure that they are all gone from your "release" patch. If you
run a performance meter, you will see that whenever Tcl/Tk has to update
the user interface, it sucks the entire processor. Another examples
of this is when you move a lot of objects at once, everything jerks and
slides across the screen. There are probably ways to improve this...
<br> Another problem is doing unneccessary calculations.
When you are throwing lots of numbers around, especially packing/unpacking,
doing vector math, etc., they add up. If the calculations are going
unused (for instance, that part of the patch is turned off), then do not
trigger the math objects. Use <i>spigot</i> or <i>gate</i> and block
the events early. This is especially important with objects that
send a lot of numbers, like ~ objects or <i>line</i>/<i>tripleLine</i>.
<p>
<hr WIDTH="100%"><a NAME="NewGemObjects"></a><h3><i>WRITING NEW GEM OBJECTS</i></h3>
<br><a NAME="6.1"></a>6.1) How do I write a new GEM object?
<p>For the time being, you have to look at the code.
It is fairly well documented and straight forward (if you know C++ and
OOP). Start with an object which is similar to what you want and
derive a new class. The biggest issue right now is how to load in
GEM as a DSO/DLL. For SGIs, you will need to setenv LD_LIBRARY_PATH.
On NT, you will need to have your path include the directory with GEM.
<p>----
<br><a NAME="6.2"></a>6.2) What are the default OpenGL states?
<p>GemMan (and by association, gemwin) disables alpha
testing, alpha blending, culling, and lighting. Lighting defaults
to two sided, with GL_COLOR_MATERIAL enabled. The viewport is set
to
<p>float xDivy = (float)m_width / (float)m_height;
<br> glMatrixMode(GL_PROJECTION);
<br> glLoadIdentity();
<br> glFrustum(-xDivy, xDivy, -1.0, 1.0, 1.0, 20.0);
<br> gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0,
0.0);
<br> glMatrixMode(GL_MODELVIEW);
<br> glViewport(0, 0, m_width, m_height);
<p>which gives a range of about -4 to 4 in X and Y at the origin.
This is a small range, but changing it now would break a lot of patches.
<p>The specific functions to look at are:
<p>GemMan::windowInit()
<br>GemMan::resetValues()
<br>gemhead::renderGL()
<p>
<hr WIDTH="100%"><a NAME="ObjectSpecific"></a><h3><i>OBJECT SPECIFIC</i></h3>
<br><a NAME="7.1"></a>7.1) Why doesn't &lt;object> exist on &lt;platform>?
<p>Usually, this is because I don't have the resources
to get the object running on that platform. If an object that you
want doesn't exist on your platform, then ask for it! However, if
it is tied to hardware, then it is much less likely that I will be able
to do anything about it (unless someone donates the hardware to me...)
<p>----
<br><a NAME="7.2"></a>7.2) Why doesn't <i>gemtablet</i> work?
<p><i>gemtablet</i> only works on WinNT. I don't
have drivers for IRIX or Linux (also, see question 7.4)
<br> If GEM can find the tablet, then it will print a
message at window creation time. If you don't see a message, then
GEM doesn't think that you have a tablet.
<br> The tablet is mapped to the size of the GEM graphics
window.
<p>---
<br><a NAME="7.3"></a>7.3) I don't want GEM to take over my tablet.
How do I stop it?
<p>Set the environment variable
<p>GEM_NO_TABLET = 1
<p>----
<br><a NAME="7.4"></a>7.4) Why doesn't <i>gemmouse</i> work in IRIX?
<p>Basically, I don't have physical access to an SGI machine.
This makes it hard to do some of the OS specific work.
It should be straightforward to do the event handling, so if someone gets
it working, I would love to include it (and give you credit). All
you have to do is call the correct event functions from GemEvent.h and
everything should just start to work (ie, gemmouse doesn't have any OS
specific code in it).
<p>----
<br><a NAME="7.5"></a>7.5) Why doesn't gemorb work?
<p>You need to make sure that your SpaceOrb is hooked
up correctly. I am using a library which isn't supported by SpaceTec so
there can be problems, although I have not had any.
<br> &lt;RANT> When will companies wake up and actually
provide drivers and support for their products under WinNT? &lt;/RANT>
<p>----
<br><a NAME="7.6"></a>7.6) What is wrong with <i>pix_video</i> in WinNT?
<p>I haven't completely figured out how to get access
to the video stream in WinNT. I'm using Video for Windows with a
Connectix QuickCam, as well as an Intel Video Capture Card, and it seems
to assume that you are only writing to a file or previewing into a window.
Windows tries to take over the system and doesn't really provide any stable
hooks (unlike IRIX). If anyone knows how to deal with this, please
let me know.
<p><a href="index.html">[return]</a>
<br>
<br>
</body>
</html>

140
Gem/doc/manual/GemWPd.html Normal file
View file

@ -0,0 +1,140 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Using GEM with Pd</title>
</head>
<body>
<center>
<h2>
<u>Using GEM with Pd</u></h2></center>
&nbsp;&nbsp;&nbsp; An important fact is that GEM is NOT an application.
It is a library that the application Pd loads in at run-time.&nbsp; Most
of this information is taken directly from the GEM FAQ.
<p><a href="#GEMIrix">How do I install GEM on IRIX?</a>
<br><a href="#GEMWinNT">How do I install GEM on Win95/NT/2k?</a>
<br><a href="#GEMlinux">How do I install GEM on linux?</a>
<br><a href="#GEMmacos">How do I install GEM on macOS-X?</a>
<br><a href="#runIRIX">How do I run GEM on IRIX?</a>
<br><a href="#runWinNT">How do I run GEM on Win95/NT/2k?</a>
<br><a href="#runlinux">How do I run GEM on linux?</a>
<br><a href="#runmacos">How do I run GEM on linux?</a>
<br><a href="#noRun">Why doesn't GEM run?</a>
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMIrix"></a><u>How do I install GEM and Pd on IRIX?</u></h4>
See the readme for installing Pd.
<p>Uncompress and untar the GEM file that you downloaded.&nbsp; GEM should
be located at
<p>pd/gem
<p>depending on where you have installed Pd.
<p>If you run the shell script, GEM.INSTALL.sh, then all of the example
files and documention
<br>should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMWinNT"></a><u>How do I install GEM and Pd on WinNT?</u></h4>
See the readme for installing Pd.
<p>TODO: there should be a install package somewhere
<p>Unzip the GEM file that you downloaded so that it is at
<p>pd\gem
<p>depending on where you have installed Pd.
<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMlinux"></a><u>How do I install GEM and Pd on linux?</u></h4>
See the readme for installing Pd.
<p>Uncompress and untar the GEM file that you downloaded so that it is at
<p>pd/gem
<p>depending on where you have installed Pd.
<p>chdir into &lt;pd/gem&gt;/src/Gnu
<p>read the README.build
<p>run <tt>./configure</tt> and afterwards <tt>make</tt>
<p>If you run <tt>make install</tt>, then all of the example files and documentation
should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMmacos"></a><u>How do I install GEM and Pd on macOS-X?</u></h4>
See the readme for installing Pd.
<p>TODO: there should be a install package somewhere
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on IRIX?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>(where /usr/people/mdanks is the path to the pd directory). Check out
the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runWinNT"></a><u>How do I run GEM on Win95/NT?</u></h4>
&nbsp;&nbsp;&nbsp; It is best to start Pd from a DOS command line.&nbsp;
If you go to the Start menu, you should find an application called "Command
Prompt" under the Program menu.&nbsp; You need to change to the drive where
you installed Pd.&nbsp; For instance, if it is on your D: drive, just type
d: at the prompt.
<p>&nbsp;&nbsp; To use GEM type something like:
<p>\pd\bin\pd -lib /pd/gem/Gem
<p>depending on where you installed Pd.
<p>&nbsp;&nbsp;&nbsp; Check out the README for Pd to see examples of the
-lib flag. If you just try to double click GEM, you will get an error!
Notice that last word is a capital Gem. If you get a "can't find gem_setup"
error, then that is the problem. Look in the GEM FAQ for trouble shooting
suggestions.
<p>If you don't see a startup message from GEM, then something went wrong.
<p>&nbsp;&nbsp;&nbsp; Most people use the command shell to start Pd.&nbsp;
It is difficult to configure Pd to run from double-clicking on the icon.
<p>&nbsp;&nbsp;&nbsp; Also, you might need to add pd/bin to your PATH environment
variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on linux?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>(where /usr/people/mdanks is the path to the pd directory). Check out
the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on macOS-X?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<code>/usr/local/bin/pd -lib /Users/zmoelnig/pd/Gem</code>
<p>(where /usr/local/bin/pd is the path to the pd directory and
/Users/zmoelnig/pd is the path where the <i>Gem.pd_darwin</i> resides).
Check out the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="noRun"></a><u>Why doesn't GEM run?</u></h4>
&nbsp;&nbsp;&nbsp; Notice that the -lib flag always requires Unix styles
slashes, even if you are on Windows.&nbsp; This means that you need to
do <i>-lib /gem/Gem</i>, not <i>-lib \gem\Gem</i>
<p>&nbsp;&nbsp;&nbsp; You may also want to use the -nosound flag.&nbsp;
For instance, my PC has problems using audio (it leaks memory), so I just
turn off the audio part of Pd.&nbsp; However, other people can't get GEM
to work if the -nosound is used (on Win95).&nbsp; You can also try the
-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
only).
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

41
Gem/doc/manual/Gloss.html Normal file
View file

@ -0,0 +1,41 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Glossary/Index</title>
</head>
<body>
<center>
<h2>
<u>Glossary</u></h2></center>
<a NAME="Alpha"></a>Alpha - The amount of opacity.&nbsp; An alpha equal
to 1.0 means completely opaque.&nbsp; An alpha equal to 0.0 means completely
transparent.
<p><a NAME="Controls"></a>Controls - GEM objects which access the low levels
of GEM, such as window managers.
<p><a NAME="Geos"></a>Geos - GEM objects which have a shape of some kind,
such as a cube.
<p><a NAME="Manips"></a>Manips - GEM objects which manipulate the geos.
<p><a NAME="MarkEx"></a>MarkEx - A collection of objects which help with
data manipulation, especially for usage in GEM.
<p><a NAME="Nongeos"></a>Nongeos - GEM objects which do not have an explicit
shape, yet affect the rendering in some way.
<p><a NAME="OpenGL"></a><a href="http://www.opengl.org">OpenGL</a> - A
graphics API which exists on many different platforms.<br>
Gem can <i>also</i> be used as a wrapper for openGL, allowing to program openGL without having to
compile
<p><a NAME="Particles"></a>Particles - GEM objects which involve the particle
system.
<p><a NAME="Pd"></a><a href="http://pd.iem.at">Pd</a>
- A visual programming language for audio processing.&nbsp; This is the
host application for GEM.
<p><a NAME="Pixes"></a>Pixes - Image processing objects in GEM
<p><a NAME="Texture"></a>Texture mapping - Applying an image to a geometric
object.
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

112
Gem/doc/manual/Images.html Normal file
View file

@ -0,0 +1,112 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Images</title>
</head>
<body>
<center>
<h2>
<u>Dealing with Images</u></h2></center>
Images are files which are loaded into GEM. The images can be manipulated,
applied to objects, and used in any number of different ways. In
this section, you will load in an image and display it on the screen.
This section will not apply the images to a <i>geo</i>; that occurs in
the next part of the manual.
<p>The pix objects are GEM objects which deal with <i>pix</i>els.
They do everything from loading in images to applying filters to the data.
The objects in this section of the manual only load in pix data from outside
sources. How you actually display the image is up to you. The
most common usages are with <i>[pix_draw]</i> and <i>[pix_texture]</i>.
<p><b>Warning</b>: <i>[pix_draw]</i> is almost always slower than <i>[pix_texture]</i>.
Because <i>[pix_draw]</i> is easier to use than <i>[pix_texture]</i>, it is
used in these examples. However, in any real usage or piece, <i>[pix_texture]</i>
should always be used instead. <i>[pix_draw]</i> is slow because PC
graphics accelerators do not provide hardware acceleration for that functionality.
<i>[pix_texture]</i> does have hardware acceleration and will be much faster.
<p><a href="#pix_image">[pix_image]</a> - load in an image
<br><a href="#pix_multiimage">[pix_multiimage]</a> - load in multiple images
<br><a href="#pix_movie">[pix_movie]</a> - load in a movie file
<br><a href="#pix_video">[pix_video]</a> - use a real time video source
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_image"></a>[pix_image]</h3>
<i>[pix_image]</i> is used to load in images. Images can be in a variety
of different formats, including TIFF, JPEG, and SGI formats. The
patch gem_pix/gemImage.pd is the simplest use of the <i>[pix_image]</i> object.
In this patch, the <i>[pix_image]</i> object loads in the file dancer.JPG.
<center>
<p><img SRC="pixImage.jpg" BORDER=1 height=180 width=151></center>
<p>As is the case with every GEM chain, this patch starts with the <i>[gemhead]</i>
object. The next object is <i>[pix_image]</i>, which actually loads
the image. <i>[pix_image]</i> makes the file dancer.JPG the current
pixel data, which will be used in all subsequent operations in the chain.
The <i>[translateXYZ]</i> object is used to move the image around.
Finally, the <i>[pix_draw]</i> object renders the pixel data to the screen.
<p>The patch mentions that changing the Z in <i>[translateXYZ]</i> does not
change the size of the image, as would occur with a <i>geo</i> object like
<i>[square]</i>.
This is because <i>[pix_draw]</i> simply draws the pixel at the current raster
position, without any transformation. If you want to change the size
on the fly and rotate the image, you need to texture map the pix, which
is described in the next section.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_multiimage"></a>[pix_multiimage]</h3>
The <i>[pix_image]</i> object only loads in one image at time. If you
try to change the image rapidly while the patch is running, you will notice
a lag every time it has to load in a new file. To avoid this lag,
there is another object called <i>[pix_multiimage]</i>. If you look
at patch gem_pix/gemMultiImage.pd, you will see this object in action.
<p>Basically, the * in the file name is replaced by the number that you
pass in. This allows you to play sequences of images with random
access. The one downside is that every image is loaded into memory
when the object is created, so you need to have a lot of RAM to use it.
<p><img SRC="tribar.gif" height=13 width=561>
<h3><a NAME="pix_movie"></a>[pix_movie]/[pix_film]</h3>
These objects are used to read movie-files from disk (or if supported from the internet).
The movie is streamed off of disk,
using whatever decompression libraries are installed on your computer.
On Windows AVI movies seem to work fine,
but there is also a prelaminary support for quicktimes (and mpeg).
On macOS-X all formats supported by the system (basically: quicktime) should work ok.
On linux the support is highly depending on what libraries are installed during compile time.
There is support for MPEG (with libmpeg1 or (preferred:) libmpeg3),
quicktime (either libquicktime or quicktime4linux;
most likely you will not be able to decode quicktimes with proprietary codecs)
and AVI (with libavifile which is able to utilize windows-dlls for (proprietary) codecs).
There is also some rudimentary support for FFMPEG.
The right inlet of <i>[pix_movie]</i>
accepts a number to specify the frame to display. Look at 04.pix/04.movie.pd
for an image.
<p>A key fact of <i>[pix_movie]</i> is that it immediately sends the movie
data to OpenGL as a texture map. This means that you do not need
the <i>[pix_texture]</i> object in your chain. This also means that
you cannot process the movie data with pix objects. The main reason
for this is that it removes the need for a copy of all of the movie data.
If you want to apply some image-processing, you will have to use <i>[pix_film]</i>
(and <i>[pix_texture]</i> for texture-mapping).
<p>Some of the geos will not texture map the <i>[pix_movie]</i> data correctly.
Cone and sphere do not use texture coordinates when they are provided,
so when you display a movie on one of these objects, you will have a black
region (unless your movie size is a power of two...however, most movies
are 320x160 pixels or something). This will be fixed in a future
release.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_video"></a>pix_video</h3>
The "image" can come from the <i>[pix_video]</i> object.
This means that you can use a real-time video source and display it on the screen.
<p>You can play with <i>[pix_video]</i> with the patches in 04.video/.
The patches are explained in more depth in the advanced section of the GEM manual.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more