merge new plugin/interface system, testsuite changes, documentation
|
|
@ -19,11 +19,13 @@
|
|||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
bin_PROGRAMS =
|
||||
lib_LTLIBRARIES =
|
||||
noinst_PROGRAMS =
|
||||
check_PROGRAMS =
|
||||
noinst_LIBRARIES =
|
||||
lib_LTLIBRARIES =
|
||||
check_LTLIBRARIES =
|
||||
pkglib_LTLIBRARIES =
|
||||
noinst_LTLIBRARIES =
|
||||
noinst_HEADERS =
|
||||
BUILT_SOURCES =
|
||||
EXTRA_DIST =
|
||||
|
|
|
|||
30
SConstruct
|
|
@ -63,6 +63,7 @@ def setupBasicEnvironment():
|
|||
,toolpath = [TOOLDIR]
|
||||
,tools = ["default", "BuilderGCH", "BuilderDoxygen"]
|
||||
)
|
||||
handleVerboseMessages(env)
|
||||
|
||||
env.Append ( CCCOM=' -std=gnu99') # workaround for a bug: CCCOM currently doesn't honor CFLAGS, only CCFLAGS
|
||||
env.Replace( VERSION=VERSION
|
||||
|
|
@ -73,7 +74,6 @@ def setupBasicEnvironment():
|
|||
, CPPDEFINES=['-DLUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
|
||||
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
|
||||
)
|
||||
|
||||
RegisterIcon_Builder(env,SVGRENDERER)
|
||||
handleNoBugSwitches(env)
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ def appendVal(env,var,targetVar,val=None):
|
|||
def handleNoBugSwitches(env):
|
||||
""" set the build level for NoBug.
|
||||
Release builds imply no DEBUG
|
||||
wheras ALPHA and BETA require DEBUG
|
||||
whereas ALPHA and BETA require DEBUG
|
||||
"""
|
||||
level = env['BUILDLEVEL']
|
||||
if level in ['ALPHA', 'BETA']:
|
||||
|
|
@ -113,6 +113,15 @@ def handleNoBugSwitches(env):
|
|||
elif level == 'RELEASE':
|
||||
env.Replace( DEBUG = 0 )
|
||||
|
||||
def handleVerboseMessages(env):
|
||||
""" toggle verbose build output """
|
||||
if not env['VERBOSE']:
|
||||
# SetOption('silent', True)
|
||||
env['CCCOMSTR'] = " Compiling $SOURCE"
|
||||
env['CXXCOMSTR'] = " Compiling++ $SOURCE"
|
||||
env['LINKCOMSTR'] = " Linking --> $TARGET"
|
||||
env['LDMODULECOMSTR'] = " creating module [ $TARGET ]"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -128,6 +137,9 @@ def defineCmdlineOptions():
|
|||
allowed_values=('ALPHA', 'BETA', 'RELEASE'))
|
||||
,BoolOption('DEBUG', 'Build with debugging information and no optimizations', False)
|
||||
,BoolOption('OPTIMIZE', 'Build with strong optimization (-O3)', False)
|
||||
,BoolOption('VALGRIND', 'Run Testsuite under valgrind control', True)
|
||||
,BoolOption('VERBOSE', 'Print full build commands', False)
|
||||
,('TESTSUITES', 'Run only Testsuites matching the given pattern', '')
|
||||
# ,BoolOption('OPENGL', 'Include support for OpenGL preview rendering', False)
|
||||
# ,EnumOption('DIST_TARGET', 'Build target architecture', 'auto',
|
||||
# allowed_values=('auto', 'i386', 'i686', 'x86_64' ), ignorecase=2)
|
||||
|
|
@ -151,7 +163,7 @@ Special Targets:
|
|||
build : just compile and link
|
||||
testcode: additionally compile the Testsuite
|
||||
check : build and run the Testsuite
|
||||
doc : generate documetation (Doxygen)
|
||||
doc : generate documentation (Doxygen)
|
||||
install : install created artifacts at PREFIX
|
||||
src.tar : create source tarball
|
||||
doc.tar : create developer doc tarball
|
||||
|
|
@ -213,7 +225,6 @@ def configurePlatform(env):
|
|||
if not conf.CheckLibWithHeader('boost_regex-mt','boost/regex.hpp','C++'):
|
||||
problems.append('We need the boost regular expression lib (incl. binary lib for linking).')
|
||||
|
||||
# if not conf.CheckLibWithHeader('gavl', ['gavlconfig.h', 'gavl/gavl.h'], 'C'):
|
||||
|
||||
if not conf.CheckPkgConfig('gavl', 1.0):
|
||||
problems.append('Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
|
||||
|
|
@ -230,13 +241,16 @@ def configurePlatform(env):
|
|||
problems.append('Unable to configure Cairo--, exiting.')
|
||||
|
||||
if not conf.CheckPkgConfig('gdl-1.0', '0.6.1'):
|
||||
problems.append('Unable to configure the GNOME DevTool Library, exiting.')
|
||||
problems.append('Unable to configure the GNOME DevTool Library.')
|
||||
|
||||
if not conf.CheckPkgConfig('librsvg-2.0', '2.18.1'):
|
||||
problems.append('Need rsvg Library for rendering icons.')
|
||||
|
||||
if not conf.CheckPkgConfig('xv'): problems.append('Need lib xv')
|
||||
# if not conf.CheckPkgConfig('xext'): Exit(1)
|
||||
if not conf.CheckCHeader(['X11/Xutil.h', 'X11/Xlib.h'],'<>'):
|
||||
problems.append('Xlib.h and Xutil.h required. Please install libx11-dev.')
|
||||
|
||||
if not conf.CheckPkgConfig('xv') : problems.append('Need libXv...')
|
||||
if not conf.CheckPkgConfig('xext'): problems.append('Need libXext.')
|
||||
# if not conf.CheckPkgConfig('sm'): Exit(1)
|
||||
#
|
||||
# obviously not needed?
|
||||
|
|
@ -298,7 +312,7 @@ def defineBuildTargets(env, artifacts):
|
|||
|
||||
|
||||
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
|
||||
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', objplug)
|
||||
artifacts['plugins'] = env.LoadableModule('$BINDIR/lumiera-plugin', objplug)
|
||||
|
||||
# the Lumiera GTK GUI
|
||||
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','librsvg-2.0','xv','xext','sm'])
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@ admin_srcdir = $(top_srcdir)/admin
|
|||
noinst_PROGRAMS += vgsuppression
|
||||
vgsuppression_SOURCES = $(admin_srcdir)/vgsuppression.c
|
||||
vgsuppression_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror
|
||||
vgsuppression_LDADD = liblumi.a $(NOBUGMT_LUMIERA_LIBS) -ldl
|
||||
vgsuppression_LDADD = liblumiera.a $(NOBUGMT_LUMIERA_LIBS) -ldl
|
||||
|
||||
noinst_PROGRAMS += rsvg-convert
|
||||
rsvg_convert_SOURCES = $(admin_srcdir)/rsvg-convert.c
|
||||
rsvg_convert_CPPFLAGS = $(AM_CPPFLAGS) $(GTK_LUMIERA_CFLAGS) -std=gnu99 -Wall -Werror
|
||||
rsvg_convert_CPPFLAGS = $(AM_CPPFLAGS) $(LUMIERA_GUI_CFLAGS) -std=gnu99 -Wall -Werror
|
||||
rsvg_convert_LDADD = -lcairo -lglib-2.0 -lgthread-2.0 -lrsvg-2
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Import('env','envgtk','artifacts','core')
|
|||
vgsuppr = env.Program('#$BINDIR/vgsuppression',['vgsuppression.c']+core)
|
||||
rsvg = envgtk.Program('#$BINDIR/rsvg-convert','rsvg-convert.c')
|
||||
|
||||
artifacts['tools'] += [ vgsuppr ## for supressing false valgrind alarms
|
||||
artifacts['tools'] += [ vgsuppr ## for suppressing false valgrind alarms
|
||||
+ rsvg ## for rendering SVG icons (uses librsvg)
|
||||
]
|
||||
|
||||
|
|
|
|||
38
configure.ac
|
|
@ -24,7 +24,11 @@ AC_COPYRIGHT([
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
])
|
||||
|
||||
#
|
||||
# Global configuration
|
||||
#
|
||||
AC_GNU_SOURCE
|
||||
AC_DISABLE_STATIC
|
||||
|
||||
#
|
||||
# Required programs
|
||||
|
|
@ -83,6 +87,10 @@ AC_LANG_PUSH([C])
|
|||
AC_CHECK_HEADER([execinfo.h], AC_DEFINE(HAVE_EXECINFO_H))
|
||||
# there is a warning in nobug, disabled til fixed AC_CHECK_HEADER([valgrind/valgrind.h], AC_DEFINE(HAVE_VALGRIND_VALGRIND_H))
|
||||
|
||||
AC_CHECK_LIB(dl, dlopen, [LUMIERA_PLUGIN_LIBS="$LUMIERA_PLUGIN_LIBS -ldl"],
|
||||
[AC_MSG_ERROR([Dynamic linking not supported, report a bug])]
|
||||
)
|
||||
|
||||
AC_LANG_POP([C])
|
||||
|
||||
|
||||
|
|
@ -124,15 +132,19 @@ AC_LANG_POP([C++])
|
|||
|
||||
# END Internatinalization
|
||||
|
||||
############## Gtk Dependancies
|
||||
PKG_CHECK_MODULES(LUMIERA_GUI, [
|
||||
gtkmm-2.4 >= 2.8 gdl-1.0 >= 0.6.1 cairomm-1.0 >= 0.6.0
|
||||
gavl >= 0.2.5 librsvg-2.0 >= 2.18.1])
|
||||
|
||||
# END Gtk Dependancies
|
||||
|
||||
############## X11 Dependancies
|
||||
AC_PATH_X
|
||||
AC_PATH_XTRA
|
||||
# CFLAGS="$CFLAGS $X_CFLAGS"
|
||||
LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
|
||||
|
||||
AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h],[],
|
||||
[AC_MSG_ERROR([Xlib.h or Xutil.h not found install xdevel])])
|
||||
[AC_MSG_ERROR([Xlib.h or Xutil.h not found install xdevel])])
|
||||
|
||||
AC_CHECK_HEADERS([sys/ipc.h sys/shm.h],,
|
||||
[AC_MSG_ERROR([Required header not found. Please check that it is installed])]
|
||||
|
|
@ -142,25 +154,19 @@ AC_CHECK_HEADERS([X11/extensions/Xvlib.h X11/extensions/XShm.h],,
|
|||
[#include <X11/Xlib.h>]
|
||||
)
|
||||
|
||||
AC_CHECK_LIB(Xext, XInitExtension, ,
|
||||
[AC_MSG_ERROR([Could not link with libXext. Check that you have libXext installed])], -lX11
|
||||
AC_CHECK_LIB(Xext, XInitExtension, [LUMIERA_GUI_LIBS="$LUMIERA_GUI_LIBS -lXext"],
|
||||
[AC_MSG_ERROR([Could not link with libXext. Check that you have libXext installed])], -lX11
|
||||
)
|
||||
AC_CHECK_LIB(Xv, XvQueryAdaptors, ,
|
||||
[AC_MSG_ERROR([Could not link with libXv. Check that you have libXv installed])]
|
||||
AC_CHECK_LIB(Xv, XvQueryAdaptors, [LUMIERA_GUI_LIBS="$LUMIERA_GUI_LIBS -lXv"],
|
||||
[AC_MSG_ERROR([Could not link with libXv. Check that you have libXv installed])]
|
||||
)
|
||||
|
||||
# END X11 Dependancies
|
||||
|
||||
|
||||
############## Gtk Dependancies
|
||||
PKG_CHECK_MODULES(GTK_LUMIERA, [
|
||||
gtkmm-2.4 >= 2.8 gdl-1.0 >= 0.6.1 cairomm-1.0 >= 0.6.0
|
||||
gavl >= 0.2.5 librsvg-2.0 >= 2.18.1])
|
||||
|
||||
AC_SUBST(GTK_LUMIERA_CFLAGS)
|
||||
AC_SUBST(GTK_LUMIERA_LIBS)
|
||||
|
||||
# END Gtk Dependancies
|
||||
AC_SUBST(LUMIERA_PLUGIN_LIBS)
|
||||
AC_SUBST(LUMIERA_GUI_CFLAGS)
|
||||
AC_SUBST(LUMIERA_GUI_LIBS)
|
||||
|
||||
|
||||
############## Nobug Dependancies
|
||||
|
|
|
|||
80
doc/devel/config_guide.txt
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
The incomplete Guide to Lumiera Configuration
|
||||
==============================================
|
||||
|
||||
DONT EDIT THE CONFIG IF YOU DONT KNOW WHAT YOU ARE DOING!
|
||||
Misconfiguration will break Lumiera and may destroy all your data!
|
||||
|
||||
Order is roughly alphabetically, depending on the mood of the writer.
|
||||
Defaults are noted if present. Not all are implemented yet.
|
||||
|
||||
General Introduction
|
||||
--------------------
|
||||
|
||||
Lumiera uses plaintext files with a INI file like syntax for
|
||||
configuration. This Syntax is strictly line based. There are only a
|
||||
few syntactic elements.
|
||||
|
||||
TODO:describe config syntax here
|
||||
|
||||
Config Subsystem
|
||||
----------------
|
||||
|
||||
The path where Lumiera searches its configuration. Single components are
|
||||
separated by colons as in PATH and other such environment variables.
|
||||
Here it might be handy that any Lumiera configuration can be
|
||||
overridden by a environment variable:
|
||||
'LUMIERA_CONFIG_PATH=somewhere:else lumiera ...'
|
||||
A default are initialized at installation time, this is important to
|
||||
bootstrap the whole configuration system.
|
||||
|
||||
config.path
|
||||
|
||||
|
||||
The config system check for a preferred format when writing config
|
||||
entries. For each key 'foo.bar', these can be overridden with a key
|
||||
'config.format.foo.bar' linking to the desired format.
|
||||
|
||||
config.formatkey ='config.format.%s'
|
||||
|
||||
|
||||
The following are links to the default formatting when no explicit
|
||||
format is set for a key. Changing these to a wrong type will break the
|
||||
system!
|
||||
|
||||
config.formatdef.link < config.formatstr.link
|
||||
config.formatdef.number < config.formatstr.number.dec
|
||||
config.formatdef.real < config.formatstr.real
|
||||
config.formatdef.string < config.formatstr.string
|
||||
config.formatdef.word < config.formatstr.word
|
||||
config.formatdef.bool < config.formatstr.bool
|
||||
|
||||
|
||||
This are the low level formating specifications for the buildin
|
||||
types, DONT TOUCH THESE!
|
||||
|
||||
config.formatstr.link = '< %s'
|
||||
config.formatstr.number.dec = '= %lld'
|
||||
config.formatstr.number.hex = '= 0x%llX'
|
||||
config.formatstr.number.oct = '= 0%llo'
|
||||
config.formatstr.real = '= %Lg'
|
||||
config.formatstr.real.dec = '= %Lf'
|
||||
config.formatstr.real.sci = '= %Le'
|
||||
config.formatstr.string = '= %s'
|
||||
config.formatstr.string.dquoted = '= \"%s\"'
|
||||
config.formatstr.string.quoted = '= ''%s'''
|
||||
config.formatstr.word = '= %s'
|
||||
config.formatstr.bool = '= %d'
|
||||
|
||||
|
||||
Plugin System
|
||||
-------------
|
||||
|
||||
The path where Lumiera searches its plugins. Single components are
|
||||
separated by colons as in PATH and other such environment variables.
|
||||
Here it might be handy that any Lumiera configuration can be
|
||||
overridden by a environment variable:
|
||||
'LUMIERA_PLUGIN_PATH=somewhere:else lumiera ...'
|
||||
Sensible defaults are initialized at installation time.
|
||||
|
||||
plugin.path
|
||||
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
<a name="refclass128005"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class SessionImpl : public <a href="class139653.html#refclass139653"><b>Session</b></a> </li></ul><p>Implementation class for the Session interface<br /></p><p>Artifact : <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, Component(s) : <a href="index.html#refcomponent128133"><b>Session</b></a></p><div class="sub">
|
||||
<a name="refrelation128005"></a>
|
||||
<table><tr><td><div class="element">Relation <b>edls (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # edls : <a href="class128133.html#refclass128133"><b>EDL</b></a>, multiplicity : 1..*</li><li>C++ : protected: <<a href="class128133.html#refclass128133"><b>EDL</b></a>> edls</li></ul><a name="refrelation128261"></a>
|
||||
<table><tr><td><div class="element">Relation <b>edls (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # edls : <a href="class128133.html#refclass128133"><b>Seq</b></a>, multiplicity : 1..*</li><li>C++ : protected: <<a href="class128133.html#refclass128133"><b>Seq</b></a>> edls</li></ul><a name="refrelation128261"></a>
|
||||
<table><tr><td><div class="element">Relation <b>theFixture (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # theFixture : <a href="class128261.html#refclass128261"><b>Fixture</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class128261.html#refclass128261"><b>Fixture</b></a> * theFixture</li></ul><a name="refrelation147717"></a>
|
||||
<table><tr><td><div class="element">Relation <b>pipes (<directional aggregation>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # pipes : <a href="class138117.html#refclass138117"><b>Pipe</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class138117.html#refclass138117"><b>Pipe</b></a>* pipes</li></ul><p>the global ports (busses) of the session<br /></p></div>
|
||||
<p>All public operations : <a href="class139653.html#refoperation133509"><b>currEDL</b></a> , <a href="class139653.html#refoperation133637"><b>getFixture</b></a> </p>
|
||||
|
|
|
|||
|
|
@ -4,19 +4,19 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class EDL</title>
|
||||
<title>Class Seq</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class EDL</div>
|
||||
<div class = "title">Class Seq</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128133"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class EDL </li></ul><p>Directly inherited by : <a href="class128261.html#refclass128261"><b>Fixture</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class Seq </li></ul><p>Directly inherited by : <a href="class128261.html#refclass128261"><b>Fixture</b></a> </p>
|
||||
<p>Artifact : <a href="index.html#refartifact128645"><b>edl</b></a>, Component(s) : <a href="index.html#refcomponent128133"><b>Session</b></a></p><div class="sub">
|
||||
<a name="refrelation128901"></a>
|
||||
<table><tr><td><div class="element">Relation <b>clips (<directional aggregation>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # clips : <a href="class128517.html#refclass128517"><b>MObject</b></a>, multiplicity : *</li><li>C++ : protected: list<<a href="class128517.html#refclass128517"><b>MObject</b></a> *> clips</li></ul><a name="refrelation147333"></a>
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128261"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Fixture : public <a href="class128133.html#refclass128133"><b>EDL</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact128773"><b>fixture</b></a>, Component(s) : <a href="index.html#refcomponent128133"><b>Session</b></a></p><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class Fixture : public <a href="class128133.html#refclass128133"><b>Seq</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact128773"><b>fixture</b></a>, Component(s) : <a href="index.html#refcomponent128133"><b>Session</b></a></p><div class="sub">
|
||||
<a name="refrelation131717"></a>
|
||||
<table><tr><td><div class="element">Relation <b>theTimeline (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # theTimeline : <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> theTimeline</li></ul><a name="refoperation128645"></a>
|
||||
<table><tr><td><div class="element">Relation <b>effectiveTimeline (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # effectiveTimeline : <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> effectiveTimeline</li></ul><a name="refoperation128645"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getPlaylistForRender</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getPlaylistForRender() : list<ExplicitPlacement [ProcessingLayer::MObject]></li><li>C++ : public: list<ExplicitPlacement [ProcessingLayer::MObject]> getPlaylistForRender () </li></ul><a name="refoperation129157"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getAutomation</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getAutomation() : Auto [ProcessingLayer::MObject]*</li><li>C++ : public: Auto [ProcessingLayer::MObject]* getAutomation () </li></ul><a name="refrelation147589"></a>
|
||||
<table><tr><td><div class="element">Relation <b>track (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # track : <a href="class128389.html#refclass128389"><b>Track</b></a></li><li>C++ : protected: <a href="class128389.html#refclass128389"><b>Track</b></a>* track</li></ul></div>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128389"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Track : public <a href="class129157.html#refclass129157"><b>Meta</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact128901"><b>track</b></a>, Diagram : <a href="index.html#refclass diagram128133"><b>Session structure</b></a></p><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class Track : public <a href="class129157.html#refclass129157"><b>Meta</b></a>, public <a href="class128517.html#refclass128517"><b>MObject</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact128901"><b>track</b></a>, Diagram : <a href="index.html#refclass diagram128133"><b>Session structure</b></a></p><div class="sub">
|
||||
<a name="refrelation147205"></a>
|
||||
<table><tr><td><div class="element">Relation <b>subTracks (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + subTracks : <a href="class128389.html#refclass128389"><b>Track</b></a>, multiplicity : *</li><li>C++ : public: <a href="class128389.html#refclass128389"><b>Track</b></a> subTracks</li></ul><p>Child tracks in a tree structure<br /></p></div>
|
||||
<p>All public operations : <a href="class134021.html#refoperation129669"><b>apply</b></a> , <a href="class140165.html#refoperation134789"><b>apply</b></a> , <a href="class140165.html#refoperation134917"><b>dispatchOp</b></a> </p>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128517"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class MObject : public <a href="class134021.html#refclass134021"><b>Buildable</b></a> </li><li>Java : public interface MObject </li></ul><p>Directly inherited by : <a href="class128773.html#refclass128773"><b>AbstractMO</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class MObject : public <a href="class134021.html#refclass134021"><b>Buildable</b></a> </li><li>Java : public interface MObject </li></ul><p>Directly inherited by : <a href="class128773.html#refclass128773"><b>AbstractMO</b></a> <a href="class128901.html#refclass128901"><b>Clip</b></a> <a href="class129029.html#refclass129029"><b>Effect</b></a> <a href="class129669.html#refclass129669"><b>Label</b></a> <a href="class128389.html#refclass128389"><b>Track</b></a> </p>
|
||||
<p>Artifact : <a href="index.html#refartifact128261"><b>mobject</b></a>, Component(s) : <a href="index.html#refcomponent128133"><b>Session</b></a></p><div class="sub">
|
||||
<a name="refattribute128517"></a>
|
||||
<table><tr><td><div class="element">Attribut <b>length</b></div></td></tr></table>
|
||||
|
|
|
|||
|
|
@ -16,11 +16,9 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128901"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Clip : public <a href="class128773.html#refclass128773"><b>AbstractMO</b></a> </li></ul><p>Directly inherited by : <a href="class138629.html#refclass138629"><b>CompoundClip</b></a> <a href="class138885.html#refclass138885"><b>SimpleClip</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class Clip : public <a href="class128773.html#refclass128773"><b>AbstractMO</b></a>, public <a href="class128517.html#refclass128517"><b>MObject</b></a> </li></ul><p>Directly inherited by : <a href="class138629.html#refclass138629"><b>CompoundClip</b></a> <a href="class138885.html#refclass138885"><b>SimpleClip</b></a> </p>
|
||||
<p>Artifact : <a href="index.html#refartifact129413"><b>clip</b></a></p><div class="sub">
|
||||
<a name="refattribute128645"></a>
|
||||
<table><tr><td><div class="element">Attribut <b>start</b></div></td></tr></table>
|
||||
<p>Declaration :</p><ul><li>Uml : # start : <a href="class134917.html#refclass134917"><b>Time</b></a></li><li>C++ : protected: <a href="class134917.html#refclass134917"><b>Time</b></a> start</li></ul><p>startpos in source<br /></p><a name="refrelation142469"></a>
|
||||
<a name="refrelation142469"></a>
|
||||
<table><tr><td><div class="element">Relation <b>source (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # source : <a href="class136709.html#refclass136709"><b>Media</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class136709.html#refclass136709"><b>Media</b></a>* source</li></ul><p>the media source this clip referes to<br /></p></div>
|
||||
<p>All public operations : <a href="class134021.html#refoperation129669"><b>apply</b></a> , <a href="class140165.html#refoperation134789"><b>apply</b></a> , <a href="class140165.html#refoperation134917"><b>dispatchOp</b></a> </p>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -16,10 +16,10 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass129029"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Effect : public <a href="class128773.html#refclass128773"><b>AbstractMO</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact129541"><b>effect</b></a></p><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class Effect : public <a href="class128773.html#refclass128773"><b>AbstractMO</b></a>, public <a href="class128517.html#refclass128517"><b>MObject</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact129541"><b>effect</b></a></p><div class="sub">
|
||||
<a name="refattribute128901"></a>
|
||||
<table><tr><td><div class="element">Attribut <b>plugID</b></div></td></tr></table>
|
||||
<p>Declaration :</p><ul><li>Uml : # plugID : string</li><li>C++ : protected: string plugID</li></ul><p>Identifier of the Plugin to be used<br /></p></div>
|
||||
<table><tr><td><div class="element">Attribut <b>plugin</b></div></td></tr></table>
|
||||
<p>Declaration :</p><ul><li>Uml : # plugin : string</li><li>C++ : protected: string plugin</li></ul><p>Identifier of the Plugin to be used<br /></p></div>
|
||||
<p>All public operations : <a href="class134021.html#refoperation129669"><b>apply</b></a> , <a href="class140165.html#refoperation134789"><b>apply</b></a> , <a href="class140165.html#refoperation134917"><b>dispatchOp</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass129669"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Label : public <a href="class129157.html#refclass129157"><b>Meta</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact130181"><b>label</b></a></p><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class Label : public <a href="class129157.html#refclass129157"><b>Meta</b></a>, public <a href="class128517.html#refclass128517"><b>MObject</b></a> </li></ul><p>Artifact : <a href="index.html#refartifact130181"><b>label</b></a></p><div class="sub">
|
||||
</div>
|
||||
<p>All public operations : <a href="class134021.html#refoperation129669"><b>apply</b></a> , <a href="class140165.html#refoperation134789"><b>apply</b></a> , <a href="class140165.html#refoperation134917"><b>dispatchOp</b></a> </p>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<p>Declaration :</p><ul><li>C++ : class Session </li></ul><p>Directly inherited by : <a href="class128005.html#refclass128005"><b>SessionImpl</b></a> </p>
|
||||
<p>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.<br /></p><p>Artifact : <a href="index.html#refartifact138757"><b>session</b></a></p><div class="sub">
|
||||
<a name="refoperation133509"></a>
|
||||
<table><tr><td><div class="element">Operation <b>currEDL</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + currEDL() : <a href="class128133.html#refclass128133"><b>EDL</b></a></li><li>C++ : public: <a href="class128133.html#refclass128133"><b>EDL</b></a> currEDL () </li></ul><p>The EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands.<br /></p><a name="refoperation133637"></a>
|
||||
<table><tr><td><div class="element">Operation <b>currEDL</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + currEDL() : <a href="class128133.html#refclass128133"><b>Seq</b></a></li><li>C++ : public: <a href="class128133.html#refclass128133"><b>Seq</b></a> currEDL () </li></ul><p>The EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands.<br /></p><a name="refoperation133637"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getFixture</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getFixture() : Fixture&</li><li>C++ : public: Fixture& getFixture () </li></ul><p>While the session can be comprised of several EDLs, <br />there is only one Fixture, which represents the actual<br />configuration of all Objects to be rendered<br /></p><a name="refrelation144773"></a>
|
||||
<table><tr><td><div class="element">Relation <b>current (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : static, + current : <a href="class139781.html#refclass139781"><b>SessManager</b></a>, multiplicity : 1</li><li>C++ : public: static <a href="class139781.html#refclass139781"><b>SessManager</b></a>& current</li></ul><p>Standard access path to get at the current session via the Session Manager, which acts as a "PImpl" smart pointer<br /></p><a name="refrelation150917"></a>
|
||||
<table><tr><td><div class="element">Relation <b>defaults (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # defaults : <a href="class141445.html#refclass141445"><b>DefaultsManager</b></a></li><li>C++ : protected: <a href="class141445.html#refclass141445"><b>DefaultsManager</b></a>* defaults</li></ul></div>
|
||||
|
|
|
|||
25
doc/devel/uml/class144773.html
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class StreamType</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class StreamType</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass144773"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class StreamType </li></ul><p>Artifact : <a href="index.html#refartifact139653"><b>streamtype</b></a></p><div class="sub">
|
||||
<a name="refrelation158469"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145285.html#refclass145285"><b>MediaKind</b></a></li><li>C++ : protected: <a href="class145285.html#refclass145285"><b>MediaKind</b></a>* </li></ul><a name="refrelation158597"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144901.html#refclass144901"><b>Prototype</b></a></li><li>C++ : protected: <a href="class144901.html#refclass144901"><b>Prototype</b></a>* </li></ul><a name="refrelation158725"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145029.html#refclass145029"><b>ImplFacade</b></a></li><li>C++ : protected: <a href="class145029.html#refclass145029"><b>ImplFacade</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
20
doc/devel/uml/class144901.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Prototype</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Prototype</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass144901"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Prototype </li></ul><p>Artifact : <a href="index.html#refartifact139653"><b>streamtype</b></a></p></body>
|
||||
</html>
|
||||
20
doc/devel/uml/class145029.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ImplFacade</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ImplFacade</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145029"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ImplFacade </li></ul><p>Artifact : <a href="index.html#refartifact139653"><b>streamtype</b></a></p></body>
|
||||
</html>
|
||||
22
doc/devel/uml/class145157.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class StreamTypeID</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class StreamTypeID</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145157"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class StreamTypeID </li></ul><div class="sub">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
20
doc/devel/uml/class145285.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class MediaKind</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class MediaKind</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145285"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : enum MediaKind </li><li>Java : package enum MediaKind </li></ul></body>
|
||||
</html>
|
||||
20
doc/devel/uml/class145413.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class STypeManager</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class STypeManager</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145413"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class STypeManager </li></ul><p>Artifact : <a href="index.html#refartifact139781"><b>stypemanager</b></a></p></body>
|
||||
</html>
|
||||
27
doc/devel/uml/class145541.html
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Timeline</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Timeline</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145541"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Timeline </li></ul><p>Directly inherited by : <a href="class145797.html#refclass145797"><b>TimelineView</b></a> </p>
|
||||
<div class="sub">
|
||||
<a name="refrelation159109"></a>
|
||||
<table><tr><td><div class="element">Relation <b><aggregation by value></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145669.html#refclass145669"><b>Project</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class145669.html#refclass145669"><b>Project</b></a> </li></ul><a name="refrelation159237"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145925.html#refclass145925"><b>PlayControl</b></a></li><li>C++ : protected: <a href="class145925.html#refclass145925"><b>PlayControl</b></a>* </li></ul><a name="refrelation159621"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146309.html#refclass146309"><b>Sequence</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class146309.html#refclass146309"><b>Sequence</b></a>* </li></ul><a name="refrelation160005"></a>
|
||||
<table><tr><td><div class="element">Relation <b>globalBusses (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # globalBusses : <a href="class138117.html#refclass138117"><b>Pipe</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class138117.html#refclass138117"><b>Pipe</b></a> globalBusses</li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class145669.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Project</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Project</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145669"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Project </li></ul><div class="sub">
|
||||
<a name="refrelation158981"></a>
|
||||
<table><tr><td><div class="element">Relation <b><aggregation by value></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145541.html#refclass145541"><b>Timeline</b></a>, multiplicity : 1..*</li><li>C++ : protected: <a href="class145541.html#refclass145541"><b>Timeline</b></a> </li></ul><a name="refrelation159365"></a>
|
||||
<table><tr><td><div class="element">Relation <b><aggregation by value></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146309.html#refclass146309"><b>Sequence</b></a>, multiplicity : 1..*</li><li>C++ : protected: <a href="class146309.html#refclass146309"><b>Sequence</b></a> </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class145797.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class TimelineView</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class TimelineView</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145797"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class TimelineView : public <a href="class145541.html#refclass145541"><b>Timeline</b></a> </li></ul><div class="sub">
|
||||
<a name="refrelation159749"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146309.html#refclass146309"><b>Sequence</b></a></li><li>C++ : protected: <a href="class146309.html#refclass146309"><b>Sequence</b></a>* </li></ul><a name="refrelation160773"></a>
|
||||
<table><tr><td><div class="element">Relation <b><association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a></li><li>C++ : protected: <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class145925.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class PlayControl</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class PlayControl</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass145925"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class PlayControl </li></ul><div class="sub">
|
||||
<a name="refrelation160389"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class146053.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Monitor</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Monitor</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass146053"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Monitor </li></ul><div class="sub">
|
||||
<a name="refrelation160133"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145541.html#refclass145541"><b>Timeline</b></a>, multiplicity : 0..1</li><li>C++ : protected: <a href="class145541.html#refclass145541"><b>Timeline</b></a>* </li></ul><a name="refrelation160517"></a>
|
||||
<table><tr><td><div class="element">Relation <b><association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a></li><li>C++ : protected: <a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class146181.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class RenderTask</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class RenderTask</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass146181"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class RenderTask </li></ul><div class="sub">
|
||||
<a name="refrelation160261"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145541.html#refclass145541"><b>Timeline</b></a></li><li>C++ : protected: <a href="class145541.html#refclass145541"><b>Timeline</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
26
doc/devel/uml/class146309.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Sequence</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Sequence</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass146309"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Sequence </li></ul><div class="sub">
|
||||
<a name="refrelation159493"></a>
|
||||
<table><tr><td><div class="element">Relation <b><aggregation by value></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145669.html#refclass145669"><b>Project</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class145669.html#refclass145669"><b>Project</b></a> </li></ul><a name="refrelation159877"></a>
|
||||
<table><tr><td><div class="element">Relation <b>subSequences (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # subSequences : <a href="class146309.html#refclass146309"><b>Sequence</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class146309.html#refclass146309"><b>Sequence</b></a>* subSequences</li></ul><a name="refrelation161541"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class128517.html#refclass128517"><b>MObject</b></a></li><li>C++ : protected: <a href="class128517.html#refclass128517"><b>MObject</b></a>* </li></ul><a name="refrelation161669"></a>
|
||||
<table><tr><td><div class="element">Relation <b>trackTree (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # trackTree : <a href="class128389.html#refclass128389"><b>Track</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class128389.html#refclass128389"><b>Track</b></a>* trackTree</li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class146437.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class PlayheadCursor</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class PlayheadCursor</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass146437"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class PlayheadCursor </li></ul><div class="sub">
|
||||
<a name="refrelation160645"></a>
|
||||
<table><tr><td><div class="element">Relation <b><association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class146053.html#refclass146053"><b>Monitor</b></a></li><li>C++ : protected: <a href="class146053.html#refclass146053"><b>Monitor</b></a>* </li></ul><a name="refrelation160901"></a>
|
||||
<table><tr><td><div class="element">Relation <b><association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class145797.html#refclass145797"><b>TimelineView</b></a></li><li>C++ : protected: <a href="class145797.html#refclass145797"><b>TimelineView</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -31,7 +31,9 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131461" target = "projectFrame"><b>Rules access</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128133" target = "projectFrame"><b>Session structure</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132357" target = "projectFrame"><b>StateAdapter composition</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132485" target = "projectFrame"><b>Stream Type Framework</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131205" target = "projectFrame"><b>Struct-Asset Relations</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132741" target = "projectFrame"><b>TimelineSequences</b></a></td><td></td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class141573.html#refclass141573" target = "projectFrame"><b>DefaultsRegistry</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139141.html#refclass139141" target = "projectFrame"><b>DoAttach</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139269.html#refclass139269" target = "projectFrame"><b>DoRecurse</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137733.html#refclass137733" target = "projectFrame"><b>Effect</b></a></td><td></td><td>Effect or media processing component</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135557.html#refclass135557" target = "projectFrame"><b>Error</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -75,6 +74,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class128949.html#refclass128949" target = "projectFrame"><b>FrameDescriptor</b></a></td><td>interface</td><td>A FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128225.html#refclass128225" target = "projectFrame"><b>FrameReference</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133637.html#refclass133637" target = "projectFrame"><b>GLBuf</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134789.html#refclass134789" target = "projectFrame"><b>Interpolator</b></a></td><td></td><td>Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136069.html#refclass136069" target = "projectFrame"><b>Invalid</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -88,9 +88,11 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class136709.html#refclass136709" target = "projectFrame"><b>Media</b></a></td><td></td><td>key abstraction: media-like assets</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139525.html#refclass139525" target = "projectFrame"><b>MediaAccessFacade</b></a></td><td>boundary</td><td>provides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139397.html#refclass139397" target = "projectFrame"><b>MediaFactory</b></a></td><td></td><td>specialized Asset Factory for configuring (new) media asset instances based on existing media files on disk; can create placeholder assets as well</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145285.html#refclass145285" target = "projectFrame"><b>MediaKind</b></a></td><td>enum</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a></td><td></td><td>key abstraction: metadata and organisational asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td></td><td>I provided a reworked Mutex class in my Cinelerra2 repository</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a></td><td></td><td>This Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143365.html#refclass143365" target = "projectFrame"><b>NodeWiring</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -100,6 +102,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a></td><td></td><td>While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138117.html#refclass138117" target = "projectFrame"><b>Pipe</b></a></td><td></td><td>structural asset representing a basic building block within the high level model: a port for building a processing chain and generating media output</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a></td><td>interface</td><td>used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative). <br />Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140421.html#refclass140421" target = "projectFrame"><b>Plug</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132485.html#refclass132485" target = "projectFrame"><b>PluginAdapter</b></a></td><td></td><td>Adapter used to integrage an effects processor in the render pipeline</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129077.html#refclass129077" target = "projectFrame"><b>Prefetch</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -110,7 +114,9 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class131461.html#refclass131461" target = "projectFrame"><b>Processor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131717.html#refclass131717" target = "projectFrame"><b>ProcNode</b></a></td><td>interface</td><td>Key abstraction of the Render Engine: A Data processing Node</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138757.html#refclass138757" target = "projectFrame"><b>ProcPatt</b></a></td><td></td><td>special type of structural Asset representing information how to build some part of the render engine's processing nodes network.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145669.html#refclass145669" target = "projectFrame"><b>Project</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132229.html#refclass132229" target = "projectFrame"><b>Projector</b></a></td><td></td><td>Special video processing node used to scale and translate image data.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144901.html#refclass144901" target = "projectFrame"><b>Prototype</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143749.html#refclass143749" target = "projectFrame"><b>PullInput</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a></td><td>interface</td><td></td></tr>
|
||||
|
|
@ -120,10 +126,13 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a></td><td>enum</td><td>the possible kinds of RelativePlacements</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131333.html#refclass131333" target = "projectFrame"><b>RenderEngine</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130949.html#refclass130949" target = "projectFrame"><b>RenderState</b></a></td><td></td><td>Encapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140933.html#refclass140933" target = "projectFrame"><b>ResolverBase</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refclass134277" target = "projectFrame"><b>SegmentationTool</b></a></td><td></td><td>Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a></td><td>actor</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a></td><td></td><td>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128005.html#refclass128005" target = "projectFrame"><b>SessionImpl</b></a></td><td></td><td>Implementation class for the Session interface</td></tr>
|
||||
|
|
@ -137,9 +146,14 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class142469.html#refclass142469" target = "projectFrame"><b>StateProxy</b></a></td><td>implementation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136325.html#refclass136325" target = "projectFrame"><b>std::exception</b></a></td><td>auxiliary</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144517.html#refclass144517" target = "projectFrame"><b>Strategy</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144773.html#refclass144773" target = "projectFrame"><b>StreamType</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145157.html#refclass145157" target = "projectFrame"><b>StreamTypeID</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136965.html#refclass136965" target = "projectFrame"><b>Struct</b></a></td><td></td><td>key abstraction: structural asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145413.html#refclass145413" target = "projectFrame"><b>STypeManager</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td></td><td>We can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134917.html#refclass134917" target = "projectFrame"><b>Time</b></a></td><td></td><td>denotes a temporal position (time point), based on timeline start.<br /><br />investigate posix.4 realtime timers, wrap these here</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145541.html#refclass145541" target = "projectFrame"><b>Timeline</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145797.html#refclass145797" target = "projectFrame"><b>TimelineView</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140037.html#refclass140037" target = "projectFrame"><b>Tool</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130693.html#refclass130693" target = "projectFrame"><b>ToolFactory</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137989.html#refclass137989" target = "projectFrame"><b>Track</b></a></td><td></td><td>structural asset holding the configuration of a track in the EDL</td></tr>
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
<a href="class141573.html#refclass141573" target = "projectFrame"><b>DefaultsRegistry</b></a><br />
|
||||
<a href="class139141.html#refclass139141" target = "projectFrame"><b>DoAttach</b></a><br />
|
||||
<a href="class139269.html#refclass139269" target = "projectFrame"><b>DoRecurse</b></a><br />
|
||||
<a href="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a><br />
|
||||
<a href="class137733.html#refclass137733" target = "projectFrame"><b>Effect</b></a><br />
|
||||
<a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a><br />
|
||||
<a href="class135557.html#refclass135557" target = "projectFrame"><b>Error</b></a><br />
|
||||
|
|
@ -76,6 +75,7 @@
|
|||
<a href="class128949.html#refclass128949" target = "projectFrame"><b>FrameDescriptor</b></a><br />
|
||||
<a href="class128225.html#refclass128225" target = "projectFrame"><b>FrameReference</b></a><br />
|
||||
<a href="class133637.html#refclass133637" target = "projectFrame"><b>GLBuf</b></a><br />
|
||||
<a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a><br />
|
||||
<a href="class134789.html#refclass134789" target = "projectFrame"><b>Interpolator</b></a><br />
|
||||
<a href="class136069.html#refclass136069" target = "projectFrame"><b>Invalid</b></a><br />
|
||||
<a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a><br />
|
||||
|
|
@ -89,9 +89,11 @@
|
|||
<a href="class136709.html#refclass136709" target = "projectFrame"><b>Media</b></a><br />
|
||||
<a href="class139525.html#refclass139525" target = "projectFrame"><b>MediaAccessFacade</b></a><br />
|
||||
<a href="class139397.html#refclass139397" target = "projectFrame"><b>MediaFactory</b></a><br />
|
||||
<a href="class145285.html#refclass145285" target = "projectFrame"><b>MediaKind</b></a><br />
|
||||
<a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a><br />
|
||||
<a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a><br />
|
||||
<a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a><br />
|
||||
<a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a><br />
|
||||
<a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a><br />
|
||||
<a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a><br />
|
||||
<a href="class143365.html#refclass143365" target = "projectFrame"><b>NodeWiring</b></a><br />
|
||||
|
|
@ -101,6 +103,8 @@
|
|||
<a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a><br />
|
||||
<a href="class138117.html#refclass138117" target = "projectFrame"><b>Pipe</b></a><br />
|
||||
<a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a><br />
|
||||
<a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a><br />
|
||||
<a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a><br />
|
||||
<a href="class140421.html#refclass140421" target = "projectFrame"><b>Plug</b></a><br />
|
||||
<a href="class132485.html#refclass132485" target = "projectFrame"><b>PluginAdapter</b></a><br />
|
||||
<a href="class129077.html#refclass129077" target = "projectFrame"><b>Prefetch</b></a><br />
|
||||
|
|
@ -111,7 +115,9 @@
|
|||
<a href="class131461.html#refclass131461" target = "projectFrame"><b>Processor</b></a><br />
|
||||
<a href="class131717.html#refclass131717" target = "projectFrame"><b>ProcNode</b></a><br />
|
||||
<a href="class138757.html#refclass138757" target = "projectFrame"><b>ProcPatt</b></a><br />
|
||||
<a href="class145669.html#refclass145669" target = "projectFrame"><b>Project</b></a><br />
|
||||
<a href="class132229.html#refclass132229" target = "projectFrame"><b>Projector</b></a><br />
|
||||
<a href="class144901.html#refclass144901" target = "projectFrame"><b>Prototype</b></a><br />
|
||||
<a href="class143749.html#refclass143749" target = "projectFrame"><b>PullInput</b></a><br />
|
||||
<a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a><br />
|
||||
<a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a><br />
|
||||
|
|
@ -121,10 +127,13 @@
|
|||
<a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a><br />
|
||||
<a href="class131333.html#refclass131333" target = "projectFrame"><b>RenderEngine</b></a><br />
|
||||
<a href="class130949.html#refclass130949" target = "projectFrame"><b>RenderState</b></a><br />
|
||||
<a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a><br />
|
||||
<a href="class140933.html#refclass140933" target = "projectFrame"><b>ResolverBase</b></a><br />
|
||||
<a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a><br />
|
||||
<a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a><br />
|
||||
<a href="class134277.html#refclass134277" target = "projectFrame"><b>SegmentationTool</b></a><br />
|
||||
<a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a><br />
|
||||
<a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a><br />
|
||||
<a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a><br />
|
||||
<a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a><br />
|
||||
<a href="class128005.html#refclass128005" target = "projectFrame"><b>SessionImpl</b></a><br />
|
||||
|
|
@ -138,9 +147,14 @@
|
|||
<a href="class142469.html#refclass142469" target = "projectFrame"><b>StateProxy</b></a><br />
|
||||
<a href="class136325.html#refclass136325" target = "projectFrame"><b>std::exception</b></a><br />
|
||||
<a href="class144517.html#refclass144517" target = "projectFrame"><b>Strategy</b></a><br />
|
||||
<a href="class144773.html#refclass144773" target = "projectFrame"><b>StreamType</b></a><br />
|
||||
<a href="class145157.html#refclass145157" target = "projectFrame"><b>StreamTypeID</b></a><br />
|
||||
<a href="class136965.html#refclass136965" target = "projectFrame"><b>Struct</b></a><br />
|
||||
<a href="class145413.html#refclass145413" target = "projectFrame"><b>STypeManager</b></a><br />
|
||||
<a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a><br />
|
||||
<a href="class134917.html#refclass134917" target = "projectFrame"><b>Time</b></a><br />
|
||||
<a href="class145541.html#refclass145541" target = "projectFrame"><b>Timeline</b></a><br />
|
||||
<a href="class145797.html#refclass145797" target = "projectFrame"><b>TimelineView</b></a><br />
|
||||
<a href="class140037.html#refclass140037" target = "projectFrame"><b>Tool</b></a><br />
|
||||
<a href="class130693.html#refclass130693" target = "projectFrame"><b>ToolFactory</b></a><br />
|
||||
<a href="class137989.html#refclass137989" target = "projectFrame"><b>Track</b></a><br />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 63 KiB |
BIN
doc/devel/uml/fig132485.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
doc/devel/uml/fig132741.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -36,7 +36,7 @@ Documentation</title>
|
|||
<p>required classes : <a href="class128261.html#refclass128261"><b>Fixture</b></a>, <a href="class128005.html#refclass128005"><b>SessionImpl</b></a></p>
|
||||
<a name="refcomponent128133"></a>
|
||||
<table><tr><td><div class="element">Component <b>Session</b></div></td></tr></table>
|
||||
<p>provided classes : <a href="class128133.html#refclass128133"><b>EDL</b></a>, <a href="class128261.html#refclass128261"><b>Fixture</b></a>, <a href="class128517.html#refclass128517"><b>MObject</b></a>, <a href="class134661.html#refclass134661"><b>ParamProvider</b></a>, <a href="class128005.html#refclass128005"><b>SessionImpl</b></a></p>
|
||||
<p>provided classes : <a href="class128133.html#refclass128133"><b>Seq</b></a>, <a href="class128261.html#refclass128261"><b>Fixture</b></a>, <a href="class128517.html#refclass128517"><b>MObject</b></a>, <a href="class134661.html#refclass134661"><b>ParamProvider</b></a>, <a href="class128005.html#refclass128005"><b>SessionImpl</b></a></p>
|
||||
<div class="sub">
|
||||
<a name="refcomponent128389"></a>
|
||||
<table><tr><td><div class="element">Component <b>EDL</b></div></td></tr></table>
|
||||
|
|
@ -83,8 +83,21 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Component <b>client code</b></div></td></tr></table>
|
||||
<p>required classes : <a href="class141957.html#refclass141957"><b>ProcDispatcher</b></a></p>
|
||||
</div>
|
||||
<a name="refclass view129413"></a>
|
||||
<h2 class ="view">1.2 Class View Project Entities</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram132741"></a>
|
||||
<p align="center"><img src="fig132741.png" alt="" /></p>
|
||||
<p align="center"><b>TimelineSequences</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145669.html#refclass145669"><b>Project</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145925.html#refclass145925"><b>PlayControl</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class146053.html#refclass146053"><b>Monitor</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class146181.html#refclass146181"><b>RenderTask</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class146309.html#refclass146309"><b>Sequence</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class146437.html#refclass146437"><b>PlayheadCursor</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refcomponent view128133"></a>
|
||||
<h2 class ="view">1.2 Component View interfaces</h2>
|
||||
<h2 class ="view">1.3 Component View interfaces</h2>
|
||||
<div class="sub">
|
||||
<a name="refcomponent diagram130053"></a>
|
||||
<p align="center"><img src="fig130053.png" alt="" /></p>
|
||||
|
|
@ -104,10 +117,10 @@ Documentation</title>
|
|||
<p>provided classes : <a href="class139525.html#refclass139525"><b>MediaAccessFacade</b></a></p>
|
||||
</div>
|
||||
<a name="refpackage128645"></a>
|
||||
<h2 class ="package">1.3 Package codegen</h2>
|
||||
<h2 class ="package">1.4 Package codegen</h2>
|
||||
<p>This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.<br /></p><div class="sub">
|
||||
<a name="refdeployment view128133"></a>
|
||||
<h3 class ="view">1.3.1 Deployment View EXE Deployment</h3>
|
||||
<h3 class ="view">1.4.1 Deployment View EXE Deployment</h3>
|
||||
<p>defines and lists how the Lumiera executable has to be created<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refdeployment diagram129797"></a>
|
||||
|
|
@ -122,14 +135,14 @@ Documentation</title>
|
|||
<p>Artifact <i>source</i></p>
|
||||
</div>
|
||||
<a name="refpackage129413"></a>
|
||||
<h3 class ="package">1.3.2 Package common</h3>
|
||||
<h3 class ="package">1.4.2 Package common</h3>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : lumiera</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />Common library and helper classes<br /></p><p>Diagram : <a href="index.html#refdeployment diagram129797"><b>Source Overview</b></a></p>
|
||||
<div class="sub">
|
||||
<a name="refdeployment view128261"></a>
|
||||
<h4 class ="view">1.3.2.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.2.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact139141"></a>
|
||||
|
|
@ -148,26 +161,29 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Artifact <b>time</b></div></td></tr></table>
|
||||
<p>unified representation of a time point, including conversion functions<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class134917.html#refclass134917"><b>Time</b></a></p>
|
||||
<a name="refartifact139653"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>streamtype</b></div></td></tr></table>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class144773.html#refclass144773"><b>StreamType</b></a>, <a href="class144901.html#refclass144901"><b>Prototype</b></a>, <a href="class145029.html#refclass145029"><b>ImplFacade</b></a></p>
|
||||
</div>
|
||||
<a name="refpackage130821"></a>
|
||||
<h4 class ="package">1.3.2.2 Package error</h4>
|
||||
<h4 class ="package">1.4.2.2 Package error</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : lumiera::error</li>
|
||||
</ul>
|
||||
<p>Namespace for Exception Kinds<br /></p><a name="refpackage130949"></a>
|
||||
<h4 class ="package">1.3.2.3 Package visitor</h4>
|
||||
<h4 class ="package">1.4.2.3 Package visitor</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : lumiera::visitor</li>
|
||||
</ul>
|
||||
<p>sub-namespace for visitor library implementation<br /></p></div>
|
||||
<a name="refpackage129541"></a>
|
||||
<h3 class ="package">1.3.3 Package backend</h3>
|
||||
<h3 class ="package">1.4.3 Package backend</h3>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : backend_interface</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />Data backend classes here...<br /></p><div class="sub">
|
||||
<a name="refdeployment view128389"></a>
|
||||
<h4 class ="view">1.3.3.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.3.1 Deployment View gen</h4>
|
||||
<div class="sub">
|
||||
<a name="refartifact138629"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>mediaaccessfacade</b></div></td></tr></table>
|
||||
|
|
@ -176,13 +192,13 @@ Documentation</title>
|
|||
</div>
|
||||
</div>
|
||||
<a name="refpackage129669"></a>
|
||||
<h3 class ="package">1.3.4 Package proc</h3>
|
||||
<h3 class ="package">1.4.4 Package proc</h3>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : proc_interface</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />All classes belonging to the (middle) processing layer<br /></p><div class="sub">
|
||||
<a name="refdeployment view128517"></a>
|
||||
<h4 class ="view">1.3.4.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact136197"></a>
|
||||
|
|
@ -207,13 +223,13 @@ Documentation</title>
|
|||
<p>Artifact <i>source</i> associated with : <a href="class133253.html#refclass133253"><b>Frame</b></a></p>
|
||||
</div>
|
||||
<a name="refpackage130053"></a>
|
||||
<h4 class ="package">1.3.4.2 Package asset</h4>
|
||||
<h4 class ="package">1.4.4.2 Package asset</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : asset</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />Asset Management<br /></p><div class="sub">
|
||||
<a name="refdeployment view128645"></a>
|
||||
<h4 class ="view">1.3.4.2.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.2.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact137733"></a>
|
||||
|
|
@ -286,14 +302,37 @@ Documentation</title>
|
|||
<p>Artifact <i>source</i> associated with : <a href="class138373.html#refclass138373"><b>DB</b></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage130693"></a>
|
||||
<h4 class ="package">1.4.4.3 Package control</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : control</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />The Processing and Render Controller,<br />and the Proc-Layer dispatcher<br /></p><div class="sub">
|
||||
<a name="refdeployment view129157"></a>
|
||||
<h4 class ="view">1.4.4.3.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact131717"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>pathmanager</b></div></td></tr></table>
|
||||
<p>Manager for deciding the actual render strategy<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class130437.html#refclass130437"><b>PathManager</b></a></p>
|
||||
<a name="refartifact131845"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>renderstate</b></div></td></tr></table>
|
||||
<p>renderengine state manager<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class130949.html#refclass130949"><b>RenderState</b></a></p>
|
||||
<a name="refartifact139781"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>stypemanager</b></div></td></tr></table>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class145413.html#refclass145413"><b>STypeManager</b></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage130181"></a>
|
||||
<h4 class ="package">1.3.4.3 Package mobject</h4>
|
||||
<h4 class ="package">1.4.4.4 Package mobject</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : mobject</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller<br /></p><div class="sub">
|
||||
<a name="refdeployment view128773"></a>
|
||||
<h4 class ="view">1.3.4.3.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.4.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact138757"></a>
|
||||
|
|
@ -334,13 +373,13 @@ Documentation</title>
|
|||
<p>Artifact <i>source</i> associated with : <a href="class134789.html#refclass134789"><b>Interpolator</b></a></p>
|
||||
</div>
|
||||
<a name="refpackage130437"></a>
|
||||
<h4 class ="package">1.3.4.3.2 Package session</h4>
|
||||
<h4 class ="package">1.4.4.4.2 Package session</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : mobject::session</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />Everything concerning the EDL and Session, within the MObject Subsystem<br /></p><div class="sub">
|
||||
<a name="refdeployment view128901"></a>
|
||||
<h4 class ="view">1.3.4.3.2.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.4.2.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact128517"></a>
|
||||
|
|
@ -354,7 +393,7 @@ Documentation</title>
|
|||
<a name="refartifact128645"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>edl</b></div></td></tr></table>
|
||||
<p>the (high level) Edit Decision List within the current Session<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class128133.html#refclass128133"><b>EDL</b></a></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class128133.html#refclass128133"><b>Seq</b></a></p>
|
||||
<a name="refartifact128773"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>fixture</b></div></td></tr></table>
|
||||
<p>the (low level) representation of the EDL with concrete placement data<br /></p>
|
||||
|
|
@ -428,13 +467,13 @@ Documentation</title>
|
|||
</div>
|
||||
</div>
|
||||
<a name="refpackage130565"></a>
|
||||
<h4 class ="package">1.3.4.3.3 Package builder</h4>
|
||||
<h4 class ="package">1.4.4.4.3 Package builder</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : mobject::builder</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem<br /></p><div class="sub">
|
||||
<a name="refdeployment view129029"></a>
|
||||
<h4 class ="view">1.3.4.3.3.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.4.3.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact130565"></a>
|
||||
|
|
@ -463,35 +502,15 @@ Documentation</title>
|
|||
<p>Artifact <i>source</i> associated with : <a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage130693"></a>
|
||||
<h4 class ="package">1.3.4.3.4 Package controller</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : mobject::controller</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem<br /></p><div class="sub">
|
||||
<a name="refdeployment view129157"></a>
|
||||
<h4 class ="view">1.3.4.3.4.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact131717"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>pathmanager</b></div></td></tr></table>
|
||||
<p>Manager for deciding the actual render strategy<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class130437.html#refclass130437"><b>PathManager</b></a></p>
|
||||
<a name="refartifact131845"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>renderstate</b></div></td></tr></table>
|
||||
<p>renderengine state manager<br /></p>
|
||||
<p>Artifact <i>source</i> associated with : <a href="class130949.html#refclass130949"><b>RenderState</b></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage130309"></a>
|
||||
<h4 class ="package">1.3.4.4 Package engine</h4>
|
||||
<h4 class ="package">1.4.4.5 Package engine</h4>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : engine</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />The Core Render Engine<br /></p><div class="sub">
|
||||
<a name="refdeployment view129285"></a>
|
||||
<h4 class ="view">1.3.4.4.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.4.5.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
<div class="sub">
|
||||
<a name="refartifact131973"></a>
|
||||
|
|
@ -574,20 +593,20 @@ Documentation</title>
|
|||
</div>
|
||||
</div>
|
||||
<a name="refpackage129797"></a>
|
||||
<h3 class ="package">1.3.5 Package gui</h3>
|
||||
<h3 class ="package">1.4.5 Package gui</h3>
|
||||
<p></p><ul>
|
||||
<li>C++ namespace : gui</li>
|
||||
</ul>
|
||||
<p>sourcecode package<br /><br />User Interface classes go here<br /></p><div class="sub">
|
||||
<a name="refdeployment view129413"></a>
|
||||
<h4 class ="view">1.3.5.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.5.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
</div>
|
||||
<a name="refpackage129925"></a>
|
||||
<h3 class ="package">1.3.6 Package tool</h3>
|
||||
<h3 class ="package">1.4.6 Package tool</h3>
|
||||
<p>sourcecode package<br /><br />Tools and Utilities <br />(separate from the main cinelrra binary)<br /></p><div class="sub">
|
||||
<a name="refdeployment view129541"></a>
|
||||
<h4 class ="view">1.3.6.1 Deployment View gen</h4>
|
||||
<h4 class ="view">1.4.6.1 Deployment View gen</h4>
|
||||
<p>defines source files to be generated by BOUML<br /></p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -637,11 +656,69 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class139269.html#refclass139269"><b>DoRecurse</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage129029"></a>
|
||||
<h2 class ="package">2.2 Package Control</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass view128389"></a>
|
||||
<h3 class ="view">2.2.1 Class View Controller Workings</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram128645"></a>
|
||||
<p align="center"><img src="fig128645.png" alt="" /></p>
|
||||
<p align="center"><b>Controller Entities</b></p><p><br /></p><p><br /></p>
|
||||
<a name="refactivity128133"></a>
|
||||
<h4 class ="activity">2.2.1.1 Activity configure Render</h4>
|
||||
<p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><div class="sub">
|
||||
<a name="refactivity diagram129541"></a>
|
||||
<p align="center"><img src="fig129541.png" alt="" /></p>
|
||||
<p align="center"><b>the render configuration flow</b></p><p><br /></p><p><br /></p>
|
||||
<a name="refactivity parameter128005"></a>
|
||||
<table><tr><td><div class="element">Activity action pin <b>Render Request</b></div></td></tr></table>
|
||||
<p>Direction : input</p><p>Type : </p><p>Selection :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refactivity parameter128005"><b>Render Request</b></a> To <a href="index.html#refopaque activity action128389"><b>determine Render Params</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128133"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>setup StateProxy</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128133"><b>setup StateProxy</b></a> To <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refdecision activity node128389"></a>
|
||||
<a name="refdecision activity node128389"></a>
|
||||
<table><tr><td><div class="element">Decision activity node <b>build necessary?</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a> To <a href="index.html#refopaque activity action128517"><b>build Render Engine</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul><li>OCL : <pre>
|
||||
build necessary</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul><table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a> To <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul><li>OCL : <pre>
|
||||
reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128005"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>setup Build Params</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><a name="refmerge activity node128773"></a>
|
||||
<a name="refmerge activity node128773"></a>
|
||||
<table><tr><td><div class="element">Merge activity node <b></b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a> To <a href="index.html#refactivity final128901"><b>activity final</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128005"></a>
|
||||
<h4 class ="expansionregion">2.2.1.1.1 Expansion region determine Render Params</h4>
|
||||
<a name="refopaque activity action128389"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>determine Render Params</b></div></td></tr></table>
|
||||
<p>Diagram : <a href="index.html#refactivity diagram129541"><b>the render configuration flow</b></a></p>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128389"><b>determine Render Params</b></a> To <a href="index.html#refopaque activity action128133"><b>setup StateProxy</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128517"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>build Render Engine</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128517"><b>build Render Engine</b></a> To <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refactivity final128901"></a>
|
||||
<a name="refactivity final128901"></a>
|
||||
<table><tr><td><div class="element">Activity final <b></b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p></div>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130309.html#refclass130309"><b>ControllerFacade</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130437.html#refclass130437"><b>PathManager</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130949.html#refclass130949"><b>RenderState</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145413.html#refclass145413"><b>STypeManager</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage128261"></a>
|
||||
<h2 class ="package">2.2 Package MObject</h2>
|
||||
<h2 class ="package">2.3 Package MObject</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass view128005"></a>
|
||||
<h3 class ="view">2.2.1 Class View Session</h3>
|
||||
<h3 class ="view">2.3.1 Class View Session</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram128133"></a>
|
||||
<p align="center"><img src="fig128133.png" alt="" /></p>
|
||||
|
|
@ -649,7 +726,9 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class139653.html#refclass139653"><b>Session</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class128005.html#refclass128005"><b>SessionImpl</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class139781.html#refclass139781"><b>SessManager</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class128133.html#refclass128133"><b>EDL</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145541.html#refclass145541"><b>Timeline</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145797.html#refclass145797"><b>TimelineView</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class128133.html#refclass128133"><b>Seq</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class128261.html#refclass128261"><b>Fixture</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class135173.html#refclass135173"><b>Segment</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class128389.html#refclass128389"><b>Track</b></a></b></div></td></tr></table>
|
||||
|
|
@ -677,16 +756,16 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class141957.html#refclass141957"><b>ProcDispatcher</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refpackage128901"></a>
|
||||
<h3 class ="package">2.2.2 Package Builder</h3>
|
||||
<h3 class ="package">2.3.2 Package Builder</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass view128261"></a>
|
||||
<h4 class ="view">2.2.2.1 Class View Builder Workings</h4>
|
||||
<h4 class ="view">2.3.2.1 Class View Builder Workings</h4>
|
||||
<div class="sub">
|
||||
<a name="refcollaboration diagram128517"></a>
|
||||
<p align="center"><img src="fig128517.png" alt="" /></p>
|
||||
<p align="center"><b>build process</b></p><p><br /></p><p><br /></p>
|
||||
<p>This figure shows the process of building and starting a RenderEngine<br /></p><a name="refactivity128005"></a>
|
||||
<h4 class ="activity">2.2.2.1.1 Activity building the Engine</h4>
|
||||
<h4 class ="activity">2.3.2.1.1 Activity building the Engine</h4>
|
||||
<p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><div class="sub">
|
||||
<a name="refactivity diagram129413"></a>
|
||||
<p align="center"><img src="fig129413.png" alt="" /></p>
|
||||
|
|
@ -700,7 +779,7 @@ Documentation</title>
|
|||
<p>Defined in <a href="index.html#refactivity128005"><b>building the Engine</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128645"><b>configure Tools</b></a> To <a href="index.html#reffork activity node129029"><b>fork activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128133"></a>
|
||||
<h4 class ="expansionregion">2.2.2.1.1.1 Expansion region establish partitioning</h4>
|
||||
<h4 class ="expansionregion">2.3.2.1.1.1 Expansion region establish partitioning</h4>
|
||||
<div class="sub">
|
||||
<a name="refopaque activity action128773"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>define segment</b></div></td></tr></table>
|
||||
|
|
@ -727,7 +806,7 @@ Documentation</title>
|
|||
<p>Defined in <a href="index.html#refactivity128005"><b>building the Engine</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#reffork activity node129029"><b>fork activity node</b></a> To <a href="index.html#refactivity object128005"><b>segment Tool</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul><table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#reffork activity node129029"><b>fork activity node</b></a> To <a href="index.html#refactivity object128261"><b>build Tool</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128261"></a>
|
||||
<h4 class ="expansionregion">2.2.2.1.1.2 Expansion region build Processors</h4>
|
||||
<h4 class ="expansionregion">2.3.2.1.1.2 Expansion region build Processors</h4>
|
||||
<div class="sub">
|
||||
<a name="refactivity object128261"></a>
|
||||
<table><tr><td><div class="element">Activity object <b>build Tool</b></div></td></tr></table>
|
||||
|
|
@ -771,65 +850,8 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage129029"></a>
|
||||
<h3 class ="package">2.2.3 Package Controller</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass view128389"></a>
|
||||
<h4 class ="view">2.2.3.1 Class View Controller Workings</h4>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram128645"></a>
|
||||
<p align="center"><img src="fig128645.png" alt="" /></p>
|
||||
<p align="center"><b>Controller Entities</b></p><p><br /></p><p><br /></p>
|
||||
<a name="refactivity128133"></a>
|
||||
<h4 class ="activity">2.2.3.1.1 Activity configure Render</h4>
|
||||
<p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><div class="sub">
|
||||
<a name="refactivity diagram129541"></a>
|
||||
<p align="center"><img src="fig129541.png" alt="" /></p>
|
||||
<p align="center"><b>the render configuration flow</b></p><p><br /></p><p><br /></p>
|
||||
<a name="refactivity parameter128005"></a>
|
||||
<table><tr><td><div class="element">Activity action pin <b>Render Request</b></div></td></tr></table>
|
||||
<p>Direction : input</p><p>Type : </p><p>Selection :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refactivity parameter128005"><b>Render Request</b></a> To <a href="index.html#refopaque activity action128389"><b>determine Render Params</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128133"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>setup StateProxy</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128133"><b>setup StateProxy</b></a> To <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refdecision activity node128389"></a>
|
||||
<a name="refdecision activity node128389"></a>
|
||||
<table><tr><td><div class="element">Decision activity node <b>build necessary?</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a> To <a href="index.html#refopaque activity action128517"><b>build Render Engine</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul><li>OCL : <pre>
|
||||
build necessary</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul><table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refdecision activity node128389"><b>build necessary?</b></a> To <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul><li>OCL : <pre>
|
||||
reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128005"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>setup Build Params</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><a name="refmerge activity node128773"></a>
|
||||
<a name="refmerge activity node128773"></a>
|
||||
<table><tr><td><div class="element">Merge activity node <b></b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a> To <a href="index.html#refactivity final128901"><b>activity final</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128005"></a>
|
||||
<h4 class ="expansionregion">2.2.3.1.1.1 Expansion region determine Render Params</h4>
|
||||
<a name="refopaque activity action128389"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>determine Render Params</b></div></td></tr></table>
|
||||
<p>Diagram : <a href="index.html#refactivity diagram129541"><b>the render configuration flow</b></a></p>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128389"><b>determine Render Params</b></a> To <a href="index.html#refopaque activity action128133"><b>setup StateProxy</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refopaque activity action128517"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>build Render Engine</b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128517"><b>build Render Engine</b></a> To <a href="index.html#refmerge activity node128773"><b>merge activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refactivity final128901"></a>
|
||||
<a name="refactivity final128901"></a>
|
||||
<table><tr><td><div class="element">Activity final <b></b></div></td></tr></table>
|
||||
<p>Defined in <a href="index.html#refactivity128133"><b>configure Render</b></a></p></div>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130309.html#refclass130309"><b>ControllerFacade</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130437.html#refclass130437"><b>PathManager</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130949.html#refclass130949"><b>RenderState</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refuse case view128261"></a>
|
||||
<h3 class ="view">2.2.4 Use Case View config examples</h3>
|
||||
<h3 class ="view">2.3.3 Use Case View config examples</h3>
|
||||
<div class="sub">
|
||||
<a name="refobject diagram131333"></a>
|
||||
<p align="center"><img src="fig131333.png" alt="" /></p>
|
||||
|
|
@ -847,10 +869,10 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class128645.html#refclass128645"><b>Placement</b></a></p></div>
|
||||
</div>
|
||||
<a name="refpackage128389"></a>
|
||||
<h2 class ="package">2.3 Package RenderEngine</h2>
|
||||
<h2 class ="package">2.4 Package RenderEngine</h2>
|
||||
<div class="sub">
|
||||
<a name="refdeployment view128005"></a>
|
||||
<h3 class ="view">2.3.1 Deployment View Engine Parts</h3>
|
||||
<h3 class ="view">2.4.1 Deployment View Engine Parts</h3>
|
||||
<div class="sub">
|
||||
<a name="refdeployment diagram128261"></a>
|
||||
<p align="center"><img src="fig128261.png" alt="" /></p>
|
||||
|
|
@ -869,7 +891,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Node <b>State</b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128133"></a>
|
||||
<h3 class ="view">2.3.2 Class View Engine Workings</h3>
|
||||
<h3 class ="view">2.4.2 Class View Engine Workings</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram128389"></a>
|
||||
<p align="center"><img src="fig128389.png" alt="" /></p>
|
||||
|
|
@ -915,7 +937,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
</div>
|
||||
</div>
|
||||
<a name="refuse case view128005"></a>
|
||||
<h2 class ="view">2.4 Use Case View Renderengine Use</h2>
|
||||
<h2 class ="view">2.5 Use Case View Renderengine Use</h2>
|
||||
<div class="sub">
|
||||
<a name="refobject diagram128773"></a>
|
||||
<p align="center"><img src="fig128773.png" alt="" /></p>
|
||||
|
|
@ -943,11 +965,9 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class instance <b>video1</div></td></tr></table><p>type :<a href="class128389.html#refclass128389"><b>Track</b></a></p><a name="refclass instance128645"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>vid_A</div></td></tr></table><p>type :<a href="class128901.html#refclass128901"><b>Clip</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 5</li>
|
||||
<li><a href="class128901.html#refattribute128645"><b>start</b></a> = 100</li>
|
||||
</ul></p><a name="refclass instance128773"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>aud_A</div></td></tr></table><p>type :<a href="class128901.html#refclass128901"><b>Clip</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 8820</li>
|
||||
<li><a href="class128901.html#refattribute128645"><b>start</b></a> = 176400</li>
|
||||
</ul></p><a name="refclass instance128901"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>audio1</div></td></tr></table><p>type :<a href="class128389.html#refclass128389"><b>Track</b></a></p><a name="refclass instance129029"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a></p><p>attributes :<ul>
|
||||
|
|
@ -958,9 +978,8 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class128261.html#refclass128261"><b>Fixture</b></a></p><a name="refclass instance129413"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>vid_A</div></td></tr></table><p>type :<a href="class128901.html#refclass128901"><b>Clip</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 5</li>
|
||||
<li><a href="class128901.html#refattribute128645"><b>start</b></a> = 100</li>
|
||||
</ul></p><a name="refclass instance129541"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class128133.html#refclass128133"><b>EDL</b></a></p><a name="refclass instance129669"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class128133.html#refclass128133"><b>Seq</b></a></p><a name="refclass instance129669"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>refPoint</div></td></tr></table><p>type :<a href="class129669.html#refclass129669"><b>Label</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 0</li>
|
||||
</ul></p><a name="refclass instance129797"></a>
|
||||
|
|
@ -969,7 +988,6 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
</ul></p><a name="refclass instance129925"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>vid_A</div></td></tr></table><p>type :<a href="class128901.html#refclass128901"><b>Clip</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 5</li>
|
||||
<li><a href="class128901.html#refattribute128645"><b>start</b></a> = 100</li>
|
||||
</ul></p><a name="refclass instance130053"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129413.html#refclass129413"><b>RelativeLocation</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class129413.html#refattribute128133"><b>relType</b></a> = SAMETIME</li>
|
||||
|
|
@ -978,7 +996,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
</ul></p><a name="refclass instance130181"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129029.html#refclass129029"><b>Effect</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 3</li>
|
||||
<li><a href="class129029.html#refattribute128901"><b>plugID</b></a> = "Hue"</li>
|
||||
<li><a href="class129029.html#refattribute128901"><b>plugin</b></a> = "Hue"</li>
|
||||
</ul></p><a name="refclass instance130309"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129413.html#refclass129413"><b>RelativeLocation</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class129413.html#refattribute129029"><b>offset</b></a> = +3</li>
|
||||
|
|
@ -988,7 +1006,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
</ul></p><a name="refclass instance130437"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129029.html#refclass129029"><b>Effect</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class128517.html#refattribute128517"><b>length</b></a> = 3</li>
|
||||
<li><a href="class129029.html#refattribute128901"><b>plugID</b></a> = "Hue"</li>
|
||||
<li><a href="class129029.html#refattribute128901"><b>plugin</b></a> = "Hue"</li>
|
||||
</ul></p><a name="refclass instance130565"></a>
|
||||
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a></p><p>attributes :<ul>
|
||||
<li><a href="class129797.html#refattribute128261"><b>time</b></a> = 5</li>
|
||||
|
|
@ -1162,11 +1180,23 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<p>GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft<br /></p><a name="refpackage128517"></a>
|
||||
<h1 class ="package">5 Package CommonLib</h1>
|
||||
<div class="sub">
|
||||
<a name="refclass view129285"></a>
|
||||
<h2 class ="view">5.1 Class View StreamType</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram132485"></a>
|
||||
<p align="center"><img src="fig132485.png" alt="" /></p>
|
||||
<p align="center"><b>Stream Type Framework</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class144773.html#refclass144773"><b>StreamType</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class144901.html#refclass144901"><b>Prototype</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145029.html#refclass145029"><b>ImplFacade</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145157.html#refclass145157"><b>StreamTypeID</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class145285.html#refclass145285"><b>MediaKind</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refpackage131077"></a>
|
||||
<h2 class ="package">5.1 Package ConfigQuery</h2>
|
||||
<h2 class ="package">5.2 Package ConfigQuery</h2>
|
||||
<div class="sub">
|
||||
<a name="refcomponent view128261"></a>
|
||||
<h3 class ="view">5.1.1 Component View Query System overview</h3>
|
||||
<h3 class ="view">5.2.1 Component View Query System overview</h3>
|
||||
<div class="sub">
|
||||
<a name="refcomponent diagram131589"></a>
|
||||
<p align="center"><img src="fig131589.png" alt="" /></p>
|
||||
|
|
@ -1182,7 +1212,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Component <b>DefaultsManager</b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view129157"></a>
|
||||
<h3 class ="view">5.1.2 Class View query</h3>
|
||||
<h3 class ="view">5.2.2 Class View query</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram131461"></a>
|
||||
<p align="center"><img src="fig131461.png" alt="" /></p>
|
||||
|
|
@ -1198,27 +1228,27 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class <b><a href="class141573.html#refclass141573"><b>DefaultsRegistry</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refuse case view128389"></a>
|
||||
<h3 class ="view">5.1.3 Use Case View query use</h3>
|
||||
<h3 class ="view">5.2.3 Use Case View query use</h3>
|
||||
<div class="sub">
|
||||
<a name="refuse case diagram131717"></a>
|
||||
<p align="center"><img src="fig131717.png" alt="" /></p>
|
||||
<p align="center"><b>when to query</b></p><p><br /></p><p><br /></p>
|
||||
<a name="refuse case128517"></a>
|
||||
<h4 class ="usecase">5.1.3.1 Use Case create specific object</h4>
|
||||
<h4 class ="usecase">5.2.3.1 Use Case create specific object</h4>
|
||||
<a name="refuse case128645"></a>
|
||||
<h4 class ="usecase">5.1.3.2 Use Case use "default" object</h4>
|
||||
<h4 class ="usecase">5.2.3.2 Use Case use "default" object</h4>
|
||||
<div class="sub">
|
||||
</div>
|
||||
<a name="refuse case128773"></a>
|
||||
<h4 class ="usecase">5.1.3.3 Use Case load object from session</h4>
|
||||
<h4 class ="usecase">5.2.3.3 Use Case load object from session</h4>
|
||||
<a name="refuse case128901"></a>
|
||||
<h4 class ="usecase">5.1.3.4 Use Case add new object to session</h4>
|
||||
<h4 class ="usecase">5.2.3.4 Use Case add new object to session</h4>
|
||||
<table><tr><td><div class="element">Class <b><a href="class141701.html#refclass141701"><b>User</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class141829.html#refclass141829"><b>Serializer</b></a></b></div></td></tr></table>
|
||||
<a name="refuse case129029"></a>
|
||||
<h4 class ="usecase">5.1.3.5 Use Case ConfigQuery</h4>
|
||||
<h4 class ="usecase">5.2.3.5 Use Case ConfigQuery</h4>
|
||||
<a name="refuse case129157"></a>
|
||||
<h4 class ="usecase">5.1.3.6 Use Case need sub object</h4>
|
||||
<h4 class ="usecase">5.2.3.6 Use Case need sub object</h4>
|
||||
<a name="refcollaboration diagram131845"></a>
|
||||
<p align="center"><img src="fig131845.png" alt="" /></p>
|
||||
<p align="center"><b>"default" object</b></p><p><br /></p><p><br /></p>
|
||||
|
|
@ -1226,7 +1256,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class instance <b>predicate impl</div></td></tr></table><p>type :<a href="class140805.html#refclass140805"><b>TypeHandler</b></a></p></div>
|
||||
</div>
|
||||
<a name="refclass view128773"></a>
|
||||
<h2 class ="view">5.2 Class View error</h2>
|
||||
<h2 class ="view">5.3 Class View error</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram130181"></a>
|
||||
<p align="center"><img src="fig130181.png" alt="" /></p>
|
||||
|
|
@ -1240,7 +1270,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class <b><a href="class136325.html#refclass136325"><b>std::exception</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128645"></a>
|
||||
<h2 class ="view">5.3 Class View Service Components</h2>
|
||||
<h2 class ="view">5.4 Class View Service Components</h2>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class140293.html#refclass140293"><b>Applicable</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class140037.html#refclass140037"><b>Tool</b></a></b></div></td></tr></table>
|
||||
|
|
@ -1250,7 +1280,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class <b><a href="class135429.html#refclass135429"><b>Appconfig</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128138"></a>
|
||||
<h2 class ="view">5.4 Class View Posix Threads Abstraction</h2>
|
||||
<h2 class ="view">5.5 Class View Posix Threads Abstraction</h2>
|
||||
<p>C++ wrapers for pthreads<br /></p>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class128138.html#refclass128138"><b>Thread</b></a></b></div></td></tr></table>
|
||||
|
|
@ -1258,7 +1288,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
|
|||
<table><tr><td><div class="element">Class <b><a href="class128394.html#refclass128394"><b>Mutex</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128266"></a>
|
||||
<h2 class ="view">5.5 Class View SmartPointers</h2>
|
||||
<h2 class ="view">5.6 Class View SmartPointers</h2>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class128906.html#refclass128906"><b>SmartPointer</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129797" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129797" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129669" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130309" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131205" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
|
|
@ -28,8 +28,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131461" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130693" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129029" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131077" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130053" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -55,12 +55,12 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128901" target = "projectFrame"><b>Assets</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129285" target = "projectFrame"><b>ATTACH</b></a></td><td>attribute</td><td>attach subject to anchor (e.g. an effect to a clip)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance137221" target = "projectFrame"><b>au1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128773" target = "projectFrame"><b>aud_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131845" target = "projectFrame"><b>aud_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128773" target = "projectFrame"><b>aud_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131205" target = "projectFrame"><b>audio</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128389" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128901" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130821" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128901" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128389" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact130309" target = "projectFrame"><b>auto</b></a></td><td>artifact</td><td>Media Object holding automation data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a></td><td>class</td><td>Automation data for some parameter (i.e. a time varying function)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram129669" target = "projectFrame"><b>Automation Entities</b></a></td><td>class diagram</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -26,38 +26,38 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class137221.html#refclass137221" target = "projectFrame"><b>Category</b></a></td><td>class</td><td>tree like classification of Assets</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135941" target = "projectFrame"><b>category</b></a></td><td>artifact</td><td>tree like classification of Assets</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130309" target = "projectFrame"><b>cause</b></a></td><td>attribute</td><td>a copy of the first exception encountered in this exception chain</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134277" target = "projectFrame"><b>chain</b></a></td><td>operation</td><td>create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation145413" target = "projectFrame"><b>chain</b></a></td><td>relation</td><td>Chain of additional Placements further constraining the position of this MObject</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134277" target = "projectFrame"><b>chain</b></a></td><td>operation</td><td>create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129633" target = "projectFrame"><b>checked_in</b></a></td><td>relation</td><td>checked_in objects are subject of cache aging and must be not in use</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129290" target = "projectFrame"><b>checked_out</b></a></td><td>relation</td><td>this list keeps all mappings which are in use, and thus prevents them from Cache aging</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135557" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135301" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134661" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135557" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130181" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133765" target = "projectFrame"><b>clear</b></a></td><td>operation</td><td>clear current session contents <br />without resetting overall session config.<br />Afterwards, the session will contain only one <br />empty EDL, while all Assets are retained.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent131077" target = "projectFrame"><b>client code</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a></td><td>class</td><td>bookkeeping (asset) view of a media clip.</td></tr>
|
||||
|
|
@ -96,9 +96,9 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action129029" target = "projectFrame"><b>connect</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139397" target = "projectFrame"><b>constraint</b></a></td><td>artifact</td><td>LocatingPin representing an directive by the user that<br />must not be violated</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>control</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />and the Proc-Layer dispatcher</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Control</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128261" target = "projectFrame"><b>Controller</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128645" target = "projectFrame"><b>Controller Entities</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128389" target = "projectFrame"><b>Controller Workings</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130309.html#refclass130309" target = "projectFrame"><b>ControllerFacade</b></a></td><td>class</td><td>Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings.</td></tr>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128645" target = "projectFrame"><b>edl</b></a></td><td>artifact</td><td>the (high level) Edit Decision List within the current Session</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128389" target = "projectFrame"><b>EDL</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram128773" target = "projectFrame"><b>EDL Example1</b></a></td><td>object diagram</td><td>A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram128901" target = "projectFrame"><b>EDL Example2</b></a></td><td>object diagram</td><td>More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128005" target = "projectFrame"><b>edls</b></a></td><td>relation</td><td></td></tr>
|
||||
|
|
@ -27,6 +26,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129541" target = "projectFrame"><b>effect</b></a></td><td>artifact</td><td>EDL representation of a pluggable and automatable effect.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137221" target = "projectFrame"><b>effect</b></a></td><td>artifact</td><td>Effect or media processing component</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation131717" target = "projectFrame"><b>effectiveTimeline</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation138885" target = "projectFrame"><b>elements</b></a></td><td>relation</td><td>relevant MObjects comprising this segment. TODO: actually necessary??</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132997" target = "projectFrame"><b>enable</b></a></td><td>operation</td><td>change the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129541" target = "projectFrame"><b>end</b></a></td><td>attribute</td><td>end of the timerange (excl)</td></tr>
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class129285.html#refclass129285" target = "projectFrame"><b>FixedLocation</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128005" target = "projectFrame"><b>Fixture</b></a></td><td>activity object</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128773" target = "projectFrame"><b>fixture</b></a></td><td>artifact</td><td>the (low level) representation of the EDL with concrete placement data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128517" target = "projectFrame"><b>Fixture</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128261.html#refclass128261" target = "projectFrame"><b>Fixture</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128517" target = "projectFrame"><b>Fixture</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork activity node129029" target = "projectFrame"><b>fork activity node</b></a></td><td>fork activity node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128821.html#refclass128821" target = "projectFrame"><b>Frame</b></a></td><td>class</td><td>Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128645" target = "projectFrame"><b>Frame</b></a></td><td>node</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130949" target = "projectFrame"><b>getValue</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133637.html#refclass133637" target = "projectFrame"><b>GLBuf</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134149" target = "projectFrame"><b>glbuf</b></a></td><td>artifact</td><td>a buffer and render process holding a Video frame for OpenGL rendering</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation160005" target = "projectFrame"><b>globalBusses</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133253" target = "projectFrame"><b>glpipe</b></a></td><td>artifact</td><td>specialized connection element for handling OpenGL implementation details</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133637" target = "projectFrame"><b>glrender</b></a></td><td>artifact</td><td>Representation of a OpenGL accellerated Video render process</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131077" target = "projectFrame"><b>groups</b></a></td><td>attribute</td><td>additional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping.</td></tr>
|
||||
|
|
|
|||
|
|
@ -18,11 +18,12 @@
|
|||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130437" target = "projectFrame"><b>id</b></a></td><td>attribute</td><td>Asset primary key.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128309" target = "projectFrame"><b>In Memory Database</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity action pin128133" target = "projectFrame"><b>inFixture</b></a></td><td>activity action pin</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132869" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134149" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131461" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134149" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132869" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131461" target = "projectFrame"><b>instance</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation143621" target = "projectFrame"><b>instructions</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129029" target = "projectFrame"><b>Interface</b></a></td><td>class view</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class139525.html#refclass139525" target = "projectFrame"><b>MediaAccessFacade</b></a></td><td>class</td><td>provides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent130181" target = "projectFrame"><b>MediaFactory</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139397.html#refclass139397" target = "projectFrame"><b>MediaFactory</b></a></td><td>class</td><td>specialized Asset Factory for configuring (new) media asset instances based on existing media files on disk; can create placeholder assets as well</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145285.html#refclass145285" target = "projectFrame"><b>MediaKind</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refmerge activity node128773" target = "projectFrame"><b>merge activity node</b></a></td><td>merge activity node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a></td><td>class</td><td>key abstraction: metadata and organisational asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136837" target = "projectFrame"><b>meta</b></a></td><td>artifact</td><td>key abstraction: metadata and organisational asset</td></tr>
|
||||
|
|
@ -40,6 +41,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130181" target = "projectFrame"><b>mobject</b></a></td><td>package</td><td>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram131333" target = "projectFrame"><b>multichannel clip</b></a></td><td>object diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td>class</td><td>I provided a reworked Mutex class in my Cinelerra2 repository</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,10 +31,12 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129029" target = "projectFrame"><b>placement</b></a></td><td>artifact</td><td>Key Abstraction: a way to place and locate a Media Object</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a></td><td>class</td><td>used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative). <br />Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129413" target = "projectFrame"><b>play</b></a></td><td>operation</td><td>TODO: will probably be handled differently (see Cehteh)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128261" target = "projectFrame"><b>playlist</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139525" target = "projectFrame"><b>plug</b></a></td><td>artifact</td><td>LocatingPin for requesting connection to some Port</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140421.html#refclass140421" target = "projectFrame"><b>Plug</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128901" target = "projectFrame"><b>plugID</b></a></td><td>attribute</td><td>Identifier of the Plugin to be used</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128901" target = "projectFrame"><b>plugin</b></a></td><td>attribute</td><td>Identifier of the Plugin to be used</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132485.html#refclass132485" target = "projectFrame"><b>PluginAdapter</b></a></td><td>class</td><td>Adapter used to integrage an effects processor in the render pipeline</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133125" target = "projectFrame"><b>pluginadapter</b></a></td><td>artifact</td><td>Adapter for integrating various Effect processors in the render pipeline</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128517" target = "projectFrame"><b>pnode</b></a></td><td>node</td><td></td></tr>
|
||||
|
|
@ -63,8 +65,11 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132357" target = "projectFrame"><b>procnode</b></a></td><td>artifact</td><td>Key abstraction of the Render Engine: a Processing Node</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138757.html#refclass138757" target = "projectFrame"><b>ProcPatt</b></a></td><td>class</td><td>special type of structural Asset representing information how to build some part of the render engine's processing nodes network.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137989" target = "projectFrame"><b>procpatt</b></a></td><td>artifact</td><td>template for building some render processing network</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145669.html#refclass145669" target = "projectFrame"><b>Project</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129413" target = "projectFrame"><b>Project Entities</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132229.html#refclass132229" target = "projectFrame"><b>Projector</b></a></td><td>class</td><td>Special video processing node used to scale and translate image data.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132869" target = "projectFrame"><b>projector</b></a></td><td>artifact</td><td>video ProcNode for scaling and translating image data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144901.html#refclass144901" target = "projectFrame"><b>Prototype</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation138629" target = "projectFrame"><b>provider</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation135685" target = "projectFrame"><b>pull</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143749.html#refclass143749" target = "projectFrame"><b>PullInput</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation132485" target = "projectFrame"><b>renderSegments</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130949.html#refclass130949" target = "projectFrame"><b>RenderState</b></a></td><td>class</td><td>Encapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131845" target = "projectFrame"><b>renderstate</b></a></td><td>artifact</td><td>renderengine state manager</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128773" target = "projectFrame"><b>repr</b></a></td><td>attribute</td><td>human readable representation of the condition characterizing this allocaton, e.g. "t >= 10"</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133893" target = "projectFrame"><b>reset</b></a></td><td>operation</td><td>reset all session config and <br />start with a pristine default session.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128005" target = "projectFrame"><b>resolve</b></a></td><td>operation</td><td>create an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.</td></tr>
|
||||
|
|
|
|||
|
|
@ -28,12 +28,14 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128389" target = "projectFrame"><b>segments</b></a></td><td>activity object</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128133" target = "projectFrame"><b>segments</b></a></td><td>activity object</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation139013" target = "projectFrame"><b>segments</b></a></td><td>relation</td><td>the partitioning of the Timeline to be created by this tool.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128645" target = "projectFrame"><b>Service Components</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128133" target = "projectFrame"><b>Session</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138757" target = "projectFrame"><b>session</b></a></td><td>artifact</td><td>Interface: the session edited by the user</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130437" target = "projectFrame"><b>session</b></a></td><td>package</td><td>sourcecode package<br /><br />Everything concerning the EDL and Session, within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a></td><td>class</td><td>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128133" target = "projectFrame"><b>Session structure</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128517" target = "projectFrame"><b>sessionimpl</b></a></td><td>artifact</td><td>holds the complete session data to be edited by the user</td></tr>
|
||||
|
|
@ -52,7 +54,6 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class133765.html#refclass133765" target = "projectFrame"><b>Source</b></a></td><td>class</td><td>Source Node: represents a media source to pull data from.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134277" target = "projectFrame"><b>source</b></a></td><td>artifact</td><td>Representation of a Media source</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refdeployment diagram129797" target = "projectFrame"><b>Source Overview</b></a></td><td>deployment diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128645" target = "projectFrame"><b>start</b></a></td><td>attribute</td><td>startpos in source</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129413" target = "projectFrame"><b>start</b></a></td><td>attribute</td><td>begin of the timerange covered by this processor</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129925" target = "projectFrame"><b>start</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132741.html#refclass132741" target = "projectFrame"><b>State</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
@ -65,11 +66,19 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact130949" target = "projectFrame"><b>stateproxy</b></a></td><td>artifact</td><td>Key Interface representing a render process and encapsulating state</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136325.html#refclass136325" target = "projectFrame"><b>std::exception</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144517.html#refclass144517" target = "projectFrame"><b>Strategy</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132485" target = "projectFrame"><b>Stream Type Framework</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129285" target = "projectFrame"><b>StreamType</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139653" target = "projectFrame"><b>streamtype</b></a></td><td>artifact</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144773.html#refclass144773" target = "projectFrame"><b>StreamType</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145157.html#refclass145157" target = "projectFrame"><b>StreamTypeID</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136965.html#refclass136965" target = "projectFrame"><b>Struct</b></a></td><td>class</td><td>key abstraction: structural asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136709" target = "projectFrame"><b>struct</b></a></td><td>artifact</td><td>key abstraction: structural asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131205" target = "projectFrame"><b>Struct-Asset Relations</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145413.html#refclass145413" target = "projectFrame"><b>STypeManager</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139781" target = "projectFrame"><b>stypemanager</b></a></td><td>artifact</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation144901" target = "projectFrame"><b>subject</b></a></td><td>relation</td><td>Placement acts as smart pointer</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation144005" target = "projectFrame"><b>subPattern</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation159877" target = "projectFrame"><b>subSequences</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147205" target = "projectFrame"><b>subTracks</b></a></td><td>relation</td><td>Child tracks in a tree structure</td></tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -20,35 +20,38 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity diagram129541" target = "projectFrame"><b>the render configuration flow</b></a></td><td>activity diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130181" target = "projectFrame"><b>theApp_</b></a></td><td>attribute</td><td>holds the single instance and triggers initialization</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128261" target = "projectFrame"><b>theFixture</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation131717" target = "projectFrame"><b>theTimeline</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td>class</td><td>We can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128261" target = "projectFrame"><b>time</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134789" target = "projectFrame"><b>time</b></a></td><td>artifact</td><td>unified representation of a time point, including conversion functions</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134917.html#refclass134917" target = "projectFrame"><b>Time</b></a></td><td>class</td><td>denotes a temporal position (time point), based on timeline start.<br /><br />investigate posix.4 realtime timers, wrap these here</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128005" target = "projectFrame"><b>timeline</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145541.html#refclass145541" target = "projectFrame"><b>Timeline</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132741" target = "projectFrame"><b>TimelineSequences</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145797.html#refclass145797" target = "projectFrame"><b>TimelineView</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129925" target = "projectFrame"><b>tool</b></a></td><td>package</td><td>sourcecode package<br /><br />Tools and Utilities <br />(separate from the main cinelrra binary)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140037.html#refclass140037" target = "projectFrame"><b>Tool</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130693.html#refclass130693" target = "projectFrame"><b>ToolFactory</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact130565" target = "projectFrame"><b>toolfactory</b></a></td><td>artifact</td><td>supply of Tool implementations for the Builder</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137989.html#refclass137989" target = "projectFrame"><b>Track</b></a></td><td>class</td><td>structural asset holding the configuration of a track in the EDL</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147333" target = "projectFrame"><b>track</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128389" target = "projectFrame"><b>track</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147589" target = "projectFrame"><b>track</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128901" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>A grouping device within the EDL. The corresponding Placement<br />by which this Track object is refered defines fallback placing<br />properties to be used by all objects placed on this track in<br />case they don't specify more concrete placements.<br />Typically, tracks are used do make default Port connections,<br />define a layer or pan for sound and for for disabling groups<br />of clips. Note tracks are grouped in a tree like fashion.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137477" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>structural asset holding the configuration of a track in the EDL</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128901" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>A grouping device within the EDL. The corresponding Placement<br />by which this Track object is refered defines fallback placing<br />properties to be used by all objects placed on this track in<br />case they don't specify more concrete placements.<br />Typically, tracks are used do make default Port connections,<br />define a layer or pan for sound and for for disabling groups<br />of clips. Note tracks are grouped in a tree like fashion.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147333" target = "projectFrame"><b>track</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128389.html#refclass128389" target = "projectFrame"><b>Track</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142341" target = "projectFrame"><b>tracks</b></a></td><td>relation</td><td>elementary media assets comprising this compound</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation161669" target = "projectFrame"><b>trackTree</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131845.html#refclass131845" target = "projectFrame"><b>Trafo</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132485" target = "projectFrame"><b>trafo</b></a></td><td>artifact</td><td>transforming processing Node </td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134405" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129797" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td>This operation is to be overloaded for the specific MObject subclasses to be treated.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130565" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130437" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130309" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130565" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130437" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130181" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130053" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129925" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130053" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140805.html#refclass140805" target = "projectFrame"><b>TypeHandler</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141317.html#refclass141317" target = "projectFrame"><b>TypeHandler<Pipe></b></a></td><td>class</td><td></td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -21,21 +21,21 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class133509.html#refclass133509" target = "projectFrame"><b>VFrame</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134021" target = "projectFrame"><b>vframe</b></a></td><td>artifact</td><td>a buffer and render process holding a Video frame</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance137093" target = "projectFrame"><b>vid1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128645" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134021" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131717" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128645" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129413" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129925" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131717" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134533" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132741" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131077" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133765" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132997" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134533" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128517" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129157" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130949" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132997" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130949" target = "projectFrame"><b>visitor</b></a></td><td>package</td><td>sub-namespace for visitor library implementation</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139141" target = "projectFrame"><b>visitor</b></a></td><td>artifact</td><td>Acyclic Visitor library</td></tr>
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128133" target = "projectFrame"><b>Asset</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129541" target = "projectFrame"><b>backend</b></a></td><td>src</td><td>sourcecode package<br /><br />Data backend classes here...</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129157" target = "projectFrame"><b>BackendLayer</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>src</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>src</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128645" target = "projectFrame"><b>codegen</b></a></td><td></td><td>This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129413" target = "projectFrame"><b>common</b></a></td><td>src</td><td>sourcecode package<br /><br />Common library and helper classes</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128517" target = "projectFrame"><b>CommonLib</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage131077" target = "projectFrame"><b>ConfigQuery</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>src</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>control</b></a></td><td>src</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />and the Proc-Layer dispatcher</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Control</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128138" target = "projectFrame"><b>design</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128005" target = "projectFrame"><b>design</b></a></td><td></td><td>All things concering the big picture.<br />Not a real code package, rather a container for design drafts, specifications, decisions.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130309" target = "projectFrame"><b>engine</b></a></td><td>src</td><td>sourcecode package<br /><br />The Core Render Engine</td></tr>
|
||||
|
|
|
|||
|
|
@ -69,12 +69,12 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class139781.html#refoperation134149"><b>save</b></a></td><td><a href="class139781.html#refclass139781"><b>SessManager</b></a></td><td>create a complete, serialized representation<br />of the current session config and contents.<br />@todo how to serialize, prameters, return value?</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140293.html#refoperation134405"><b>treat</b></a></td><td><a href="class140293.html#refclass140293"><b>Applicable</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134149.html#refoperation129797"><b>treat</b></a></td><td><a href="class134149.html#refclass134149"><b>BuilderTool</b></a></td><td>This operation is to be overloaded for the specific MObject subclasses to be treated.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130437"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130309"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130565"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130437"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130693"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130053"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation129925"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130053"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130181"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129333.html#refoperation128010"><b>useFile</b></a></td><td><a href="class129333.html#refclass129333"><b>FileProvider</b></a></td><td>Announces that the application intends to use this file with mode (READ|WRITE|READWRITE)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129333.html#refoperation128138"><b>useTemporaryStorage</b></a></td><td><a href="class129333.html#refclass129333"><b>FileProvider</b></a></td><td>Provides a pool for interminate frames</td></tr>
|
||||
|
|
|
|||
|
|
@ -33,24 +33,46 @@ iconcommand = python $(top_srcdir)/admin/render-icon.py
|
|||
48x48pre = $(prerendereddir)/48x48
|
||||
|
||||
lumigui_DEPENDENCIES += \
|
||||
rsvg-convert \
|
||||
$(16x16)/tool-arrow.png $(22x22)/tool-arrow.png $(24x24)/tool-arrow.png $(32x32)/tool-arrow.png $(48x48)/tool-arrow.png \
|
||||
$(16x16)/tool-i-beam.png $(22x22)/tool-i-beam.png $(24x24)/tool-i-beam.png $(32x32)/tool-i-beam.png $(48x48)/tool-i-beam.png \
|
||||
$(16x16)/panel-assets.png $(22x22)/panel-assets.png $(32x32)/panel-assets.png \
|
||||
$(16x16)/panel-timeline.png \
|
||||
$(16x16)/panel-viewer.png $(22x22)/panel-viewer.png $(32x32)/panel-viewer.png
|
||||
$(16x16)/tool-arrow.png $(22x22)/tool-arrow.png $(24x24)/tool-arrow.png $(32x32)/tool-arrow.png $(48x48)/tool-arrow.png \
|
||||
$(16x16)/tool-i-beam.png $(22x22)/tool-i-beam.png $(24x24)/tool-i-beam.png $(32x32)/tool-i-beam.png $(48x48)/tool-i-beam.png \
|
||||
$(16x16)/track-disabled.png \
|
||||
$(16x16)/track-enabled.png \
|
||||
$(16x16)/track-locked.png \
|
||||
$(16x16)/track-unlocked.png \
|
||||
$(16x16)/panel-assets.png $(22x22)/panel-assets.png $(32x32)/panel-assets.png \
|
||||
$(16x16)/panel-timeline.png \
|
||||
$(16x16)/panel-viewer.png $(22x22)/panel-viewer.png $(32x32)/panel-viewer.png
|
||||
|
||||
$(16x16)/tool-arrow.png $(22x22)/tool-arrow.png $(24x24)/tool-arrow.png $(32x32)/tool-arrow.png $(48x48)/tool-arrow.png : $(svgdir)/tool-arrow.svg
|
||||
|
||||
# ========== SVG Icons ==========
|
||||
|
||||
# Timeline Tools
|
||||
|
||||
$(16x16)/tool-arrow.png $(22x22)/tool-arrow.png $(24x24)/tool-arrow.png $(32x32)/tool-arrow.png $(48x48)/tool-arrow.png : $(svgdir)/tool-arrow.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
$(16x16)/tool-i-beam.png $(22x22)/tool-i-beam.png $(24x24)/tool-i-beam.png $(32x32)/tool-i-beam.png $(48x48)/tool-i-beam.png : $(svgdir)/tool-i-beam.svg
|
||||
$(16x16)/tool-i-beam.png $(22x22)/tool-i-beam.png $(24x24)/tool-i-beam.png $(32x32)/tool-i-beam.png $(48x48)/tool-i-beam.png : $(svgdir)/tool-i-beam.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
|
||||
# Timeline Tracks
|
||||
$(16x16)/track-disabled.png : $(svgdir)/track-disabled.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
$(16x16)/track-enabled.png : $(svgdir)/track-enabled.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
$(16x16)/track-locked.png : $(svgdir)/track-locked.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
$(16x16)/track-unlocked.png : $(svgdir)/track-unlocked.svg $(top_builddir)/rsvg-convert
|
||||
$(iconcommand) $< $(icondir)
|
||||
|
||||
# ========== Prerendered Icons ==========
|
||||
|
||||
# Panels
|
||||
|
||||
$(16x16)/panel-assets.png:
|
||||
cp $(16x16pre)/panel-assets.png $(16x16)
|
||||
$(22x22)/panel-assets.png:
|
||||
cp $(22x22pre)/panel-assets.png $(22x22)
|
||||
cp $(22x22pre)/panel-assets.png $(22x22)
|
||||
$(32x32)/panel-assets.png:
|
||||
cp $(32x32pre)/panel-assets.png $(32x32)
|
||||
cp $(32x32pre)/panel-assets.png $(32x32)
|
||||
|
||||
$(16x16)/panel-timeline.png:
|
||||
cp $(16x16pre)/panel-timeline.png $(16x16)
|
||||
|
|
@ -61,5 +83,3 @@ $(22x22)/panel-viewer.png:
|
|||
cp $(22x22pre)/panel-viewer.png $(22x22)
|
||||
$(32x32)/panel-viewer.png:
|
||||
cp $(32x32pre)/panel-viewer.png $(32x32)
|
||||
|
||||
|
||||
|
|
|
|||
663
icons/svg/track-disabled.svg
Normal file
|
|
@ -0,0 +1,663 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="100"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
version="1.0"
|
||||
sodipodi:docname="track-disabled.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient14313">
|
||||
<stop
|
||||
id="stop14315"
|
||||
offset="0"
|
||||
style="stop-color:#d5d5d5;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#dadada;stop-opacity:1;"
|
||||
offset="0.55299991"
|
||||
id="stop14317" />
|
||||
<stop
|
||||
id="stop14319"
|
||||
offset="0.80015606"
|
||||
style="stop-color:#b6b6b6;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop14321"
|
||||
offset="1"
|
||||
style="stop-color:#a2a2a2;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient14313"
|
||||
id="radialGradient13889"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9845232,-1.8973773e-2,1.6411673e-2,0.8792366,1103.7486,1556.3536)"
|
||||
cx="11.368229"
|
||||
cy="26.534439"
|
||||
fx="11.368229"
|
||||
fy="26.534439"
|
||||
r="7.4999995" />
|
||||
<linearGradient
|
||||
id="linearGradient9845">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9847" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.49484536;"
|
||||
offset="1.0000000"
|
||||
id="stop9849" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2092">
|
||||
<stop
|
||||
id="stop2094"
|
||||
offset="0"
|
||||
style="stop-color:#fff7b0;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffec41;stop-opacity:1.0000000;"
|
||||
offset="0.20999999"
|
||||
id="stop2098" />
|
||||
<stop
|
||||
id="stop43205"
|
||||
offset="0.83999997"
|
||||
style="stop-color:#e2cc00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2100"
|
||||
offset="1"
|
||||
style="stop-color:#c3af00;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient12071">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop12073" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop12075" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient10672">
|
||||
<stop
|
||||
id="stop10674"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#cad0c6;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#eaece9;stop-opacity:1.0000000;"
|
||||
offset="0.5"
|
||||
id="stop10676" />
|
||||
<stop
|
||||
id="stop10678"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#c5cbc0;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10554">
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop10556" />
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop10558" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient124">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop125" />
|
||||
<stop
|
||||
style="stop-color:silver;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop126" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8773">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0.3137255"
|
||||
offset="0"
|
||||
id="stop8775" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8777" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14467"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-29.871557,-250.82036)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14469"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-29.87156,-250.82036)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-18.406429,-249.43017)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14475"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2,0,0,0.5,-20.55174,-11.55357)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14477"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,2.4375,-23.45032)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14481"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.125001,0,0,1.125001,-202.51184,-408.14432)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14483"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9377063,0,0,1.3497053,-220.82833,-410.36528)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14485"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8939146,2.0648066,-0.5162016,0.2234786,-220.82833,-410.36529)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14487"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14489"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14495"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient7954"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7960"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7963"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7966"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8750"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8752"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8755"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8758"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8761"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8771"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8773"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8775"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8778"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8784"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8832"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8834"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8836"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8840"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8844"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient13842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,128.917,78.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13845"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,120,78.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient13848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,128.1125,76.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13851"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.2215573,119.747,78.1453)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient13854"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,122.2961,76.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient14313"
|
||||
id="radialGradient15234"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9845232,-1.8973773e-2,1.6411673e-2,0.8792366,119.7485,61.3536)"
|
||||
cx="11.368229"
|
||||
cy="26.534439"
|
||||
fx="11.368229"
|
||||
fy="26.534439"
|
||||
r="7.4999995" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="16.000001"
|
||||
inkscape:cx="115.64058"
|
||||
inkscape:cy="17.228143"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="977"
|
||||
inkscape:window-x="1280"
|
||||
inkscape:window-y="48">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid13478"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
spacingx="0.5px"
|
||||
spacingy="0.5px"
|
||||
empspacing="2" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="artwork:track-disabled"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:#888a85;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 139.6174,84.9691 C 137.4334,87.776 134.8068,88.4358 132.1693,88.4358 C 129.5318,88.4358 126.2251,87.9797 125.7142,84.9691 C 126.2684,82.2163 123.252,87.6588 126.6224,89.1442 C 130.5182,90.861 136.2175,90.2471 139.6174,84.9691 z"
|
||||
id="path13696"
|
||||
sodipodi:nodetypes="czcsc" />
|
||||
<path
|
||||
sodipodi:nodetypes="czcsc"
|
||||
id="path13699"
|
||||
d="M 139.5,84.9691 C 137.3345,87.776 134.73,88.4358 132.1148,88.4358 C 129.4995,88.4358 126.2207,87.9797 125.7142,84.9691 C 126.2637,82.2163 127.6839,80.5318 131.3314,80.5005 C 135.3174,80.4664 137.2533,83.0122 139.5,84.9691 z"
|
||||
style="opacity:0.9;fill:url(#radialGradient15234);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.70164642;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="plate#1"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
y="76"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect14403"
|
||||
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 22 KiB |
967
icons/svg/track-enabled.svg
Normal file
|
|
@ -0,0 +1,967 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="100"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
version="1.0"
|
||||
sodipodi:docname="track-enabled.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient14230">
|
||||
<stop
|
||||
style="stop-color:#555753;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop14232" />
|
||||
<stop
|
||||
style="stop-color:#555753;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop14234" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient14230"
|
||||
id="linearGradient14236"
|
||||
x1="1117.1925"
|
||||
y1="1545"
|
||||
x2="1123.9001"
|
||||
y2="1545"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient13707">
|
||||
<stop
|
||||
id="stop13709"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0.55299991"
|
||||
id="stop13711" />
|
||||
<stop
|
||||
id="stop13713"
|
||||
offset="1"
|
||||
style="stop-color:#a2a2a2;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient13707"
|
||||
id="radialGradient13871"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3199975,0,0,0.9601076,-349.92226,67.4643)"
|
||||
cx="1110.5"
|
||||
cy="1543"
|
||||
fx="1110.5"
|
||||
fy="1543"
|
||||
r="6.1412096" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient13602">
|
||||
<stop
|
||||
style="stop-color:#888a85;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop13604" />
|
||||
<stop
|
||||
style="stop-color:#888a85;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop13606" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient13602"
|
||||
id="linearGradient13887"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.998754,0,0,1,1104.005,1542)"
|
||||
x1="4.4194174"
|
||||
y1="3.5226197"
|
||||
x2="20.01996"
|
||||
y2="3.5226197" />
|
||||
<linearGradient
|
||||
id="linearGradient9845">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9847" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.49484536;"
|
||||
offset="1.0000000"
|
||||
id="stop9849" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient9938"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,1224.9171,1520.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient9941"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,1221,1520.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
id="linearGradient2092">
|
||||
<stop
|
||||
id="stop2094"
|
||||
offset="0"
|
||||
style="stop-color:#fff7b0;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffec41;stop-opacity:1.0000000;"
|
||||
offset="0.20999999"
|
||||
id="stop2098" />
|
||||
<stop
|
||||
id="stop43205"
|
||||
offset="0.83999997"
|
||||
style="stop-color:#e2cc00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2100"
|
||||
offset="1"
|
||||
style="stop-color:#c3af00;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient9944"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,1224.1125,1518.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient12071">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop12073" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop12075" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient9947"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.260845,1220.747,1519.9937)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
id="linearGradient10672">
|
||||
<stop
|
||||
id="stop10674"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#cad0c6;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#eaece9;stop-opacity:1.0000000;"
|
||||
offset="0.5"
|
||||
id="stop10676" />
|
||||
<stop
|
||||
id="stop10678"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#c5cbc0;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient9950"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,1223.2961,1518.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10554">
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop10556" />
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop10558" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient124">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop125" />
|
||||
<stop
|
||||
style="stop-color:silver;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop126" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8773">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0.3137255"
|
||||
offset="0"
|
||||
id="stop8775" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8777" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14467"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-29.871557,-250.82036)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14469"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-29.87156,-250.82036)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-18.406429,-249.43017)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14473"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-137.34366,-352.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14475"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2,0,0,0.5,-20.55174,-11.55357)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14477"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,2.4375,-23.45032)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14479"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14481"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.125001,0,0,1.125001,-202.51184,-408.14432)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14483"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9377063,0,0,1.3497053,-220.82833,-410.36528)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14485"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8939146,2.0648066,-0.5162016,0.2234786,-220.82833,-410.36529)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14487"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14489"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14495"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient7954"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7960"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7963"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7966"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8750"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8752"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8755"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8758"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8761"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8771"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8773"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8775"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8778"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8784"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8830"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8832"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8834"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8836"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8838"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8840"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8844"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8855"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8858"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8861"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7968"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-251.3124,-500.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7971"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-273.02082,-503.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7974"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-273.02082,-503.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7979"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,-153.62497,-354.54654)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7982"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.79459,1.835382,-0.4588455,0.1986475,-153.62497,-354.54654)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7986"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-40.406443,-220.43015)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7989"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-51.871574,-221.82034)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7992"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-51.871571,-221.82034)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient13660"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,126.9171,78.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13663"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,123,78.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient13666"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,126.1125,76.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13669"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.260845,122.747,77.9937)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient13672"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,125.2961,76.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient14230"
|
||||
id="linearGradient14931"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="1117.1925"
|
||||
y1="1545"
|
||||
x2="1123.9001"
|
||||
y2="1545"
|
||||
gradientTransform="translate(-983.9001,-1463)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient13707"
|
||||
id="radialGradient14937"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3199975,0,0,0.9601076,-1333.8224,-1395.5357)"
|
||||
cx="1110.5"
|
||||
cy="1543"
|
||||
fx="1110.5"
|
||||
fy="1543"
|
||||
r="6.1412096" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient13602"
|
||||
id="linearGradient14940"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.998754,0,0,1,120.1049,79)"
|
||||
x1="4.4194174"
|
||||
y1="3.5226197"
|
||||
x2="20.01996"
|
||||
y2="3.5226197" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="16.000001"
|
||||
inkscape:cx="117.59451"
|
||||
inkscape:cy="20.007019"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="977"
|
||||
inkscape:window-x="1280"
|
||||
inkscape:window-y="48">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid13478"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
spacingx="0.5px"
|
||||
spacingy="0.5px"
|
||||
empspacing="2" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="artwork:track-enabled"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g14943">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
d="M 125.7216,86.0443 L 124.5188,85.5129 C 125.4457,79.5909 131.4193,75.7018 139.8499,82.9055 L 139.7026,86.0112 L 139.6987,86.0353 C 137.4199,84.0795 135.4565,81.5692 131.4135,81.5692 C 126.7723,81.6308 126.0484,85.1815 125.7216,86.0443 z"
|
||||
style="fill:url(#linearGradient14940);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path13575" />
|
||||
<path
|
||||
sodipodi:nodetypes="czcsc"
|
||||
id="path14269"
|
||||
d="M 139.4599,86.0353 C 137.2827,88.8406 134.6642,89.5 132.0349,89.5 C 129.4055,89.5 126.1091,89.0442 125.5999,86.0353 C 126.1523,83.284 127.5801,81.6005 131.2473,81.5692 C 135.2547,81.5351 137.201,84.0795 139.4599,86.0353 z"
|
||||
style="fill:url(#radialGradient14937);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
transform="matrix(1.7478195,0,0,1.75,-1808.4891,-2614.7485)"
|
||||
d="M 1112,1543 A 2,2 0 1 1 1108,1543 A 2,2 0 1 1 1112,1543 z"
|
||||
sodipodi:ry="2"
|
||||
sodipodi:rx="2"
|
||||
sodipodi:cy="1543"
|
||||
sodipodi:cx="1110"
|
||||
id="path14276"
|
||||
style="fill:#204a87;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.66666889;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.66666889;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path13698"
|
||||
sodipodi:cx="1110"
|
||||
sodipodi:cy="1543"
|
||||
sodipodi:rx="2"
|
||||
sodipodi:ry="2"
|
||||
d="M 1112,1543 A 2,2 0 1 1 1108,1543 A 2,2 0 1 1 1112,1543 z"
|
||||
transform="matrix(0.9987705,0,0,0.8999911,-977.54402,-1303.8851)" />
|
||||
<path
|
||||
transform="matrix(0.4994181,0,0,0.4000183,-423.76225,-532.82721)"
|
||||
d="M 1112,1543 A 2,2 0 1 1 1108,1543 A 2,2 0 1 1 1112,1543 z"
|
||||
sodipodi:ry="2"
|
||||
sodipodi:rx="2"
|
||||
sodipodi:cy="1543"
|
||||
sodipodi:cx="1110"
|
||||
id="path13700"
|
||||
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.66666889;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cs"
|
||||
id="path13565"
|
||||
d="M 124.6,85.5 C 125.4863,79.5742 132.1842,74.5771 139.5,82.891"
|
||||
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient14931);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="plate#1"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
y="76"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect14403"
|
||||
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 32 KiB |
866
icons/svg/track-locked.svg
Normal file
|
|
@ -0,0 +1,866 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="100"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
version="1.0"
|
||||
sodipodi:docname="track-locked.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient9845">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9847" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.49484536;"
|
||||
offset="1.0000000"
|
||||
id="stop9849" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient9938"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,1224.9171,1520.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient9941"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,1221,1520.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
id="linearGradient2092">
|
||||
<stop
|
||||
id="stop2094"
|
||||
offset="0"
|
||||
style="stop-color:#fff7b0;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffec41;stop-opacity:1.0000000;"
|
||||
offset="0.20999999"
|
||||
id="stop2098" />
|
||||
<stop
|
||||
id="stop43205"
|
||||
offset="0.83999997"
|
||||
style="stop-color:#e2cc00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2100"
|
||||
offset="1"
|
||||
style="stop-color:#c3af00;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient9944"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,1224.1125,1518.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient12071">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop12073" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop12075" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient9947"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.260845,1220.747,1519.9937)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
id="linearGradient10672">
|
||||
<stop
|
||||
id="stop10674"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#cad0c6;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#eaece9;stop-opacity:1.0000000;"
|
||||
offset="0.5"
|
||||
id="stop10676" />
|
||||
<stop
|
||||
id="stop10678"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#c5cbc0;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient9950"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,1223.2961,1518.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10554">
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop10556" />
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop10558" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient124">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop125" />
|
||||
<stop
|
||||
style="stop-color:silver;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop126" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8773">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0.3137255"
|
||||
offset="0"
|
||||
id="stop8775" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8777" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14467"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-29.871557,-250.82036)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14469"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-29.87156,-250.82036)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-18.406429,-249.43017)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14473"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-137.34366,-352.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14475"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2,0,0,0.5,-20.55174,-11.55357)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14477"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,2.4375,-23.45032)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14479"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14481"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.125001,0,0,1.125001,-202.51184,-408.14432)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14483"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9377063,0,0,1.3497053,-220.82833,-410.36528)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14485"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8939146,2.0648066,-0.5162016,0.2234786,-220.82833,-410.36529)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14487"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14489"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14495"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient7954"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7960"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7963"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7966"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8750"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8752"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8755"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8758"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8761"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8771"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8773"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8775"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8778"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8784"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8830"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8832"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8834"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8836"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8838"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8840"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8844"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8855"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8858"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8861"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7968"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-251.3124,-500.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7971"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-273.02082,-503.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7974"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-273.02082,-503.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7979"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,-153.62497,-354.54654)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7982"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.79459,1.835382,-0.4588455,0.1986475,-153.62497,-354.54654)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7986"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-40.406443,-220.43015)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7989"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-51.871574,-221.82034)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7992"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-51.871571,-221.82034)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient13660"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,126.9171,78.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13663"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,123,78.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient13666"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,126.1125,76.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13669"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.260845,122.747,77.9937)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient13672"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,125.2961,76.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="16.000001"
|
||||
inkscape:cx="126.28201"
|
||||
inkscape:cy="20.007019"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="977"
|
||||
inkscape:window-x="1280"
|
||||
inkscape:window-y="48">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid13478"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
spacingx="0.5px"
|
||||
spacingy="0.5px"
|
||||
empspacing="2" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="artwork:track-locked"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:url(#linearGradient7992);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.24999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||
d="M 132.00799,83.448274 L 133.59102,84.965162 L 133.0687,85.76811 L 134.8336,89.279979 L 133.71007,89.835652 L 132.00919,86.369947 L 131.22922,86.090464 L 131.04078,83.859018 L 132.00799,83.448274 z"
|
||||
id="path14453"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||
d="M 128,83 L 128,82 C 128,79.7892 129,78 132,78 C 135,78 136,79.7632 136,82 L 136,83 L 133,83 L 133,82 C 132.9628,81.4559 133,81 132,81 C 131,81 130.9909,81.4516 131,82 L 131,83 L 128,83 z"
|
||||
id="path10684"
|
||||
sodipodi:nodetypes="cczcccczccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cczcccczccc"
|
||||
id="path10686"
|
||||
d="M 129,83 L 129,82 C 129,79.7892 130,79 132,79 C 134,79 135,79.7632 135,82 L 135,83 L 134,83 L 134,82 C 133.9628,81.4559 134,80 132,80 C 130,80 129.9909,81.4516 130,82 L 130,83 L 129,83 z"
|
||||
style="fill:url(#linearGradient13672);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccsccc"
|
||||
id="path10688"
|
||||
d="M 129,82 C 129.0753,80.363 129,79 132,79 C 129.9823,79.277 129.5434,79.8767 129.5434,81.5881 C 129.5434,81.5881 129.4931,83.7093 129.4931,83.7093 L 129,83.7093 L 129,82 z"
|
||||
style="fill:url(#linearGradient13669);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
<rect
|
||||
ry="0.56647956"
|
||||
rx="0.6359942"
|
||||
y="83.499878"
|
||||
x="127.5"
|
||||
height="7.0001221"
|
||||
width="9"
|
||||
id="rect10690"
|
||||
style="fill:url(#linearGradient13666);fill-opacity:1;fill-rule:evenodd;stroke:#745e00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
<rect
|
||||
ry="0"
|
||||
rx="0"
|
||||
y="80.947632"
|
||||
x="134"
|
||||
height="2.0523682"
|
||||
width="1"
|
||||
id="rect10692"
|
||||
style="fill:url(#linearGradient13663);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
<rect
|
||||
ry="0.28223079"
|
||||
rx="0.27153775"
|
||||
y="84.5"
|
||||
x="128.5"
|
||||
height="5"
|
||||
width="7"
|
||||
id="rect10694"
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient13660);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.60109289;display:inline" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="plate#1"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
y="76"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect14403"
|
||||
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 29 KiB |
655
icons/svg/track-unlocked.svg
Normal file
|
|
@ -0,0 +1,655 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="100"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
version="1.0"
|
||||
sodipodi:docname="track-unlocked.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient9845">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop9847" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.49484536;"
|
||||
offset="1.0000000"
|
||||
id="stop9849" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2092">
|
||||
<stop
|
||||
id="stop2094"
|
||||
offset="0"
|
||||
style="stop-color:#fff7b0;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffec41;stop-opacity:1.0000000;"
|
||||
offset="0.20999999"
|
||||
id="stop2098" />
|
||||
<stop
|
||||
id="stop43205"
|
||||
offset="0.83999997"
|
||||
style="stop-color:#e2cc00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2100"
|
||||
offset="1"
|
||||
style="stop-color:#c3af00;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient12071">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop12073" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop12075" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient10672">
|
||||
<stop
|
||||
id="stop10674"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#cad0c6;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#eaece9;stop-opacity:1.0000000;"
|
||||
offset="0.5"
|
||||
id="stop10676" />
|
||||
<stop
|
||||
id="stop10678"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#c5cbc0;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10554">
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop10556" />
|
||||
<stop
|
||||
style="stop-color:white;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop10558" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient124">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop125" />
|
||||
<stop
|
||||
style="stop-color:silver;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop126" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8773">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0.3137255"
|
||||
offset="0"
|
||||
id="stop8775" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8777" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective10" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14467"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-29.871557,-250.82036)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14469"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5869533,0,0,0.8448423,-29.87156,-250.82036)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7041896,0,0,0.7041896,-18.406429,-249.43017)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14475"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2,0,0,0.5,-20.55174,-11.55357)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14477"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.833516,0,0,1.199737,2.4375,-23.45032)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14481"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.125001,0,0,1.125001,-202.51184,-408.14432)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14483"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9377063,0,0,1.3497053,-220.82833,-410.36528)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14485"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8939146,2.0648066,-0.5162016,0.2234786,-220.82833,-410.36529)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14487"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient14489"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient14491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient14493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient14495"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient7954"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient7960"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient7963"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient7966"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8773"
|
||||
id="radialGradient8746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||
cx="-57.850174"
|
||||
cy="24.296782"
|
||||
fx="-58.028885"
|
||||
fy="27.01318"
|
||||
r="8.087534" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8750"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8752"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8755"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8758"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8761"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8771"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8773"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8775"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8778"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8784"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8832"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8834"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8836"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-144.34366,-395.57235)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="linearGradient8840"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||
x1="253.75711"
|
||||
y1="-129.52815"
|
||||
x2="252.00447"
|
||||
y2="-135.47408" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient124"
|
||||
id="radialGradient8842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||
cx="307.7507"
|
||||
cy="361.47824"
|
||||
fx="307.7507"
|
||||
fy="361.47824"
|
||||
r="12.509617" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10554"
|
||||
id="linearGradient8844"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||
x1="240.9062"
|
||||
y1="425.18195"
|
||||
x2="248.28683"
|
||||
y2="437.96558" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient9845"
|
||||
id="linearGradient13842"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2119237,0,0,0.2489726,128.917,78.6745)"
|
||||
x1="10.907269"
|
||||
y1="25.002281"
|
||||
x2="30.875446"
|
||||
y2="36.127281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13845"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9999999,0,0,0.2052368,120,78.4848)"
|
||||
x1="11.5"
|
||||
y1="20.579729"
|
||||
x2="11.779029"
|
||||
y2="14.259961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2092"
|
||||
id="linearGradient13848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2503422,0,0,0.3116539,128.1125,76.3112)"
|
||||
x1="6.72682"
|
||||
y1="32.161697"
|
||||
x2="40.938126"
|
||||
y2="32.161697" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12071"
|
||||
id="linearGradient13851"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5684536,0,0,0.2215573,119.747,78.1453)"
|
||||
x1="14.217941"
|
||||
y1="6.8795347"
|
||||
x2="17.859085"
|
||||
y2="3.9566603" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10672"
|
||||
id="linearGradient13854"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2784349,0,0,0.2809058,122.2961,76.6251)"
|
||||
x1="16.894075"
|
||||
y1="1.3346111"
|
||||
x2="24.077082"
|
||||
y2="19.134172" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="115.32033"
|
||||
inkscape:cy="32.025253"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer4"
|
||||
showgrid="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="977"
|
||||
inkscape:window-x="1280"
|
||||
inkscape:window-y="48">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid13478"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
spacingx="0.5px"
|
||||
spacingy="0.5px"
|
||||
empspacing="2" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="artwork:track-unlocked"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<path
|
||||
sodipodi:nodetypes="cczcccczccc"
|
||||
id="path10680"
|
||||
d="M 125,84 L 125,82 C 125,79.7892 126,78 129,78 C 132,78 133,79.7632 133,82 L 133,83 L 130,83 L 130,82 C 129.9628,81.4559 130,81 129,81 C 128,81 127.9909,81.4516 128,82 L 128,84 L 125,84 z"
|
||||
style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:url(#linearGradient13854);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 126,83 L 126,82 C 126,79.7892 127,79 129,79 C 131,79 132,79.7632 132,82 L 132,83 L 131,83 L 131,82 C 130.9628,81.4559 131,80 129,80 C 127,80 126.9909,81.4516 127,82 L 127,83 L 126,83 z"
|
||||
id="path9982"
|
||||
sodipodi:nodetypes="cczcccczccc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient13851);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 126,81.5481 C 126.0753,80.1577 126,79 129,79 C 126.9823,79.2353 126.5434,79.7447 126.5434,81.1983 C 126.5434,81.1983 126.4931,83 126.4931,83 L 126,83 L 126,81.5481 z"
|
||||
id="path9984"
|
||||
sodipodi:nodetypes="ccsccc" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient13848);fill-opacity:1;fill-rule:evenodd;stroke:#745e00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect9986"
|
||||
width="9"
|
||||
height="7.0001221"
|
||||
x="129.5"
|
||||
y="83.499878"
|
||||
rx="0.6359942"
|
||||
ry="0.56647956" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient13845);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect9988"
|
||||
width="1"
|
||||
height="2.0523682"
|
||||
x="131"
|
||||
y="80.947632"
|
||||
rx="0"
|
||||
ry="0" />
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient13842);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.60109289"
|
||||
id="rect9990"
|
||||
width="7.0000005"
|
||||
height="5"
|
||||
x="130.5"
|
||||
y="84.5"
|
||||
rx="0.27153775"
|
||||
ry="0.28223079" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="plate#1"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
y="76"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect14403"
|
||||
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
|
@ -18,7 +18,8 @@
|
|||
liblumibackend_a_srcdir = $(top_srcdir)/src/backend
|
||||
noinst_LIBRARIES += liblumibackend.a
|
||||
|
||||
liblumibackend_a_CFLAGS = $(CFLAGS) -std=gnu99 -Wextra -Wall -Werror
|
||||
liblumibackend_a_CPPFLAGS = $(AM_CPPFLAGS) -DLUMIERA_PLUGIN_PATH="\"$(pkglibdir)\""
|
||||
liblumibackend_a_CFLAGS = $(AM_CFLAGS) -std=gnu99 -Wextra -Wall -Werror
|
||||
|
||||
liblumibackend_a_SOURCES = \
|
||||
$(liblumibackend_a_srcdir)/mediaaccessfacade.cpp \
|
||||
|
|
@ -29,6 +30,8 @@ liblumibackend_a_SOURCES = \
|
|||
$(liblumibackend_a_srcdir)/filehandlecache.c \
|
||||
$(liblumibackend_a_srcdir)/interface.c \
|
||||
$(liblumibackend_a_srcdir)/interfaceregistry.c \
|
||||
$(liblumibackend_a_srcdir)/plugin.c \
|
||||
$(liblumibackend_a_srcdir)/plugin_dynlib.c \
|
||||
$(liblumibackend_a_srcdir)/config.c \
|
||||
$(liblumibackend_a_srcdir)/config_typed.c \
|
||||
$(liblumibackend_a_srcdir)/config_wordlist.c \
|
||||
|
|
@ -47,6 +50,7 @@ noinst_HEADERS += \
|
|||
$(liblumibackend_a_srcdir)/interface.h \
|
||||
$(liblumibackend_a_srcdir)/interfaceregistry.h \
|
||||
$(liblumibackend_a_srcdir)/interfacedescriptor.h \
|
||||
$(liblumibackend_a_srcdir)/plugin.h \
|
||||
$(liblumibackend_a_srcdir)/config.h \
|
||||
$(liblumibackend_a_srcdir)/configentry.h \
|
||||
$(liblumibackend_a_srcdir)/configitem.h \
|
||||
|
|
|
|||
|
|
@ -228,20 +228,22 @@ LUMIERA_CONFIG_TYPES
|
|||
* Get nth word of a wordlist.
|
||||
* @param key key under which this wordlist is stored
|
||||
* @param nth index of the word to get, starting with 0
|
||||
* @param delims a string literal listing all characters which are treated as delimiters
|
||||
* @return pointer to a tempbuf holding the nth word or NULL in case of error
|
||||
*/
|
||||
const char*
|
||||
lumiera_config_wordlist_get_nth (const char* key, unsigned nth);
|
||||
lumiera_config_wordlist_get_nth (const char* key, unsigned nth, const char* delims);
|
||||
|
||||
|
||||
/**
|
||||
* Find the index of a word in a wordlist.
|
||||
* @param key key under which this wordlist is stored
|
||||
* @param value word to find
|
||||
* @param delims a string literal listing all characters which are treated as delimiters
|
||||
* @return index of the first occurence of the word or -1 in case of failure
|
||||
*/
|
||||
int
|
||||
lumiera_config_wordlist_find (const char* key, const char* value);
|
||||
lumiera_config_wordlist_find (const char* key, const char* value, const char* delims);
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -254,20 +256,22 @@ lumiera_config_wordlist_find (const char* key, const char* value);
|
|||
* @param value word to be replaced
|
||||
* @param subst1 first replacement word
|
||||
* @param subst2 second replacement word
|
||||
* @param delims a string literal listing all characters which are treated as delimiters
|
||||
* @return internal representation of the wordlist in a tmpbuf or NULL in case of an error
|
||||
*/
|
||||
const char*
|
||||
lumiera_config_wordlist_replace (const char* key, const char* value, const char* subst1, const char* subst2);
|
||||
lumiera_config_wordlist_replace (const char* key, const char* value, const char* subst1, const char* subst2, const char* delims);
|
||||
|
||||
|
||||
/**
|
||||
* Add a word to the end of a wordlist if it doesnt exist already
|
||||
* @param key key under which this wordlist is stored
|
||||
* @param value new word to add
|
||||
* @param delims a string literal listing all characters which are treated as delimiters
|
||||
* @return internal representation of the wordlist in a tmpbuf or NULL in case of an error
|
||||
*/
|
||||
const char*
|
||||
lumiera_config_wordlist_add (const char* key, const char* value);
|
||||
lumiera_config_wordlist_add (const char* key, const char* value, const char* delims);
|
||||
|
||||
// * {{{ lumiera_config_TYPE_set (const char* key, TYPE*value, const char* fmt) }}}
|
||||
// Highlevel interface for different types, fmt is a printf format specifier for the desired format, when NULL, defaults apply.
|
||||
|
|
|
|||
|
|
@ -19,25 +19,20 @@
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
//TODO: Support library includes//
|
||||
#include "lib/error.h"
|
||||
#include "lib/safeclib.h"
|
||||
|
||||
|
||||
//TODO: Lumiera header includes//
|
||||
#include "backend/config.h"
|
||||
|
||||
//TODO: internal/static forward declarations//
|
||||
extern LumieraConfig lumiera_global_config;
|
||||
|
||||
|
||||
//TODO: System includes//
|
||||
|
||||
/**
|
||||
* return nth word of a wordlist
|
||||
*/
|
||||
const char*
|
||||
lumiera_config_wordlist_get_nth (const char* key, unsigned nth)
|
||||
lumiera_config_wordlist_get_nth (const char* key, unsigned nth, const char* delims)
|
||||
{
|
||||
const char* value;
|
||||
size_t len;
|
||||
|
|
@ -47,8 +42,8 @@ lumiera_config_wordlist_get_nth (const char* key, unsigned nth)
|
|||
|
||||
for (;;)
|
||||
{
|
||||
value += strspn (value, " \t,;");
|
||||
len = strcspn (value, " \t,;");
|
||||
value += strspn (value, delims);
|
||||
len = strcspn (value, delims);
|
||||
if (!nth && *value)
|
||||
break;
|
||||
|
||||
|
|
@ -64,7 +59,7 @@ lumiera_config_wordlist_get_nth (const char* key, unsigned nth)
|
|||
|
||||
|
||||
int
|
||||
lumiera_config_wordlist_find (const char* key, const char* value)
|
||||
lumiera_config_wordlist_find (const char* key, const char* value, const char* delims)
|
||||
{
|
||||
const char* itr;
|
||||
size_t vlen = strlen (value);
|
||||
|
|
@ -75,8 +70,8 @@ lumiera_config_wordlist_find (const char* key, const char* value)
|
|||
|
||||
for (int idx = 0; *itr; itr += len, ++idx)
|
||||
{
|
||||
itr += strspn (itr, " \t,;");
|
||||
len = strcspn (itr, " \t,;");
|
||||
itr += strspn (itr, delims);
|
||||
len = strcspn (itr, delims);
|
||||
|
||||
if (len == vlen && !strncmp (itr, value, vlen))
|
||||
return idx;
|
||||
|
|
@ -87,7 +82,7 @@ lumiera_config_wordlist_find (const char* key, const char* value)
|
|||
|
||||
|
||||
const char*
|
||||
lumiera_config_wordlist_replace (const char* key, const char* value, const char* subst1, const char* subst2)
|
||||
lumiera_config_wordlist_replace (const char* key, const char* value, const char* subst1, const char* subst2, const char* delims)
|
||||
{
|
||||
const char* wordlist;
|
||||
const char* str = NULL;
|
||||
|
|
@ -106,28 +101,25 @@ lumiera_config_wordlist_replace (const char* key, const char* value, const char*
|
|||
for (const char* itr = start; *itr; itr += len)
|
||||
{
|
||||
const char* left_end = itr;
|
||||
itr += strspn (itr, " \t,;");
|
||||
len = strcspn (itr, " \t,;");
|
||||
itr += strspn (itr, delims);
|
||||
len = strcspn (itr, delims);
|
||||
|
||||
if (len == vlen && !strncmp (itr, value, vlen))
|
||||
{
|
||||
TODO ("figure delimiter from original string out");
|
||||
const char* delim = " ";
|
||||
|
||||
/* step over the word */
|
||||
itr += len;
|
||||
itr += strspn (itr, " \t,;");
|
||||
itr += strspn (itr, delims);
|
||||
|
||||
/* getting the delimiters right for the corner cases looks ugly, want to refactor it? just do it */
|
||||
str = lumiera_tmpbuf_snprintf (SIZE_MAX,
|
||||
"%.*s%.*s%s%s%s%s%s%s",
|
||||
"%.*s%.*s%.1s%s%.1s%s%.1s%s",
|
||||
start - wordlist, wordlist,
|
||||
left_end - start, start,
|
||||
(left_end - start && subst1 && *subst1) ? delim : "",
|
||||
(left_end - start && subst1 && *subst1) ? delims : "",
|
||||
(subst1 && *subst1) ? subst1 : "",
|
||||
((left_end - start || (subst1 && *subst1)) && subst2 && *subst2) ? delim : "",
|
||||
((left_end - start || (subst1 && *subst1)) && subst2 && *subst2) ? delims : "",
|
||||
(subst2 && *subst2) ? subst2 : "",
|
||||
((left_end - start || (subst1 && *subst1) || (subst2 && *subst2)) && *itr) ? delim : "",
|
||||
((left_end - start || (subst1 && *subst1) || (subst2 && *subst2)) && *itr) ? delims : "",
|
||||
itr
|
||||
);
|
||||
|
||||
|
|
@ -145,7 +137,7 @@ lumiera_config_wordlist_replace (const char* key, const char* value, const char*
|
|||
|
||||
|
||||
const char*
|
||||
lumiera_config_wordlist_add (const char* key, const char* value)
|
||||
lumiera_config_wordlist_add (const char* key, const char* value, const char* delims)
|
||||
{
|
||||
const char* wordlist = NULL;
|
||||
|
||||
|
|
@ -160,19 +152,16 @@ lumiera_config_wordlist_add (const char* key, const char* value)
|
|||
|
||||
for (const char* itr = wordlist; *itr; itr += len)
|
||||
{
|
||||
itr += strspn (itr, " \t,;");
|
||||
len = strcspn (itr, " \t,;");
|
||||
itr += strspn (itr, delims);
|
||||
len = strcspn (itr, delims);
|
||||
|
||||
if (len == vlen && !strncmp (itr, value, vlen))
|
||||
goto end;
|
||||
}
|
||||
|
||||
TODO ("figure delimiter from original string out");
|
||||
const char* delim = " ";
|
||||
|
||||
wordlist = lumiera_tmpbuf_snprintf (SIZE_MAX, "%s%s%s",
|
||||
wordlist = lumiera_tmpbuf_snprintf (SIZE_MAX, "%s%.1s%s",
|
||||
wordlist,
|
||||
wordlist[strspn (wordlist, " \t,;")]?delim:"",
|
||||
wordlist[strspn (wordlist, delims)] ? delims : "",
|
||||
value);
|
||||
|
||||
if (!lumiera_config_set (key, lumiera_tmpbuf_snprintf (SIZE_MAX, "=%s", wordlist)))
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "lib/mutex.h"
|
||||
#include "lib/safeclib.h"
|
||||
|
||||
#include "backend/plugin.h"
|
||||
#include "backend/interface.h"
|
||||
|
||||
#include "backend/interfaceregistry.h"
|
||||
|
|
@ -49,6 +50,7 @@ lumiera_interface_open (const char* interface, unsigned version, size_t minminor
|
|||
{
|
||||
LumieraInterfacenode self = NULL;
|
||||
TRACE (interface, "%s", name);
|
||||
WARN_IF (version == 0, interface, "opening experimental interface: %s_%d_%s", interface, version, name);
|
||||
|
||||
LUMIERA_RECMUTEX_SECTION (interfaceregistry, &lumiera_interface_mutex)
|
||||
{
|
||||
|
|
@ -132,8 +134,9 @@ depwalk (LumieraInterfacenode self, LumieraInterfacenode* stack)
|
|||
|
||||
if (!cycle)
|
||||
{
|
||||
if ((*dep)->plugin)
|
||||
lumiera_plugin_refinc ((*dep)->plugin);
|
||||
++(*dep)->refcnt;
|
||||
|
||||
(*dep)->lnk = *stack;
|
||||
*stack = *dep;
|
||||
|
||||
|
|
@ -183,7 +186,10 @@ lumiera_interface_open_interfacenode (LumieraInterfacenode self)
|
|||
|
||||
if (!cycle)
|
||||
{
|
||||
if (self->plugin)
|
||||
lumiera_plugin_refinc (self->plugin);
|
||||
++self->refcnt;
|
||||
|
||||
self->lnk = stack;
|
||||
stack = self;
|
||||
int collect_dependencies_bak = collect_dependencies;
|
||||
|
|
@ -228,6 +234,16 @@ lumiera_interface_close (LumieraInterface self)
|
|||
}
|
||||
|
||||
|
||||
unsigned
|
||||
lumiera_interface_version (LumieraInterface self, const char* iname)
|
||||
{
|
||||
if (self && iname && !strcmp (self->interface, iname))
|
||||
return self->version;
|
||||
|
||||
return ~0;
|
||||
}
|
||||
|
||||
|
||||
/* internal function, does no locking! */
|
||||
static void
|
||||
lumiera_interfacenode_close (LumieraInterfacenode self)
|
||||
|
|
@ -279,6 +295,8 @@ lumiera_interfacenode_close (LumieraInterfacenode self)
|
|||
|
||||
stack = self->lnk;
|
||||
self->lnk = NULL;
|
||||
if (self->plugin)
|
||||
lumiera_plugin_refdec (self->plugin);
|
||||
--self->refcnt;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,9 +102,18 @@
|
|||
* @param iname name of the interface
|
||||
* @param version major version of the interface
|
||||
* @param dname name for the instance
|
||||
* @return constructed identifier
|
||||
*/
|
||||
#define LUMIERA_INTERFACE_DNAME(iname, version, dname) PPMPL_CAT (LUMIERA_INTERFACE_INAME(iname, version), _##dname)
|
||||
#define LUMIERA_INTERFACE_DNAME(iname, version, dname) PPMPL_CAT (LUMIERA_INTERFACE_INAME (iname, version), _##dname)
|
||||
|
||||
/**
|
||||
* Construct a definition string r for an interface
|
||||
* @param iname name of the interface
|
||||
* @param version major version of the interface
|
||||
* @param dname name for the instance
|
||||
* @return constructed string
|
||||
*/
|
||||
#define LUMIERA_INTERFACE_DSTRING(iname, version, dname) PPMPL_STRINGIFY (LUMIERA_INTERFACE_DNAME (iname, version, dname))
|
||||
|
||||
/**
|
||||
* Return a reference (pointer) to an interface implementation
|
||||
|
|
@ -259,16 +268,16 @@ LUMIERA_INTERFACE_INSTANCE (iname, version,
|
|||
/**
|
||||
* Generate interface container suitable for enumerating interfaces.
|
||||
* This takes a list of interface definitions, instantiates them and places pointers to them
|
||||
* into a zero terminated array which address is returned by the a created function.
|
||||
* For interfaces generated by he core, the user is responsible to register these at the
|
||||
* plugindb dynamically
|
||||
* @param queryfunc name of the function to be created.
|
||||
* @param ... list of LUMIERA_INTERFACE_DEFINE() for all interfaces this plugin provides.
|
||||
* into a zero terminated array which address is returned by a static function named 'lumiera_plugin_interfaces'.
|
||||
* For interfaces generated by he core, the user is responsible to register these dynamically.
|
||||
* When LUMIERA_PLUGIN is defined, things change and an additional 'lumieraorg__plugin' interface is generated.
|
||||
* The plugin loader then uses this to register the provided interfaces automatically.
|
||||
* @param ... list of LUMIERA_INTERFACE_DEFINE()/LUMIERA_INTERFACE_INLINE() for all interfaces this plugin provides.
|
||||
*/
|
||||
#define LUMIERA_EXPORT(queryfunc, ...) \
|
||||
#define LUMIERA_EXPORT(...) \
|
||||
PPMPL_FOREACH_L1(_P1_, __VA_ARGS__) \
|
||||
static LumieraInterface* \
|
||||
queryfunc (void) \
|
||||
lumiera_plugin_interfaces (void) \
|
||||
{ \
|
||||
static LumieraInterface interfaces[] = \
|
||||
{ \
|
||||
|
|
@ -276,31 +285,41 @@ queryfunc (void) \
|
|||
NULL \
|
||||
}; \
|
||||
return interfaces; \
|
||||
}
|
||||
} \
|
||||
LUMIERA_PLUGININTERFACE
|
||||
|
||||
|
||||
/**
|
||||
* Generate interface container suitable for a lumiera plugin.
|
||||
* This takes a list of interface definitions and places pointers to them into a zero terminated array. Further
|
||||
* it instances a local 'plugin interface' which will be picked up by the plugin loader to query the array of
|
||||
* provided interfaces.
|
||||
* @param descriptor pointer to an interface instance which provides a description of this plugin, might be NULL
|
||||
* @param acquire a function which is called whenever the plugin interface is opened for using, might be NULL
|
||||
* @param release a function which is called whenever this plugin interface is closed after use, might be NULL
|
||||
* @param luid unique identifier for the this plugin interfaces query, use the magic word LUIDGEN here and run the
|
||||
* lumiera uuid generator tool (to be written) over the source file to generate luid's automatically
|
||||
* @param ... list of LUMIERA_INTERFACE_DEFINE() for all interfaces this plugin provides.
|
||||
* Create a plugin interface when being copiled as plugin
|
||||
*/
|
||||
#define LUMIERA_PLUGIN(descriptor, acquire, release, luid, ...) \
|
||||
LUMIERA_EXPORT(plugin_interfaces, __VA_ARGS__) \
|
||||
LUMIERA_INTERFACE_DEFINE (lumieraorg_plugin, 0, \
|
||||
lumieraorg_plugin_0, \
|
||||
NULL, \
|
||||
NULL, \
|
||||
NULL, \
|
||||
LUMIERA_INTERFACE_MAP (plugin_interfaces, plugin_interfaces, luid) \
|
||||
)
|
||||
|
||||
#ifdef LUMIERA_PLUGIN
|
||||
#define LUMIERA_PLUGININTERFACE \
|
||||
LUMIERA_INTERFACE_INSTANCE (lumieraorg__plugin, 0, \
|
||||
lumieraorg_plugin, \
|
||||
NULL, \
|
||||
NULL, \
|
||||
NULL, \
|
||||
LUMIERA_INTERFACE_MAP (plugin_interfaces, \
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", \
|
||||
lumiera_plugin_interfaces) \
|
||||
);
|
||||
#define LUMIERA_INTERFACE_REGISTEREXPORTED
|
||||
#define LUMIERA_INTERFACE_UNREGISTEREXPORTED
|
||||
#else
|
||||
#define LUMIERA_PLUGININTERFACE
|
||||
/**
|
||||
* Register all exported interfaces when not a plugin
|
||||
* This is a no-op when LUMIERA_PLUGIN is defined, since plugins are automatically registered
|
||||
*/
|
||||
#define LUMIERA_INTERFACE_REGISTEREXPORTED \
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (lumiera_plugin_interfaces(), NULL)
|
||||
/**
|
||||
* Unregister all exported interfaces when not a plugin
|
||||
* This is a no-op when LUMIERA_PLUGIN is defined, since plugins are automatically registered
|
||||
*/
|
||||
#define LUMIERA_INTERFACE_UNREGISTEREXPORTED \
|
||||
lumiera_interfaceregistry_bulkremove_interfaces (lumiera_plugin_interfaces())
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -313,6 +332,9 @@ LUMIERA_INTERFACE_DEFINE (lumieraorg_plugin, 0,
|
|||
#define LUMIERA_INTERFACE_OPEN(interface, version, minminor, name) \
|
||||
LUMIERA_INTERFACE_CAST(interface, version) lumiera_interface_open (#interface, version, minminor, #name)
|
||||
|
||||
#define LUMIERA_INTERFACE_CLOSE(handle) \
|
||||
lumiera_interface_close (&(handle)->interface_header_)
|
||||
|
||||
|
||||
typedef struct lumiera_interfaceslot_struct lumiera_interfaceslot;
|
||||
typedef lumiera_interfaceslot* LumieraInterfaceslot;
|
||||
|
|
@ -372,6 +394,15 @@ struct lumiera_interface_struct
|
|||
#endif
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Plugin interface
|
||||
*/
|
||||
LUMIERA_INTERFACE_DECLARE (lumieraorg__plugin, 0,
|
||||
LUMIERA_INTERFACE_SLOT (LumieraInterface*, plugin_interfaces, (void)),
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
API to handle interfaces
|
||||
*/
|
||||
|
|
@ -395,7 +426,16 @@ lumiera_interface_open (const char* interface, unsigned version, size_t minminor
|
|||
* consider 'self' to be invalidated after this call
|
||||
*/
|
||||
void
|
||||
lumiera_interface_close (LumieraInterface iface);
|
||||
lumiera_interface_close (LumieraInterface self);
|
||||
|
||||
/**
|
||||
* Runtime check for interface type and version
|
||||
* @param self interface to check
|
||||
* @param iname name of the interface
|
||||
* @return version of the interface or ~0 (-1) if iname doesn't match the requested name
|
||||
*/
|
||||
unsigned
|
||||
lumiera_interface_version (LumieraInterface self, const char* iname);
|
||||
|
||||
|
||||
#endif /* LUMIERA_INTERFACE_H */
|
||||
|
|
|
|||
|
|
@ -23,20 +23,113 @@
|
|||
|
||||
#include "backend/interface.h"
|
||||
|
||||
|
||||
/**
|
||||
* WIP: interface descriptor, needs some generic metadata interface
|
||||
* Release state of an interface implementation.
|
||||
* The interface subsystem must be able to categorize implementations to present possible
|
||||
* upgrade paths to the user. This is done by the tagging it to a certain state in concert
|
||||
* with the version and the user supplied version compare function. The respective numbers
|
||||
* are choosen in a way that a higher value indicates precedence when selecting an implementation.
|
||||
* Note that 'BETA' is higher than 'DEPRECATED', we make the assumption that BETA is at least
|
||||
* maintained code and something gets deprecated for some reason. For common practice it is
|
||||
* suggested to make a stable release before declaring its predcessor version as deprecated.
|
||||
*/
|
||||
enum lumiera_interface_state {
|
||||
/** some known bugs exist which won't be fixed, don't use this */
|
||||
LUMIERA_INTERFACE_BROKEN = -1,
|
||||
/** Not finished development code */
|
||||
LUMIERA_INTERFACE_EXPERIMENTAL = 0,
|
||||
/** Old implementation which is now unmaintained and will be removed soon */
|
||||
LUMIERA_INTERFACE_DEPRECATED = 1,
|
||||
/** Finished but not finally released implementation for open testing */
|
||||
LUMIERA_INTERFACE_BETA = 2,
|
||||
/** Finished, released and maintained implementation */
|
||||
LUMIERA_INTERFACE_STABLE = 3
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Interface descriptor.
|
||||
* This defines an interface for querying metadata common to all interface implementations
|
||||
*/
|
||||
LUMIERA_INTERFACE_DECLARE (lumieraorg_interfacedescriptor, 0,
|
||||
/* The following slots are some human-readable descriptions of certain properties */
|
||||
LUMIERA_INTERFACE_SLOT (const char*, name, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, brief, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, homepage, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, version, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, author, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, email, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, copyright, (LumieraInterface)),
|
||||
LUMIERA_INTERFACE_SLOT (const char*, license, (LumieraInterface))
|
||||
/* TODO add more things here, dependencies, provisions etc */
|
||||
LUMIERA_INTERFACE_SLOT (const char*, license, (LumieraInterface)),
|
||||
|
||||
/* some flags for properties */
|
||||
LUMIERA_INTERFACE_SLOT (int, state, (LumieraInterface)),
|
||||
|
||||
/* compare 2 version strings in a custom way */
|
||||
LUMIERA_INTERFACE_SLOT (int, versioncmp, (const char*, const char*))
|
||||
);
|
||||
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* For convinience, a copy'n'paste descriptor
|
||||
*/
|
||||
LUMIERA_INTERFACE_INSTANCE (lumieraorg_interfacedescriptor, 0,
|
||||
/*IDENTIFIER*/,
|
||||
NULL, NULL, NULL,
|
||||
LUMIERA_INTERFACE_INLINE (name, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*NAME*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (brief, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*BRIEF*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (homepage, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*HOMEPAGE*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (version, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*VERSION*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (author, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*AUTHOR*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (email, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{return /*EMAIL*/;}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (copyright, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{
|
||||
return
|
||||
"Copyright (C) "/*ORGANIZATION*/"\n"
|
||||
" "/*YEARS*/" "/*AUTHOR*/" <"/*EMAIL*/">";
|
||||
}
|
||||
),
|
||||
LUMIERA_INTERFACE_INLINE (license, LUIDGEN,
|
||||
const char*, (LumieraInterface iface),
|
||||
{
|
||||
return
|
||||
/*LICENSE*/;
|
||||
}
|
||||
),
|
||||
|
||||
LUMIERA_INTERFACE_INLINE (state, LUIDGEN,
|
||||
int, (LumieraInterface iface),
|
||||
{return /*LUMIERA_INTERFACE_EXPERIMENTAL*/;}
|
||||
),
|
||||
|
||||
LUMIERA_INTERFACE_INLINE (versioncmp, LUIDGEN,
|
||||
int, (const char* a, const char* b),
|
||||
{return /*COMPARERESULT*/;}
|
||||
)
|
||||
);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* LUMIERA_INTERFACEDESCRIPTORS_H */
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
|
||||
|
||||
#include "backend/plugin.h"
|
||||
#include "backend/interfaceregistry.h"
|
||||
|
||||
/**
|
||||
|
|
@ -39,27 +40,31 @@
|
|||
*/
|
||||
|
||||
NOBUG_DEFINE_FLAG_PARENT (interface_all, backend);
|
||||
NOBUG_DEFINE_FLAG_PARENT (plugin, interface_all);
|
||||
NOBUG_DEFINE_FLAG_PARENT (interfaceregistry, interface_all);
|
||||
NOBUG_DEFINE_FLAG_PARENT (interface, interface_all);
|
||||
|
||||
PSplay lumiera_interfaceregistry;
|
||||
PSplay lumiera_pluginregistry;
|
||||
lumiera_mutex lumiera_interface_mutex;
|
||||
|
||||
static int
|
||||
cmp_fn (const void* keya, const void* keyb);
|
||||
lumiera_interface_cmp_fn (const void* keya, const void* keyb);
|
||||
|
||||
static const void*
|
||||
key_fn (const PSplaynode node);
|
||||
lumiera_interface_key_fn (const PSplaynode node);
|
||||
|
||||
|
||||
|
||||
static LumieraInterfacenode
|
||||
lumiera_interfacenode_new (LumieraInterface iface)
|
||||
lumiera_interfacenode_new (LumieraInterface iface, LumieraPlugin plugin)
|
||||
{
|
||||
LumieraInterfacenode self = lumiera_malloc (sizeof (*self));
|
||||
|
||||
psplaynode_init (&self->node);
|
||||
self->interface = iface;
|
||||
self->refcnt = 0;
|
||||
self->plugin = plugin;
|
||||
self->lnk = NULL;
|
||||
self->deps_size = 0;
|
||||
self->deps = NULL;
|
||||
|
|
@ -89,13 +94,20 @@ lumiera_interfaceregistry_init (void)
|
|||
NOBUG_INIT_FLAG (interface_all);
|
||||
NOBUG_INIT_FLAG (interfaceregistry);
|
||||
NOBUG_INIT_FLAG (interface);
|
||||
NOBUG_INIT_FLAG (plugin);
|
||||
|
||||
TRACE (interfaceregistry);
|
||||
REQUIRE (!lumiera_interfaceregistry);
|
||||
REQUIRE (!lumiera_pluginregistry);
|
||||
|
||||
lumiera_interfaceregistry = psplay_new (cmp_fn, key_fn, NULL);
|
||||
lumiera_interfaceregistry = psplay_new (lumiera_interface_cmp_fn, lumiera_interface_key_fn, NULL);
|
||||
if (!lumiera_interfaceregistry)
|
||||
LUMIERA_DIE (ERRNO);
|
||||
|
||||
lumiera_pluginregistry = psplay_new (lumiera_plugin_cmp_fn, lumiera_plugin_key_fn, lumiera_plugin_delete_fn);
|
||||
if (!lumiera_pluginregistry)
|
||||
LUMIERA_DIE (ERRNO);
|
||||
|
||||
lumiera_recmutex_init (&lumiera_interface_mutex, "interfaceregistry", &NOBUG_FLAG(interfaceregistry));
|
||||
}
|
||||
|
||||
|
|
@ -104,10 +116,15 @@ void
|
|||
lumiera_interfaceregistry_destroy (void)
|
||||
{
|
||||
TRACE (interfaceregistry);
|
||||
REQUIRE (!psplay_nelements (lumiera_interfaceregistry));
|
||||
|
||||
if (lumiera_pluginregistry)
|
||||
psplay_delete (lumiera_pluginregistry);
|
||||
lumiera_pluginregistry = NULL;
|
||||
|
||||
lumiera_mutex_destroy (&lumiera_interface_mutex, &NOBUG_FLAG(interfaceregistry));
|
||||
|
||||
REQUIRE (!psplay_nelements (lumiera_interfaceregistry), "some interfaces still registered at shutdown");
|
||||
|
||||
if (lumiera_interfaceregistry)
|
||||
psplay_destroy (lumiera_interfaceregistry);
|
||||
lumiera_interfaceregistry = NULL;
|
||||
|
|
@ -115,7 +132,7 @@ lumiera_interfaceregistry_destroy (void)
|
|||
|
||||
|
||||
void
|
||||
lumiera_interfaceregistry_register_interface (LumieraInterface self)
|
||||
lumiera_interfaceregistry_register_interface (LumieraInterface self, LumieraPlugin plugin)
|
||||
{
|
||||
TRACE (interfaceregistry);
|
||||
REQUIRE (self);
|
||||
|
|
@ -123,13 +140,13 @@ lumiera_interfaceregistry_register_interface (LumieraInterface self)
|
|||
LUMIERA_RECMUTEX_SECTION (interfaceregistry, &lumiera_interface_mutex)
|
||||
{
|
||||
TRACE (interfaceregistry, "interface %s, version %d, instance %s", self->interface, self->version, self->name);
|
||||
psplay_insert (lumiera_interfaceregistry, &lumiera_interfacenode_new (self)->node, 100);
|
||||
psplay_insert (lumiera_interfaceregistry, &lumiera_interfacenode_new (self, plugin)->node, 100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface* self)
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface* self, LumieraPlugin plugin)
|
||||
{
|
||||
TRACE (interfaceregistry);
|
||||
REQUIRE (self);
|
||||
|
|
@ -139,7 +156,7 @@ lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface* self)
|
|||
while (*self)
|
||||
{
|
||||
TRACE (interfaceregistry, "interface %s, version %d, instance %s", (*self)->interface, (*self)->version, (*self)->name);
|
||||
psplay_insert (lumiera_interfaceregistry, &lumiera_interfacenode_new (*self)->node, 100);
|
||||
psplay_insert (lumiera_interfaceregistry, &lumiera_interfacenode_new (*self, plugin)->node, 100);
|
||||
++self;
|
||||
}
|
||||
}
|
||||
|
|
@ -213,7 +230,7 @@ lumiera_interfaceregistry_interface_find (const char* interface, unsigned versio
|
|||
|
||||
|
||||
static int
|
||||
cmp_fn (const void* keya, const void* keyb)
|
||||
lumiera_interface_cmp_fn (const void* keya, const void* keyb)
|
||||
{
|
||||
const LumieraInterface a = (const LumieraInterface)keya;
|
||||
const LumieraInterface b = (const LumieraInterface)keyb;
|
||||
|
|
@ -240,12 +257,11 @@ cmp_fn (const void* keya, const void* keyb)
|
|||
|
||||
|
||||
static const void*
|
||||
key_fn (const PSplaynode node)
|
||||
lumiera_interface_key_fn (const PSplaynode node)
|
||||
{
|
||||
return ((LumieraInterfacenode)node)->interface;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// Local Variables:
|
||||
// mode: C
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include "lib/psplay.h"
|
||||
|
||||
#include "backend/interface.h"
|
||||
#include "backend/plugin.h"
|
||||
|
||||
#include <nobug.h>
|
||||
|
||||
|
|
@ -62,6 +63,10 @@ struct lumiera_interfacenode_struct
|
|||
|
||||
/** reference counters and link used for internal reference management */
|
||||
unsigned refcnt;
|
||||
|
||||
/** backreference to its plugin if it comes from a plugin, else NULL */
|
||||
LumieraPlugin plugin;
|
||||
|
||||
/** temporary used to stack interfaces when recursively opening/closing them */
|
||||
LumieraInterfacenode lnk;
|
||||
/** allocated size of the following deps table */
|
||||
|
|
@ -84,10 +89,10 @@ lumiera_interfaceregistry_destroy (void);
|
|||
|
||||
|
||||
void
|
||||
lumiera_interfaceregistry_register_interface (LumieraInterface self);
|
||||
lumiera_interfaceregistry_register_interface (LumieraInterface self, LumieraPlugin plugin);
|
||||
|
||||
void
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface* self);
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface* self, LumieraPlugin plugin);
|
||||
|
||||
void
|
||||
lumiera_interfaceregistry_remove_interface (LumieraInterface self);
|
||||
|
|
|
|||
|
|
@ -18,320 +18,403 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <search.h>
|
||||
#include <string.h>
|
||||
#include <dlfcn.h>
|
||||
#include <pthread.h>
|
||||
#include <time.h>
|
||||
#include <limits.h>
|
||||
|
||||
|
||||
#include "lib/safeclib.h"
|
||||
#include "lib/psplay.h"
|
||||
#include "lib/mutex.h"
|
||||
#include "lib/error.h"
|
||||
|
||||
#include "backend/interfaceregistry.h"
|
||||
#include "backend/config.h"
|
||||
#include "backend/plugin.h"
|
||||
|
||||
#include <glob.h>
|
||||
|
||||
#include <nobug.h>
|
||||
|
||||
#ifndef LUMIERA_PLUGIN_PATH
|
||||
#error TODO: hey ichthyo, please figure the $pkglib path out by scons and use it as -DLUMIERA_PLUGIN_PATH for this source
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Plugin loader.
|
||||
*/
|
||||
|
||||
/* just some declarations */
|
||||
extern PSplay lumiera_pluginregistry;
|
||||
static char* init_exts_globs ();
|
||||
|
||||
/* TODO should be set by the build system to the actual plugin path */
|
||||
#define LUMIERA_PLUGIN_PATH "~/.lumiera/plugins:/usr/local/lib/lumiera/plugins:.libs"
|
||||
|
||||
NOBUG_DEFINE_FLAG (lumiera_plugin);
|
||||
/* TODO default plugin path should be set by the build system */
|
||||
|
||||
/* errors */
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_DLOPEN, "Could not open plugin");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_HOOK, "Hook function failed");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_NFILE, "No such plugin");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_NIFACE, "No such interface");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_REVISION, "Interface revision too old");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_INIT, "Initialization error");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_OPEN, "Could not open plugin");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_WTF, "Not a Lumiera plugin");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_REGISTER, "Could not register plugin");
|
||||
LUMIERA_ERROR_DEFINE(PLUGIN_VERSION, "Plugin Version unsupported");
|
||||
|
||||
/*
|
||||
supported (planned) plugin types and their file extensions
|
||||
*/
|
||||
#define LUMIERA_PLUGIN_TYPE_PLANNED(name, ext)
|
||||
|
||||
enum lumiera_plugin_type
|
||||
{
|
||||
LUMIERA_PLUGIN_NULL,
|
||||
LUMIERA_PLUGIN_DYNLIB,
|
||||
LUMIERA_PLUGIN_CSOURCE
|
||||
};
|
||||
/**
|
||||
* Supported (and planned) plugin types and their file extensions
|
||||
* This maps filename extensions to implementations (of the respective _load_NAME and _unload_NAME functions)
|
||||
* So far we only support platform dynamic libraries, later we may add plugins implemented in lua
|
||||
* and c source modules which get compiled on the fly.
|
||||
*/
|
||||
#define LUMIERA_PLUGIN_TYPES \
|
||||
LUMIERA_PLUGIN_TYPE(DYNLIB, ".so") \
|
||||
LUMIERA_PLUGIN_TYPE(DYNLIB, ".lum") \
|
||||
LUMIERA_PLUGIN_TYPE_PLANNED(LUA, ".lua") \
|
||||
LUMIERA_PLUGIN_TYPE_PLANNED(CSOURCE, ".c")
|
||||
|
||||
static const struct
|
||||
|
||||
/**
|
||||
* record the extension and a callback function for loading the associated plugin for each plugin type
|
||||
*/
|
||||
struct lumiera_plugintype_struct
|
||||
{
|
||||
const char* const ext;
|
||||
enum lumiera_plugin_type type;
|
||||
} lumiera_plugin_extensions [] =
|
||||
LumieraPlugin (*lumiera_plugin_load_fn)(const char*);
|
||||
void (*lumiera_plugin_unload_fn)(LumieraPlugin);
|
||||
const char* ext;
|
||||
};
|
||||
typedef struct lumiera_plugintype_struct lumiera_plugintype;
|
||||
typedef lumiera_plugintype* LumieraPlugintype;
|
||||
|
||||
/* forward declare loader functions for all types */
|
||||
#define LUMIERA_PLUGIN_TYPE(type, ext) \
|
||||
LumieraPlugin lumiera_plugin_load_##type (const char*); \
|
||||
void lumiera_plugin_unload_##type (LumieraPlugin);
|
||||
LUMIERA_PLUGIN_TYPES
|
||||
#undef LUMIERA_PLUGIN_TYPE
|
||||
|
||||
/* and now setup a table which will be used for dispatching loaders depending on the type of the plugin */
|
||||
#define LUMIERA_PLUGIN_TYPE(type, ext) {lumiera_plugin_load_##type, lumiera_plugin_unload_##type, ext},
|
||||
static lumiera_plugintype lumiera_plugin_types[] =
|
||||
{
|
||||
{"so", LUMIERA_PLUGIN_DYNLIB},
|
||||
{"o", LUMIERA_PLUGIN_DYNLIB},
|
||||
{"c", LUMIERA_PLUGIN_CSOURCE},
|
||||
/* extend here */
|
||||
{NULL, LUMIERA_PLUGIN_NULL}
|
||||
LUMIERA_PLUGIN_TYPES
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
#undef LUMIERA_PLUGIN_TYPE
|
||||
|
||||
|
||||
struct lumiera_plugin
|
||||
|
||||
|
||||
struct lumiera_plugin_struct
|
||||
{
|
||||
/* short name as queried ("effects/audio/normalize") used for sorting/finding */
|
||||
const char* name;
|
||||
psplaynode node;
|
||||
|
||||
/* long names as looked up ("/usr/local/lib/lumiera/plugins/effects/audio/normalize.so") */
|
||||
const char* pathname;
|
||||
const char* name;
|
||||
|
||||
/* use count for all interfaces of this plugin */
|
||||
unsigned use_count;
|
||||
unsigned refcnt;
|
||||
|
||||
/* time when the last open or close action happened */
|
||||
/* time when the refcounter dropped to 0 last time */
|
||||
time_t last;
|
||||
|
||||
/* kind of plugin */
|
||||
enum lumiera_plugin_type type;
|
||||
/* when loading plugins en masse we do not want to fail completely if one doesnt cooperate, instead we record local errors here */
|
||||
lumiera_err error;
|
||||
|
||||
/* dlopen handle */
|
||||
/* the 'plugin' interface itself */
|
||||
LumieraInterface plugin;
|
||||
|
||||
/* generic handle for the plugin, dlopen handle, etc */
|
||||
void* handle;
|
||||
};
|
||||
|
||||
|
||||
/* global plugin registry */
|
||||
void* lumiera_plugin_registry = NULL;
|
||||
|
||||
/* plugin operations are protected by one big mutex */
|
||||
pthread_mutex_t lumiera_plugin_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
/**
|
||||
* the compare function for the registry tree.
|
||||
* Compares the names of two struct lumiera_plugin.
|
||||
* @return 0 if a and b are equal, just like strcmp. */
|
||||
static int
|
||||
lumiera_plugin_name_cmp (const void* a, const void* b)
|
||||
LumieraPlugin
|
||||
lumiera_plugin_new (const char* name)
|
||||
{
|
||||
return strcmp (((struct lumiera_plugin*) a)->name, ((struct lumiera_plugin*) b)->name);
|
||||
LumieraPlugin self = lumiera_malloc (sizeof (*self));
|
||||
|
||||
psplaynode_init (&self->node);
|
||||
self->name = lumiera_strndup (name, SIZE_MAX);
|
||||
self->refcnt = 0;
|
||||
time (&self->last);
|
||||
self->error = LUMIERA_ERROR_PLUGIN_INIT;
|
||||
self->plugin = NULL;
|
||||
self->handle = NULL;
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
LumieraPlugin
|
||||
lumiera_plugin_init (LumieraPlugin self, void* handle, LumieraInterface plugin)
|
||||
{
|
||||
self->error = lumiera_error ();
|
||||
self->plugin = plugin;
|
||||
self->handle = handle;
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
lumiera_err
|
||||
lumiera_plugin_error (LumieraPlugin self)
|
||||
{
|
||||
REQUIRE (self);
|
||||
return self->error;
|
||||
}
|
||||
|
||||
|
||||
void*
|
||||
lumiera_plugin_handle (LumieraPlugin self)
|
||||
{
|
||||
REQUIRE (self);
|
||||
return self->handle;
|
||||
}
|
||||
|
||||
|
||||
const char*
|
||||
lumiera_plugin_name (LumieraPlugin self)
|
||||
{
|
||||
return self?self->name:NULL;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lumiera_init_plugin (void)
|
||||
lumiera_plugin_refinc (LumieraPlugin self)
|
||||
{
|
||||
NOBUG_INIT_FLAG (lumiera_plugin);
|
||||
++self->refcnt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find and set pathname for the plugin.
|
||||
* Searches through given path for given plugin, trying to find the file's location in the filesystem.
|
||||
* If found, self->pathname will be set to the found plugin file.
|
||||
* @param self The lumiera_plugin to open look for.
|
||||
* @param path The path to search trough (paths seperated by ":")
|
||||
* @return 0 on success. -1 on error, or if plugin not found in path.
|
||||
*/
|
||||
|
||||
void
|
||||
lumiera_plugin_refdec (LumieraPlugin self)
|
||||
{
|
||||
if (!--self->refcnt)
|
||||
time (&self->last);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
lumiera_plugin_lookup (struct lumiera_plugin* self, const char* path)
|
||||
lumiera_plugin_discover (LumieraPlugin (*callback_load)(const char* plugin),
|
||||
int (*callback_register) (LumieraPlugin))
|
||||
{
|
||||
if (!path)
|
||||
return -1;
|
||||
TRACE (plugin);
|
||||
REQUIRE (callback_load);
|
||||
REQUIRE (callback_register);
|
||||
|
||||
if (strlen(path) > 1023)
|
||||
return -1; /*TODO error handling*/
|
||||
lumiera_config_setdefault ("plugin.path ="LUMIERA_PLUGIN_PATH);
|
||||
|
||||
char tpath[1024];
|
||||
TODO("dunno if PATH_MAX may be undefined (in case arbitary lengths are supported), I check that later");
|
||||
char pathname[1024] = {0};
|
||||
char* tmp;
|
||||
/* construct glob trail {.so,.c,.foo} ... */
|
||||
static char* exts_globs = NULL;
|
||||
if (!exts_globs)
|
||||
exts_globs = init_exts_globs (&exts_globs);
|
||||
|
||||
strcpy(tpath, path);
|
||||
const char* path;
|
||||
unsigned i = 0;
|
||||
int flags = GLOB_PERIOD|GLOB_BRACE|GLOB_TILDE_CHECK;
|
||||
glob_t globs;
|
||||
|
||||
/*for each in path*/
|
||||
for (char* tok = strtok_r (tpath, ":", &tmp); tok; tok = strtok_r (NULL, ":", &tmp))
|
||||
while ((path = lumiera_config_wordlist_get_nth ("plugin.path", i, ":")))
|
||||
{
|
||||
/*for each extension*/
|
||||
for (int i = 0; lumiera_plugin_extensions[i].ext; ++i)
|
||||
{
|
||||
/* path/name.extension */
|
||||
int r = snprintf(pathname, 1024, "%s/%s.%s", tok, self->name, lumiera_plugin_extensions[i].ext);
|
||||
if (r >= 1024)
|
||||
return -1; /*TODO error handling, name too long*/
|
||||
path = lumiera_tmpbuf_snprintf (SIZE_MAX,"%s/%s", path, exts_globs);
|
||||
TRACE (plugin, "globbing path '%s'", path);
|
||||
int ret = glob (path, flags, NULL, &globs);
|
||||
if (ret == GLOB_NOSPACE)
|
||||
LUMIERA_DIE (NO_MEMORY);
|
||||
|
||||
TRACE (lumiera_plugin, "trying %s", pathname);
|
||||
|
||||
if (!access(pathname, R_OK))
|
||||
{
|
||||
/* got it */
|
||||
TRACE (lumiera_plugin, "found %s", pathname);
|
||||
self->pathname = lumiera_strndup (pathname, PATH_MAX);
|
||||
|
||||
self->type = lumiera_plugin_extensions[i].type;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
flags |= GLOB_APPEND;
|
||||
++i;
|
||||
}
|
||||
return -1; /* plugin not found */
|
||||
|
||||
if (globs.gl_pathc)
|
||||
LUMIERA_RECMUTEX_SECTION (plugin, &lumiera_interface_mutex)
|
||||
{
|
||||
for (char** itr = globs.gl_pathv; *itr; ++itr)
|
||||
{
|
||||
if (!psplay_find (lumiera_pluginregistry, *itr, 100))
|
||||
{
|
||||
TRACE (plugin, "found new plugin '%s'", *itr);
|
||||
callback_register (callback_load (*itr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
globfree (&globs);
|
||||
|
||||
return !lumiera_error_peek ();
|
||||
}
|
||||
|
||||
|
||||
struct lumiera_interface*
|
||||
lumiera_interface_open (const char* name, const char* interface, size_t min_revision)
|
||||
LumieraPlugin
|
||||
lumiera_plugin_load (const char* plugin)
|
||||
{
|
||||
//REQUIRE (min_revision > sizeof(struct lumiera_interface), "try to use an empty interface eh?");
|
||||
REQUIRE (interface, "interface name must be given");
|
||||
TRACE (plugin);
|
||||
|
||||
pthread_mutex_lock (&lumiera_plugin_mutex);
|
||||
/* dispatch on ext, call the registered function */
|
||||
const char* ext = strrchr (plugin, '.');
|
||||
|
||||
struct lumiera_plugin plugin;
|
||||
struct lumiera_plugin** found;
|
||||
|
||||
plugin.name = name; /* for searching */
|
||||
|
||||
found = tsearch (&plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
|
||||
if (!found)
|
||||
LUMIERA_DIE (NO_MEMORY);
|
||||
|
||||
if (*found == &plugin)
|
||||
LumieraPlugintype itr = lumiera_plugin_types;
|
||||
while (itr->ext)
|
||||
{
|
||||
NOTICE (lumiera_plugin, "new plugin");
|
||||
if (!strcmp (itr->ext, ext))
|
||||
return itr->lumiera_plugin_load_fn (plugin);
|
||||
++itr;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* now really create new item */
|
||||
*found = lumiera_malloc (sizeof (struct lumiera_plugin));
|
||||
|
||||
if (name) /* NULL is main app, no lookup needed */
|
||||
int
|
||||
lumiera_plugin_register (LumieraPlugin plugin)
|
||||
{
|
||||
TRACE (plugin);
|
||||
if (!plugin)
|
||||
return 1;
|
||||
|
||||
LUMIERA_RECMUTEX_SECTION (plugin, &lumiera_interface_mutex)
|
||||
{
|
||||
if (psplay_insert (lumiera_pluginregistry, &plugin->node, 100))
|
||||
{
|
||||
/*lookup for $LUMIERA_PLUGIN_PATH*/
|
||||
(*found)->name = lumiera_strndup (name, PATH_MAX);
|
||||
|
||||
if (!!lumiera_plugin_lookup (*found, getenv("LUMIERA_PLUGIN_PATH"))
|
||||
#ifdef LUMIERA_PLUGIN_PATH
|
||||
/* else lookup for -DLUMIERA_PLUGIN_PATH */
|
||||
&& !!lumiera_plugin_lookup (*found, LUMIERA_PLUGIN_PATH)
|
||||
#endif
|
||||
)
|
||||
if (!plugin->error)
|
||||
{
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_NFILE);
|
||||
goto elookup;
|
||||
switch (lumiera_interface_version (plugin->plugin, "lumieraorg__plugin"))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
TRACE (plugin, "registering %s", plugin->name);
|
||||
LUMIERA_INTERFACE_HANDLE(lumieraorg__plugin, 0) handle =
|
||||
LUMIERA_INTERFACE_CAST(lumieraorg__plugin, 0) plugin->plugin;
|
||||
lumiera_interfaceregistry_bulkregister_interfaces (handle->plugin_interfaces (), plugin);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LUMIERA_ERROR_SET (plugin, PLUGIN_VERSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*found)->name = NULL;
|
||||
(*found)->pathname = NULL;
|
||||
}
|
||||
|
||||
(*found)->use_count = 0;
|
||||
|
||||
PLANNED("if .so like then dlopen; else if .c like tcc compile");
|
||||
TODO("factor dlopen and dlsym out");
|
||||
|
||||
TRACE(lumiera_plugin, "trying to open %s", (*found)->pathname);
|
||||
|
||||
(*found)->handle = dlopen ((*found)->pathname, RTLD_LAZY|RTLD_LOCAL);
|
||||
if (!(*found)->handle)
|
||||
{
|
||||
ERROR (lumiera_plugin, "dlopen failed: %s", dlerror());
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_DLOPEN);
|
||||
goto edlopen;
|
||||
}
|
||||
|
||||
/* if the plugin defines a 'lumiera_plugin_init' function, we call it, must return 0 on success */
|
||||
int (*init)(void) = dlsym((*found)->handle, "lumiera_plugin_init");
|
||||
if (init && init())
|
||||
{
|
||||
//ERROR (lumiera_plugin, "lumiera_plugin_init failed: %s: %s", name, interface);
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_HOOK);
|
||||
goto einit;
|
||||
LUMIERA_ERROR_SET (plugin, PLUGIN_REGISTER);
|
||||
}
|
||||
}
|
||||
/* we have the plugin, now get the interface descriptor */
|
||||
struct lumiera_interface* ret;
|
||||
|
||||
dlerror();
|
||||
ret = dlsym ((*found)->handle, interface);
|
||||
|
||||
const char *dlerr = dlerror();
|
||||
TRACE(lumiera_plugin, "%s", dlerr);
|
||||
TODO ("need some way to tell 'interface not provided by plugin', maybe lumiera_plugin_error()?");
|
||||
if (dlerr)
|
||||
{
|
||||
//ERROR (lumiera_plugin, "plugin %s doesnt provide interface %s", name, interface);
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_NIFACE);
|
||||
goto edlsym;
|
||||
}
|
||||
|
||||
/* is the interface older than required? */
|
||||
if (ret->size < min_revision)
|
||||
{
|
||||
ERROR (lumiera_plugin, "plugin %s provides older interface %s revision than required", name, interface);
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_REVISION);
|
||||
goto erevision;
|
||||
}
|
||||
|
||||
ret->plugin = *found;
|
||||
|
||||
/* if the interface provides a 'open' function, call it now, must return 0 on success */
|
||||
if (ret->open && ret->open())
|
||||
{
|
||||
ERROR (lumiera_plugin, "open hook indicated an error");
|
||||
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_HOOK);
|
||||
goto eopen;
|
||||
}
|
||||
|
||||
(*found)->use_count++;
|
||||
(*found)->last = time (NULL);
|
||||
ret->use_count++;
|
||||
|
||||
pthread_mutex_unlock (&lumiera_plugin_mutex);
|
||||
return ret;
|
||||
|
||||
/* Error cleanup */
|
||||
einit:
|
||||
dlclose((*found)->handle);
|
||||
eopen:
|
||||
erevision:
|
||||
edlsym:
|
||||
edlopen:
|
||||
elookup:
|
||||
free ((char*)(*found)->name);
|
||||
free (*found);
|
||||
*found = &plugin;
|
||||
tdelete (&plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
|
||||
pthread_mutex_unlock (&lumiera_plugin_mutex);
|
||||
return NULL;
|
||||
return !!lumiera_error_peek();
|
||||
}
|
||||
|
||||
|
||||
unsigned
|
||||
lumiera_plugin_unload (LumieraPlugin self)
|
||||
{
|
||||
TRACE (plugin);
|
||||
|
||||
if (!self)
|
||||
return 0;
|
||||
|
||||
if (self->refcnt)
|
||||
return self->refcnt;
|
||||
|
||||
/* dispatch on ext, call the registered function */
|
||||
const char* ext = strrchr (self->name, '.');
|
||||
|
||||
LumieraPlugintype itr = lumiera_plugin_types;
|
||||
while (itr->ext)
|
||||
{
|
||||
if (!strcmp (itr->ext, ext))
|
||||
{
|
||||
LUMIERA_RECMUTEX_SECTION (plugin, &lumiera_interface_mutex)
|
||||
{
|
||||
if (psplay_remove (lumiera_pluginregistry, &self->node))
|
||||
{
|
||||
if (!self->error)
|
||||
{
|
||||
LUMIERA_INTERFACE_HANDLE(lumieraorg__plugin, 0) handle =
|
||||
LUMIERA_INTERFACE_CAST(lumieraorg__plugin, 0) self->plugin;
|
||||
lumiera_interfaceregistry_bulkremove_interfaces (handle->plugin_interfaces ());
|
||||
}
|
||||
}
|
||||
}
|
||||
itr->lumiera_plugin_unload_fn (self);
|
||||
break;
|
||||
}
|
||||
++itr;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
LumieraPlugin
|
||||
lumiera_plugin_lookup (const char* name)
|
||||
{
|
||||
LumieraPlugin ret = NULL;
|
||||
|
||||
if (name)
|
||||
LUMIERA_RECMUTEX_SECTION (plugin, &lumiera_interface_mutex)
|
||||
ret = (LumieraPlugin) psplay_find (lumiera_pluginregistry, name, 100);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static char* init_exts_globs ()
|
||||
{
|
||||
char* exts_globs;
|
||||
size_t exts_sz = 3; /* * { } \0 less one comma */
|
||||
LumieraPlugintype itr = lumiera_plugin_types;
|
||||
while (itr->ext)
|
||||
{
|
||||
exts_sz += strlen (itr->ext) + 1;
|
||||
++itr;
|
||||
}
|
||||
|
||||
exts_globs = lumiera_malloc (exts_sz);
|
||||
*exts_globs = '\0';
|
||||
|
||||
itr = lumiera_plugin_types;
|
||||
strcat (exts_globs, "*{");
|
||||
|
||||
while (itr->ext)
|
||||
{
|
||||
strcat (exts_globs, itr->ext);
|
||||
strcat (exts_globs, ",");
|
||||
++itr;
|
||||
}
|
||||
exts_globs[exts_sz-2] = '}';
|
||||
TRACE (plugin, "initialized extension glob to '%s'", exts_globs);
|
||||
return exts_globs;
|
||||
}
|
||||
|
||||
int
|
||||
lumiera_plugin_cmp_fn (const void* keya, const void* keyb)
|
||||
{
|
||||
return strcmp ((const char*)keya, (const char*)keyb);
|
||||
}
|
||||
|
||||
|
||||
const void*
|
||||
lumiera_plugin_key_fn (const PSplaynode node)
|
||||
{
|
||||
return ((LumieraPlugin)node)->name;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lumiera_interface_close (void* ptr)
|
||||
lumiera_plugin_delete_fn (PSplaynode node)
|
||||
{
|
||||
TRACE (lumiera_plugin, "%p", ptr);
|
||||
if(!ptr)
|
||||
return;
|
||||
LumieraPlugin self = (LumieraPlugin) node;
|
||||
|
||||
struct lumiera_interface* self = (struct lumiera_interface*) ptr;
|
||||
ENSURE (!self->refcnt, "plugin %s still in use at shutdown", self->name);
|
||||
|
||||
pthread_mutex_lock (&lumiera_plugin_mutex);
|
||||
const char* ext = strrchr (self->name, '.');
|
||||
|
||||
struct lumiera_plugin* plugin = self->plugin;
|
||||
|
||||
plugin->use_count--;
|
||||
self->use_count--;
|
||||
|
||||
/* if the interface provides a 'close' function, call it now */
|
||||
if (self->close)
|
||||
self->close();
|
||||
|
||||
/* plugin not longer in use, unload it */
|
||||
if (!plugin->use_count)
|
||||
LumieraPlugintype itr = lumiera_plugin_types;
|
||||
while (itr->ext)
|
||||
{
|
||||
TODO ("we dont want to close here, instead store time of recent use and make a expire run, already planned in my head");
|
||||
|
||||
/* if the plugin defines a 'lumiera_plugin_destroy' function, we call it */
|
||||
int (*destroy)(void) = dlsym(plugin->handle, "lumiera_plugin_destroy");
|
||||
if (destroy)
|
||||
destroy();
|
||||
|
||||
/* and now cleanup */
|
||||
tdelete (plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
|
||||
free ((char*)plugin->name);
|
||||
dlclose(plugin->handle);
|
||||
free (plugin);
|
||||
if (!strcmp (itr->ext, ext))
|
||||
{
|
||||
if (!self->error)
|
||||
{
|
||||
LUMIERA_INTERFACE_HANDLE(lumieraorg__plugin, 0) handle =
|
||||
LUMIERA_INTERFACE_CAST(lumieraorg__plugin, 0) self->plugin;
|
||||
lumiera_interfaceregistry_bulkremove_interfaces (handle->plugin_interfaces ());
|
||||
}
|
||||
itr->lumiera_plugin_unload_fn (self);
|
||||
break;
|
||||
}
|
||||
++itr;
|
||||
}
|
||||
pthread_mutex_unlock (&lumiera_plugin_mutex);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,137 +21,188 @@
|
|||
#ifndef LUMIERA_PLUGIN_H
|
||||
#define LUMIERA_PLUGIN_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#elif 0
|
||||
} /*eek, fixes emacs indenting for now*/
|
||||
#endif
|
||||
#include "lib/psplay.h"
|
||||
#include "lib/error.h"
|
||||
|
||||
#include "backend/interface.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <nobug.h>
|
||||
|
||||
#include "error.h"
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Plugin loader, header.
|
||||
* Lumiera plugins defines 'interfaces' as shown in interface.h, the plugin system handles the loading
|
||||
* of all kinds of plugins under the hood, invoked from the interface system. Most things defined here
|
||||
* are called internally and should not be used by other parts of the application.
|
||||
*
|
||||
* Plugin discovery
|
||||
* The plugin_discover() function offers a automatic way to load and register new plugins. It traverses
|
||||
* all configured plugin directories. It takes to function for loading and registering plugins as
|
||||
* parameter, by now this only uses the here defined plugin_load() and plugin_register() functions
|
||||
* which lets it load any newly found plugin unconditionally. Later these callbacks will be replaced by
|
||||
* a smarter system (plugindb) which makes it possible to load plugins on-demand and select proper
|
||||
* plugins based on their version and capabilities.
|
||||
*
|
||||
* Plugin loading
|
||||
* Plugins are loaded and initialized in a sequence of steps:
|
||||
* plugin_load() dispatches to a specific loader function depending on the type (extension) of a plugin.
|
||||
* This loader allocates a new plugin structure with plugin_new() and then does it work and eventually
|
||||
* finalizing the plugin structure initialization with plugin_init() by providing a handle to a
|
||||
* lumieraorg__plugin interface. plugin_init() also stores the current error state (which might be clean)
|
||||
* into the plugin. After that the plugin can be registered which records it in the pluginregistry and if
|
||||
* its error state is clean, registering all interfaces it offers in the interface registry. With that
|
||||
* the plugin is ready to be used. Plugins with the error state set should still be registered to prevent
|
||||
* further discovery runs to try loading them again.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
NOBUG_DECLARE_FLAG (lumiera_plugin);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_INIT);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_OPEN);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_WTF);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_REGISTER);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_VERSION);
|
||||
|
||||
|
||||
NOBUG_DECLARE_FLAG (plugin);
|
||||
|
||||
/* tool macros*/
|
||||
#define LUMIERA_INTERFACE_TYPE(name, version) struct lumiera_interface_##name##_##version
|
||||
#define LUMIERA_INTERFACE_CAST(name, version) (LUMIERA_INTERFACE_TYPE(name, version)*)
|
||||
|
||||
/* Interface definition */
|
||||
#define LUMIERA_INTERFACE(name, version, ...) \
|
||||
LUMIERA_INTERFACE_TYPE(name, version) \
|
||||
{ \
|
||||
struct lumiera_interface interface_header_; \
|
||||
__VA_ARGS__ \
|
||||
}
|
||||
|
||||
#define LUMIERA_INTERFACE_PROTO(ret, name, params) ret (*name) params;
|
||||
|
||||
/* Interface instantiation */
|
||||
#define LUMIERA_INTERFACE_IMPLEMENT(iname, version, name, open, close, ...) \
|
||||
LUMIERA_INTERFACE_TYPE(iname, version) name##_##version = \
|
||||
{ \
|
||||
{ \
|
||||
version, \
|
||||
sizeof(LUMIERA_INTERFACE_TYPE(iname, version)), \
|
||||
NULL, \
|
||||
0, \
|
||||
open, \
|
||||
close \
|
||||
}, \
|
||||
__VA_ARGS__ \
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* internally used */
|
||||
struct lumiera_plugin;
|
||||
struct lumiera_plugin_struct;
|
||||
typedef struct lumiera_plugin_struct lumiera_plugin;
|
||||
typedef lumiera_plugin* LumieraPlugin;
|
||||
enum lumiera_plugin_type;
|
||||
|
||||
/**
|
||||
* This is the header for any interface exported by plugins.
|
||||
* Real interfaces append their functions at the end. There are few standard functions on each Interface
|
||||
* Every function is required to be implemnted.
|
||||
* Allocates an preinitializes a plugin structure
|
||||
* @internal
|
||||
* @param name path/filename of the plugin
|
||||
* @return new allocated/preinitialized plugin structure with its error state set to LUMIERA_ERROR_PLUGIN_INIT
|
||||
*/
|
||||
struct lumiera_interface
|
||||
{
|
||||
/// interface version number
|
||||
unsigned version;
|
||||
/// size of the full structure is used to determine the revision (adding a new function increments the size)
|
||||
size_t size;
|
||||
/// back reference to plugin
|
||||
struct lumiera_plugin* plugin;
|
||||
/// incremented for each user of this interface and decremented when closed
|
||||
unsigned use_count;
|
||||
|
||||
/// called for each open of this interface
|
||||
int (*open)(void);
|
||||
/// called for each close of this interface
|
||||
int (*close)(void);
|
||||
};
|
||||
LumieraPlugin
|
||||
lumiera_plugin_new (const char* name);
|
||||
|
||||
/**
|
||||
* Initialize the plugin system.
|
||||
* always succeeds or aborts
|
||||
* Complete plugin initialization
|
||||
* @internal
|
||||
* Stores any pending error (from loading) in self which clears out the LUMIERA_ERROR_PLUGIN_INIT error state
|
||||
* which was initialized by lumiera_plugin_new(), stores the handle and plugin pointers in the plugin struct.
|
||||
* @param self pointer to the plugin struct
|
||||
* @param handle opaque handle refering to some plugin type specific data
|
||||
* @param plugin a lumieraorg__plugin interface which will be used to initialize this plugin
|
||||
*/
|
||||
LumieraPlugin
|
||||
lumiera_plugin_init (LumieraPlugin self, void* handle, LumieraInterface plugin);
|
||||
|
||||
|
||||
/**
|
||||
* Tries to load a plugin
|
||||
* Creates a new plugin structure and tries to load and initialize the plugin.
|
||||
* The plugins error state may be set on any problem which should be queried later.
|
||||
* @param plugin path/filename of the plugin to load
|
||||
* @return pointer to the new plugin structure (always, never NULL, check error state)
|
||||
*/
|
||||
LumieraPlugin
|
||||
lumiera_plugin_load (const char* plugin);
|
||||
|
||||
|
||||
/**
|
||||
* Register a plugin and its interfaces.
|
||||
* Registers the plugin (unconditionally) at the pluginregistry.
|
||||
* When the error state of the plugin is NULL then use its lumieraorg__plugin interface
|
||||
* to register all interfaces offered by the plugin at the interface registry.
|
||||
* Registered plugins will be automatic unloaded at application end.
|
||||
* @param self the plugin to be registered (calling with NULL is a no-op)
|
||||
* @return 1 on success (including calling with NULL) and 0 when a error occured
|
||||
*/
|
||||
int
|
||||
lumiera_plugin_register (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Query the error state of a plugin
|
||||
* @param self plugin to query
|
||||
* @return error identifier, NULL if no error was set
|
||||
*/
|
||||
lumiera_err
|
||||
lumiera_plugin_error (LumieraPlugin self);
|
||||
|
||||
/**
|
||||
* Query the plugin handle
|
||||
* @param self plugin to query
|
||||
* @return opaque handle set by the loader functions
|
||||
*/
|
||||
void*
|
||||
lumiera_plugin_handle (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Query the plugin name
|
||||
* The name is the path and filname under which it was loaded
|
||||
* @param self plugin to query
|
||||
* @return pointer to the name string
|
||||
*/
|
||||
const char*
|
||||
lumiera_plugin_name (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Increment refcount
|
||||
* @internal
|
||||
* @param self plugin which refcount to increment
|
||||
*/
|
||||
void
|
||||
lumiera_init_plugin (void);
|
||||
lumiera_plugin_refinc (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Make an interface available.
|
||||
* To use an interface provided by a plugin it must be opened first. It is allowed to open an interface
|
||||
* more than once. Each open must be paired with a close.
|
||||
* @param name name of the plugin to use.
|
||||
* @param interface name of the interface to open.
|
||||
* @param min_revision the size of the interface structure is used as measure of a minimal required
|
||||
* revision (new functions are appended at the end)
|
||||
* @return handle to the interface or NULL in case of a error. The application shall cast this handle to
|
||||
* the actual interface type.
|
||||
*/
|
||||
struct lumiera_interface*
|
||||
lumiera_interface_open (const char* plugin, const char* name, size_t min_revision);
|
||||
|
||||
|
||||
/**
|
||||
* Close an interface. Does not free associated resources
|
||||
* Calling this function with self==NULL is legal. Every interface handle must be closed only once.
|
||||
* @param ptr interface to be closed
|
||||
* Decrement refcount
|
||||
* @internal
|
||||
* @param self plugin which refcount to decrement
|
||||
*/
|
||||
void
|
||||
lumiera_interface_close (void* self);
|
||||
lumiera_plugin_refdec (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Tries to unload a plugin.
|
||||
* When the Plugin is unused, then all resources associated with it are freed and it will be removed from memory
|
||||
* @param plugin name of the plugin to be unloaded.
|
||||
* @return 0 on success, else the number if users which keeping the plugin loaded
|
||||
* @param plugin the plugin to be unloaded.
|
||||
* @return 0 on success, else the refcount of users which keeping the plugin loaded
|
||||
*/
|
||||
int
|
||||
lumiera_plugin_unload (const char* plugin);
|
||||
unsigned
|
||||
lumiera_plugin_unload (LumieraPlugin self);
|
||||
|
||||
|
||||
/**
|
||||
* Tries to unload plugins which are not in use.
|
||||
* Calls lumiera_plugin_unload() for each Plugin which is not used for more than age seconds.
|
||||
* This function might be infrequently called by the scheduler to remove things which are not needed.
|
||||
* @param age timeout in seconds when to unload plugins
|
||||
* Lookup a plugin handle in the pluginregistry
|
||||
* @param name name of the plugin to be looked up
|
||||
* @return plugin handle on success, NULL if the plugin is not found in the registry
|
||||
*/
|
||||
LumieraPlugin
|
||||
lumiera_plugin_lookup (const char* name);
|
||||
|
||||
|
||||
/**
|
||||
* discover new plugins
|
||||
* traverses the configured plugin paths and calls the callback_load function for any plugin
|
||||
* not actually loaded. If callback_load returns a plugin (and not NULL) then this is feed to
|
||||
* the callback_register function.
|
||||
*/
|
||||
int
|
||||
lumiera_plugin_discover (LumieraPlugin (*callback_load)(const char* plugin),
|
||||
int (*callback_register) (LumieraPlugin));
|
||||
|
||||
|
||||
/* psplay support functions */
|
||||
int
|
||||
lumiera_plugin_cmp_fn (const void* keya, const void* keyb);
|
||||
|
||||
const void*
|
||||
lumiera_plugin_key_fn (const PSplaynode node);
|
||||
|
||||
void
|
||||
lumiera_plugin_expire (time_t age);
|
||||
lumiera_plugin_delete_fn (PSplaynode node);
|
||||
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_DLOPEN);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_HOOK);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_NFILE);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_NIFACE);
|
||||
LUMIERA_ERROR_DECLARE(PLUGIN_REVISION);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
#endif /* LUMIERA_PLUGIN_H */
|
||||
|
|
|
|||
60
src/backend/plugin_dynlib.c
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
plugin_dynlib.c - Lumiera Plugin loader for dynamic libraries
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2008, Christian Thaeter <ct@pipapo.org>
|
||||
|
||||
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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
#include "backend/plugin.h"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <nobug.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Plugin loader for dynamic libraries.
|
||||
*/
|
||||
|
||||
LumieraPlugin
|
||||
lumiera_plugin_load_DYNLIB (const char* name)
|
||||
{
|
||||
TRACE (plugin);
|
||||
LumieraPlugin self = lumiera_plugin_new (name);
|
||||
LumieraInterface plugin = NULL;
|
||||
|
||||
void* handle = dlopen (name, RTLD_LAZY|RTLD_LOCAL);
|
||||
if (handle)
|
||||
{
|
||||
plugin = (LumieraInterface) dlsym (handle, LUMIERA_INTERFACE_DSTRING (lumieraorg__plugin, 0, lumieraorg_plugin));
|
||||
|
||||
if (!plugin)
|
||||
LUMIERA_ERROR_SET (plugin, PLUGIN_WTF);
|
||||
}
|
||||
else
|
||||
LUMIERA_ERROR_SET (plugin, PLUGIN_OPEN);
|
||||
|
||||
return lumiera_plugin_init (self, handle, plugin);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lumiera_plugin_unload_DYNLIB (LumieraPlugin self)
|
||||
{
|
||||
TRACE (plugin);
|
||||
void* handle = lumiera_plugin_handle (self);
|
||||
if (handle)
|
||||
dlclose (handle);
|
||||
}
|
||||
|
|
@ -24,66 +24,67 @@ lumigui_CPPFLAGS = $(AM_CPPFLAGS) \
|
|||
-DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
|
||||
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
|
||||
-DPACKAGE_DATA_DIR=\""$(datadir)"\" \
|
||||
$(GTK_LUMIERA_CFLAGS)
|
||||
$(LUMIERA_GUI_CFLAGS)
|
||||
|
||||
bin_PROGRAMS += lumigui
|
||||
|
||||
lumigui_SOURCES = \
|
||||
$(lumigui_srcdir)/gtk-lumiera.cpp \
|
||||
$(lumigui_srcdir)/gtk-lumiera.hpp \
|
||||
$(lumigui_srcdir)/window-manager.cpp \
|
||||
$(lumigui_srcdir)/window-manager.hpp \
|
||||
$(lumigui_srcdir)/workspace/actions.cpp \
|
||||
$(lumigui_srcdir)/workspace/actions.hpp \
|
||||
$(lumigui_srcdir)/workspace/workspace-window.cpp \
|
||||
$(lumigui_srcdir)/workspace/workspace-window.hpp \
|
||||
$(lumigui_srcdir)/dialogs/render.cpp \
|
||||
$(lumigui_srcdir)/dialogs/render.hpp \
|
||||
$(lumigui_srcdir)/dialogs/preferences-dialog.cpp \
|
||||
$(lumigui_srcdir)/dialogs/preferences-dialog.hpp \
|
||||
$(lumigui_srcdir)/panels/panel.cpp \
|
||||
$(lumigui_srcdir)/panels/panel.hpp \
|
||||
$(lumigui_srcdir)/panels/timeline-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/timeline-panel.hpp \
|
||||
$(lumigui_srcdir)/panels/viewer-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/viewer-panel.hpp \
|
||||
$(lumigui_srcdir)/panels/assets-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/assets-panel.hpp \
|
||||
$(lumigui_srcdir)/widgets/video-display-widget.cpp \
|
||||
$(lumigui_srcdir)/widgets/video-display-widget.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline-widget.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline-widget.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/header-container.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/header-container.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/track.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/track.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-body.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-body.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ruler.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ruler.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-tool.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-arrow-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-arrow-tool.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ibeam-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ibeam-tool.hpp \
|
||||
$(lumigui_srcdir)/model/project.cpp \
|
||||
$(lumigui_srcdir)/model/project.hpp \
|
||||
$(lumigui_srcdir)/output/displayer.cpp \
|
||||
$(lumigui_srcdir)/output/displayer.hpp \
|
||||
$(lumigui_srcdir)/output/gdkdisplayer.cpp \
|
||||
$(lumigui_srcdir)/output/gdkdisplayer.hpp \
|
||||
$(lumigui_srcdir)/output/xvdisplayer.cpp \
|
||||
lumigui_SOURCES = \
|
||||
$(lumigui_srcdir)/gtk-lumiera.cpp \
|
||||
$(lumigui_srcdir)/gtk-lumiera.hpp \
|
||||
$(lumigui_srcdir)/window-manager.cpp \
|
||||
$(lumigui_srcdir)/window-manager.hpp \
|
||||
$(lumigui_srcdir)/workspace/actions.cpp \
|
||||
$(lumigui_srcdir)/workspace/actions.hpp \
|
||||
$(lumigui_srcdir)/workspace/workspace-window.cpp \
|
||||
$(lumigui_srcdir)/workspace/workspace-window.hpp \
|
||||
$(lumigui_srcdir)/dialogs/render.cpp \
|
||||
$(lumigui_srcdir)/dialogs/render.hpp \
|
||||
$(lumigui_srcdir)/dialogs/preferences-dialog.cpp \
|
||||
$(lumigui_srcdir)/dialogs/preferences-dialog.hpp \
|
||||
$(lumigui_srcdir)/panels/panel.cpp \
|
||||
$(lumigui_srcdir)/panels/panel.hpp \
|
||||
$(lumigui_srcdir)/panels/timeline-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/timeline-panel.hpp \
|
||||
$(lumigui_srcdir)/panels/viewer-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/viewer-panel.hpp \
|
||||
$(lumigui_srcdir)/panels/assets-panel.cpp \
|
||||
$(lumigui_srcdir)/panels/assets-panel.hpp \
|
||||
$(lumigui_srcdir)/widgets/video-display-widget.cpp \
|
||||
$(lumigui_srcdir)/widgets/video-display-widget.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline-widget.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline-widget.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-header-container.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-header-container.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/track.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/track.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-body.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-body.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ruler.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ruler.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-tool.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-arrow-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-arrow-tool.hpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ibeam-tool.cpp \
|
||||
$(lumigui_srcdir)/widgets/timeline/timeline-ibeam-tool.hpp \
|
||||
$(lumigui_srcdir)/model/project.cpp \
|
||||
$(lumigui_srcdir)/model/project.hpp \
|
||||
$(lumigui_srcdir)/output/displayer.cpp \
|
||||
$(lumigui_srcdir)/output/displayer.hpp \
|
||||
$(lumigui_srcdir)/output/gdkdisplayer.cpp \
|
||||
$(lumigui_srcdir)/output/gdkdisplayer.hpp \
|
||||
$(lumigui_srcdir)/output/xvdisplayer.cpp \
|
||||
$(lumigui_srcdir)/output/xvdisplayer.hpp
|
||||
|
||||
lumigui_LDFLAGS =
|
||||
lumigui_LDADD = $(GTK_LUMIERA_LIBS) liblumicommon.a liblumi.a $(NOBUGMT_LUMIERA_LIBS)
|
||||
lumigui_LDFLAGS =
|
||||
# $(LIBS) $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
|
||||
lumigui_LDADD = $(LUMIERA_GUI_LIBS) liblumicommon.a liblumiera.a $(NOBUGMT_LUMIERA_LIBS)
|
||||
|
||||
lumigui_DEPENDENCIES = \
|
||||
$(top_builddir)/lumiera_ui.rc \
|
||||
$(top_builddir)/liblumicommon.a \
|
||||
$(top_builddir)/liblumi.a
|
||||
|
||||
$(top_builddir)/liblumiera.a
|
||||
|
||||
$(top_builddir)/lumiera_ui.rc:
|
||||
cp $(lumigui_srcdir)/lumiera_ui.rc $(top_builddir)
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,10 @@
|
|||
#include "workspace/workspace-window.hpp"
|
||||
#include "model/project.hpp"
|
||||
|
||||
extern "C" {
|
||||
#include "backend/interface.h"
|
||||
}
|
||||
|
||||
NOBUG_CPP_DEFINE_FLAG(gui);
|
||||
|
||||
using namespace Gtk;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include <gtkmm.h>
|
||||
#include <nobug.h>
|
||||
#include <vector>
|
||||
#include <boost/utility.hpp>
|
||||
|
||||
extern "C" {
|
||||
#include <gavl/gavltime.h>
|
||||
|
|
@ -91,7 +92,7 @@ static const gchar* AppAuthors[] = {
|
|||
/**
|
||||
* The main application class.
|
||||
*/
|
||||
class GtkLumiera
|
||||
class GtkLumiera : private boost::noncopyable
|
||||
{
|
||||
public:
|
||||
int main(int argc, char *argv[]);
|
||||
|
|
|
|||
|
|
@ -152,13 +152,13 @@ style "timeline_ruler" = "default_base"
|
|||
gtkmm__CustomObject_TimelineRuler::playback_period_arrow_stem_size = 3
|
||||
}
|
||||
|
||||
style "header_container" = "default_base"
|
||||
style "timeline_header_container" = "default_base"
|
||||
{
|
||||
gtkmm__CustomObject_HeaderContainer::heading_margin = 4
|
||||
}
|
||||
|
||||
class "gtkmm__CustomObject_TimelineBody" style:highest "timeline_body"
|
||||
class "gtkmm__CustomObject_TimelineRuler" style:highest "timeline_ruler"
|
||||
class "gtkmm__CustomObject_HeaderContainer" style:highest "header_container"
|
||||
class "gtkmm__CustomObject_TimelineHeaderContainer" style:highest "timeline_header_container"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,18 +31,10 @@ namespace panels {
|
|||
|
||||
ViewerPanel::ViewerPanel() :
|
||||
Panel("viewer", _("Viewer"), "panel_viewer")
|
||||
{
|
||||
//----- Set up the Tool Bar -----//
|
||||
// Add the commands
|
||||
|
||||
|
||||
// Configure the toolbar
|
||||
toolBar.set_toolbar_style(TOOLBAR_ICONS);
|
||||
|
||||
//----- Pack in the Widgets -----//
|
||||
pack_start(display, PACK_EXPAND_WIDGET);
|
||||
pack_start(toolBar, PACK_SHRINK);
|
||||
}
|
||||
{
|
||||
//----- Pack in the Widgets -----//
|
||||
pack_start(display, PACK_EXPAND_WIDGET);
|
||||
}
|
||||
|
||||
} // namespace panels
|
||||
} // namespace gui
|
||||
|
|
|
|||
|
|
@ -34,16 +34,24 @@
|
|||
namespace gui {
|
||||
namespace panels {
|
||||
|
||||
class ViewerPanel : public Panel
|
||||
{
|
||||
public:
|
||||
ViewerPanel();
|
||||
/**
|
||||
* A panel to display the video output.
|
||||
**/
|
||||
class ViewerPanel : public Panel
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Contructor.
|
||||
**/
|
||||
ViewerPanel();
|
||||
|
||||
protected:
|
||||
protected:
|
||||
|
||||
gui::widgets::VideoDisplayWidget display;
|
||||
Gtk::Toolbar toolBar;
|
||||
};
|
||||
/**
|
||||
* The video display widget, which will display the video.
|
||||
**/
|
||||
gui::widgets::VideoDisplayWidget display;
|
||||
};
|
||||
|
||||
} // namespace panels
|
||||
} // namespace gui
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ TimelineWidget::TimelineWidget() :
|
|||
{
|
||||
body = new TimelineBody(this);
|
||||
ENSURE(body != NULL);
|
||||
headerContainer = new HeaderContainer(this);
|
||||
headerContainer = new TimelineHeaderContainer(this);
|
||||
ENSURE(headerContainer != NULL);
|
||||
ruler = new TimelineRuler(this);
|
||||
ENSURE(ruler != NULL);
|
||||
|
|
@ -69,6 +69,9 @@ TimelineWidget::TimelineWidget() :
|
|||
set_selection(2000000, 4000000);
|
||||
|
||||
tracks.push_back(&video1);
|
||||
video1.add_child_track(&video1a);
|
||||
video1.add_child_track(&video1b);
|
||||
video1b.add_child_track(&video1ba);
|
||||
tracks.push_back(&video2);
|
||||
|
||||
update_tracks();
|
||||
|
|
@ -332,7 +335,7 @@ TimelineWidget::update_tracks()
|
|||
BOOST_FOREACH( Track* track, tracks )
|
||||
{
|
||||
ASSERT(track != NULL);
|
||||
totalHeight += track->get_height() + TrackPadding;
|
||||
totalHeight += measure_branch_height(track);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -378,6 +381,20 @@ TimelineWidget::update_scroll()
|
|||
|
||||
}
|
||||
|
||||
int
|
||||
TimelineWidget::measure_branch_height(Track* track)
|
||||
{
|
||||
REQUIRE(track != NULL);
|
||||
|
||||
int height = track->get_height();
|
||||
|
||||
// Recurse through all the children
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
height += measure_branch_height(child);
|
||||
|
||||
return height;
|
||||
}
|
||||
|
||||
int
|
||||
TimelineWidget::get_y_scroll_offset() const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#define TIMELINE_WIDGET_HPP
|
||||
|
||||
#include "../gtk-lumiera.hpp"
|
||||
#include "timeline/header-container.hpp"
|
||||
#include "timeline/timeline-header-container.hpp"
|
||||
#include "timeline/timeline-body.hpp"
|
||||
#include "timeline/timeline-ruler.hpp"
|
||||
#include "timeline/timeline-tool.hpp"
|
||||
|
|
@ -202,6 +202,8 @@ private:
|
|||
|
||||
void update_scroll();
|
||||
|
||||
static int measure_branch_height(timeline::Track* track);
|
||||
|
||||
int get_y_scroll_offset() const;
|
||||
|
||||
bool on_motion_in_body_notify_event(GdkEventMotion *event);
|
||||
|
|
@ -224,11 +226,14 @@ protected:
|
|||
int totalHeight;
|
||||
|
||||
timeline::Track video1;
|
||||
timeline::Track video1a;
|
||||
timeline::Track video1b;
|
||||
timeline::Track video1ba;
|
||||
timeline::Track video2;
|
||||
std::vector<timeline::Track*> tracks;
|
||||
|
||||
// Child Widgets
|
||||
timeline::HeaderContainer *headerContainer;
|
||||
timeline::TimelineHeaderContainer *headerContainer;
|
||||
timeline::TimelineBody *body;
|
||||
timeline::TimelineRuler *ruler;
|
||||
|
||||
|
|
@ -239,8 +244,7 @@ protected:
|
|||
// Signals
|
||||
sigc::signal<void> viewChangedSignal;
|
||||
sigc::signal<void, gavl_time_t> mouseHoverSignal;
|
||||
sigc::signal<void>
|
||||
playbackPeriodDragReleasedSignal;
|
||||
sigc::signal<void> playbackPeriodDragReleasedSignal;
|
||||
|
||||
/* ===== Constants ===== */
|
||||
public:
|
||||
|
|
@ -257,7 +261,7 @@ protected:
|
|||
static const double ZoomIncrement;
|
||||
|
||||
friend class timeline::TimelineBody;
|
||||
friend class timeline::HeaderContainer;
|
||||
friend class timeline::TimelineHeaderContainer;
|
||||
friend class timeline::TimelineRuler;
|
||||
friend class timeline::Tool;
|
||||
friend class timeline::ArrowTool;
|
||||
|
|
|
|||
|
|
@ -147,11 +147,8 @@ TimelineBody::on_expose_event(GdkEventExpose* event)
|
|||
Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();
|
||||
|
||||
REQUIRE(cr);
|
||||
|
||||
// Translate the view by the scroll distance
|
||||
cr->translate(0, -get_vertical_offset());
|
||||
|
||||
// Draw the view
|
||||
|
||||
//----- Draw the view -----//
|
||||
draw_tracks(cr);
|
||||
draw_selection(cr);
|
||||
draw_playback_point(cr);
|
||||
|
|
@ -272,32 +269,52 @@ TimelineBody::draw_tracks(Cairo::RefPtr<Cairo::Context> cr)
|
|||
Cairo::Matrix view_matrix;
|
||||
cr->get_matrix(view_matrix);
|
||||
|
||||
// Translate the view by the scroll distance
|
||||
cr->translate(0, -get_vertical_offset());
|
||||
|
||||
// Interate drawing each track
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
{
|
||||
ASSERT(track != NULL);
|
||||
|
||||
const int height = track->get_height();
|
||||
ASSERT(height >= 0);
|
||||
|
||||
// Draw the track background
|
||||
cr->rectangle(0, 0, allocation.get_width(), height);
|
||||
gdk_cairo_set_source_color(cr->cobj(), &backgroundColour);
|
||||
cr->fill();
|
||||
|
||||
// Render the track
|
||||
cr->save();
|
||||
track->draw_track(cr);
|
||||
cr->restore();
|
||||
|
||||
// Shift for the next track
|
||||
cr->translate(0, height + TimelineWidget::TrackPadding);
|
||||
draw_track_recursive(cr, track, allocation.get_width());
|
||||
}
|
||||
|
||||
// Restore the view matrix
|
||||
cr->set_matrix(view_matrix);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineBody::draw_track_recursive(Cairo::RefPtr<Cairo::Context> cr,
|
||||
const Track *track, const int view_width) const
|
||||
{
|
||||
REQUIRE(cr);
|
||||
REQUIRE(track != NULL);
|
||||
|
||||
const int height = track->get_height();
|
||||
ASSERT(height >= 0);
|
||||
|
||||
// Draw the track background
|
||||
cr->rectangle(0, 0, view_width,
|
||||
height - TimelineWidget::TrackPadding);
|
||||
GdkColor colour = backgroundColour; // Needed to preserve const qualifier
|
||||
gdk_cairo_set_source_color(cr->cobj(), &colour);
|
||||
cr->fill();
|
||||
|
||||
// Render the track
|
||||
cr->save();
|
||||
track->draw_track(cr);
|
||||
cr->restore();
|
||||
|
||||
// Shift for the next track
|
||||
cr->translate(0, height);
|
||||
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
{
|
||||
ASSERT(track != NULL);
|
||||
draw_track_recursive(cr, child, view_width);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TimelineBody::draw_selection(Cairo::RefPtr<Cairo::Context> cr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ class TimelineWidget;
|
|||
|
||||
namespace timeline {
|
||||
|
||||
class Track;
|
||||
|
||||
/**
|
||||
* Implementation of the timeline body subwidget. This widget is
|
||||
* displayed in the centre of the timeline widget, and displays the
|
||||
|
|
@ -111,6 +113,10 @@ private:
|
|||
*/
|
||||
void draw_tracks(Cairo::RefPtr<Cairo::Context> cr);
|
||||
|
||||
void draw_track_recursive(Cairo::RefPtr<Cairo::Context> cr,
|
||||
const gui::widgets::timeline::Track *track,
|
||||
const int view_width) const;
|
||||
|
||||
/**
|
||||
* Draws the selected timeline period.
|
||||
* @param cr The cairo context to draw into.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
header-container.cpp - Implementation of the header container widget
|
||||
timeline-header-container.cpp - Implementation of the timeline
|
||||
header container widget
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2008, Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||
|
|
@ -22,7 +23,7 @@
|
|||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
#include "header-container.hpp"
|
||||
#include "timeline-header-container.hpp"
|
||||
#include "track.hpp"
|
||||
#include "../timeline-widget.hpp"
|
||||
|
||||
|
|
@ -33,9 +34,9 @@ namespace gui {
|
|||
namespace widgets {
|
||||
namespace timeline {
|
||||
|
||||
HeaderContainer::HeaderContainer(gui::widgets::TimelineWidget
|
||||
TimelineHeaderContainer::TimelineHeaderContainer(gui::widgets::TimelineWidget
|
||||
*timeline_widget) :
|
||||
Glib::ObjectBase("HeaderContainer"),
|
||||
Glib::ObjectBase("TimelineHeaderContainer"),
|
||||
timelineWidget(timeline_widget),
|
||||
margin(-1)
|
||||
{
|
||||
|
|
@ -49,41 +50,24 @@ HeaderContainer::HeaderContainer(gui::widgets::TimelineWidget
|
|||
// Connect to the timeline widget's vertical scroll event,
|
||||
// so that we get notified when the view shifts
|
||||
timelineWidget->verticalAdjustment.signal_value_changed().connect(
|
||||
sigc::mem_fun(this, &HeaderContainer::on_scroll) );
|
||||
sigc::mem_fun(this, &TimelineHeaderContainer::on_scroll) );
|
||||
|
||||
// Install style properties
|
||||
register_styles();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
HeaderContainer::update_headers()
|
||||
TimelineHeaderContainer::update_headers()
|
||||
{
|
||||
REQUIRE(timelineWidget != NULL);
|
||||
|
||||
// Remove any pre-exisitng headers
|
||||
BOOST_FOREACH( RootHeader header, rootHeaders )
|
||||
{
|
||||
header.widget->unparent();
|
||||
}
|
||||
|
||||
rootHeaders.clear();
|
||||
|
||||
// Add fresh headers
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
{
|
||||
ASSERT(track != NULL);
|
||||
|
||||
const RootHeader header = { &track->get_header_widget(), track };
|
||||
header.widget->set_parent(*this);
|
||||
|
||||
rootHeaders.push_back(header);
|
||||
}
|
||||
|
||||
layout_headers();
|
||||
set_parent_recursive(track);
|
||||
}
|
||||
|
||||
void
|
||||
HeaderContainer::on_realize()
|
||||
TimelineHeaderContainer::on_realize()
|
||||
{
|
||||
set_flags(Gtk::NO_WINDOW);
|
||||
|
||||
|
|
@ -119,7 +103,7 @@ HeaderContainer::on_realize()
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::on_unrealize()
|
||||
TimelineHeaderContainer::on_unrealize()
|
||||
{
|
||||
// Unreference any window we may have created
|
||||
gdkWindow.clear();
|
||||
|
|
@ -129,26 +113,22 @@ HeaderContainer::on_unrealize()
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::on_size_request (Requisition* requisition)
|
||||
TimelineHeaderContainer::on_size_request (Requisition* requisition)
|
||||
{
|
||||
// Initialize the output parameter:
|
||||
*requisition = Gtk::Requisition();
|
||||
|
||||
// We don't care about the size of all the child widgets, but if we
|
||||
// don't send the size request down the tree, some widgets fail to
|
||||
// calculate their text layout correctly.
|
||||
BOOST_FOREACH( RootHeader header, rootHeaders )
|
||||
{
|
||||
if(header.widget != NULL && header.widget->is_visible())
|
||||
header.widget->size_request();
|
||||
}
|
||||
|
||||
// calculate their text layout correctly.
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
size_request_recursive(track);
|
||||
|
||||
// Initialize the output parameter:
|
||||
*requisition = Gtk::Requisition();
|
||||
requisition->width = TimelineWidget::HeaderWidth;
|
||||
requisition->height = 0;
|
||||
}
|
||||
|
||||
void
|
||||
HeaderContainer::on_size_allocate (Allocation& allocation)
|
||||
TimelineHeaderContainer::on_size_allocate (Allocation& allocation)
|
||||
{
|
||||
// Use the offered allocation for this container:
|
||||
set_allocation(allocation);
|
||||
|
|
@ -162,18 +142,20 @@ HeaderContainer::on_size_allocate (Allocation& allocation)
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::forall_vfunc(gboolean /* include_internals */,
|
||||
TimelineHeaderContainer::forall_vfunc(gboolean /* include_internals */,
|
||||
GtkCallback callback, gpointer callback_data)
|
||||
{
|
||||
BOOST_FOREACH( RootHeader &header, rootHeaders )
|
||||
REQUIRE(callback != NULL);
|
||||
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
{
|
||||
ASSERT(header.widget);
|
||||
callback(header.widget->gobj(), callback_data);
|
||||
ASSERT(track != NULL);
|
||||
forall_vfunc_recursive(track, callback, callback_data);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
HeaderContainer::on_expose_event(GdkEventExpose *event)
|
||||
TimelineHeaderContainer::on_expose_event(GdkEventExpose *event)
|
||||
{
|
||||
if(gdkWindow)
|
||||
{
|
||||
|
|
@ -186,12 +168,12 @@ HeaderContainer::on_expose_event(GdkEventExpose *event)
|
|||
read_styles();
|
||||
|
||||
// Paint a border underneath all the root headers
|
||||
BOOST_FOREACH( RootHeader &header, rootHeaders )
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
{
|
||||
ASSERT(header.widget);
|
||||
ASSERT(header.track != NULL);
|
||||
ASSERT(track != NULL);
|
||||
|
||||
const int height = header.track->get_height();
|
||||
const int height = TimelineWidget::measure_branch_height(
|
||||
track);
|
||||
ASSERT(height >= 0);
|
||||
|
||||
style->paint_box(
|
||||
|
|
@ -211,7 +193,7 @@ HeaderContainer::on_expose_event(GdkEventExpose *event)
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::on_scroll()
|
||||
TimelineHeaderContainer::on_scroll()
|
||||
{
|
||||
// If the scroll has changed, we will have to shift all the
|
||||
// header widgets
|
||||
|
|
@ -219,7 +201,7 @@ HeaderContainer::on_scroll()
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::layout_headers()
|
||||
TimelineHeaderContainer::layout_headers()
|
||||
{
|
||||
ASSERT(timelineWidget != NULL);
|
||||
|
||||
|
|
@ -236,24 +218,11 @@ HeaderContainer::layout_headers()
|
|||
const int header_width = container_allocation.get_width ()
|
||||
- margin * 2;
|
||||
|
||||
BOOST_FOREACH( RootHeader &header, rootHeaders )
|
||||
BOOST_FOREACH( Track* track, timelineWidget->tracks )
|
||||
{
|
||||
ASSERT(header.widget);
|
||||
ASSERT(header.track != NULL);
|
||||
|
||||
const int height = header.track->get_height();
|
||||
ASSERT(height >= 0);
|
||||
|
||||
Gtk::Allocation header_allocation;
|
||||
header_allocation.set_x (margin);
|
||||
header_allocation.set_y (offset - y_scroll_offset + margin);
|
||||
header_allocation.set_width (header_width);
|
||||
header_allocation.set_height (height - margin * 2);
|
||||
|
||||
if(header.widget->is_visible())
|
||||
header.widget->size_allocate (header_allocation);
|
||||
|
||||
offset += height + TimelineWidget::TrackPadding;
|
||||
ASSERT(track != NULL);
|
||||
layout_headers_recursive(track, y_scroll_offset, offset,
|
||||
header_width, 0);
|
||||
}
|
||||
|
||||
// Repaint the background of our parenting
|
||||
|
|
@ -261,7 +230,72 @@ HeaderContainer::layout_headers()
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::register_styles() const
|
||||
TimelineHeaderContainer::layout_headers_recursive(Track *track,
|
||||
const int y_scroll_offset, int &offset,
|
||||
const int header_width, int depth) const
|
||||
{
|
||||
const int height = track->get_height();
|
||||
ASSERT(height >= 0);
|
||||
|
||||
const int indent = depth * 10;
|
||||
|
||||
Allocation header_allocation;
|
||||
header_allocation.set_x (margin + indent);
|
||||
header_allocation.set_y (offset - y_scroll_offset + margin);
|
||||
header_allocation.set_width (header_width - indent);
|
||||
header_allocation.set_height (height - margin * 2);
|
||||
|
||||
Widget &widget = track->get_header_widget();
|
||||
if(widget.is_visible())
|
||||
widget.size_allocate (header_allocation);
|
||||
|
||||
offset += height + TimelineWidget::TrackPadding;
|
||||
|
||||
// Recurse through all the children
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
layout_headers_recursive(child, y_scroll_offset, offset,
|
||||
header_width, depth + 1);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::set_parent_recursive(Track *track)
|
||||
{
|
||||
REQUIRE(track != NULL);
|
||||
track->get_header_widget().set_parent(*this);
|
||||
|
||||
// Recurse through all the children
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
set_parent_recursive(child);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::size_request_recursive(Track *track)
|
||||
{
|
||||
REQUIRE(track != NULL);
|
||||
if(track->get_header_widget().is_visible())
|
||||
track->get_header_widget().size_request();
|
||||
|
||||
// Recurse through all the children
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
size_request_recursive(child);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::forall_vfunc_recursive(Track* track,
|
||||
GtkCallback callback, gpointer callback_data)
|
||||
{
|
||||
REQUIRE(track != NULL);
|
||||
REQUIRE(callback != NULL);
|
||||
|
||||
callback(track->get_header_widget().gobj(), callback_data);
|
||||
|
||||
// Recurse through all the children
|
||||
BOOST_FOREACH( Track* child, track->get_child_tracks() )
|
||||
forall_vfunc_recursive(child, callback, callback_data);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineHeaderContainer::register_styles() const
|
||||
{
|
||||
GtkWidgetClass *klass = GTK_WIDGET_CLASS(G_OBJECT_GET_CLASS(gobj()));
|
||||
|
||||
|
|
@ -273,7 +307,7 @@ HeaderContainer::register_styles() const
|
|||
}
|
||||
|
||||
void
|
||||
HeaderContainer::read_styles()
|
||||
TimelineHeaderContainer::read_styles()
|
||||
{
|
||||
if(margin <= 0)
|
||||
get_style_property("heading_margin", margin);
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
header-container.hpp - Declaration of the header container widget
|
||||
timeline-header-container.cpp - Declaration of the timeline
|
||||
header container widget
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2008, Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||
|
|
@ -19,7 +20,7 @@
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
/** @file header-container.hpp
|
||||
/** @file timeline-header-container.hpp
|
||||
** This file contains the definition of the header container
|
||||
** widget
|
||||
*/
|
||||
|
|
@ -40,11 +41,11 @@ namespace timeline {
|
|||
class Track;
|
||||
|
||||
/**
|
||||
* A helper class for the TimelineWidget. HeaderContainer is
|
||||
* container widget for all the left-hand-side header widgets
|
||||
* A helper class for the TimelineWidget. TimelineHeaderContainer
|
||||
* is container widget for all the left-hand-side header widgets
|
||||
* associated with timeline tracks.
|
||||
*/
|
||||
class HeaderContainer : public Gtk::Container
|
||||
class TimelineHeaderContainer : public Gtk::Container
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
@ -52,7 +53,7 @@ public:
|
|||
*
|
||||
* @param[in] timeline_widget A pointer to the owner timeline widget
|
||||
*/
|
||||
HeaderContainer(gui::widgets::TimelineWidget* timeline_widget);
|
||||
TimelineHeaderContainer(gui::widgets::TimelineWidget* timeline_widget);
|
||||
|
||||
/**
|
||||
* Attaches the header all the header widgets of root
|
||||
|
|
@ -118,6 +119,21 @@ private:
|
|||
*/
|
||||
void layout_headers();
|
||||
|
||||
void layout_headers_recursive(Track *track,
|
||||
const int y_scroll_offset, int &offset,
|
||||
const int header_width, int depth) const;
|
||||
|
||||
/**
|
||||
* Recursively sets all the track header widgets to be child widgets
|
||||
* of this widget.
|
||||
**/
|
||||
void set_parent_recursive(Track *track);
|
||||
|
||||
static void size_request_recursive(Track *track);
|
||||
|
||||
static void forall_vfunc_recursive(Track* track,
|
||||
GtkCallback callback, gpointer callback_data);
|
||||
|
||||
/**
|
||||
* Registers all the styles that this class will respond to.
|
||||
*/
|
||||
|
|
@ -142,24 +158,6 @@ private:
|
|||
* widgets are scrolled.
|
||||
*/
|
||||
Glib::RefPtr<Gdk::Window> gdkWindow;
|
||||
|
||||
//----- Header List -----//
|
||||
|
||||
/**
|
||||
* A structure to represent a header widget and it's
|
||||
* associated track
|
||||
*/
|
||||
struct RootHeader
|
||||
{
|
||||
Gtk::Widget *widget;
|
||||
Track *track;
|
||||
};
|
||||
|
||||
/**
|
||||
* Contains a list of the root currently present on
|
||||
* the timeline view
|
||||
*/
|
||||
std::vector< RootHeader > rootHeaders;
|
||||
|
||||
//----- Style Values -----//
|
||||
|
||||
|
|
@ -29,12 +29,31 @@ namespace widgets {
|
|||
namespace timeline {
|
||||
|
||||
Track::Track() :
|
||||
label1("test1"), label2("test2"), label3("test3"), label4("test4")
|
||||
enableButton(Gtk::StockID("track_enabled")),
|
||||
lockButton(Gtk::StockID("track_unlocked"))
|
||||
{
|
||||
headerWidget.pack_start(label1, PACK_EXPAND_WIDGET);
|
||||
headerWidget.pack_start(label2, PACK_EXPAND_WIDGET);
|
||||
headerWidget.pack_start(label3, PACK_EXPAND_WIDGET);
|
||||
headerWidget.pack_start(label4, PACK_EXPAND_WIDGET);
|
||||
buttonBar.append(enableButton);
|
||||
buttonBar.append(lockButton);
|
||||
|
||||
buttonBar.set_toolbar_style(TOOLBAR_ICONS);
|
||||
// buttonBar.set_icon_size(ICON_SIZE_MENU); /////TODO: commented out because it makes compile fail on Etch based system
|
||||
|
||||
|
||||
headerWidget.pack_start(titleBox, PACK_SHRINK);
|
||||
headerWidget.pack_start(buttonBar, PACK_SHRINK);
|
||||
}
|
||||
|
||||
void
|
||||
Track::add_child_track(timeline::Track* child)
|
||||
{
|
||||
REQUIRE(child != NULL);
|
||||
children.push_back(child);
|
||||
}
|
||||
|
||||
const std::vector<timeline::Track*>&
|
||||
Track::get_child_tracks() const
|
||||
{
|
||||
return children;
|
||||
}
|
||||
|
||||
Gtk::Widget&
|
||||
|
|
@ -43,20 +62,20 @@ Track::get_header_widget()
|
|||
return headerWidget;
|
||||
}
|
||||
|
||||
int
|
||||
Track::get_height() const
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
Glib::ustring
|
||||
Track::get_title()
|
||||
{
|
||||
return "Hello";
|
||||
}
|
||||
|
||||
int
|
||||
Track::get_height()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
void
|
||||
Track::draw_track(Cairo::RefPtr<Cairo::Context> cairo)
|
||||
Track::draw_track(Cairo::RefPtr<Cairo::Context> cairo) const
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,25 +32,42 @@ namespace gui {
|
|||
namespace widgets {
|
||||
namespace timeline {
|
||||
|
||||
class Clip;
|
||||
|
||||
class Track
|
||||
{
|
||||
public:
|
||||
Track();
|
||||
|
||||
void add_child_track(timeline::Track* child);
|
||||
|
||||
const std::vector<timeline::Track*>& get_child_tracks() const;
|
||||
|
||||
Gtk::Widget& get_header_widget();
|
||||
|
||||
int get_height() const;
|
||||
|
||||
Glib::ustring get_title();
|
||||
|
||||
Gtk::Widget& get_header_widget();
|
||||
void draw_track(Cairo::RefPtr<Cairo::Context> cairo) const;
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
|
||||
int get_height();
|
||||
//----- Data -----//
|
||||
std::vector<timeline::Track*> children;
|
||||
std::vector<timeline::Clip*> clips;
|
||||
|
||||
void draw_track(Cairo::RefPtr<Cairo::Context> cairo);
|
||||
|
||||
protected:
|
||||
//----- Header Widgets ------//
|
||||
|
||||
Gtk::VBox headerWidget;
|
||||
Gtk::Label label1;
|
||||
Gtk::Label label2;
|
||||
Gtk::CheckButton label3;
|
||||
Gtk::Button label4;
|
||||
|
||||
Gtk::ToolButton enableButton;
|
||||
Gtk::ToolButton lockButton;
|
||||
|
||||
Gtk::Entry titleBox;
|
||||
Gtk::Toolbar buttonBar;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,12 @@ WindowManager::register_stock_items()
|
|||
add_stock_icon_set(factory, "panel-viewer", "panel_viewer", _("_Viewer"));
|
||||
|
||||
add_stock_icon_set(factory, "tool-arrow", "tool_arrow", _("_Arrow"));
|
||||
add_stock_icon_set(factory, "tool-i-beam", "tool_i_beam", _("_I-Beam"));
|
||||
add_stock_icon_set(factory, "tool-i-beam", "tool_i_beam", _("_I-Beam"));
|
||||
|
||||
add_stock_icon_set(factory, "track-disabled", "track_disabled", _("Track Disabled"));
|
||||
add_stock_icon_set(factory, "track-enabled", "track_enabled", _("Track Enabled"));
|
||||
add_stock_icon_set(factory, "track-locked", "track_locked", _("Track Locked"));
|
||||
add_stock_icon_set(factory, "track-unlocked", "track_unlocked", _("Track Unlocked"));
|
||||
|
||||
factory->add_default(); //Add factory to list of factories.
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace gui {
|
|||
/**
|
||||
* The centralised manager of all lumiera-gui's windows.
|
||||
**/
|
||||
class WindowManager
|
||||
class WindowManager : private boost::noncopyable
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
liblumi_a_srcdir = $(top_srcdir)/src/lib
|
||||
noinst_LIBRARIES += liblumi.a
|
||||
liblumiera_a_srcdir = $(top_srcdir)/src/lib
|
||||
noinst_LIBRARIES += liblumiera.a
|
||||
|
||||
liblumi_a_CFLAGS = $(CFLAGS) -std=gnu99 -Wall -Werror
|
||||
liblumiera_a_CFLAGS = $(CFLAGS) -std=gnu99 -Wall -Werror
|
||||
|
||||
liblumiera_a_SOURCES = \
|
||||
$(liblumiera_a_srcdir)/error.c \
|
||||
|
|
@ -31,7 +31,7 @@ liblumiera_a_SOURCES = \
|
|||
$(liblumiera_a_srcdir)/psplay.c \
|
||||
$(liblumiera_a_srcdir)/mrucache.c \
|
||||
$(liblumiera_a_srcdir)/time.c \
|
||||
$(liblumiera_a_srcdir)/allocationcluster.cpp \
|
||||
$(liblumiera_a_srcdir)/allocationcluster.cpp\
|
||||
$(liblumiera_a_srcdir)/external/libgavl.cpp \
|
||||
$(liblumiera_a_srcdir)/appconfig.cpp
|
||||
|
||||
|
|
@ -48,9 +48,8 @@ noinst_HEADERS += \
|
|||
$(liblumiera_a_srcdir)/time.h \
|
||||
$(liblumiera_a_srcdir)/ppmpl.h \
|
||||
$(liblumiera_a_srcdir)/appconfig.hpp \
|
||||
$(liblumiera_a_srcdir)/allocationcluster.hpp \
|
||||
$(liblumiera_a_srcdir)/scopedholdertransfer.hpp \
|
||||
$(liblumiera_a_srcdir)/allocationcluster.hpp \
|
||||
$(liblumiera_a_srcdir)/scopedholdertransfer.hpp \
|
||||
$(liblumiera_a_srcdir)/scopedholder.hpp \
|
||||
$(liblumiera_a_srcdir)/external/libgavl.hpp \
|
||||
$(liblumiera_a_srcdir)/lifecycleregistry.hpp
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ lumiera_error_set (lumiera_err nerr)
|
|||
|
||||
|
||||
lumiera_err
|
||||
lumiera_error ()
|
||||
lumiera_error (void)
|
||||
{
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
|
||||
|
|
@ -69,3 +69,12 @@ lumiera_error ()
|
|||
pthread_setspecific (lumiera_error_tls, NULL);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
lumiera_err
|
||||
lumiera_error_peek (void)
|
||||
{
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
|
||||
return pthread_getspecific (lumiera_error_tls);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,7 +88,19 @@ lumiera_error_set (lumiera_err err);
|
|||
* @return pointer to any pending error of this thread, NULL if no error is pending
|
||||
*/
|
||||
lumiera_err
|
||||
lumiera_error ();
|
||||
lumiera_error (void);
|
||||
|
||||
|
||||
/**
|
||||
* Check current error state without clearing it
|
||||
* Please avoid this function and use lumiera_error() if possible. Errors must be cleared else certain
|
||||
* parts of the application refuse to cooperate with you. This shall only be used to decide if one
|
||||
* wants to barf out of a loop or subroutine to deliver the error to a higher level.
|
||||
* @return pointer to any pending error of this thread, NULL if no error is pending
|
||||
*/
|
||||
lumiera_err
|
||||
lumiera_error_peek (void);
|
||||
|
||||
|
||||
/*
|
||||
predefined errors
|
||||
|
|
|
|||
|
|
@ -48,6 +48,27 @@ typedef lumiera_uid* LumieraUid;
|
|||
#define LUMIERA_UID_INITIALIZER(l) l
|
||||
#endif
|
||||
|
||||
#define LUMIERA_UID_FMT \
|
||||
"\\%.3hho\\%.3hho\\%.3hho\\%.3hho" \
|
||||
"\\%.3hho\\%.3hho\\%.3hho\\%.3hho" \
|
||||
"\\%.3hho\\%.3hho\\%.3hho\\%.3hho" \
|
||||
"\\%.3hho\\%.3hho\\%.3hho\\%.3hho"
|
||||
|
||||
#define LUMIERA_UID_CHAR(l,n) ((unsigned char*)l)[n]
|
||||
|
||||
|
||||
#define LUMIERA_UID_ELEMENTS(l) \
|
||||
LUMIERA_UID_CHAR(l,0), LUMIERA_UID_CHAR(l,1), LUMIERA_UID_CHAR(l,2), LUMIERA_UID_CHAR(l,3), \
|
||||
LUMIERA_UID_CHAR(l,4), LUMIERA_UID_CHAR(l,5), LUMIERA_UID_CHAR(l,6), LUMIERA_UID_CHAR(l,7), \
|
||||
LUMIERA_UID_CHAR(l,8), LUMIERA_UID_CHAR(l,9), LUMIERA_UID_CHAR(l,10), LUMIERA_UID_CHAR(l,11), \
|
||||
LUMIERA_UID_CHAR(l,12), LUMIERA_UID_CHAR(l,13), LUMIERA_UID_CHAR(l,14), LUMIERA_UID_CHAR(l,15)
|
||||
|
||||
/**
|
||||
* LUIDGEN will be replaced by the 'luidgen' tool with a random uuid
|
||||
*/
|
||||
#define LUIDGEN PLEASE_RUN_THE_LUIDGEN_TOOL_ON_THIS_FILE
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a generic pointer stored in a luid
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ static inline uint32_t psplay_fast_prng ()
|
|||
|
||||
|
||||
PSplay
|
||||
psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn delete)
|
||||
psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn del)
|
||||
{
|
||||
NOBUG_INIT_FLAG (psplay);
|
||||
TRACE (psplay);
|
||||
|
|
@ -79,7 +79,7 @@ psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn
|
|||
self->found_parent = &self->tree;
|
||||
self->cmp = cmp;
|
||||
self->key = key;
|
||||
self->delete = delete;
|
||||
self->del = del;
|
||||
self->elem_cnt = 0;
|
||||
self->log2 = 0;
|
||||
}
|
||||
|
|
@ -88,12 +88,12 @@ psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn
|
|||
|
||||
|
||||
PSplay
|
||||
psplay_new (psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn delete)
|
||||
psplay_new (psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn del)
|
||||
{
|
||||
PSplay self = malloc (sizeof *self);
|
||||
if (self)
|
||||
{
|
||||
psplay_init (self , cmp, key, delete);
|
||||
psplay_init (self , cmp, key, del);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
|
@ -107,8 +107,8 @@ psplay_destroy (PSplay self)
|
|||
if (self) while (self->tree)
|
||||
{
|
||||
PSplaynode n = psplay_remove (self, self->tree);
|
||||
if (self->delete)
|
||||
self->delete (n);
|
||||
if (self->del)
|
||||
self->del (n);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
|
@ -400,7 +400,7 @@ void
|
|||
psplay_delete_node (PSplay self, PSplaynode node)
|
||||
{
|
||||
if (node)
|
||||
self->delete (psplay_remove (self, node));
|
||||
self->del (psplay_remove (self, node));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -428,8 +428,8 @@ psplay_handle (PSplay self, PSplaynode node, psplay_delete_fn res)
|
|||
else if (res == PSPLAY_REMOVE)
|
||||
{
|
||||
psplay_remove (self, node);
|
||||
if (self->delete)
|
||||
self->delete (node);
|
||||
if (self->del)
|
||||
self->del (node);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ struct psplay_struct
|
|||
PSplaynode* found_parent; /* maybe direct parent of last found node, used for fast remove */
|
||||
psplay_cmp_fn cmp;
|
||||
psplay_key_fn key;
|
||||
psplay_delete_fn delete;
|
||||
psplay_delete_fn del;
|
||||
|
||||
size_t elem_cnt;
|
||||
unsigned log2; /* roughly log2 of the elem_cnt*/
|
||||
|
|
@ -122,7 +122,7 @@ psplay_nelements (PSplay self)
|
|||
* @return self
|
||||
*/
|
||||
PSplay
|
||||
psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn delete);
|
||||
psplay_init (PSplay self, psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn del);
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -142,7 +142,7 @@ psplay_destroy (PSplay self);
|
|||
* @return allcoated splay tree or NULL on error
|
||||
*/
|
||||
PSplay
|
||||
psplay_new (psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn delete);
|
||||
psplay_new (psplay_cmp_fn cmp, psplay_key_fn key, psplay_delete_fn del);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -24,5 +24,4 @@ luidgen_CPPFLAGS = -I$(top_srcdir)/src/
|
|||
luidgen_SOURCES = \
|
||||
$(lumitool_srcdir)/luidgen.c
|
||||
|
||||
luidgen_LDADD = liblumi.a
|
||||
|
||||
luidgen_LDADD = liblumiera.a $(NOBUGMT_LUMIERA_LIBS)
|
||||
|
|
|
|||
|
|
@ -19,25 +19,98 @@
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "lib/safeclib.h"
|
||||
#include "lib/luid.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <nobug.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Generate amd print a Lumiera uid as octal escaped string
|
||||
* or process a file replaceing 'LUIDGEN' with a octal escaped string
|
||||
*/
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char** argv)
|
||||
{
|
||||
NOBUG_INIT;
|
||||
lumiera_uid luid;
|
||||
lumiera_uid_gen (&luid);
|
||||
|
||||
printf ("\"");
|
||||
for (int i = 0; i < 16; ++i)
|
||||
printf ("\\%.3hho", *(((char*)&luid)+i));
|
||||
printf ("\"\n");
|
||||
if (argc == 1)
|
||||
{
|
||||
lumiera_uid_gen (&luid);
|
||||
printf ("\"");
|
||||
for (int i = 0; i < 16; ++i)
|
||||
printf ("\\%.3hho", *(((char*)&luid)+i));
|
||||
printf ("\"\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
FILE* in = fopen (argv[i], "r");
|
||||
if (!in)
|
||||
{
|
||||
fprintf (stderr, "Failed to open file %s for reading: %s\n", argv[i], strerror (errno));
|
||||
continue;
|
||||
}
|
||||
|
||||
char* outname = lumiera_tmpbuf_snprintf (SIZE_MAX, "%s.luidgen", argv[i]);
|
||||
FILE* out = fopen (outname, "wx");
|
||||
if (!out)
|
||||
{
|
||||
fprintf (stderr, "Failed to open file %s for writing: %s\n", outname, strerror (errno));
|
||||
fclose (in);
|
||||
continue;
|
||||
}
|
||||
|
||||
char buf[4096];
|
||||
char luidbuf[67];
|
||||
|
||||
printf ("Luidgen %s ", argv[i]); fflush (stdout);
|
||||
|
||||
while (fgets (buf, 4096, in))
|
||||
{
|
||||
char* pos;
|
||||
while ((pos = strstr(buf, "LUIDGEN")))
|
||||
{
|
||||
memmove (pos+66, pos+7, strlen (pos+7)+1);
|
||||
lumiera_uid_gen (&luid);
|
||||
sprintf (luidbuf, "\""LUMIERA_UID_FMT"\"", LUMIERA_UID_ELEMENTS(luid));
|
||||
memcpy (pos, luidbuf, 66);
|
||||
putchar ('.'); fflush (stdout);
|
||||
}
|
||||
fputs (buf, out);
|
||||
}
|
||||
|
||||
fclose (out);
|
||||
fclose (in);
|
||||
|
||||
char* backup = lumiera_tmpbuf_snprintf (SIZE_MAX, "%s~", argv[i]);
|
||||
unlink (backup);
|
||||
|
||||
if (!!rename (argv[i], backup))
|
||||
{
|
||||
fprintf (stderr, "Failed to create backupfile %s: %s\n", backup, strerror (errno));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!!rename (outname, argv[i]))
|
||||
{
|
||||
fprintf (stderr, "Renaming %s to %s failed: %s\n", outname, argv[i], strerror (errno));
|
||||
rename (backup, argv[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
printf (" done\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
TESTING "test plugin example code" ./test-plugin
|
||||
|
||||
PLANNED "C plugin example" C <<END
|
||||
out: opened
|
||||
out: Hallo Welt!
|
||||
out: Tschuess C
|
||||
out: opened
|
||||
out: Hello World!
|
||||
out: Bye C
|
||||
out: closed
|
||||
out: closed
|
||||
END
|
||||
|
||||
PLANNED "C++ plugin example" C++ <<END
|
||||
out: opened
|
||||
out: Hallo Welt!
|
||||
out: Tschuess C++
|
||||
out: opened
|
||||
out: Hello World!
|
||||
out: Bye C++
|
||||
out: closed
|
||||
out: closed
|
||||
END
|
||||
|
||||
38
tests/30interfaces.tests
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
TESTING "test interfaces" ./test-interfaces
|
||||
|
||||
TEST "Basic operations" basic <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "opening / closing interfaces" open_close <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "dependencies 1" dependencies_one <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "dependencies 2" dependencies_two <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "dependencies 3" dependencies_three <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "depedencies 4" dependencies_four <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "dependencies all" dependencies_all <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
|
||||
29
tests/31plugin.tests
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
TESTING "testing plugins" ./test-interfaces
|
||||
|
||||
|
||||
TEST "discovering plugins, missing path" plugin_discover <<END
|
||||
out: found plugin: (null)
|
||||
return: 0
|
||||
END
|
||||
|
||||
export LUMIERA_PLUGIN_PATH=.libs
|
||||
|
||||
TEST "discovering plugins" plugin_discover <<END
|
||||
out: found plugin: .libs/examplepluginc.so
|
||||
return: 0
|
||||
END
|
||||
|
||||
TEST "plugin unloading" plugin_unload <<END
|
||||
out: plugin unload: (nil)
|
||||
return: 0
|
||||
END
|
||||
|
||||
TEST "C plugin test" plugin_examplepluginc <<END
|
||||
out: Hallo Welt!
|
||||
out: Tschuess Welt!
|
||||
out: Hello World!
|
||||
out: Bye World!
|
||||
return: 0
|
||||
END
|
||||
|
||||
unset LUMIERA_PLUGIN_PATH
|
||||