Merge branch 'library' into backend

* library: (78 commits)
  Doxyfile update
  small note annd cosmetics for safeclib
  test.h cosmetic, add a 'tests' nobug flag, give diagnostics
  add psplay_delete_node and psplay_delete_key functions
  Probabilistic Splay Tree implementation
  Probabilistic Splay Tree implementation
  WIP: Cuckoo hash update, leave it at a insane state
  Add lumiera_tmpbuf_strcat3 for concating up to three strings to safeclib
  FIX: put a note to list_relocate, add test
  Move the resource announce/forget into the rwlock init/destroy
  fix some warnings
  fix name of 'doc' target, remove the OPENGL flag for now
  improved the architecture overview (drawing)
  Fixed hyperactive scroll wheel zoom
  Fixed a bug with body redrawing and added some documentation
  Added some documentation to body and ruler
  Added support for audacity style playback period, and added some
  Added time indication
  improved the scons build to report all missing dependencies instead of stopping at the first one
  add my favorite lumiera logo to the TiddlyWiki page
  ...
This commit is contained in:
Christian Thaeter 2008-09-06 12:27:56 +02:00
commit 0d0b9fa34e
206 changed files with 11700 additions and 2246 deletions

6
.gitignore vendored
View file

@ -2,10 +2,11 @@
*~
*.tar.*
.[^.]*
*.o
*.os
*.gch
,valgrind.log*
admin/scons/*.pyc
*.pyc
optcache
Makefile.in
build/*
@ -13,5 +14,8 @@ bin/*
autom4te.cache/*
scripts/*
configure
config.log
aclocal.m4
semantic.cache
wiki/backups/*
doc/devel/draw/*.png

View file

@ -21,13 +21,6 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#####################################################################
import sys
sys.path.append("./admin/scons")
import os
from Buildhelper import *
from LumieraEnvironment import *
#-----------------------------------Configuration
OPTIONSCACHEFILE = 'optcache'
@ -37,6 +30,8 @@ BINDIR = 'bin'
TESTDIR = 'tests'
ICONDIR = 'icons'
VERSION = '0.1+pre.01'
TOOLDIR = './admin/scons'
SVGRENDERER = 'admin/render-icon'
#-----------------------------------Configuration
# NOTE: scons -h for help.
@ -46,6 +41,14 @@ VERSION = '0.1+pre.01'
import os
import sys
sys.path.append(TOOLDIR)
from Buildhelper import *
from LumieraEnvironment import *
#####################################################################
@ -56,7 +59,10 @@ def setupBasicEnvironment():
EnsureSConsVersion(0,96,90)
opts = defineCmdlineOptions()
env = LumieraEnvironment(options=opts)
env = LumieraEnvironment(options=opts
,toolpath = [TOOLDIR]
,tools = ["default", "BuilderGCH", "BuilderDoxygen"]
)
env.Append ( CCCOM=' -std=gnu99') # workaround for a bug: CCCOM currently doesn't honor CFLAGS, only CCFLAGS
env.Replace( VERSION=VERSION
@ -68,12 +74,12 @@ def setupBasicEnvironment():
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
)
RegisterPrecompiledHeader_Builder(env)
RegisterIcon_Builder(env,SVGRENDERER)
handleNoBugSwitches(env)
env.Append(CPPDEFINES = '_GNU_SOURCE')
appendCppDefine(env,'DEBUG','DEBUG', 'NDEBUG')
appendCppDefine(env,'OPENGL','USE_OPENGL')
# appendCppDefine(env,'OPENGL','USE_OPENGL')
appendVal(env,'ARCHFLAGS', 'CCFLAGS') # for both C and C++
appendVal(env,'OPTIMIZE', 'CCFLAGS', val=' -O3')
appendVal(env,'DEBUG', 'CCFLAGS', val=' -ggdb')
@ -101,8 +107,7 @@ def handleNoBugSwitches(env):
level = env['BUILDLEVEL']
if level in ['ALPHA', 'BETA']:
if not env['DEBUG']:
print 'NoBug: ALPHA or BETA builds without DEBUG not possible, exiting.'
Exit(1)
print 'Warning: NoBug ALPHA or BETA builds requires DEBUG=yes, switching DEBUG on!'
env.Replace( DEBUG = 1 )
env.Append(CPPDEFINES = 'EBUG_'+level)
elif level == 'RELEASE':
@ -123,7 +128,7 @@ 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('OPENGL', 'Include support for OpenGL preview rendering', False)
# ,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)
,PathOption('DESTDIR', 'Installation dir prefix', '/usr/local')
@ -168,24 +173,21 @@ def configurePlatform(env):
# run all configuration checks in the given env
# Perform checks for prerequisites --------------------------------------------
problems = []
if not conf.TryAction('pkg-config --version > $TARGET')[0]:
print 'We need pkg-config for including library configurations, exiting.'
Exit(1)
problems.append('We need pkg-config for including library configurations, exiting.')
if not conf.CheckLibWithHeader('m', 'math.h','C'):
print 'Did not find math.h / libm, exiting.'
Exit(1)
problems.append('Did not find math.h / libm.')
if not conf.CheckLibWithHeader('dl', 'dlfcn.h', 'C'):
print 'Functions for runtime dynamic loading not available, exiting.'
Exit(1)
problems.append('Functions for runtime dynamic loading not available.')
if not conf.CheckLibWithHeader('nobugmt', 'nobug.h', 'C'):
print 'Did not find NoBug [http://www.pipapo.org/pipawiki/NoBug], exiting.'
Exit(1)
problems.append('Did not find NoBug [http://www.pipapo.org/pipawiki/NoBug].')
if not conf.CheckLibWithHeader('pthread', 'pthread.h', 'C'):
print 'Did not find the pthread lib or pthread.h, exiting.'
problems.append('Did not find the pthread lib or pthread.h.')
else:
conf.env.Append(CPPFLAGS = ' -DHAVE_PTHREAD')
conf.env.Append(CCFLAGS = ' -pthread')
@ -197,49 +199,56 @@ def configurePlatform(env):
conf.env.Append(CPPFLAGS = ' -DHAS_VALGRIND_VALGIND_H')
if not conf.CheckCXXHeader('tr1/memory'):
print 'We rely on the std::tr1 proposed standard extension for shared_ptr.'
Exit(1)
problems.append('We rely on the std::tr1 proposed standard extension for shared_ptr.')
if not conf.CheckCXXHeader('boost/config.hpp'):
print 'We need the C++ boost-lib.'
Exit(1)
problems.append('We need the C++ boost-lib.')
else:
if not conf.CheckCXXHeader('boost/shared_ptr.hpp'):
print 'We need boost::shared_ptr (shared_ptr.hpp).'
Exit(1)
problems.append('We need boost::shared_ptr (shared_ptr.hpp).')
if not conf.CheckLibWithHeader('boost_program_options-mt','boost/program_options.hpp','C++'):
print 'We need boost::program_options (including binary lib for linking).'
Exit(1)
problems.append('We need boost::program_options (including binary lib for linking).')
if not conf.CheckLibWithHeader('boost_regex-mt','boost/regex.hpp','C++'):
print 'We need the boost regular expression lib (incl. binary lib for linking).'
Exit(1)
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):
print 'Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html], exiting.'
Exit(1)
problems.append('Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
else:
conf.env.mergeConf('gavl')
if not conf.CheckPkgConfig('gtkmm-2.4', 2.8):
print 'Unable to configure GTK--, exiting.'
Exit(1)
problems.append('Unable to configure GTK--, exiting.')
if not conf.CheckPkgConfig('glibmm-2.4', '2.16'):
problems.append('Unable to configure Lib glib--, exiting.')
if not conf.CheckPkgConfig('cairomm-1.0', 0.6):
print 'Unable to configure Cairo--, exiting.'
Exit(1)
problems.append('Unable to configure Cairo--, exiting.')
if not conf.CheckPkgConfig('gdl-1.0', '0.6.1'):
print 'Unable to configure the GNOME DevTool Library, exiting.'
Exit(1)
problems.append('Unable to configure the GNOME DevTool Library, exiting.')
if not conf.CheckPkgConfig('xv'): Exit(1)
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.CheckPkgConfig('sm'): Exit(1)
#
# obviously not needed?
# report missing dependencies
if problems:
print "*** unable to build due to the following problems:"
for isue in problems:
print " * %s" % isue
print
print "build aborted."
Exit(1)
print "** Gathered Library Info: %s" % conf.env.libInfo.keys()
@ -269,6 +278,10 @@ def defineBuildTargets(env, artifacts):
setup sub-environments with special build options if necessary.
We use a custom function to declare a whole tree of srcfiles.
"""
# use PCH to speed up building
# env['GCH'] = ( env.PrecompiledHeader('$SRCDIR/pre.hpp')
# + env.PrecompiledHeader('$SRCDIR/pre_a.hpp')
# )
objback = srcSubtree(env,'$SRCDIR/backend')
objproc = srcSubtree(env,'$SRCDIR/proc')
@ -281,27 +294,29 @@ def defineBuildTargets(env, artifacts):
+ env.StaticLibrary('$BINDIR/lumi.la', objlib)
)
# use PCH to speed up building
precomp = ( env.PrecompiledHeader('$SRCDIR/pre')
+ env.PrecompiledHeader('$SRCDIR/pre_a')
)
env.Depends(objproc, precomp)
env.Depends(objlib, precomp)
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', objplug)
# the Lumiera GTK GUI
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','xv','xext','sm'])
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','librsvg-2.0','xv','xext','sm'])
objgui = srcSubtree(envgtk,'$SRCDIR/gui')
# render and install Icons
vector_icon_dir = env.subst('$ICONDIR/svg')
prerendered_icon_dir = env.subst('$ICONDIR/prerendered')
artifacts['icons'] = ( [env.IconRender(f) for f in scanSubtree(vector_icon_dir, ['*.svg'])]
+ [env.IconCopy(f) for f in scanSubtree(prerendered_icon_dir, ['*.png'])]
)
artifacts['lumigui'] = ( envgtk.Program('$BINDIR/lumigui', objgui + core)
+ env.Install('$BINDIR', env.Glob('$ICONDIR/*.png'))
+ env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
+ artifacts['icons']
)
# call subdir SConscript(s) for independent components
SConscript(dirs=[SRCDIR+'/tool'], exports='env artifacts core')
SConscript(dirs=['admin'], exports='env envgtk artifacts core')
SConscript(dirs=[TESTDIR], exports='env artifacts core')
@ -321,16 +336,9 @@ def definePostBuildTargets(env, artifacts):
env.Clean ('build', [ 'scache.conf', '.sconf_temp', '.sconsign.dblite', 'config.log' ])
env.Clean ('build', [ '$SRCDIR/pre.gch' ])
# Doxygen documentation
# Note: at the moment we only depend on Doxyfile
# obviousely, we should depend on all sourcefiles
# real Doxygen builder for scons is under developement for 0.97
# so for the moment I prefere not to bother
doxyfile = File('doc/devel/Doxyfile')
env.NoClean(doxyfile)
doxydoc = artifacts['doxydoc'] = [ Dir('doc/devel/html'), Dir('doc/devel/latex') ]
env.Command(doxydoc, doxyfile, "doxygen Doxyfile 2>&1 |tee ,doxylog", chdir='doc/devel')
env.Clean ('doc/devel', doxydoc + ['doc/devel/,doxylog'])
doxydoc = artifacts['doxydoc'] = env.Doxygen('doc/devel/Doxyfile')
env.Alias ('doc', doxydoc)
env.Clean ('doc', doxydoc + ['doc/devel/,doxylog','doc/devel/warnings.txt'])
def defineInstallTargets(env, artifacts):

View file

@ -22,3 +22,7 @@ vgsuppression_SOURCES = $(admin_srcdir)/vgsuppression.c
vgsuppression_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/
vgsuppression_LDADD = liblumi.a -lnobugmt -lpthread -ldl
noinst_PROGRAMS += rsvg-convert
rsvg_convert_SOURCES = $(admin_srcdir)/rsvg-convert.c
rsvg_convert_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror
rsvg_convert_LDADD = -lcairo -lglib-2.0 -lgthread-2.0 -lrsvg-2

17
admin/SConscript Normal file
View file

@ -0,0 +1,17 @@
# -*- python -*-
##
## SConscript - SCons buildscript for helper tools (called by SConstruct)
##
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
+ rsvg ## for rendering SVG icons (uses librsvg)
]
# Rendering the SVG Icons depends on rsvg-convert
env.Depends(artifacts['icons'], rsvg)

View file

@ -24,12 +24,11 @@ import getopt
from xml.dom import minidom
import os
import shutil
import cairo
import rsvg
#svgDir = "svg"
#prerenderedDir = "prerendered"
inkscapePath = "/usr/bin/inkscape"
rsvgPath = "./rsvg-convert"
artworkLayerPrefix = "artwork:"
def createDirectory( name ):
@ -69,7 +68,7 @@ def parsePlateLayer( layer ):
return rectangles
def parseSVG( file_path ):
print "Rendering " + file_path
print "Parsing " + file_path
svgdoc = minidom.parse(file_path)
for root_node in svgdoc.childNodes:
if root_node.nodeType == minidom.Node.ELEMENT_NODE:
@ -106,23 +105,26 @@ def renderSvgRsvg(file_path, out_dir, artwork_name, rectangle, doc_size):
width = int(rectangle[2])
height = int(rectangle[3])
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
context = cairo.Context(surface)
context.translate(-rectangle[0], -rectangle[1])
# Load an render the SVG
svg = rsvg.Handle(file=file_path)
svg.render_cairo(context)
# Output a PNG file
surface.write_to_png(os.path.join(out_dir,
"%ix%i/%s.png" % (width, height, artwork_name)))
if not os.path.exists(rsvgPath):
print "Error: executable %s not found." % rsvgPath
os.spawnlp(os.P_WAIT, rsvgPath, rsvgPath,
"--source-rect=%g:%g:%g:%g" % (rectangle[0], rectangle[1], rectangle[2], rectangle[3]),
"--output=" + os.path.join(out_dir, "%gx%g/%s.png" % (rectangle[2], rectangle[3], artwork_name)),
file_path)
def renderSvgIcon(file_path, out_dir):
artwork_name, doc_size, rectangles = parseSVG(file_path)
for rectangle in rectangles:
renderSvgRsvg(file_path, out_dir, artwork_name, rectangle, doc_size)
def getTargetNames(file_path):
"""get a list of target names to be rendered from the given source SVG
usable to setup the build targets for SCons
"""
artwork_name, _ , rectangles = parseSVG(file_path)
return ["%gx%g/%s.png" % (rectangle[2], rectangle[3], artwork_name) for rectangle in rectangles ]
#def renderSvgIcons():
# listing = os.listdir(svgDir)
# for file_path in listing:
@ -137,7 +139,8 @@ def renderSvgIcon(file_path, out_dir):
# copyMergeDirectory(src_dir, list_item)
def printHelp():
print "render-icon.py - An icon rendering utility script for lumiera"
print "render-icon.py SRCFILE.svg TARGETDIR"
print "An icon rendering utility script for lumiera"
def parseArguments(argv):
optlist, args = getopt.getopt(argv, "")

219
admin/rsvg-convert.c Normal file
View file

@ -0,0 +1,219 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*-
rsvg-convert.c: Command line utility for exercising rsvg with cairo.
Copyright (C) 2005 Red Hat, Inc.
Copyright (C) 2005 Dom Lachowicz <cinamod@hotmail.com>
Copyright (C) 2005 Caleb Moore <c.moore@student.unsw.edu.au>
Copyright (C) 2008 Joel Holdsworth <joel@airwebreathe.org.uk>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Authors: Carl Worth <cworth@cworth.org>,
Caleb Moore <c.moore@student.unsw.edu.au>,
Dom Lachowicz <cinamod@hotmail.com>,
Joel Holdsworth <joel@airwebreathe.org.uk>
*/
#ifndef N_
#define N_(X) X
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <librsvg-2/librsvg/rsvg.h>
#include <librsvg-2/librsvg/rsvg-cairo.h>
#ifdef CAIRO_HAS_PS_SURFACE
#include <cairo-ps.h>
#endif
#ifdef CAIRO_HAS_PDF_SURFACE
#include <cairo-pdf.h>
#endif
#ifdef CAIRO_HAS_SVG_SURFACE
#include <cairo-svg.h>
#endif
#ifndef _
#define _(X) X
#endif
struct RsvgSizeCallbackData {
gint width;
gint height;
};
struct RsvgSourceRectangle {
double left;
double top;
double width;
double height;
};
static void
display_error (GError * err)
{
if (err) {
g_print ("%s", err->message);
g_error_free (err);
}
}
static void
rsvg_cairo_size_callback (int *width, int *height, gpointer data)
{
RsvgDimensionData *dimensions = data;
*width = dimensions->width;
*height = dimensions->height;
}
static cairo_status_t
rsvg_cairo_write_func (void *closure, const unsigned char *data, unsigned int length)
{
fwrite (data, 1, length, (FILE *) closure);
return CAIRO_STATUS_SUCCESS;
}
int
main (int argc, char **argv)
{
GOptionContext *g_option_context;
int width = -1;
int height = -1;
char *source_rect_string = NULL;
char *output = NULL;
GError *error = NULL;
char *filename = NULL;
char **args = NULL;
RsvgHandle *rsvg;
cairo_surface_t *surface = NULL;
cairo_t *cr = NULL;
RsvgDimensionData dimensions;
FILE *output_file = stdout;
struct RsvgSourceRectangle source_rect = {0, 0, 0, 0};
GOptionEntry options_table[] = {
{"width", 'w', 0, G_OPTION_ARG_INT, &width,
N_("width [optional; defaults to the SVG's width]"), N_("<int>")},
{"height", 'h', 0, G_OPTION_ARG_INT, &height,
N_("height [optional; defaults to the SVG's height]"), N_("<int>")},
{"source-rect", 'r', 0, G_OPTION_ARG_STRING, &source_rect_string,
N_("source rectangle [optional; defaults to rectangle of the SVG document]"), N_("left:top:width:height")},
{"output", 'o', 0, G_OPTION_ARG_STRING, &output,
N_("output filename"), NULL},
{G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &args, NULL, N_("FILE")},
{NULL}
};
g_thread_init(NULL);
g_option_context = g_option_context_new (_("- SVG Converter"));
g_option_context_add_main_entries (g_option_context, options_table, NULL);
g_option_context_set_help_enabled (g_option_context, TRUE);
if (!g_option_context_parse (g_option_context, &argc, &argv, &error)) {
display_error (error);
exit (1);
}
g_option_context_free (g_option_context);
if (output != NULL) {
output_file = fopen (output, "wb");
if (!output_file) {
fprintf (stderr, _("Error saving to file: %s\n"), output);
exit (1);
}
}
if (args[0] != NULL) {
filename = args[0];
}
/* Parse the source rect */
if(source_rect_string != NULL) {
const int n = sscanf(source_rect_string, "%lg:%lg:%lg:%lg",
&source_rect.left, &source_rect.top,
&source_rect.width, &source_rect.height);
if(n != 4 || source_rect.width <= 0.0 || source_rect.height < 0.0) {
fprintf (stderr, _("Invalid source rect: %s\n"), source_rect_string);
exit(1);
}
}
rsvg_init ();
rsvg = rsvg_handle_new_from_file (filename, &error);
if (!rsvg) {
fprintf (stderr, _("Error reading SVG:"));
display_error (error);
fprintf (stderr, "\n");
exit (1);
}
/* if the user did not specify a source rectangle, get the page size from the SVG */
if(source_rect_string == NULL) {
rsvg_handle_set_size_callback (rsvg, rsvg_cairo_size_callback, &dimensions, NULL);
source_rect.left = 0;
source_rect.top = 0;
source_rect.width = dimensions.width;
source_rect.height = dimensions.height;
}
rsvg_handle_get_dimensions (rsvg, &dimensions);
if(width != -1 && height != -1) {
dimensions.width = width;
dimensions.height = height;
} else if(source_rect_string != NULL) {
dimensions.width = source_rect.width;
dimensions.height = source_rect.height;
}
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
dimensions.width, dimensions.height);
cr = cairo_create (surface);
cairo_translate(cr, -source_rect.left, -source_rect.top);
if(width != -1 && height != -1 && source_rect_string != NULL) {
cairo_scale(cr, (double)dimensions.width / (double)source_rect.width,
(double)dimensions.height / (double)source_rect.height);
}
rsvg_handle_render_cairo (rsvg, cr);
cairo_surface_write_to_png_stream (surface, rsvg_cairo_write_func, output_file);
g_object_unref (G_OBJECT (rsvg));
cairo_destroy (cr);
cairo_surface_destroy (surface);
fclose (output_file);
rsvg_term ();
return 0;
}

View file

@ -0,0 +1,230 @@
# -*- python -*-
##
## BuilderDoxygen.py - SCons builder for generating Doxygen documentation
##
#
# Astxx, the Asterisk C++ API and Utility Library.
# Copyright (C) 2005, 2006 Matthew A. Nicholson
# Copyright (C) 2006 Tim Blechmann
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 2.1 as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library; if not, see http://www.gnu.org/licenses/
#####################################################################
# history: 8/2008 adapted for Lumiera build system
# added patch for Doxyfile in subdirectory
# see http://www.scons.org/wiki/DoxygenBuilder
import os
import os.path
import glob
from fnmatch import fnmatch
def DoxyfileParse(file_contents):
"""
Parse a Doxygen source file and return a dictionary of all the values.
Values will be strings and lists of strings.
"""
data = {}
import shlex
lex = shlex.shlex(instream = file_contents, posix = True)
lex.wordchars += "*+./-:"
lex.whitespace = lex.whitespace.replace("\n", "")
lex.escape = ""
lineno = lex.lineno
token = lex.get_token()
key = token # the first token should be a key
last_token = ""
key_token = False
next_key = False
new_data = True
def append_data(data, key, new_data, token):
if new_data or len(data[key]) == 0:
data[key].append(token)
else:
data[key][-1] += token
while token:
if token in ['\n']:
if last_token not in ['\\']:
key_token = True
elif token in ['\\']:
pass
elif key_token:
key = token
key_token = False
else:
if token == "+=":
if not data.has_key(key):
data[key] = list()
elif token == "=":
data[key] = list()
else:
append_data( data, key, new_data, token )
new_data = True
last_token = token
token = lex.get_token()
if last_token == '\\' and token != '\n':
new_data = False
append_data( data, key, new_data, '\\' )
# compress lists of len 1 into single strings
for (k, v) in data.items():
if len(v) == 0:
data.pop(k)
# items in the following list will be kept as lists and not converted to strings
if k in ["INPUT", "FILE_PATTERNS", "EXCLUDE_PATTERNS"]:
continue
if len(v) == 1:
data[k] = v[0]
return data
def DoxySourceScan(node, env, path):
"""
Doxygen Doxyfile source scanner. This should scan the Doxygen file and add
any files used to generate docs to the list of source files.
"""
default_file_patterns = [
'*.c', '*.cc', '*.cxx', '*.cpp', '*.c++', '*.java', '*.ii', '*.ixx',
'*.ipp', '*.i++', '*.inl', '*.h', '*.hh ', '*.hxx', '*.hpp', '*.h++',
'*.idl', '*.odl', '*.cs', '*.php', '*.php3', '*.inc', '*.m', '*.mm',
'*.py',
]
default_exclude_patterns = [
'*~',
]
sources = []
data = DoxyfileParse(node.get_contents())
if data.get("RECURSIVE", "NO") == "YES":
recursive = True
else:
recursive = False
file_patterns = data.get("FILE_PATTERNS", default_file_patterns)
exclude_patterns = data.get("EXCLUDE_PATTERNS", default_exclude_patterns)
#
# We're running in the top-level directory, but the doxygen
# configuration file is in the same directory as node; this means
# that relative pathnames in node must be adjusted before they can
# go onto the sources list
conf_dir = os.path.dirname(str(node))
for node in data.get("INPUT", []):
if not os.path.isabs(node):
node = os.path.join(conf_dir, node)
if os.path.isfile(node):
sources.append(node)
elif os.path.isdir(node):
if recursive:
for root, dirs, files in os.walk(node):
for f in files:
filename = os.path.join(root, f)
pattern_check = reduce(lambda x, y: x or bool(fnmatch(filename, y)), file_patterns, False)
exclude_check = reduce(lambda x, y: x and fnmatch(filename, y), exclude_patterns, True)
if pattern_check and not exclude_check:
sources.append(filename)
else:
for pattern in file_patterns:
sources.extend(glob.glob("/".join([node, pattern])))
sources = map( lambda path: env.File(path), sources )
return sources
def DoxySourceScanCheck(node, env):
"""Check if we should scan this file"""
return os.path.isfile(node.path)
def DoxyEmitter(source, target, env):
"""Doxygen Doxyfile emitter"""
# possible output formats and their default values and output locations
output_formats = {
"HTML": ("YES", "html"),
"LATEX": ("YES", "latex"),
"RTF": ("NO", "rtf"),
"MAN": ("NO", "man"),
"XML": ("NO", "xml"),
}
data = DoxyfileParse(source[0].get_contents())
targets = []
out_dir = data.get("OUTPUT_DIRECTORY", ".")
# add our output locations
for (k, v) in output_formats.items():
if data.get("GENERATE_" + k, v[0]) == "YES":
targets.append(env.Dir( os.path.join(out_dir, data.get(k + "_OUTPUT", v[1]))) )
# don't clobber targets
for node in targets:
env.Precious(node)
# set up cleaning stuff
for node in targets:
env.Clean(node, node)
return (targets, source)
def generate(env):
"""
Add builders and construction variables for the
Doxygen tool. This is currently for Doxygen 1.4.6.
"""
doxyfile_scanner = env.Scanner(
DoxySourceScan,
"DoxySourceScan",
scan_check = DoxySourceScanCheck,
)
import SCons.Builder
doxyfile_builder = SCons.Builder.Builder(
action = "cd ${SOURCE.dir} && (${DOXYGEN} ${SOURCE.file} 2>&1 |tee ,doxylog)",
emitter = DoxyEmitter,
target_factory = env.fs.Entry,
single_source = True,
source_scanner = doxyfile_scanner,
)
env.Append(BUILDERS = {
'Doxygen': doxyfile_builder,
})
env.AppendUnique(
DOXYGEN = 'doxygen',
)
def exists(env):
"""
Make sure doxygen exists.
"""
return env.Detect("doxygen")

110
admin/scons/BuilderGCH.py Normal file
View file

@ -0,0 +1,110 @@
# -*- python -*-
##
## BuilderGCH.py - SCons builder for gcc's precompiled headers
##
# Copyright (C) scons.org/wiki/GchBuilder
# 2006 Tim Blechmann
# 2008 Hermann Vosseler <Ichthyostega@web.de>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see http://www.gnu.org/licenses/
#####################################################################
# history: 8/2008 adapted for Lumiera build system
# changed to accept a list of precompiled header defs
from types import ListType
import SCons.Action
import SCons.Builder
import SCons.Scanner.C
import SCons.Util
import SCons.Script
SCons.Script.EnsureSConsVersion(0,96,92)
GchAction = SCons.Action.Action('$GCHCOM', '$GCHCOMSTR')
GchShAction = SCons.Action.Action('$GCHSHCOM', '$GCHSHCOMSTR')
def gen_suffix(env, sources):
return sources[0].get_suffix() + env['GCHSUFFIX']
GchShBuilder = SCons.Builder.Builder(action = GchShAction,
source_scanner = SCons.Scanner.C.CScanner(),
suffix = gen_suffix)
GchBuilder = SCons.Builder.Builder(action = GchAction,
source_scanner = SCons.Scanner.C.CScanner(),
suffix = gen_suffix)
def setup_dependency(target,source,env, key):
scanner = SCons.Scanner.C.CScanner()
path = scanner.path(env)
deps = scanner(source[0], env, path)
if env.has_key(key) and env[key]:
for header in env[key]:
header_path = header.path.strip('.gch')
if header_path in [x.path for x in deps]:
print "Precompiled header(%s) %s \t <--- %s" % (key,header_path,source[0])
env.Depends(target, header)
def static_pch_emitter(target,source,env):
SCons.Defaults.StaticObjectEmitter( target, source, env )
setup_dependency(target,source,env, key='GCH')
return (target, source)
def shared_pch_emitter(target,source,env):
SCons.Defaults.SharedObjectEmitter( target, source, env )
setup_dependency(target,source,env, key='GCH-sh')
return (target, source)
def generate(env):
"""
Add builders and construction variables for the Gch builder.
"""
env.Append(BUILDERS = {
'gch': env.Builder(
action = GchAction,
target_factory = env.fs.File,
),
'gchsh': env.Builder(
action = GchShAction,
target_factory = env.fs.File,
),
})
try:
bld = env['BUILDERS']['GCH']
bldsh = env['BUILDERS']['GCH-sh']
except KeyError:
bld = GchBuilder
bldsh = GchShBuilder
env['BUILDERS']['PrecompiledHeader'] = bld
env['BUILDERS']['PrecompiledHeaderShared'] = bldsh
env['GCHCOM'] = '$CXX -o $TARGET -x c++-header -c $CXXFLAGS $_CCCOMCOM $SOURCE'
env['GCHSHCOM'] = '$CXX -o $TARGET -x c++-header -c $SHCXXFLAGS $_CCCOMCOM $SOURCE'
env['GCHSUFFIX'] = '.gch'
for suffix in SCons.Util.Split('.c .C .cc .cxx .cpp .c++'):
env['BUILDERS']['StaticObject'].add_emitter( suffix, static_pch_emitter )
env['BUILDERS']['SharedObject'].add_emitter( suffix, shared_pch_emitter )
def exists(env):
return env.Detect('g++')

View file

@ -28,6 +28,8 @@ import fnmatch
import re
import tarfile
from SCons.Action import Action
#
@ -58,13 +60,13 @@ def srcSubtree(env,tree,isShared=False,builder=None, **args):
else:
builder = lambda f: env.Object(f, **args)
return [builder(f) for f in scanSrcSubtree(root)]
return [builder(f) for f in scanSubtree(root)]
SRCPATTERNS = ['*.c','*.cpp','*.cc']
def scanSrcSubtree(roots):
def scanSubtree(roots, patterns=SRCPATTERNS):
""" first expand (possible) wildcards and filter out non-dirs.
Then scan the given subtree for source filesnames
(python generator function)
@ -73,7 +75,7 @@ def scanSrcSubtree(roots):
for (dir,_,files) in os.walk(root):
if dir.startswith('./'):
dir = dir[2:]
for p in SRCPATTERNS:
for p in patterns:
for f in fnmatch.filter(files, p):
yield os.path.join(dir,f)
@ -102,22 +104,50 @@ def filterNodes(nlist, removeName=None):
return filter(predicate, nlist)
def RegisterPrecompiledHeader_Builder(env):
""" Registeres an Custom Builder for generating a precompiled Header.
Note you should define a dependency to the PCH file
"""
def genCmdline(source, target, env, for_signature):
return '$CXXCOM -x c++-header %s' % source[0]
def fixSourceDependency(target, source, env):
print "precompiled header: %s --> %s" % (source[0],target[0])
return (target, source)
def getDirname(dir):
""" extract directory name without leading path """
dir = os.path.realpath(dir)
if not os.path.isdir(dir):
dir,_ = os.path.split(dir)
_, name = os.path.split(dir)
return name
gchBuilder = env.Builder( generator = genCmdline
, emitter = fixSourceDependency
, suffix = '.gch'
, src_suffix = '.hpp'
)
env.Append(BUILDERS = {'PrecompiledHeader' : gchBuilder})
def RegisterIcon_Builder(env, renderer):
""" Registeres Custom Builders for generating and installing Icons.
Additionally you need to build the tool (rsvg-convert.c)
used to generate png from the svg source using librsvg.
"""
renderer = __import__(renderer) # load python script for invoking the render
renderer.rsvgPath = env.subst("$BINDIR/rsvg-convert")
def invokeRenderer(target, source, env):
source = str(source[0])
targetdir = env.subst("$BINDIR")
renderer.main([source,targetdir])
return 0
def createIconTargets(target,source,env):
""" parse the SVG to get the target file names """
source = str(source[0])
targetdir = os.path.basename(str(target[0]))
targetfiles = renderer.getTargetNames(source) # parse SVG
return (["$BINDIR/%s" % name for name in targetfiles], source)
def IconCopy(env, source):
"""Copy icon to corresponding icon dir. """
subdir = getDirname(source)
return env.Install("$BINDIR/%s" % subdir, source)
buildIcon = env.Builder( action = Action(invokeRenderer, "rendering Icon: $SOURCE --> $TARGETS")
, single_source = True
, emitter = createIconTargets
)
env.Append(BUILDERS = {'IconRender' : buildIcon})
env.AddMethod(IconCopy)

View file

@ -22,7 +22,8 @@
#####################################################################
from SCons.SConf import SConf
import SCons
import SCons.SConf
from SCons.Environment import Environment
from Buildhelper import *
@ -77,17 +78,34 @@ class LumieraEnvironment(Environment):
return libInfo
def Glob (self, pattern):
""" temporary workaround; newer versions of SCons provide this as a global function
"""
""" temporary workaround; newer versions of SCons provide this as a global function """
pattern = self.subst(pattern)
return glob.glob(pattern)
def AddMethod (self, function):
""" temporary workaround; newer versions of SCons provide this as a global function """
self.__dict__[function.__name__] = function.__get__(self)
#### temporary pre 1.0 SCons compatibility hack ####
_ver = map(int, SCons.__version__.split('.'))
_old = (_ver[0]<1 and _ver[1]<98)
if _old:
ConfigBase = SCons.SConf.SConf
else:
ConfigBase = SCons.SConf.SConfBase
del LumieraEnvironment.Glob
del LumieraEnvironment.AddMethod
# use the official impl present since SCons 0.98
# use the new name of the config context base class
class LumieraConfigContext(SConf):
class LumieraConfigContext(ConfigBase):
""" Extends the SCons Configure context with some convenience methods
"""
def __init__(self, *args,**kw):
SConf.__init__(self,*args,**kw)
ConfigBase.__init__(self,*args,**kw)
def CheckPkgConfig (self, libID, minVersion=0):
print "Checking for library configuration: %s " % libID

View file

@ -159,7 +159,9 @@ AC_CHECK_LIB(Xv, XvQueryAdaptors, ,
############## Pkg 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])
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)

View file

@ -1,2 +1,3 @@
,doxylog
warnings.txt
html/*

View file

@ -1,14 +1,14 @@
# Doxyfile 1.5.1
# Doxyfile 1.5.6
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = Lumiera
PROJECT_NUMBER = 3.0+alpha
OUTPUT_DIRECTORY =
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = NO
ABBREVIATE_BRIEF = "The $name class" \
@ -30,6 +30,7 @@ STRIP_FROM_PATH = ../../src/ \
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
@ -38,9 +39,15 @@ TAB_SIZE = 4
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = YES
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@ -49,6 +56,7 @@ EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
@ -60,6 +68,7 @@ SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = YES
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
@ -69,6 +78,8 @@ ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_DIRECTORIES = NO
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
@ -85,6 +96,7 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
INPUT = ../../src/ \
../../tests/
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
@ -130,6 +142,7 @@ RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = YES
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
@ -168,15 +181,21 @@ HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
HTML_DYNAMIC_SECTIONS = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
@ -251,8 +270,11 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
DOT_FONTNAME = FreeSans
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
@ -267,8 +289,7 @@ DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = YES

View file

@ -14,10 +14,10 @@
sodipodi:version="0.32"
inkscape:version="0.45.1"
version="1.0"
sodipodi:docbase="/home/hiv/devel/skizzen"
sodipodi:docname="Cin3.Architecture-1.svg"
sodipodi:docbase="/mnt/Lager/heim/devel/lumi/doc/devel/draw"
sodipodi:docname="Lumi.Architecture-1.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/hiv/devel/skizzen/Cin3.Architecture-1.png"
inkscape:export-filename="/home/hiv/devel/skizzen/Lumi.Architecture-1.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
@ -43,17 +43,24 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="394.65714"
inkscape:cy="258.89573"
inkscape:zoom="1.4811321"
inkscape:cx="384"
inkscape:cy="265"
inkscape:document-units="px"
inkscape:current-layer="layer1"
width="768px"
height="530px"
inkscape:window-width="1010"
inkscape:window-height="812"
inkscape:window-width="1209"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="0" />
inkscape:window-y="28"
showgrid="true"
inkscape:grid-points="true"
inkscape:grid-bbox="false"
gridspacingx="2px"
gridspacingy="2px"
objecttolerance="50"
gridtolerance="10000" />
<metadata
id="metadata7">
<rdf:RDF>
@ -87,7 +94,7 @@
style="opacity:1;color:#000000;fill:#ececec;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3136"
width="449.55356"
height="142.91072"
height="144.89977"
x="46.375008"
y="369.10715" />
<rect
@ -269,15 +276,19 @@
y="252.75615" />
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
x="602.52142"
y="267.42578"
id="text3229"
sodipodi:linespacing="100%"><tspan
y="267.42578"
sodipodi:role="line"
id="tspan2336"
x="602.52142"
id="tspan3233"
sodipodi:role="line">Defaults</tspan></text>
y="267.42578">Session</tspan><tspan
sodipodi:role="line"
id="tspan2338"
x="602.52142"
y="277.42578">Defaults</tspan></text>
<rect
y="46.375"
x="606.66071"
@ -286,10 +297,10 @@
id="rect3235"
style="opacity:1;color:#000000;fill:#ececec;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
y="393.71426"
x="166.57144"
height="75.714287"
width="103.16072"
y="389.97562"
x="159.97351"
height="79.452911"
width="119.98783"
id="rect3246"
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<text
@ -304,12 +315,12 @@
x="174.14285"
y="455.23215">Cache</tspan></text>
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3254"
width="203.48215"
height="32.178574"
x="166.57141"
y="475.10712" />
width="119.99424"
height="29.96665"
x="159.96713"
y="480.03333" />
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
@ -322,10 +333,10 @@
x="174.14285"
y="494.98215">IO-Handling</tspan></text>
<rect
y="454.28571"
x="373.83926"
height="53.000004"
width="113.57143"
y="455.99066"
x="290"
height="54.009354"
width="200.02533"
id="rect3263"
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
@ -333,92 +344,92 @@
id="rect3268"
width="17.035713"
height="17.982149"
x="285.82141"
x="532.60168"
y="393.71426" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3270"
width="17.035713"
height="17.982149"
x="313.03125"
x="559.81152"
y="393.71426" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3272"
width="17.035713"
height="17.982149"
x="340.24106"
x="587.0213"
y="393.71426" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3274"
width="17.035713"
height="17.982149"
x="367.4509"
x="614.23114"
y="393.71426" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3276"
width="17.035713"
height="17.982149"
x="394.66074"
x="641.44098"
y="393.71426" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3278"
width="17.035713"
height="17.982149"
x="285.82141"
x="532.60168"
y="428.25894" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3280"
width="17.035713"
height="17.982149"
x="313.03125"
x="559.81152"
y="428.25894" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3282"
width="17.035713"
height="17.982149"
x="340.24106"
x="587.0213"
y="428.25894" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3284"
width="17.035713"
height="17.982149"
x="367.4509"
x="614.23114"
y="428.25894" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3286"
width="17.035713"
height="17.982149"
x="394.66074"
x="641.44098"
y="428.25894" />
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
x="381.06494"
y="472.18738"
x="300"
y="480"
id="text3306"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan3310"
x="381.06494"
y="472.18738">Storage Backend(s)</tspan></text>
x="300"
y="480">Storage Backend(s)</tspan></text>
<text
sodipodi:linespacing="100%"
id="text3312"
y="422.02664"
x="280.74353"
x="527.5238"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
sodipodi:role="line"
id="tspan3316"
x="280.74353"
x="527.5238"
y="422.02664">Plugins (Codecs, Effects,...)</tspan></text>
<g
id="g3318"
@ -538,7 +549,7 @@
sodipodi:role="line"
id="tspan6303"
x="523.375"
y="355.89285"></tspan></text>
y="355.89285" /></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
@ -553,11 +564,11 @@
sodipodi:role="line"
id="tspan6323"
x="383.30356"
y="214.85713"></tspan><tspan
y="214.85713" /><tspan
sodipodi:role="line"
id="tspan6325"
x="383.30356"
y="232.85713"></tspan></text>
y="232.85713" /></text>
<g
id="g8843">
<path
@ -584,20 +595,6 @@
d="M 83.995536,360.5893 L 86.125001,343.08037 L 79.500001,343.54113 L 83.995536,360.5893 z "
style="color:#000000;fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<g
transform="matrix(-0.6256902,0.7800716,0.7800716,0.6256902,147.19486,107.67292)"
id="g8855">
<path
sodipodi:nodetypes="ccc"
style="fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 80.911116,238.23155 L 83.28125,354.90625 L 80.911116,238.23155 z "
id="path8857" />
<path
style="color:#000000;fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 83.995536,360.5893 L 86.125001,343.08037 L 79.500001,343.54113 L 83.995536,360.5893 z "
id="path8859"
sodipodi:nodetypes="cccc" />
</g>
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
@ -779,5 +776,106 @@
id="tspan14759"
x="243.81104"
y="292.75879">(re)-Building</tspan></text>
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2288"
width="80.071442"
height="60.065418"
x="409.92859"
y="390" />
<text
sodipodi:linespacing="100%"
id="text2290"
y="410.04694"
x="414.28015"
style="font-size:10.00114441px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
xml:space="preserve"
transform="scale(1.0001145,0.9998856)"><tspan
sodipodi:role="line"
id="tspan2294"
x="414.28015"
y="410.04694"
style="stroke-width:1">Plugin Loader</tspan></text>
<rect
y="390"
x="350.2843"
height="60.065418"
width="49.715698"
id="rect2296"
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<g
transform="matrix(-0.6256902,0.7800716,0.7800716,0.6256902,201.26971,137.82439)"
id="g8855">
<path
sodipodi:nodetypes="ccc"
style="fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 80.335451,191.0022 L 83.28125,354.90625 L 80.335451,191.0022 z "
id="path8857" />
<path
style="color:#000000;fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 83.995536,360.5893 L 86.125001,343.08037 L 79.500001,343.54113 L 83.995536,360.5893 z "
id="path8859"
sodipodi:nodetypes="cccc" />
</g>
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
x="352.10049"
y="410"
id="text2298"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan2302"
x="352.10049"
y="410">Serializer</tspan></text>
<g
id="g2304"
transform="matrix(-0.6256902,0.7800716,0.7800716,0.6256902,321.26971,197.82439)" />
<g
id="g2310"
transform="matrix(2.2113858e-2,0.9997554,0.9997554,-2.2113858e-2,160.03746,354.11646)">
<path
id="path2312"
d="M 82.05604,278.21602 L 83.28125,354.90625 L 82.05604,278.21602 z "
style="fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccc" />
<path
sodipodi:nodetypes="cccc"
id="path2314"
d="M 83.995536,360.5893 L 86.125001,343.08037 L 79.500001,343.54113 L 83.995536,360.5893 z "
style="color:#000000;fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2324"
width="50.0009"
height="60.065418"
x="290"
y="390" />
<text
sodipodi:linespacing="100%"
id="text2326"
y="410"
x="295.16116"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
sodipodi:role="line"
id="tspan2328"
x="295.16116"
y="410">Defaults</tspan></text>
<g
transform="matrix(0.6256902,0.7800716,-0.7800716,0.6256902,438.73029,137.82439)"
id="g2330">
<path
sodipodi:nodetypes="ccc"
style="fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 80.911116,238.23155 L 83.28125,354.90625 L 80.911116,238.23155 z "
id="path2332" />
<path
style="color:#000000;fill:#00e800;fill-opacity:0.75;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;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;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 83.995536,360.5893 L 86.125001,343.08037 L 79.500001,343.54113 L 83.995536,360.5893 z "
id="path2334"
sodipodi:nodetypes="cccc" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 58 KiB

118
doc/devel/draw/LumiLogo.svg Normal file
View file

@ -0,0 +1,118 @@
<?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://web.resource.org/cc/"
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="100"
height="100"
id="svg2676"
sodipodi:version="0.32"
inkscape:version="0.45.1"
version="1.0"
sodipodi:docbase="/mnt/Lager/heim/devel/lumi/doc/devel/draw"
sodipodi:docname="LumiLogo.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/mnt/Lager/heim/devel/lumi/doc/devel/draw/LumiLogo32.png"
inkscape:export-xdpi="57.310001"
inkscape:export-ydpi="57.310001">
<defs
id="defs2678">
<linearGradient
id="linearGradient11428">
<stop
offset="0"
style="stop-color:#eed98e;stop-opacity:1;"
id="stop11430" />
<stop
offset="1"
style="stop-color:#553163;stop-opacity:1;"
id="stop11432" />
</linearGradient>
<linearGradient
id="linearGradient11549"
gradientUnits="userSpaceOnUse"
inkscape:collect="always"
x1="50.468533"
y1="46.267605"
xlink:href="#linearGradient11428"
gradientTransform="matrix(2.0887729,0,0,2.0886777,-60.313318,-60.306023)"
x2="64.260468"
y2="68.541466" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8"
inkscape:cx="77.291306"
inkscape:cy="36.924563"
inkscape:document-units="px"
inkscape:current-layer="svg2676"
width="100px"
height="100px"
inkscape:window-width="1179"
inkscape:window-height="918"
inkscape:window-x="365"
inkscape:window-y="25" />
<metadata
id="metadata2681">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Lumiera Logo</dc:title>
<dc:date>8/2008</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Lumiera.org</dc:title>
</cc:Agent>
</dc:creator>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.5/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="LumiLogo"
inkscape:groupmode="layer"
id="lay_Logo"
inkscape:export-filename="/mnt/Lager/heim/devel/lumi/doc/devel/draw/LumiLogo.png"
inkscape:export-xdpi="114.62687"
inkscape:export-ydpi="114.62687">
<g
style="opacity:1;color:#000000;fill:#951616;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient11549);stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="g_LumiLogo"
transform="matrix(0.5,0,0,0.5,30,30)">
<path
id="LumieraLogo"
sodipodi:nodetypes="ccccccccccccscsssccsccscsssccccsssc"
d="M 0,11.48771 L 0,88.512258 C 0,94.876459 5.12376,100.00587 11.488252,99.999984 L 88.511753,99.999984 C 94.876244,99.999984 100,94.876455 100,88.512258 L 100,11.492269 C 100,5.1280689 94.876244,-1.6079329e-05 88.511753,-1.6079329e-05 L 11.488252,-1.6079329e-05 C 5.6951387,-1.6079329e-05 0,5.5258281 0,11.48771 z M 21.148826,0.26562719 C 29.955201,0.26562719 42.558748,6.0632763 42.558748,35.120436 L 42.558748,77.024531 C 42.558748,87.851217 43.097639,96.997511 50.065277,96.997511 C 52.34862,96.997511 53.64308,95.484552 54.047,94.908832 C 49.700804,94.769736 46.214101,91.194803 46.214101,86.815208 C 46.214101,82.347527 49.840211,78.721581 54.308096,78.721581 C 58.775981,78.721581 62.402092,82.347527 62.402092,86.815208 C 62.402092,88.437921 61.919927,89.921159 61.096608,91.188377 C 61.096608,91.188377 61.031334,91.318919 61.031334,91.318919 C 58.08739,95.518358 54.965657,99.738901 47.519584,99.738901 C 38.713208,99.738901 26.109662,93.941251 26.109662,64.884092 L 26.109662,22.979996 C 26.109662,12.15331 25.57077,3.0070164 18.603134,3.0070164 C 16.319793,3.0070164 15.025331,4.5199752 14.62141,5.0956943 C 18.967606,5.2347913 22.454309,8.8097247 22.454309,13.189319 C 22.454309,17.657001 18.828199,21.282945 14.360314,21.282945 C 9.892429,21.282945 6.2663188,17.657001 6.2663188,13.189319 C 6.2663188,11.566604 6.7484827,10.083368 7.5718019,8.8161505 C 7.5718019,8.8161505 7.6370761,8.6856087 7.6370761,8.6856087 C 10.58102,4.4861692 13.702754,0.26562719 21.148826,0.26562719 z M 75.456921,18.280472 C 79.924808,18.280472 83.550918,21.906416 83.550918,26.374097 C 83.550918,30.841779 79.924808,34.467725 75.456921,34.467725 C 70.989037,34.467725 67.362928,30.841779 67.362928,26.374097 C 67.362928,21.906416 70.989037,18.280472 75.456921,18.280472 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 153 KiB

View file

@ -16,7 +16,7 @@
<!-- ============================================================= -->
<a name="refclass132741"></a>
<p>Declaration :</p><ul><li>C++ : class State </li><li>Java : public interface State </li></ul><p>Directly inherited by : <a href="class143493.html#refclass143493"><b>InvocationStateBase</b></a> <a href="class142597.html#refclass142597"><b>StateAdapter</b></a> <a href="class142469.html#refclass142469"><b>StateProxy</b></a> </p>
<p>Declaration :</p><ul><li>C++ : class State </li><li>Java : public interface State </li></ul><p>Directly inherited by : <a href="class142597.html#refclass142597"><b>StateAdapter</b></a> <a href="class142469.html#refclass142469"><b>StateProxy</b></a> </p>
<p>Artifact : <a href="index.html#refartifact130949"><b>stateproxy</b></a>, Component(s) : <a href="index.html#refcomponent128005"><b>Builder</b></a></p><div class="sub">
<a name="refrelation135941"></a>
<table><tr><td><div class="element">Relation <b>currFrame (&lt;unidirectional association&gt;)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # currFrame : <a href="class133253.html#refclass133253"><b>Frame</b></a></li><li>C++ : protected: <a href="class133253.html#refclass133253"><b>Frame</b></a> * currFrame</li></ul><a name="refoperation135813"></a>

View file

@ -16,9 +16,8 @@
<!-- ============================================================= -->
<a name="refclass142469"></a>
<p>Declaration :</p><ul><li>C++ : template&lt;class WIRING, class POLICY&gt; class StateProxy : public <a href="class132741.html#refclass132741"><b>State</b></a>, public <a href="class143877.html#refclass143877"><b>InPlace</b></a> </li></ul><div class="sub">
<a name="refrelation154117"></a>
<table><tr><td><div class="element">Relation <b>wiring (&lt;unidirectional association&gt;)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # wiring : <a href="class144005.html#refclass144005"><b>WiringTable</b></a>, multiplicity : 1</li><li>C++ : protected: const <a href="class144005.html#refclass144005"><b>WiringTable</b></a>* wiring</li></ul></div>
<p>Declaration :</p><ul><li>C++ : class StateProxy : public <a href="class132741.html#refclass132741"><b>State</b></a> </li></ul><div class="sub">
</div>
<p>All public operations : <a href="class132741.html#refoperation135941"><b>allocateBuffer</b></a> , <a href="class132741.html#refoperation135813"><b>fetch</b></a> , <a href="class132741.html#refoperation136325"><b>isCalculated</b></a> , <a href="class132741.html#refoperation136197"><b>releaseBuffer</b></a> </p>
</body>
</html>

View file

@ -17,5 +17,9 @@
<a name="refclass142725"></a>
<p>Declaration :</p><ul><li>C++ : class WiringDescriptor </li></ul><p>Directly inherited by : <a href="class143365.html#refclass143365"><b>NodeWiring</b></a> </p>
<div class="sub">
<a name="refoperation136453"></a>
<table><tr><td><div class="element">Operation <b>callDown</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + callDown(inout : <a href="class132741.html#refclass132741"><b>State</b></a>, in requiredOutput : uint) : , exceptions : <a href="class144133.html#refclass144133"><b>BuffHandle</b></a></li><li>C++ : public: virtual callDown () throw (<a href="class144133.html#refclass144133"><b>BuffHandle</b></a>)</li></ul></div>
<p>All public operations : <a href="class142725.html#refoperation136453"><b>callDown</b></a> </p>
</body>
</html>

View file

@ -16,7 +16,13 @@
<!-- ============================================================= -->
<a name="refclass143365"></a>
<p>Declaration :</p><ul><li>C++ : template&lt;class STATE&gt; class NodeWiring : public <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a> </li></ul><div class="sub">
</div>
<p>Declaration :</p><ul><li>C++ : template&lt;class CONF&gt; class NodeWiring : public <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a> </li></ul><div class="sub">
<a name="refrelation156165"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144517.html#refclass144517"><b>Strategy</b></a></li><li>C++ : protected: <a href="class144517.html#refclass144517"><b>Strategy</b></a>* </li></ul><a name="refrelation156421"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144517.html#refclass144517"><b>Strategy</b></a></li><li>C++ : protected: <a href="class144517.html#refclass144517"><b>Strategy</b></a>* </li></ul><a name="refrelation156677"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144517.html#refclass144517"><b>Strategy</b></a></li><li>C++ : protected: <a href="class144517.html#refclass144517"><b>Strategy</b></a>* </li></ul><a name="refrelation156933"></a>
<table><tr><td><div class="element">Relation <b>&lt;unidirectional association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144261.html#refclass144261"><b>Invocation</b></a></li><li>C++ : protected: <a href="class144261.html#refclass144261"><b>Invocation</b></a>* </li></ul><a name="refoperation136581"></a>
<table><tr><td><div class="element">Operation <b>callDown</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + callDown() : </li><li>C++ : public: callDown () </li></ul></div>
<p>All public operations : <a href="class143365.html#refoperation136581"><b>callDown</b></a> , <a href="class142725.html#refoperation136453"><b>callDown</b></a> </p>
</body>
</html>

View file

@ -4,21 +4,18 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Class InvocationStateBase</title>
<title>Class OperationBase</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class InvocationStateBase</div>
<div class = "title">Class OperationBase</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass143493"></a>
<p>Declaration :</p><ul><li>C++ : class InvocationStateBase : public <a href="class132741.html#refclass132741"><b>State</b></a> </li></ul><p>Directly inherited by : <a href="class143621.html#refclass143621"><b>Caching</b></a> </p>
<div class="sub">
</div>
<p>All public operations : <a href="class132741.html#refoperation135941"><b>allocateBuffer</b></a> , <a href="class132741.html#refoperation135813"><b>fetch</b></a> , <a href="class132741.html#refoperation136325"><b>isCalculated</b></a> , <a href="class132741.html#refoperation136197"><b>releaseBuffer</b></a> </p>
<p>Declaration :</p><ul><li>C++ : class OperationBase </li></ul><p>Directly inherited by : <a href="class144645.html#refclass144645"><b>FeedCache</b></a> <a href="class144389.html#refclass144389"><b>ProcessData</b></a> <a href="class143877.html#refclass143877"><b>ReadSource</b></a> </p>
</body>
</html>

View file

@ -4,21 +4,20 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Class Caching</title>
<title>Class QueryCache</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class Caching</div>
<div class = "title">Class QueryCache</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass143621"></a>
<p>Declaration :</p><ul><li>C++ : class Caching : public <a href="class143493.html#refclass143493"><b>InvocationStateBase</b></a> </li></ul><p>Directly inherited by : <a href="class143749.html#refclass143749"><b>Process</b></a> </p>
<p>Declaration :</p><ul><li>C++ : class QueryCache : public <a href="class143749.html#refclass143749"><b>PullInput</b></a> </li></ul><p>Directly inherited by : <a href="class144517.html#refclass144517"><b>Strategy</b></a> </p>
<div class="sub">
</div>
<p>All public operations : <a href="class132741.html#refoperation135941"><b>allocateBuffer</b></a> , <a href="class132741.html#refoperation135813"><b>fetch</b></a> , <a href="class132741.html#refoperation136325"><b>isCalculated</b></a> , <a href="class132741.html#refoperation136197"><b>releaseBuffer</b></a> </p>
</body>
</html>

View file

@ -4,21 +4,21 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Class Process</title>
<title>Class PullInput</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class Process</div>
<div class = "title">Class PullInput</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass143749"></a>
<p>Declaration :</p><ul><li>C++ : class Process : public <a href="class143621.html#refclass143621"><b>Caching</b></a> </li></ul><p>Directly inherited by : <a href="class143877.html#refclass143877"><b>InPlace</b></a> </p>
<p>Declaration :</p><ul><li>C++ : class PullInput : public <a href="class144389.html#refclass144389"><b>ProcessData</b></a> </li></ul><p>Directly inherited by : <a href="class143621.html#refclass143621"><b>QueryCache</b></a> <a href="class144517.html#refclass144517"><b>Strategy</b></a> </p>
<div class="sub">
</div>
<p>All public operations : <a href="class132741.html#refoperation135941"><b>allocateBuffer</b></a> , <a href="class132741.html#refoperation135813"><b>fetch</b></a> , <a href="class132741.html#refoperation136325"><b>isCalculated</b></a> , <a href="class132741.html#refoperation136197"><b>releaseBuffer</b></a> </p>
<a name="refrelation158085"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144389.html#refclass144389"><b>ProcessData</b></a></li><li>C++ : protected: <a href="class144389.html#refclass144389"><b>ProcessData</b></a>* </li></ul></div>
</body>
</html>

View file

@ -4,21 +4,20 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Class InPlace</title>
<title>Class ReadSource</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class InPlace</div>
<div class = "title">Class ReadSource</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass143877"></a>
<p>Declaration :</p><ul><li>C++ : class InPlace : public <a href="class143749.html#refclass143749"><b>Process</b></a> </li></ul><p>Directly inherited by : <a href="class142469.html#refclass142469"><b>StateProxy</b></a> </p>
<p>Declaration :</p><ul><li>C++ : class ReadSource : public <a href="class143493.html#refclass143493"><b>OperationBase</b></a> </li></ul><p>Directly inherited by : <a href="class144517.html#refclass144517"><b>Strategy</b></a> </p>
<div class="sub">
</div>
<p>All public operations : <a href="class132741.html#refoperation135941"><b>allocateBuffer</b></a> , <a href="class132741.html#refoperation135813"><b>fetch</b></a> , <a href="class132741.html#refoperation136325"><b>isCalculated</b></a> , <a href="class132741.html#refoperation136197"><b>releaseBuffer</b></a> </p>
</body>
</html>

View file

@ -4,19 +4,19 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Class WiringTable</title>
<title>Class BuffTable</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class WiringTable</div>
<div class = "title">Class BuffTable</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass144005"></a>
<p>Declaration :</p><ul><li>C++ : template&lt;int SIZ&gt; class WiringTable </li></ul><div class="sub">
<p>Declaration :</p><ul><li>C++ : template&lt;int SIZ&gt; class BuffTable </li></ul><div class="sub">
<a name="refrelation153861"></a>
<table><tr><td><div class="element">Relation <b>&lt;directional aggregation by value&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144133.html#refclass144133"><b>BuffHandle</b></a>, multiplicity : SIZ</li><li>C++ : protected: <a href="class144133.html#refclass144133"><b>BuffHandle</b></a> </li></ul><a name="refrelation153989"></a>
<table><tr><td><div class="element">Relation <b>&lt;unidirectional association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a></li><li>C++ : protected: <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a>* </li></ul></div>

View 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 Invocation</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class Invocation</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass144261"></a>
<p>Declaration :</p><ul><li>C++ : class Invocation </li></ul><div class="sub">
<a name="refrelation155781"></a>
<table><tr><td><div class="element">Relation <b>&lt;unidirectional association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class142597.html#refclass142597"><b>StateAdapter</b></a></li><li>C++ : protected: <a href="class142597.html#refclass142597"><b>StateAdapter</b></a>* </li></ul><a name="refrelation155909"></a>
<table><tr><td><div class="element">Relation <b>&lt;unidirectional association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a></li><li>C++ : protected: <a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a>* </li></ul><a name="refrelation156037"></a>
<table><tr><td><div class="element">Relation <b>&lt;unidirectional association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class144005.html#refclass144005"><b>BuffTable</b></a></li><li>C++ : protected: <a href="class144005.html#refclass144005"><b>BuffTable</b></a>* </li></ul></div>
</body>
</html>

View 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 ProcessData</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class ProcessData</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass144389"></a>
<p>Declaration :</p><ul><li>C++ : class ProcessData : public <a href="class144645.html#refclass144645"><b>FeedCache</b></a>, public <a href="class143493.html#refclass143493"><b>OperationBase</b></a> </li></ul><p>Directly inherited by : <a href="class143749.html#refclass143749"><b>PullInput</b></a> </p>
<div class="sub">
<a name="refrelation158213"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class143749.html#refclass143749"><b>PullInput</b></a></li><li>C++ : protected: <a href="class143749.html#refclass143749"><b>PullInput</b></a>* </li></ul></div>
</body>
</html>

View 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 Strategy</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class Strategy</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass144517"></a>
<p>Declaration :</p><ul><li>C++ : template&lt;class CONF&gt; class Strategy : public <a href="class143877.html#refclass143877"><b>ReadSource</b></a>, public <a href="class143621.html#refclass143621"><b>QueryCache</b></a>, public <a href="class143749.html#refclass143749"><b>PullInput</b></a> </li></ul><div class="sub">
<a name="refrelation156293"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class143365.html#refclass143365"><b>NodeWiring</b></a></li><li>C++ : protected: <a href="class143365.html#refclass143365"><b>NodeWiring</b></a>* </li></ul><a name="refrelation156549"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class143365.html#refclass143365"><b>NodeWiring</b></a></li><li>C++ : protected: <a href="class143365.html#refclass143365"><b>NodeWiring</b></a>* </li></ul><a name="refrelation156805"></a>
<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class143365.html#refclass143365"><b>NodeWiring</b></a></li><li>C++ : protected: <a href="class143365.html#refclass143365"><b>NodeWiring</b></a>* </li></ul></div>
</body>
</html>

View 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 FeedCache</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">Class FeedCache</div>
<p></p>
<!-- ============================================================= -->
<a name="refclass144645"></a>
<p>Declaration :</p><ul><li>C++ : class FeedCache : public <a href="class143493.html#refclass143493"><b>OperationBase</b></a> </li></ul><p>Directly inherited by : <a href="class144389.html#refclass144389"><b>ProcessData</b></a> </p>
<div class="sub">
</div>
</body>
</html>

View file

@ -27,11 +27,11 @@
<tr bgcolor=#f0f0f0><td><a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a></td><td></td><td>Automation data for some parameter (i.e. a time varying function)</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134021.html#refclass134021" target = "projectFrame"><b>Buildable</b></a></td><td>interface</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130565.html#refclass130565" target = "projectFrame"><b>BuilderFacade</b></a></td><td>boundary</td><td>Provides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134149.html#refclass134149" target = "projectFrame"><b>BuilderTool</b></a></td><td>interface</td><td>Used according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class139013.html#refclass139013" target = "projectFrame"><b>BuildInstruct</b></a></td><td></td><td>(Interface) building instructions to be executed by the Builder on the render node network under construction.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>Caching</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143237.html#refclass143237" target = "projectFrame"><b>Caller</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class137221.html#refclass137221" target = "projectFrame"><b>Category</b></a></td><td></td><td>tree like classification of Assets</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a></td><td></td><td>bookkeeping (asset) view of a media clip.</td></tr>
@ -60,6 +60,7 @@
<tr bgcolor=#f0f0f0><td><a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitPlacement</b></a></td><td>interface</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136197.html#refclass136197" target = "projectFrame"><b>External</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135301.html#refclass135301" target = "projectFrame"><b>Factory</b></a></td><td></td><td>a template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144645.html#refclass144645" target = "projectFrame"><b>FeedCache</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128181.html#refclass128181" target = "projectFrame"><b>File</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128693.html#refclass128693" target = "projectFrame"><b>FileHandle</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128309.html#refclass128309" target = "projectFrame"><b>FileHandleCache</b></a></td><td></td><td></td></tr>
@ -74,10 +75,9 @@
<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="class143877.html#refclass143877" target = "projectFrame"><b>InPlace</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="class143493.html#refclass143493" target = "projectFrame"><b>InvocationStateBase</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>
<tr bgcolor=#f0f0f0><td><a href="class129669.html#refclass129669" target = "projectFrame"><b>Label</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class131973.html#refclass131973" target = "projectFrame"><b>Link</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class139909.html#refclass139909" target = "projectFrame"><b>LocatingPin</b></a></td><td></td><td>An element with value semantics, which actually implements the placement of some MObject by positioning it in some way.</td></tr>
@ -94,6 +94,7 @@
<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>
<tr bgcolor=#f0f0f0><td><a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a></td><td></td><td>Descriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a></td><td>interface</td><td>A facility to get the actual value of a plugin/effect parameter</td></tr>
<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>
@ -105,13 +106,16 @@
<tr bgcolor=#f0f0f0><td><a href="class137605.html#refclass137605" target = "projectFrame"><b>Preview</b></a></td><td></td><td>alternative version of the media data, probably with lower resolution</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136837.html#refclass136837" target = "projectFrame"><b>Proc</b></a></td><td></td><td>key abstraction: data processing asset</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class141957.html#refclass141957" target = "projectFrame"><b>ProcDispatcher</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143749.html#refclass143749" target = "projectFrame"><b>Process</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144389.html#refclass144389" target = "projectFrame"><b>ProcessData</b></a></td><td></td><td></td></tr>
<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="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="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>
<tr bgcolor=#f0f0f0><td><a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143877.html#refclass143877" target = "projectFrame"><b>ReadSource</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a></td><td></td><td></td></tr>
<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>
@ -132,6 +136,7 @@
<tr bgcolor=#f0f0f0><td><a href="class142597.html#refclass142597" target = "projectFrame"><b>StateAdapter</b></a></td><td></td><td></td></tr>
<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="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="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>
@ -147,7 +152,6 @@
<tr bgcolor=#f0f0f0><td><a href="class133509.html#refclass133509" target = "projectFrame"><b>VFrame</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class142725.html#refclass142725" target = "projectFrame"><b>WiringDescriptor</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>WiringTable</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130053.html#refclass130053" target = "projectFrame"><b>Wish</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129162.html#refclass129162" target = "projectFrame"><b>WriteBuffer</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129034.html#refclass129034" target = "projectFrame"><b>WriteBufferPool</b></a></td><td></td><td></td></tr>

View file

@ -28,11 +28,11 @@
<a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a><br />
<a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a><br />
<a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a><br />
<a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a><br />
<a href="class134021.html#refclass134021" target = "projectFrame"><b>Buildable</b></a><br />
<a href="class130565.html#refclass130565" target = "projectFrame"><b>BuilderFacade</b></a><br />
<a href="class134149.html#refclass134149" target = "projectFrame"><b>BuilderTool</b></a><br />
<a href="class139013.html#refclass139013" target = "projectFrame"><b>BuildInstruct</b></a><br />
<a href="class143621.html#refclass143621" target = "projectFrame"><b>Caching</b></a><br />
<a href="class143237.html#refclass143237" target = "projectFrame"><b>Caller</b></a><br />
<a href="class137221.html#refclass137221" target = "projectFrame"><b>Category</b></a><br />
<a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a><br />
@ -61,6 +61,7 @@
<a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitPlacement</b></a><br />
<a href="class136197.html#refclass136197" target = "projectFrame"><b>External</b></a><br />
<a href="class135301.html#refclass135301" target = "projectFrame"><b>Factory</b></a><br />
<a href="class144645.html#refclass144645" target = "projectFrame"><b>FeedCache</b></a><br />
<a href="class128181.html#refclass128181" target = "projectFrame"><b>File</b></a><br />
<a href="class128693.html#refclass128693" target = "projectFrame"><b>FileHandle</b></a><br />
<a href="class128309.html#refclass128309" target = "projectFrame"><b>FileHandleCache</b></a><br />
@ -75,10 +76,9 @@
<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="class143877.html#refclass143877" target = "projectFrame"><b>InPlace</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="class143493.html#refclass143493" target = "projectFrame"><b>InvocationStateBase</b></a><br />
<a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a><br />
<a href="class129669.html#refclass129669" target = "projectFrame"><b>Label</b></a><br />
<a href="class131973.html#refclass131973" target = "projectFrame"><b>Link</b></a><br />
<a href="class139909.html#refclass139909" target = "projectFrame"><b>LocatingPin</b></a><br />
@ -95,6 +95,7 @@
<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 />
<a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a><br />
<a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a><br />
<a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a><br />
<a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a><br />
@ -106,13 +107,16 @@
<a href="class137605.html#refclass137605" target = "projectFrame"><b>Preview</b></a><br />
<a href="class136837.html#refclass136837" target = "projectFrame"><b>Proc</b></a><br />
<a href="class141957.html#refclass141957" target = "projectFrame"><b>ProcDispatcher</b></a><br />
<a href="class143749.html#refclass143749" target = "projectFrame"><b>Process</b></a><br />
<a href="class144389.html#refclass144389" target = "projectFrame"><b>ProcessData</b></a><br />
<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="class132229.html#refclass132229" target = "projectFrame"><b>Projector</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 />
<a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a><br />
<a href="class143877.html#refclass143877" target = "projectFrame"><b>ReadSource</b></a><br />
<a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a><br />
<a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a><br />
<a href="class131333.html#refclass131333" target = "projectFrame"><b>RenderEngine</b></a><br />
@ -133,6 +137,7 @@
<a href="class142597.html#refclass142597" target = "projectFrame"><b>StateAdapter</b></a><br />
<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="class136965.html#refclass136965" target = "projectFrame"><b>Struct</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 />
@ -148,7 +153,6 @@
<a href="class133509.html#refclass133509" target = "projectFrame"><b>VFrame</b></a><br />
<a href="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a><br />
<a href="class142725.html#refclass142725" target = "projectFrame"><b>WiringDescriptor</b></a><br />
<a href="class144005.html#refclass144005" target = "projectFrame"><b>WiringTable</b></a><br />
<a href="class130053.html#refclass130053" target = "projectFrame"><b>Wish</b></a><br />
<a href="class129162.html#refclass129162" target = "projectFrame"><b>WriteBuffer</b></a><br />
<a href="class129034.html#refclass129034" target = "projectFrame"><b>WriteBufferPool</b></a><br />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -116,7 +116,7 @@ Documentation</title>
<a name="refartifact128005"></a>
<table><tr><td><div class="element">Artifact <b>Lumiera</b></div></td></tr></table>
<p>Depends on <a href="index.html#refpackage129413"><b>common</b></a></p><p>Depends on <a href="index.html#refpackage129797"><b>gui</b></a></p><p>Depends on <a href="index.html#refpackage129669"><b>proc</b></a></p><p>Depends on <a href="index.html#refpackage129541"><b>backend</b></a></p><p>the main executable to be built<br /></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a></p>
<a name="refartifact128133"></a>
<table><tr><td><div class="element">Artifact <b>main</b></div></td></tr></table>
<p>Artifact <i>source</i></p>
@ -902,12 +902,16 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
<table><tr><td><div class="element">Class <b><a href="class142597.html#refclass142597"><b>StateAdapter</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143365.html#refclass143365"><b>NodeWiring</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143493.html#refclass143493"><b>InvocationStateBase</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143621.html#refclass143621"><b>Caching</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143749.html#refclass143749"><b>Process</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143877.html#refclass143877"><b>InPlace</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144005.html#refclass144005"><b>WiringTable</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143493.html#refclass143493"><b>OperationBase</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143621.html#refclass143621"><b>QueryCache</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143749.html#refclass143749"><b>PullInput</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class143877.html#refclass143877"><b>ReadSource</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144389.html#refclass144389"><b>ProcessData</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144645.html#refclass144645"><b>FeedCache</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144517.html#refclass144517"><b>Strategy</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144005.html#refclass144005"><b>BuffTable</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144133.html#refclass144133"><b>BuffHandle</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class144261.html#refclass144261"><b>Invocation</b></a></b></div></td></tr></table>
</div>
</div>
<a name="refuse case view128005"></a>

View file

@ -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#reftransition129541" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129797" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129669" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130309" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131205" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
@ -28,10 +28,10 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131461" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130693" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129029" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131077" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130053" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128901" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130565" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>

View file

@ -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 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 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 instance131205" target = "projectFrame"><b>audio</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#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#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>

View file

@ -24,6 +24,7 @@
<tr bgcolor=#f0f0f0><td><a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129157" target = "projectFrame"><b>BackendLayer</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128901" target = "projectFrame"><b>build</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity diagram129413" target = "projectFrame"><b>build flow</b></a></td><td>activity diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refdecision activity node128389" target = "projectFrame"><b>build necessary?</b></a></td><td>decision activity node</td><td></td></tr>
@ -36,8 +37,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131077" target = "projectFrame"><b>buildable</b></a></td><td>artifact</td><td>marker interface denoting any MObject able to be treated by Tools</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128517" target = "projectFrame"><b>buildEngine</b></a></td><td>operation</td><td>Main Operation of the Builder: create a render engine for a given part of the timeline</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128005" target = "projectFrame"><b>Builder</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</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>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</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#refclass diagram129285" target = "projectFrame"><b>Builder Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128261" target = "projectFrame"><b>Builder Workings</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130565.html#refclass130565" target = "projectFrame"><b>BuilderFacade</b></a></td><td>class</td><td>Provides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade</td></tr>

View file

@ -19,7 +19,8 @@
<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#refcomponent129157" target = "projectFrame"><b>Cache</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent view128138" target = "projectFrame"><b>Cache</b></a></td><td>component view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>Caching</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136581" target = "projectFrame"><b>callDown</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136453" target = "projectFrame"><b>callDown</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143237.html#refclass143237" target = "projectFrame"><b>Caller</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation140421" target = "projectFrame"><b>category</b></a></td><td>relation</td><td>primary tree like classification of the asset</td></tr>
<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>
@ -29,34 +30,34 @@
<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#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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 instance130181" 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>

View file

@ -18,14 +18,14 @@
<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#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="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a></td><td>class</td><td></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>
<tr bgcolor=#f0f0f0><td><a href="class137733.html#refclass137733" target = "projectFrame"><b>Effect</b></a></td><td>class</td><td>Effect or media processing component</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="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#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>

View file

@ -18,6 +18,7 @@
<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="class135301.html#refclass135301" target = "projectFrame"><b>Factory</b></a></td><td>class</td><td>a template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144645.html#refclass144645" target = "projectFrame"><b>FeedCache</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation135813" target = "projectFrame"><b>fetch</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128181.html#refclass128181" target = "projectFrame"><b>File</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128138" target = "projectFrame"><b>file</b></a></td><td>relation</td><td></td></tr>

View file

@ -23,8 +23,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td>class diagram</td><td>Lumiera Exception hierarchy</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133381" target = "projectFrame"><b>howtoProc</b></a></td><td>operation</td><td>@return descriptor how to build a render pipeline corresponding to this media</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132741" target = "projectFrame"><b>hub</b></a></td><td>artifact</td><td>special ProcNode used to build data distributing connections</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133893" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133253" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133893" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
</table>
</body>
</html>

View file

@ -20,10 +20,9 @@
<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="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="class143877.html#refclass143877" target = "projectFrame"><b>InPlace</b></a></td><td>class</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#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#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>
@ -32,7 +31,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134661" target = "projectFrame"><b>interpolator</b></a></td><td>artifact</td><td>denotes a facility to get (continuously interpolated) parameter values</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134789.html#refclass134789" target = "projectFrame"><b>Interpolator</b></a></td><td>class</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>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143493.html#refclass143493" target = "projectFrame"><b>InvocationStateBase</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation138373" target = "projectFrame"><b>ipo</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132869" target = "projectFrame"><b>isActive</b></a></td><td>operation</td><td>weather this asset is swithced on and consequently included in the fixture and participates in rendering</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136325" target = "projectFrame"><b>isCalculated</b></a></td><td>operation</td><td></td></tr>

View file

@ -33,8 +33,8 @@
<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="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#refartifact129669" target = "projectFrame"><b>meta</b></a></td><td>artifact</td><td>abstract base class of all MObjects representing meta data or processing instructions</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>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129669" target = "projectFrame"><b>meta</b></a></td><td>artifact</td><td>abstract base class of all MObjects representing meta data or processing instructions</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128261" target = "projectFrame"><b>mobject</b></a></td><td>artifact</td><td>Key Abstraction: A Media Object in the Session</td></tr>
<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>

View file

@ -18,6 +18,7 @@
<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#refattribute129029" target = "projectFrame"><b>offset</b></a></td><td>attribute</td><td>Offset the actual position by this (time) value relative to the anchor point. TODO: Representation?</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130821" target = "projectFrame"><b>org</b></a></td><td>attribute</td><td>origin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core Lumiera codebase is "lumi".</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131333" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134405" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>

View file

@ -53,8 +53,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131077" target = "projectFrame"><b>Proc-Asset Relations</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent diagram130053" target = "projectFrame"><b>proc-components</b></a></td><td>component diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class141957.html#refclass141957" target = "projectFrame"><b>ProcDispatcher</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143749.html#refclass143749" target = "projectFrame"><b>Process</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136069" target = "projectFrame"><b>process</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144389.html#refclass144389" target = "projectFrame"><b>ProcessData</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129285" target = "projectFrame"><b>ProcessingLayer</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class131461.html#refclass131461" target = "projectFrame"><b>Processor</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132101" target = "projectFrame"><b>processor</b></a></td><td>artifact</td><td>a single render pipeline for one segment of the timeline</td></tr>
@ -67,6 +67,7 @@
<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="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>
</table>
</body>
</html>

View file

@ -20,6 +20,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129157" target = "projectFrame"><b>query</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent view128261" target = "projectFrame"><b>Query System overview</b></a></td><td>component view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case view128389" target = "projectFrame"><b>query use</b></a></td><td>use case view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a></td><td>class</td><td></td></tr>
</table>

View file

@ -17,14 +17,15 @@
<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="class143877.html#refclass143877" target = "projectFrame"><b>ReadSource</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129669" target = "projectFrame"><b>refPoint</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132357" target = "projectFrame"><b>reg</b></a></td><td>operation</td><td>registers an asset object in the internal DB, providing its unique key</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142085" target = "projectFrame"><b>registry</b></a></td><td>relation</td><td>@internal Table or DB holding all registered asset instances.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129925" target = "projectFrame"><b>relativelocation</b></a></td><td>artifact</td><td>Placement implemnetaion providing various ways of attaching a MObject to another one</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136197" target = "projectFrame"><b>releaseBuffer</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128133" target = "projectFrame"><b>relType</b></a></td><td>attribute</td><td>the kind of relation denoted by this Placement</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a></td><td>class</td><td>the possible kinds of RelativePlacements</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128133" target = "projectFrame"><b>relType</b></a></td><td>attribute</td><td>the kind of relation denoted by this Placement</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132741" target = "projectFrame"><b>remove</b></a></td><td>operation</td><td>remove the given asset &lt;i&gt;together with all its dependants&lt;/i&gt; from the internal DB</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128389" target = "projectFrame"><b>Render Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131973" target = "projectFrame"><b>Render Mechanics</b></a></td><td>class diagram</td><td></td></tr>

View file

@ -32,8 +32,8 @@
<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#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="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="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>
@ -47,8 +47,8 @@
<tr bgcolor=#f0f0f0><td><a href="class138885.html#refclass138885" target = "projectFrame"><b>SimpleClip</b></a></td><td>class</td><td>Elementary clip consisting of only one media stream</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128906.html#refclass128906" target = "projectFrame"><b>SmartPointer</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128266" target = "projectFrame"><b>SmartPointers</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation141957" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>media source of this clip</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142469" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>the media source this clip referes to</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation141957" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>media source of this clip</td></tr>
<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>
@ -64,6 +64,7 @@
<tr bgcolor=#f0f0f0><td><a href="class142469.html#refclass142469" target = "projectFrame"><b>StateProxy</b></a></td><td>class</td><td></td></tr>
<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="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>

View file

@ -42,13 +42,13 @@
<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#refoperation130437" 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#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#refoperation130181" 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="index.html#refoperation129925" 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&lt;Pipe&gt;</b></a></td><td>class</td><td></td></tr>
</table>

View file

@ -22,18 +22,18 @@
<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 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 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 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 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 instance132741" 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 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 instance128517" 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 instance128517" 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="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a></td><td>class</td><td></td></tr>

View file

@ -20,9 +20,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131845" target = "projectFrame"><b>what</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131717" target = "projectFrame"><b>what</b></a></td><td>operation</td><td>the base class of all exceptions thrown by the standard library</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case diagram131717" target = "projectFrame"><b>when to query</b></a></td><td>use case diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation154117" target = "projectFrame"><b>wiring</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class142725.html#refclass142725" target = "projectFrame"><b>WiringDescriptor</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>WiringTable</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation148229" target = "projectFrame"><b>wiringTemplate</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139269" target = "projectFrame"><b>wish</b></a></td><td>artifact</td><td>LocatingPin representing a low-priority directive by the user,<br />to be fulfilled only if possible (and after satisfying the<br />more important LocatingPins)</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130053.html#refclass130053" target = "projectFrame"><b>Wish</b></a></td><td>class</td><td></td></tr>

View file

@ -23,6 +23,8 @@
<tr bgcolor=#f0f0f0><td><a href="class131077.html#refoperation128901"><b>build</b></a></td><td><a href="class131077.html#refclass131077"><b>Assembler</b></a></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130565.html#refoperation128517"><b>buildEngine</b></a></td><td><a href="class130565.html#refclass130565"><b>BuilderFacade</b></a></td><td>Main Operation of the Builder: create a render engine for a given part of the timeline</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130437.html#refoperation128261"><b>buildProcessor</b></a></td><td><a href="class130437.html#refclass130437"><b>PathManager</b></a></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class143365.html#refoperation136581"><b>callDown</b></a></td><td><a href="class143365.html#refclass143365"><b>NodeWiring</b></a></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class142725.html#refoperation136453"><b>callDown</b></a></td><td><a href="class142725.html#refclass142725"><b>WiringDescriptor</b></a></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refoperation134277"><b>chain</b></a></td><td><a href="class128645.html#refclass128645"><b>Placement</b></a></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="class139781.html#refoperation133765"><b>clear</b></a></td><td><a href="class139781.html#refclass139781"><b>SessManager</b></a></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="class130693.html#refoperation128773"><b>configure</b></a></td><td><a href="class130693.html#refclass130693"><b>ToolFactory</b></a></td><td></td></tr>
@ -67,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#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#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#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>

View file

@ -33,21 +33,33 @@ iconcommand = python $(top_srcdir)/admin/render-icon.py
48x48pre = $(prerendereddir)/48x48
lumigui_DEPENDENCIES += \
$(16x16)/arrow.png $(22x22)/arrow.png $(24x24)/arrow.png $(32x32)/arrow.png $(48x48)/arrow.png \
$(16x16)/i-beam.png $(22x22)/i-beam.png $(24x24)/i-beam.png $(32x32)/i-beam.png $(48x48)/i-beam.png \
$(16x16)/assets-panel.png \
$(16x16)/timeline-panel.png \
$(16x16)/viewer-panel.png
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)/arrow.png $(22x22)/arrow.png $(24x24)/arrow.png $(32x32)/arrow.png $(48x48)/arrow.png : $(svgdir)/arrow.svg
$(16x16)/tool-arrow.png $(22x22)/tool-arrow.png $(24x24)/tool-arrow.png $(32x32)/tool-arrow.png $(48x48)/tool-arrow.png : $(svgdir)/tool-arrow.svg
$(iconcommand) $< $(icondir)
$(16x16)/i-beam.png $(22x22)/i-beam.png $(24x24)/i-beam.png $(32x32)/i-beam.png $(48x48)/i-beam.png : $(svgdir)/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
$(iconcommand) $< $(icondir)
$(16x16)/assets-panel.png:
cp $(16x16pre)/assets-panel.png $(16x16)
$(16x16)/timeline-panel.png:
cp $(16x16pre)/timeline-panel.png $(16x16)
$(16x16)/viewer-panel.png:
cp $(16x16pre)/viewer-panel.png $(16x16)
$(16x16)/panel-assets.png:
cp $(16x16pre)/panel-assets.png $(16x16)
$(22x22)/panel-assets.png:
cp $(22x22pre)/panel-assets.png $(22x22)
$(32x32)/panel-assets.png:
cp $(32x32pre)/panel-assets.png $(32x32)
$(16x16)/panel-timeline.png:
cp $(16x16pre)/panel-timeline.png $(16x16)
$(16x16)/panel-viewer.png:
cp $(16x16pre)/panel-viewer.png $(16x16)
$(22x22)/panel-viewer.png:
cp $(22x22pre)/panel-viewer.png $(22x22)
$(32x32)/panel-viewer.png:
cp $(32x32pre)/panel-viewer.png $(32x32)

View file

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 540 B

View file

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 453 B

View file

Before

Width:  |  Height:  |  Size: 631 B

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -15,7 +15,7 @@
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docname="arrow.svg"
sodipodi:docname="tool-arrow.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
@ -522,10 +522,10 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="90.247594"
inkscape:cx="64.614973"
inkscape:cy="46.534319"
inkscape:document-units="px"
inkscape:current-layer="layer4"
inkscape:current-layer="layer3"
showgrid="true"
inkscape:snap-nodes="false"
inkscape:snap-bbox="true"
@ -559,7 +559,7 @@
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="artwork:arrow"
inkscape:label="artwork:tool-arrow"
style="display:inline">
<path
transform="matrix(0.989175,0,0,1.31555,167.22388,56.536408)"

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -15,7 +15,7 @@
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docname="i-beam.svg"
sodipodi:docname="tool-i-beam.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
@ -592,7 +592,7 @@
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="artwork:i-beam"
inkscape:label="artwork:tool-i-beam"
style="display:inline">
<path
transform="matrix(0.989175,0,0,1.31555,164.72395,56.536408)"

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -40,11 +40,11 @@ liblumicommon_a_SOURCES = \
noinst_HEADERS += \
$(liblumicommon_a_srcdir)/cmdline.hpp \
$(liblumicommon_a_srcdir)/factory.hpp \
$(liblumicommon_a_srcdir)/frameid.hpp \
$(liblumicommon_a_srcdir)/singleton.hpp \
$(liblumicommon_a_srcdir)/singletonpolicies.hpp \
$(liblumicommon_a_srcdir)/singletonpreconfigure.hpp \
$(liblumicommon_a_srcdir)/lumitime.hpp \
$(liblumicommon_a_srcdir)/typelist.hpp \
$(liblumicommon_a_srcdir)/visitor.hpp \
$(liblumicommon_a_srcdir)/visitordispatcher.hpp \
$(liblumicommon_a_srcdir)/visitorpolicies.hpp \
@ -56,7 +56,10 @@ noinst_HEADERS += \
$(liblumicommon_a_srcdir)/query/mockconfigrules.hpp \
$(liblumicommon_a_srcdir)/singletonfactory.hpp \
$(liblumicommon_a_srcdir)/singletonsubclass.hpp \
$(liblumicommon_a_srcdir)/typelistutil.hpp \
$(liblumicommon_a_srcdir)/meta/typelist.hpp \
$(liblumicommon_a_srcdir)/meta/configflags.hpp \
$(liblumicommon_a_srcdir)/meta/generator.hpp \
$(liblumicommon_a_srcdir)/meta/typelistutil.hpp \
$(liblumicommon_a_srcdir)/util.hpp \
$(liblumicommon_a_srcdir)/test/mockinjector.hpp \
$(liblumicommon_a_srcdir)/test/suite.hpp \

View file

@ -52,7 +52,7 @@ namespace util
/** create as a tokenized <i>copy</i> of the current commandline.
* Note that argv[0] is allways ignored. */
Cmdline::Cmdline (int argc, char* argv[])
Cmdline::Cmdline (int argc, const char** argv)
: vector<string> (noneg(argc-1))
{
for (int i=1; i<argc; ++i)

View file

@ -48,7 +48,7 @@ namespace util
class Cmdline : public VectS
{
public:
Cmdline (int argc, char* argv[]);
Cmdline (int argc, const char** argv);
explicit Cmdline (const string cmdline);
operator string () const;

View file

@ -48,7 +48,7 @@
#include "common/p.hpp"
#include "common/query.hpp"
#include "common/typelistutil.hpp"
#include "common/meta/generator.hpp"
#include "common/singletonsubclass.hpp"
//TODO: is it sensible to bring in the types explicitly here? (it's not necessary, but may be convenient...)

View file

@ -128,10 +128,12 @@ namespace lumiera
{
const Error* err=dynamic_cast<const Error*> (&cause);
if (err)
if (isnil (err->cause_))
return cause.what(); // cause is root cause
else
return err->cause_; // cause was caused by another exception
{
if (isnil (err->cause_))
return cause.what(); // cause is root cause
else
return err->cause_; // cause was caused by another exception
}
// unknown other exception type
return cause.what ();

View file

@ -1,5 +1,5 @@
/*
FRAME.hpp - Key Abstraction: render process and buffer holding frame data.
FRAMEID.hpp - distinct identification of a single data frame
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -21,26 +21,36 @@
*/
#ifndef PROC_INTERFACE_FRAME_H
#define PROC_INTERFACE_FRAME_H
#ifndef LUMIERA_FRAMEID_H
#define LUMIERA_FRAMEID_H
namespace proc_interface
namespace lumiera
{
/**
* TODO: how to relate to Cehteh's Frame entity in the Backend?
* The latter is the fundamental Frame entity, wheras this Object
* rather represents a buffer set containing frame date.
* Identification tuple for addressing frames unambiguosly.
*
* @todo currently (7/08) this is a dummy implementation to find out
* what interface the Proc layer needs. Probably the backend will
* later on define what is actually needed; this header should then
* be replaced by a combined C/C++ header
*/
class Frame
class FrameID : boost::totally_ordered<FrameID>
{
/////////////////
long dummy;
public:
FrameID(long dum=0) : dummy(dum) {}
operator long () { return dummy; }
bool operator< (const FrameID& of) const { return dummy < of.dummy; }
bool operator== (const FrameID& of) const { return dummy == of.dummy; }
};
} // namespace proc_interface
} // namespace lumiera
#endif

View file

@ -0,0 +1,191 @@
/*
CONFIGFLAGS.hpp - Building classes based on configuration cases
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
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.
*/
/** @file configflags.hpp
** Under some circumstances it is necessary to assemble functionality
** out of elementary building blocks. Especially, this assembly can be
** expressed as template specialisations directed by a configuration type.
** Thus, the purpose of this header is to encode flag-like configuraitons
** as distinct types, which can be used to select such specialisations.
** Each possible configuration can be encoded as a list of flags, which allows
** to generate, filter and process those configurations. The final goal is to
** automatically generate a factory which is able to deliver objects
** configured according to the situation encoded in the flags.
**
** @note currently there is an inherent limitation to configurations defined by
** a maximum of 5 independant flags. While it is easy to increase this limit,
** you should consider that the final goal is to genarate template instantiations,
** which would lead to more and more code bloat with growing number of possible
** combination.
**
** @see proc::engine::config::Strategy usage example
** @see proc::engine::config::ConfigSelector
** @see typelist.hpp
**
*/
#ifndef LUMIERA_META_CONFIGFLAGS_H
#define LUMIERA_META_CONFIGFLAGS_H
#include "common/meta/typelist.hpp"
namespace lumiera {
namespace typelist {
const size_t CONFIG_FLAGS_MAX = 5;
template<char bit> struct Flag { typedef Flag ID; };
template<> struct Flag<0> { typedef NullType ID; };
template< char f1=0
, char f2=0
, char f3=0
, char f4=0
, char f5=0
>
struct Flags
{
typedef typename Types< typename Flag<f1>::ID
, typename Flag<f2>::ID
, typename Flag<f3>::ID
, typename Flag<f4>::ID
, typename Flag<f5>::ID
>::List
Tuple;
typedef Tuple List;
};
template< char f1=0
, char f2=0
, char f3=0
, char f4=0
, char f5=0
>
struct Config ///< distinct type representing a configuration
{
typedef typename Flags<f1,f2,f3,f4,f5>::Tuple Flags;
typedef Flags List;
};
template<char Fl, class CONF>
struct ConfigSetFlag; ///< set (prepend) the Flag to the given config
template< char Fl
, char f1
, char f2
, char f3
, char f4
, char IGN
>
struct ConfigSetFlag<Fl, Config<f1,f2,f3,f4,IGN> >
{
typedef typelist::Config<Fl,f1,f2,f3,f4> Config;
};
/** build a configuration type from a list-of-flags */
template<class FLAGS, class CONF=typelist::Config<> >
struct BuildConfigFromFlags
{
typedef CONF Config;
typedef Config Type;
};
template<char Fl, class FLAGS, class CONF>
struct BuildConfigFromFlags< Node<Flag<Fl>,FLAGS>, CONF>
{
typedef typename ConfigSetFlag< Fl
, typename BuildConfigFromFlags<FLAGS,CONF>::Config
>::Config Config;
typedef Config Type;
};
/** create a configuration type for the given list-of-flags */
template<class FLAGS>
struct DefineConfigByFlags : BuildConfigFromFlags<FLAGS> { };
/**
* Helper for calculating values and for
* invoking runtime code based on a given FlagTuple.
* Can also be used on a Typelist of several Configs.
* The latter case is typically used to invoke an operation
* while ennumerating all Flag-Configurations defined in Code.
* An example would be to build (at runtime) an dispatcher table.
* Explanation: For the Case covering a List of Configs, we provide
* a templated visitaion function, which can accept a functor object
* to be invoked on each Configuration.
*/
template<class FLAGS>
struct FlagInfo;
template<char ff, class FLAGS>
struct FlagInfo<Node<Flag<ff>, FLAGS> >
{
enum{ BITS = MAX(ff, FlagInfo<FLAGS>::BITS)
, CODE = (1<<ff) | FlagInfo<FLAGS>::CODE
};
};
template<>
struct FlagInfo<NullType>
{
enum{ BITS = 0
, CODE = 0
};
template<class FUNC>
static typename FUNC::Ret
accept (FUNC& functor)
{
return functor.done();
}
};
template<class CONF, class TAIL>
struct FlagInfo<Node<CONF, TAIL> >
{
typedef typename CONF::Flags ThisFlags;
enum{ BITS = MAX (char(FlagInfo<ThisFlags>::BITS), char(FlagInfo<TAIL>::BITS))
};
template<class FUNC>
static typename FUNC::Ret
accept (FUNC& functor)
{
functor.template visit<CONF>(FlagInfo<ThisFlags>::CODE);
return FlagInfo<TAIL>::accept (functor);
}
};
} // namespace typelist
} // namespace lumiera
#endif

View file

@ -1,5 +1,5 @@
/*
TYPELISTUTIL.hpp - metaprogramming utilities for lists-of-types
GENERATOR.hpp - metaprogramming utilities for generating classes and interfaces
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -38,7 +38,7 @@ This code is heavily inspired by
*/
/** @file typelistutil.hpp
/** @file generator.hpp
** Helpers for working with lumiera::typelist::Types (i.e. lists-of-types).
** The main purpose is to build interfaces and polymorphic implementations
** (using virtual functions) based on templated Types or Collections of types,
@ -50,10 +50,10 @@ This code is heavily inspired by
*/
#ifndef LUMIERA_TYPELISTUTIL_H
#define LUMIERA_TYPELISTUTIL_H
#ifndef LUMIERA_META_GENERATOR_H
#define LUMIERA_META_GENERATOR_H
#include "common/typelist.hpp"
#include "common/meta/typelist.hpp"
@ -196,42 +196,6 @@ namespace lumiera
};
/**
* Metafunction counting the number of Types in the collection
*/
template<class TYPES>
struct count;
template<>
struct count<NullType>
{
enum{ value = 0 };
};
template<class TY, class TYPES>
struct count<Node<TY,TYPES> >
{
enum{ value = 1 + count<TYPES>::value };
};
/**
* Metafunction " max( sizeof(T) ) for T in TYPES "
*/
template<class TYPES>
struct maxSize;
template<>
struct maxSize<NullType>
{
enum{ value = 0 };
};
template<class TY, class TYPES>
struct maxSize<Node<TY,TYPES> >
{
enum{ thisval = sizeof(TY)
, nextval = maxSize<TYPES>::value
, value = nextval > thisval? nextval:thisval
};
};
} // namespace typelist
} // namespace lumiera

View file

@ -53,8 +53,8 @@ This code is heavily inspired by
*/
#ifndef LUMIERA_TYPELIST_H
#define LUMIERA_TYPELIST_H
#ifndef LUMIERA_META_TYPELIST_H
#define LUMIERA_META_TYPELIST_H
@ -64,11 +64,15 @@ namespace lumiera
namespace typelist
{
class NullType { };
class NullType
{
typedef NullType List;
};
template<class H, class T>
struct Node
{
typedef Node List;
typedef H Head;
typedef T Tail;
};
@ -113,6 +117,8 @@ namespace lumiera
};
typedef Node<NullType,NullType> NodeNull;
} // namespace typelist

View file

@ -0,0 +1,213 @@
/*
TYPELISTUTIL.hpp - Utils for working with lists-of-types
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
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.
*/
#ifndef LUMIERA_META_TYPELISTUTIL_H
#define LUMIERA_META_TYPELISTUTIL_H
#include "common/meta/typelist.hpp"
namespace lumiera {
namespace typelist {
/**
* Metafunction counting the number of Types in the collection
*/
template<class TYPES>
struct count;
template<>
struct count<NullType>
{
enum{ value = 0 };
};
template<class TY, class TYPES>
struct count<Node<TY,TYPES> >
{
enum{ value = 1 + count<TYPES>::value };
};
/**
* Metafunction " max( sizeof(T) ) for T in TYPES "
*/
template<class TYPES>
struct maxSize;
template<>
struct maxSize<NullType>
{
enum{ value = 0 };
};
template<class TY, class TYPES>
struct maxSize<Node<TY,TYPES> >
{
enum{ thisval = sizeof(TY)
, nextval = maxSize<TYPES>::value
, value = nextval > thisval? nextval:thisval
};
};
/** apply a transformation (template) to each type in the list */
template<class TY, template<class> class _TRANS_>
struct Apply { typedef TY List; };
template< class TY, class TYPES
, template<class> class _TRANS_
>
struct Apply<Node<TY,TYPES>, _TRANS_ > { typedef Node< typename _TRANS_<TY>::Type
, typename Apply<TYPES,_TRANS_>::List
> List; };
template<bool, class T, class TAIL>
struct CondNode { typedef TAIL Next; };
template<class T, class TAIL>
struct CondNode<true, T, TAIL> { typedef Node<T,TAIL> Next; };
/** filter away those types which don't fulfill a predicate metafunction */
template< class TYPES
, template<class> class _P_ ///< a template providing a boolean member \c ::value
>
struct Filter;
template<template<class> class _P_>
struct Filter<NullType,_P_> { typedef NullType List; };
template< class TY, class TYPES
, template<class> class _P_
>
struct Filter<Node<TY,TYPES>,_P_> { typedef typename CondNode< _P_<TY>::value
, TY
, typename Filter<TYPES,_P_>::List
>::Next
List; };
/** append lists-of-types */
template<class TY1, class TY2>
struct Append { typedef Node<TY1, typename Append<TY2,NullType>::List> List; };
template< class TY, class TYPES
, class TAIL
>
struct Append<Node<TY,TYPES>, TAIL> { typedef Node<TY, typename Append<TYPES, TAIL>::List> List; };
template<class TY, class TYPES>
struct Append<NullType, Node<TY,TYPES> > { typedef Node<TY,TYPES> List; };
template<class TY, class TYPES>
struct Append<Node<TY,TYPES>, NullType> { typedef Node<TY,TYPES> List; };
template<class TY1>
struct Append<TY1,NullType> { typedef Node<TY1,NullType> List; };
template<class TY2>
struct Append<NullType,TY2> { typedef Node<TY2,NullType> List; };
template<>
struct Append<NullType,NullType> { typedef NullType List; };
/**
* prefix each of the elements,
* yielding a list-of lists-of-types
*/
template<class T, class TY>
struct PrefixAll { typedef Node< typename Append<T,TY>::List, NullType> List; };
template<class T>
struct PrefixAll<T, NullType> { typedef NullType List; };
template<class T>
struct PrefixAll<T, NodeNull> { typedef Node< typename Append<T,NodeNull>::List, NullType> List; };
template< class T
, class TY, class TYPES
>
struct PrefixAll<T, Node<TY,TYPES> > { typedef Node< typename Append<T,TY>::List
, typename PrefixAll<T,TYPES>::List
> List; };
template<class TY1,class TY2>
struct Distribute { typedef typename PrefixAll<TY1,TY2>::List List; };
template<class TY>
struct Distribute<NullType,TY> { typedef NullType List; };
template< class TY, class TYPES
, class TAIL
>
struct Distribute<Node<TY,TYPES>,TAIL> { typedef typename Append< typename PrefixAll<TY,TAIL>::List
, typename Distribute<TYPES,TAIL>::List
>::List
List; };
/** use a permutation generator
* for creating a list of all possible combinations
*/
template< class X
, template<class> class _PERMU_>
struct Combine { typedef typename Distribute< typename _PERMU_<X>::List
, Node<NullType,NullType>
>::List List; };
template< template<class> class _PERMU_>
struct Combine<NullType, _PERMU_ > { typedef Node<NullType,NullType> List; };
template< class TY, class TYPES
, template<class> class _PERMU_>
struct Combine<Node<TY,TYPES>,_PERMU_> { typedef typename Distribute< typename _PERMU_<TY>::List
, typename Combine<TYPES,_PERMU_>::List
>::List List; };
/** permutation generator for the Combine metafunction,
* yielding an "on" and "off" case
*/
template<class F>
struct FlagOnOff
{
typedef Node<F, Node<NullType,NullType> > List;
};
/** generate all possible on-off combinations of the given flags */
template<class FLAGS>
struct CombineFlags
{
typedef typename Combine<FLAGS, FlagOnOff>::List List;
};
} // namespace typelist
} // namespace lumiera
#endif

76
src/common/meta/util.hpp Normal file
View file

@ -0,0 +1,76 @@
/*
UTIL.hpp - metaprogramming helpers and utilities
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
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.
*/
#ifndef LUMIERA_META_UTIL_H
#define LUMIERA_META_UTIL_H
namespace lumiera {
/* types for figuring out the overload resolution chosen by the compiler */
typedef char Yes_t;
struct No_t { char padding[8]; };
namespace typelist {
/** semi-automatic detection if an instantiation is possible.
* Requires help by the template to be tested, which needs to define
* a typedef member \c is_defined. The embedded metafunction Test can be used
* as a predicate for filtering types which may yield a valid instantiation
* of the candidate template in question.
* \par
* A fully automated solution for this problem is impossible by theoretic reasons.
* Any non trivial use of such a \c is_defined trait would break the "One Definition Rule",
* as the state of any type can change from "partially defined" to "fully defined" over
* the course of any translation unit. Thus, even if there may be a \em solution out there,
* we can expect it to break at some point by improvements/fixes to the C++ Language.
*/
template<template<class> class _CandidateTemplate_>
struct Instantiation
{
template<class X>
class Test
{
typedef _CandidateTemplate_<X> Instance;
template<class U>
static Yes_t check(typename U::is_defined *);
template<class U>
static No_t check(...);
public:
static const bool value = (sizeof(Yes_t)==sizeof(check<Instance>(0)));
};
};
} // namespace typelist
} // namespace lumiera
#endif

View file

@ -237,4 +237,8 @@ namespace util
* and we probably will enforce this design rule in future. */
#define INSTANCEOF(CLASS, EXPR) (dynamic_cast<const CLASS*> (EXPR))
/** the inevitalbe MAX macro, sometimes still necessary in template code */
#define MAX(A,B) (A < B) ? (B) : (A)
#endif /*UTIL_HPP_*/

View file

@ -41,7 +41,8 @@
#define LUMIERA_VARIANT_H
#include "common/typelistutil.hpp"
#include "common/meta/typelistutil.hpp"
#include "common/meta/generator.hpp"
#include <boost/noncopyable.hpp>

View file

@ -79,7 +79,7 @@ Credits for many further implementation ideas go to
#include "common/visitorpolicies.hpp"
#include "common/visitordispatcher.hpp"
#include "common/typelist.hpp"
#include "common/meta/typelist.hpp"
namespace lumiera

View file

@ -29,7 +29,7 @@
#include "common/variant.hpp"
#include "common/accesscasted.hpp"
#include "common/typelist.hpp"
#include "common/meta/typelist.hpp"
#include "proc/mobject/placement.hpp"
#include "common/p.hpp"

View file

@ -35,6 +35,7 @@
NOBUG_CPP_DEFINE_FLAG(gui);
using namespace Gtk;
using namespace Glib;
using namespace lumiera::gui;
using namespace lumiera::gui::workspace;
using namespace lumiera::gui::model;
@ -43,39 +44,47 @@ GtkLumiera the_application;
int
main (int argc, char *argv[])
{
return the_application.main(argc, argv);
}
{
return the_application.main(argc, argv);
}
namespace lumiera {
namespace gui {
int
GtkLumiera::main(int argc, char *argv[])
{
NOBUG_INIT;
int
GtkLumiera::main(int argc, char *argv[])
{
NOBUG_INIT;
Main kit(argc, argv);
Main kit(argc, argv);
Glib::set_application_name(AppTitle);
Glib::set_application_name(AppTitle);
Project project;
WindowManager window_manager;
Project project;
WindowManager window_manager;
window_manager.set_theme("lumiera_ui.rc");
window_manager.set_theme("lumiera_ui.rc");
WorkspaceWindow main_window(&project);
kit.run(main_window);
}
WorkspaceWindow main_window(&project);
GtkLumiera&
application()
{
return the_application;
}
kit.run(main_window);
}
Glib::ustring
GtkLumiera::get_home_data_path()
{
const ustring app_name("lumiera");
const ustring path(Glib::get_home_dir());
return ustring::compose("%1/.%2", path, app_name);
}
GtkLumiera&
application()
{
return the_application;
}
} // namespace gui
} // namespace lumiera

View file

@ -51,51 +51,93 @@ NOBUG_DECLARE_FLAG(gui);
#endif
namespace lumiera {
/**
* The namespace of all GUI code.
*/
namespace gui {
/* ===== Global Constants ===== */
/**
* The name of the application
*/
static const gchar* AppTitle = "Lumiera";
/**
* The name of the application
*/
static const gchar* AppTitle = "Lumiera";
/**
* The version number of the application
*/
static const gchar* AppVersion = N_("0.1-dev");
/**
* The version number of the application
*/
static const gchar* AppVersion = N_("0.1-dev");
/**
* The copyright of the application
*/
static const gchar* AppCopyright = N_("© 2008 The Lumiera Team");
/**
* The copyright of the application
*/
static const gchar* AppCopyright = N_("© 2008 The Lumiera Team");
/**
* The website of the application
*/
static const gchar* AppWebsite = "www.lumiera.org";
/**
* The website of the application
*/
static const gchar* AppWebsite = "www.lumiera.org";
/**
* An alphabetical list of the application's authors
*/
static const gchar* AppAuthors[] = {
"Joel Holdsworth",
"Christian Thaeter",
"Hermann Vosseler",
"<Other Authors Here>"};
/**
* An alphabetical list of the application's authors
*/
static const gchar* AppAuthors[] = {
"Joel Holdsworth",
"Christian Thaeter",
"Hermann Vosseler",
"<Other Authors Here>"};
/* ===== The Application Class ===== */
/**
* The main application class.
*/
class GtkLumiera
{
public:
int main(int argc, char *argv[]);
/**
* The main application class.
*/
class GtkLumiera
{
public:
int main(int argc, char *argv[]);
static Glib::ustring get_home_data_path();
};
};
/**
* Returns a reference to the global application object
*/
GtkLumiera& application();
/**
* Returns a reference to the global application object
*/
GtkLumiera& application();
/* ===== Namespace Definitions ===== */
/**
* The namespace of all dialog box classes.
*/
namespace dialogs {}
/**
* The namespace of data model classes.
*/
namespace model {}
/**
* The namespace of all video output implementations.
*/
namespace output {}
/**
* The namespace of all docking panel classes.
*/
namespace panels {}
/**
* The namespace of all Lumiera custom widgets.
*/
namespace widgets {}
/**
* The namespace of the workspace window, and it's helper classes.
*/
namespace workspace {}
} // namespace gui
} // namespace lumiera

View file

@ -124,6 +124,8 @@ class "GtkProgressBar" style:highest "lumiera_progressbars"
style "timeline_body"
{
gtkmm__CustomObject_TimelineBody::background = "#7E838B"
gtkmm__CustomObject_TimelineBody::selection = "#2D2D90"
gtkmm__CustomObject_TimelineBody::selection_alpha = 0.5
}
style "timeline_ruler" = "default_base"
@ -137,16 +139,16 @@ style "timeline_ruler" = "default_base"
gtkmm__CustomObject_TimelineRuler::annotation_vert_margin = 0
gtkmm__CustomObject_TimelineRuler::min_division_width = 100
gtkmm__CustomObject_TimelineRuler::mouse_chevron_size = 5
gtkmm__CustomObject_TimelineRuler::selection_chevron_size = 5
gtkmm__CustomObject_TimelineRuler::playback_arrow_colour = "#2D2D90"
gtkmm__CustomObject_TimelineRuler::playback_arrow_alpha = 0.5
gtkmm__CustomObject_TimelineRuler::playback_arrow_size = 10
gtkmm__CustomObject_TimelineRuler::playback_arrow_stem_size = 3
}
style "timeline_header_base" = "default_base"
{
# fg[NORMAL] = { 0.77, 0.77, 0.72 }
# bg[NORMAL] = { 0.18, 0.19, 0.22 }
# bg[ACTIVE] = { 0.20, 0.20, 0.20 }
# bg[PRELIGHT] = { 0.20, 0.20, 0.20 }
# bg[INSENSITIVE] = { 0.20, 0.20, 0.20 }
# bg[SELECTED] = { 0.20, 0.20, 0.20 }
}
class "gtkmm__CustomObject_TimelineBody" style:highest "timeline_body"

View file

@ -49,69 +49,74 @@ namespace output {
}
DisplayerInput;
/** A Displayer is a class which is responsible for rendering an image in some
way (ie: Xvideo, GDK, OpenGL etc).
All Displayer classes must extend the Displayer class and minimally rewrite:
+ usable() - to indicate if the object can be used,
+ format() - to indicate what type of input the put method expects
+ put( void * ) - deal with an image of the expected type and size
By default, all images will be delivered to the put method in a resolution
of IMG_WIDTH * IMG_HEIGHT. If another size is required, then the rewrite
the methods:
+ preferredWidth
+ preferredHeight
If the widget being written to doesn't need a fixed size, then rewrite
the two other put methods as required.
/**
* A Displayer is a class which is responsible for rendering an image
* in some way (ie: Xvideo, GDK, OpenGL etc).
*
* @remarks All Displayer classes must extend the Displayer class and
* minimally rewrite:
*
* + usable() - to indicate if the object can be used,
* + format() - to indicate what type of input the put method expects
* + put( void * ) - deal with an image of the expected type and size
*
* By default, all images will be delivered to the put method in a
* resolution of IMG_WIDTH * IMG_HEIGHT. If another size is required,
* then the rewrite the methods:
*
* + preferredWidth
* + preferredHeight
*
* If the widget being written to doesn't need a fixed size, then
* rewrite the two other put methods as required.
*/
class Displayer
{
public:
/** Indicates if an object can be used to render images on the running
system.
/**
* Indicates if an object can be used to render images on the
* running system.
*/
virtual bool usable();
/** Indicates the format required by the abstract put method.
/**
* Indicates the format required by the abstract put method.
*/
virtual DisplayerInput format();
/** Expected width of input to put.
/**
* Expected width of input to put.
*/
virtual int preferredWidth();
/** Expected height of input to put.
/**
* Expected height of input to put.
*/
virtual int preferredHeight();
/**
* Put an image of a given width and height with the expected input
* format (as indicated by the format method).
*
* @param image image of correct format and specified width/height
* Put an image of a given width and height with the expected input
* format (as indicated by the format method).
*/
virtual void put( void * ) = 0;
protected:
/**
* Calculates the coordinates for placing a video image inside a widget
* Calculates the coordinates for placing a video image inside a
* widget
*
* @param[in] widget_width The width of the display widget
* @param[in] widget_height The height of the display widget
* @param[in] image_width The width of the video image
* @param[in] image_height The height of the video image
* @param[out] video_x The x-coordinate of the top left corner of
* the scaled video image
* @param[out] video_y The y-coordinate of the top left corner of
* the scaled video image
* @param[out] video_width The width of the scale video image
* @param[out] video_height The height of the scale video image
* @param[in] widget_width The width of the display widget.
* @param[in] widget_height The height of the display widget.
* @param[in] image_width The width of the video image.
* @param[in] image_height The height of the video image.
* @param[out] video_x The x-coordinate of the top left
* corner of the scaled video image.
* @param[out] video_y The y-coordinate of the top left
* corner of the scaled video image.
* @param[out] video_width The width of the scale video image.
* @param[out] video_height The height of the scale video image.
*/
static void calculateVideoLayout(
int widget_width, int widget_height,

View file

@ -28,7 +28,7 @@ namespace gui {
namespace panels {
AssetsPanel::AssetsPanel() :
Panel("assets", _("Assets"), "assets_panel"),
Panel("assets", _("Assets"), "panel_assets"),
placeholder("Placeholder label. Is this supposed to be titled assets\nas in the proc layer? or resources\nas in cinelerra?")
{
pack_start(placeholder);

View file

@ -27,68 +27,68 @@
#ifndef PANEL_HPP
#define PANEL_HPP
#include <gtkmm.h>
#include "../gtk-lumiera.hpp"
#include <libgdl-1.0/gdl/gdl-dock-item.h>
namespace lumiera {
namespace gui {
namespace panels {
/**
* The main lumiera workspace window
/**
* The main lumiera panel window
*/
class Panel : public Gtk::VBox
{
protected:
/**
* Constructs a panel object
* @param name The internal name of this panel
* @param long_name The name to display on the caption
* @param behavior The GDL behaviour of this item
*/
class Panel : public Gtk::VBox
{
protected:
/**
* Constructs a panel object
* @param name The internal name of this panel
* @param long_name The name to display on the caption
* @param behavior The GDL behaviour of this item
*/
Panel(const gchar *name, const gchar *long_name,
GdlDockItemBehavior behavior = GDL_DOCK_ITEM_BEH_NORMAL);
Panel(const gchar *name, const gchar *long_name,
GdlDockItemBehavior behavior = GDL_DOCK_ITEM_BEH_NORMAL);
/**
* Constructs a panel object with a stock item for a caption
* @param name The internal name of this panel
* @param long_name The name to display on the caption
* @param stock_id The id of the stock item to display on the caption
* @param behavior The GDL behaviour of this item
*/
Panel(const gchar *name, const gchar *long_name, const gchar *stock_id,
GdlDockItemBehavior behavior = GDL_DOCK_ITEM_BEH_NORMAL);
/**
* Constructs a panel object with a stock item for a caption
* @param name The internal name of this panel
* @param long_name The name to display on the caption
* @param stock_id The id of the stock item to display on the caption
* @param behavior The GDL behaviour of this item
*/
Panel(const gchar *name, const gchar *long_name, const gchar *stock_id,
GdlDockItemBehavior behavior = GDL_DOCK_ITEM_BEH_NORMAL);
~Panel();
~Panel();
public:
/**
* Returns a pointer to the underlying GdlDockItem structure
*/
GdlDockItem* get_dock_item() const;
public:
/**
* Returns a pointer to the underlying GdlDockItem structure
*/
GdlDockItem* get_dock_item() const;
/**
* Shows or hides the panel.
* @param show A value of true will show the panel,
* false will hide it. */
void show(bool show = true);
/**
* Returns true if the panel is currently visible.
*/
bool is_shown() const;
/**
* Shows or hides the panel.
* @param show A value of true will show the panel,
* false will hide it. */
void show(bool show = true);
/**
* Returns true if the panel is currently visible.
*/
bool is_shown() const;
private:
/**
* @internal Used by both constructors
* The internal constructor for this class, whose purpose
* is to set up the internal container widgets.
*/
void internal_setup();
private:
/**
* @internal Used by both constructors
* The internal constructor for this class, whose purpose
* is to set up the internal container widgets.
*/
void internal_setup();
protected:
GdlDockItem* dock_item;
};
protected:
GdlDockItem* dock_item;
};
} // namespace panels
} // namespace gui

View file

@ -23,6 +23,10 @@
#include "../gtk-lumiera.hpp"
#include "timeline-panel.hpp"
extern "C" {
#include "../../lib/time.h"
}
using namespace Gtk;
using namespace sigc;
using namespace lumiera::gui::widgets;
@ -34,31 +38,44 @@ namespace panels {
const int TimelinePanel::ZoomToolSteps = 2; // 2 seems comfortable
TimelinePanel::TimelinePanel() :
Panel("timeline", _("Timeline"), "timeline_panel"),
arrowTool(Gtk::StockID("arrow")),
iBeamTool(Gtk::StockID("i_beam")),
Panel("timeline", _("Timeline"), "panel_timeline"),
arrowTool(Gtk::StockID("tool_arrow")),
iBeamTool(Gtk::StockID("tool_i_beam")),
zoomIn(Stock::ZOOM_IN),
zoomOut(Stock::ZOOM_OUT),
timeIndicator(),
updatingToolbar(false)
{
// Setup the widget
timelineWidget.mouse_hover_signal().connect(
mem_fun(this, &TimelinePanel::on_mouse_hover));
// Setup the toolbar
timeIndicatorButton.set_label_widget(timeIndicator);
toolbar.append(timeIndicatorButton);
toolbar.append(seperator1);
toolbar.append(arrowTool, mem_fun(this,
&TimelinePanel::on_arrow_tool));
toolbar.append(iBeamTool, mem_fun(this,
&TimelinePanel::on_ibeam_tool));
toolbar.append(seperator1);
toolbar.append(seperator2);
toolbar.append(zoomIn, mem_fun(this, &TimelinePanel::on_zoom_in));
toolbar.append(zoomOut, mem_fun(this, &TimelinePanel::on_zoom_out));
toolbar.set_icon_size(IconSize(ICON_SIZE_LARGE_TOOLBAR));
// doesn't compile on Etch
// toolbar.set_icon_size(IconSize(ICON_SIZE_LARGE_TOOLBAR));
toolbar.set_toolbar_style(TOOLBAR_ICONS);
// Add the toolbar
pack_start(toolbar, PACK_SHRINK);
pack_start(timelineWidget, PACK_EXPAND_WIDGET);
// Set the initial UI state
update_tool_buttons();
update_zoom_buttons();
show_time(0);
}
void
@ -92,6 +109,12 @@ TimelinePanel::on_zoom_out()
update_zoom_buttons();
}
void
TimelinePanel::on_mouse_hover(gavl_time_t time)
{
show_time(time);
}
void
TimelinePanel::update_tool_buttons()
{
@ -113,6 +136,12 @@ TimelinePanel::update_zoom_buttons()
TimelineWidget::MaxScale);
}
void
TimelinePanel::show_time(gavl_time_t time)
{
timeIndicator.set_text(lumiera_tmpbuf_print_time(time));
}
} // namespace panels
} // namespace gui
} // namespace lumiera

View file

@ -35,9 +35,16 @@ namespace lumiera {
namespace gui {
namespace panels {
/**
* The definition of the timeline panel class, which holds timeline
* widgets.
*/
class TimelinePanel : public Panel
{
public:
/**
* Constructor
*/
TimelinePanel();
private:
@ -48,9 +55,15 @@ private:
void on_zoom_in();
void on_zoom_out();
void on_time_pressed();
void on_mouse_hover(gavl_time_t time);
private:
void update_tool_buttons();
void update_zoom_buttons();
void show_time(gavl_time_t time);
private:
@ -58,6 +71,7 @@ private:
// Widgets
Gtk::Toolbar toolbar;
Gtk::HBox toolStrip;
TimelineWidget timelineWidget;
// Toolbar Widgets
@ -69,6 +83,11 @@ private:
Gtk::ToolButton zoomIn;
Gtk::ToolButton zoomOut;
Gtk::SeparatorToolItem seperator2;
Gtk::Label timeIndicator;
Gtk::ToolButton timeIndicatorButton;
// Internals
bool updatingToolbar;

View file

@ -31,7 +31,7 @@ namespace gui {
namespace panels {
ViewerPanel::ViewerPanel() :
Panel("viewer", _("Viewer"), "viewer_panel"),
Panel("viewer", _("Viewer"), "panel_viewer"),
previousButton(Stock::MEDIA_PREVIOUS),
rewindButton(Stock::MEDIA_REWIND),
playPauseButton(Stock::MEDIA_PLAY),

View file

@ -46,6 +46,8 @@ TimelineWidget::TimelineWidget() :
verticalAdjustment(0, 0, 0),
selectionStart(0),
selectionEnd(0),
playbackPeriodStart(0),
playbackPeriodEnd(0),
horizontalScroll(horizontalAdjustment),
verticalScroll(verticalAdjustment)
{
@ -108,7 +110,8 @@ TimelineWidget::set_time_offset(gavl_time_t time_offset)
timeOffset = time_offset;
horizontalAdjustment.set_value(time_offset);
ruler->update_view();
viewChangedSignal.emit();
}
int64_t
@ -127,7 +130,7 @@ TimelineWidget::set_time_scale(int64_t time_scale)
const int view_width = body->get_allocation().get_width();
horizontalAdjustment.set_page_size(timeScale * view_width);
ruler->update_view();
viewChangedSignal.emit();
}
void
@ -167,7 +170,7 @@ TimelineWidget::shift_view(int shift_size)
const int view_width = body->get_allocation().get_width();
set_time_offset(get_time_offset() +
shift_size * timeScale * view_width / 16);
shift_size * timeScale * view_width / 256);
}
gavl_time_t
@ -183,8 +186,12 @@ TimelineWidget::get_selection_end() const
}
void
TimelineWidget::set_selection(gavl_time_t start, gavl_time_t end)
TimelineWidget::set_selection(gavl_time_t start, gavl_time_t end,
bool reset_playback_period)
{
REQUIRE(ruler != NULL);
REQUIRE(body != NULL);
if(start < end)
{
selectionStart = start;
@ -196,6 +203,46 @@ TimelineWidget::set_selection(gavl_time_t start, gavl_time_t end)
selectionStart = end;
selectionEnd = start;
}
if(reset_playback_period)
{
playbackPeriodStart = selectionStart;
playbackPeriodEnd = selectionEnd;
}
ruler->queue_draw();
body->queue_draw();
}
gavl_time_t
TimelineWidget::get_playback_period_start() const
{
return playbackPeriodStart;
}
gavl_time_t
TimelineWidget::get_playback_period_end() const
{
return playbackPeriodEnd;
}
void
TimelineWidget::set_playback_period(gavl_time_t start, gavl_time_t end)
{
REQUIRE(ruler != NULL);
REQUIRE(body != NULL);
if(start < end)
{
playbackPeriodStart = start;
playbackPeriodEnd = end;
}
else
{
// The period is back-to-front, flip it round
playbackPeriodStart = end;
playbackPeriodEnd = start;
}
ruler->queue_draw();
body->queue_draw();
@ -215,11 +262,23 @@ TimelineWidget::set_tool(ToolType tool_type)
body->set_tool(tool_type);
}
sigc::signal<void>
TimelineWidget::view_changed_signal() const
{
return viewChangedSignal;
}
sigc::signal<void, gavl_time_t>
TimelineWidget::mouse_hover_signal() const
{
return mouseHoverSignal;
}
void
TimelineWidget::on_scroll()
{
timeOffset = horizontalAdjustment.get_value();
ruler->update_view();
viewChangedSignal.emit();
}
void
@ -309,6 +368,7 @@ TimelineWidget::on_motion_in_body_notify_event(GdkEventMotion *event)
{
REQUIRE(event != NULL);
ruler->set_mouse_chevron_offset(event->x);
mouseHoverSignal.emit(x_to_time(event->x));
return true;
}

View file

@ -38,7 +38,17 @@
namespace lumiera {
namespace gui {
namespace widgets {
/**
* The namespace of all timeline widget helper classes.
*/
namespace timeline {}
/**
* The timeline widget class.
* @remarks This widget is a composite of several widgets contained
* within the timeline namespace.
*/
class TimelineWidget : public Gtk::Table
{
public:
@ -93,20 +103,63 @@ public:
/**
* Scrolls the view horizontally as a proportion of the view area.
* @param shift_size The size of the shift in 1/16ths of the view
* @param shift_size The size of the shift in 1/256ths of the view
* width.
**/
void shift_view(int shift_size);
/**
* Gets the time at which the selection begins.
*/
gavl_time_t get_selection_start() const;
/**
* Gets the time at which the selection begins.
*/
gavl_time_t get_selection_end() const;
void set_selection(gavl_time_t start, gavl_time_t end);
/**
* Sets the period of the selection.
* @param start The start time.
* @param end The end time.
* @param reset_playback_period Specifies whether to set the playback
* period to the same as this new selection.
*/
void set_selection(gavl_time_t start, gavl_time_t end,
bool reset_playback_period = true);
/**
* Gets the time at which the playback period begins.
*/
gavl_time_t get_playback_period_start() const;
/**
* Gets the time at which the playback period ends.
*/
gavl_time_t get_playback_period_end() const;
/**
* Sets the playback period.
* @param start The start time.
* @param end The end time.
*/
void set_playback_period(gavl_time_t start, gavl_time_t end);
/**
* Gets the type of the tool currently active.
*/
timeline::ToolType get_tool() const;
/**
* Sets the type of the tool currently active.
*/
void set_tool(timeline::ToolType tool_type);
public:
/* ===== Signals ===== */
sigc::signal<void> view_changed_signal() const;
sigc::signal<void, gavl_time_t> mouse_hover_signal() const;
/* ===== Events ===== */
protected:
@ -140,6 +193,8 @@ protected:
// Selection State
gavl_time_t selectionStart;
gavl_time_t selectionEnd;
gavl_time_t playbackPeriodStart;
gavl_time_t playbackPeriodEnd;
int totalHeight;
@ -154,9 +209,18 @@ protected:
Gtk::Adjustment horizontalAdjustment, verticalAdjustment;
Gtk::HScrollbar horizontalScroll;
Gtk::VScrollbar verticalScroll;
// Signals
sigc::signal<void> viewChangedSignal;
sigc::signal<void, gavl_time_t> mouseHoverSignal;
/* ===== Constants ===== */
public:
/**
* The maximum scale for timeline display.
* @remarks At MaxScale, every pixel on the timeline is equivalent
* to 30000000 gavl_time_t increments.
*/
static const int64_t MaxScale;
protected:

View file

@ -27,7 +27,7 @@
#ifndef HEADER_CONTAINER_HPP
#define HEADER_CONTAINER_HPP
#include <gtkmm.h>
#include "../../gtk-lumiera.hpp"
#include <vector>
namespace lumiera {
@ -53,7 +53,8 @@ public:
*
* @param[in] timeline_widget A pointer to the owner timeline widget
*/
HeaderContainer(lumiera::gui::widgets::TimelineWidget *timeline_widget);
HeaderContainer(lumiera::gui::widgets::TimelineWidget*
timeline_widget);
/**
* Attaches the header all the header widgets of root
@ -67,17 +68,41 @@ public:
/* ===== Overrides ===== */
private:
/**
* And event handler for the window realized signal.
*/
void on_realize();
/**
* And event handler for the window unrealized signal.
*/
void on_unrealize();
/**
* An event handler that is called to notify this widget to allocate
* a given area for itself.
* @param allocation The area to allocate for this widget.
*/
void on_size_allocate (Gtk::Allocation& allocation);
/**
* An event handler that is called to offer an allocation to this
* widget.
* @param requisition The area offered for this widget.
*/
void on_size_request (Gtk::Requisition* requisition);
/**
* Applies a given function to all the widgets in the container.
**/
void forall_vfunc(gboolean include_internals, GtkCallback callback,
gpointer callback_data);
/* ===== Events ===== */
private:
private:
/**
* This event is called when the scroll bar moves.
*/
void on_scroll();
/* ===== Internals ===== */

View file

@ -34,19 +34,44 @@ namespace gui {
namespace widgets {
namespace timeline {
/**
* A helper class to implement the timeline i-beam tool
*/
class ArrowTool : public Tool
{
public:
/**
* Constructor
* @param timeline_body The owner timeline body object
*/
ArrowTool(TimelineBody *timeline_body);
/**
* Gets the type of tool represented by this class
*/
ToolType get_type() const;
protected:
/**
* Gets the cursor to display for this tool at this moment.
*/
Gdk::Cursor get_cursor() const;
protected:
/**
* The event handler for button press events.
*/
void on_button_press_event(GdkEventButton* event);
/**
* The event handler for button release events.
*/
void on_button_release_event(GdkEventButton* event);
/**
* The event handler for mouse move events.
*/
void on_motion_notify_event(GdkEventMotion *event);
};

View file

@ -49,23 +49,17 @@ TimelineBody::TimelineBody(lumiera::gui::widgets::TimelineWidget
mouseDownX(0),
mouseDownY(0),
beginShiftTimeOffset(0),
selectionAlpha(0.5),
timelineWidget(timeline_widget)
{
REQUIRE(timelineWidget != NULL);
// Connect up some events
timelineWidget->horizontalAdjustment.signal_value_changed().connect(
sigc::mem_fun(this, &TimelineBody::on_scroll) );
timelineWidget->verticalAdjustment.signal_value_changed().connect(
sigc::mem_fun(this, &TimelineBody::on_scroll) );
timelineWidget->view_changed_signal().connect(sigc::mem_fun(
this, &TimelineBody::on_update_view) );
// Install style properties
gtk_widget_class_install_style_property(
GTK_WIDGET_CLASS(G_OBJECT_GET_CLASS(gobj())),
g_param_spec_boxed("background",
"Track Background",
"The background colour of timeline tracks",
GDK_TYPE_COLOR, G_PARAM_READABLE));
register_styles();
}
TimelineBody::~TimelineBody()
@ -113,6 +107,12 @@ TimelineBody::set_tool(timeline::ToolType tool_type)
tool->apply_cursor();
}
void
TimelineBody::on_update_view()
{
queue_draw();
}
void
TimelineBody::on_realize()
{
@ -129,10 +129,97 @@ TimelineBody::on_realize()
tool->apply_cursor();
}
void
TimelineBody::on_scroll()
bool
TimelineBody::on_expose_event(GdkEventExpose* event)
{
queue_draw();
Cairo::Matrix view_matrix;
REQUIRE(event != NULL);
REQUIRE(timelineWidget != NULL);
// This is where we draw on the window
Glib::RefPtr<Gdk::Window> window = get_window();
if(!window)
return false;
// Makes sure the widget styles have been loaded
read_styles();
// Prepare to render via cairo
Glib::RefPtr<Style> style = get_style();
const Allocation allocation = get_allocation();
Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();
REQUIRE(style);
REQUIRE(cr);
// Translate the view by the scroll distance
cr->translate(0, -get_vertical_offset());
cr->get_matrix(view_matrix);
// 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 the selection -----//
const int start_x = timelineWidget->time_to_x(
timelineWidget->get_selection_start());
const int end_x = timelineWidget->time_to_x(
timelineWidget->get_selection_end());
cr->set_matrix(view_matrix);
// Draw the cover
if(end_x > 0 && start_x < allocation.get_width())
{
cr->set_source_rgba(
(float)selectionColour.red / 0xFFFF,
(float)selectionColour.green / 0xFFFF,
(float)selectionColour.blue / 0xFFFF,
selectionAlpha);
cr->rectangle(start_x + 0.5, 0,
end_x - start_x, allocation.get_height());
cr->fill();
}
gdk_cairo_set_source_color(cr->cobj(), &selectionColour);
cr->set_line_width(1);
// Draw the start
if(start_x >= 0 && start_x < allocation.get_width())
{
cr->move_to(start_x + 0.5, 0);
cr->line_to(start_x + 0.5, allocation.get_height());
cr->stroke_preserve();
}
// Draw the end
if(end_x >= 0 && end_x < allocation.get_width())
{
cr->move_to(end_x + 0.5, 0);
cr->line_to(end_x + 0.5, allocation.get_height());
cr->stroke_preserve();
}
return true;
}
bool
@ -162,12 +249,12 @@ TimelineBody::on_scroll_event (GdkEventScroll* event)
{
case GDK_SCROLL_UP:
// User scrolled up. Shift 1/16th left
timelineWidget->shift_view(-1);
timelineWidget->shift_view(-16);
break;
case GDK_SCROLL_DOWN:
// User scrolled down. Shift 1/16th right
timelineWidget->shift_view(1);
timelineWidget->shift_view(16);
break;
}
}
@ -235,95 +322,6 @@ TimelineBody::on_motion_notify_event(GdkEventMotion *event)
return false;
}
bool
TimelineBody::on_expose_event(GdkEventExpose* event)
{
Cairo::Matrix view_matrix;
REQUIRE(event != NULL);
REQUIRE(timelineWidget != NULL);
// This is where we draw on the window
Glib::RefPtr<Gdk::Window> window = get_window();
if(!window)
return false;
// Makes sure the widget styles have been loaded
read_styles();
// Prepare to render via cairo
Glib::RefPtr<Style> style = get_style();
const Allocation allocation = get_allocation();
Cairo::RefPtr<Cairo::Context> cairo = window->create_cairo_context();
REQUIRE(style);
REQUIRE(cairo);
// Translate the view by the scroll distance
cairo->translate(0, -get_vertical_offset());
cairo->get_matrix(view_matrix);
// 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
cairo->rectangle(0, 0, allocation.get_width(), height);
gdk_cairo_set_source_color(cairo->cobj(), &background);
cairo->fill();
// Render the track
cairo->save();
track->draw_track(cairo);
cairo->restore();
// Shift for the next track
cairo->translate(0, height + TimelineWidget::TrackPadding);
}
//----- Draw the selection -----//
const int start_x = timelineWidget->time_to_x(
timelineWidget->get_selection_start());
const int end_x = timelineWidget->time_to_x(
timelineWidget->get_selection_end());
cairo->set_matrix(view_matrix);
// Draw the cover
if(end_x > 0 && start_x < allocation.get_width())
{
cairo->set_source_rgba(1.0, 0, 0, 0.5);
cairo->rectangle(start_x + 0.5, 0,
end_x - start_x, allocation.get_height());
cairo->fill();
}
cairo->set_source_rgb(1.0, 0, 0);
cairo->set_line_width(1);
// Draw the start
if(start_x >= 0 && start_x < allocation.get_width())
{
cairo->move_to(start_x + 0.5, 0);
cairo->line_to(start_x + 0.5, allocation.get_height());
cairo->stroke_preserve();
}
// Draw the end
if(end_x >= 0 && end_x < allocation.get_width())
{
cairo->move_to(end_x + 0.5, 0);
cairo->line_to(end_x + 0.5, allocation.get_height());
cairo->stroke_preserve();
}
return true;
}
void
TimelineBody::begin_shift_drag()
{
@ -343,12 +341,37 @@ TimelineBody::set_vertical_offset(int offset)
{
timelineWidget->verticalAdjustment.set_value(offset);
}
void
TimelineBody::register_styles() const
{
GtkWidgetClass *klass = GTK_WIDGET_CLASS(G_OBJECT_GET_CLASS(gobj()));
gtk_widget_class_install_style_property(klass,
g_param_spec_boxed("background", "Track Background",
"The background colour of timeline tracks",
GDK_TYPE_COLOR, G_PARAM_READABLE));
gtk_widget_class_install_style_property(klass,
g_param_spec_boxed("selection", "End lines of a selection",
"The colour of selection limit lines",
GDK_TYPE_COLOR, G_PARAM_READABLE));
gtk_widget_class_install_style_property(klass,
g_param_spec_float("selection_alpha", "Selection Alpha",
"The transparency of the selection marque.",
0, 1.0, 0.5, G_PARAM_READABLE));
}
void
TimelineBody::read_styles()
{
background = WindowManager::read_style_colour_property(
backgroundColour = WindowManager::read_style_colour_property(
*this, "background", 0, 0, 0);
selectionColour = WindowManager::read_style_colour_property(
*this, "selection", 0, 0, 0);
get_style_property("selection_alpha", selectionAlpha);
}
} // namespace timeline

View file

@ -37,33 +37,72 @@ class TimelineWidget;
namespace timeline {
/**
* Implementation of the timeline body subwidget. This widget is
* displayed in the centre of the timeline widget, and displays the
* content of all timeline tracks.
*/
class TimelineBody : public Gtk::DrawingArea
{
public:
/**
* Constructor
* @param timeline_widget The owner widget of this ruler.
*/
TimelineBody(lumiera::gui::widgets::TimelineWidget *timeline_widget);
/**
* Destructor
*/
~TimelineBody();
/**
* Returns the type of the currently selected timeline tool.
*/
ToolType get_tool() const;
/**
* Selects a tool of a specified type.
* @param tool_type The type of tool to set.
*/
void set_tool(ToolType tool_type);
/* ===== Events ===== */
protected:
void on_realize();
void on_scroll();
/**
* An event handler for when the view window of the timeline changes.
*/
void on_update_view();
/**
* An event handler for when the widget is realized.
*/
void on_realize();
/**
* An event handler for when the window must be redrawn.
*/
bool on_expose_event(GdkEventExpose* event);
bool on_scroll_event(GdkEventScroll* event);
bool on_button_press_event (GdkEventButton* event);
/**
* The event handler for button press events.
*/
bool on_button_press_event(GdkEventButton* event);
bool on_button_release_event (GdkEventButton* event);
/**
* The event handler for button release events.
*/
bool on_button_release_event(GdkEventButton* event);
/**
* The event handler for mouse move events.
*/
bool on_motion_notify_event(GdkEventMotion *event);
bool on_expose_event(GdkEventExpose* event);
/* ===== Internals ===== */
private:
void begin_shift_drag();
@ -71,7 +110,15 @@ private:
int get_vertical_offset() const;
void set_vertical_offset(int offset);
/**
* Registers all the styles that this class will respond to.
*/
void register_styles() const;
/**
* Reads styles from the present stylesheet.
*/
void read_styles();
private:
@ -91,10 +138,14 @@ private:
gavl_time_t beginShiftTimeOffset;
int beginShiftVerticalOffset;
GdkColor background;
// Style properties
GdkColor backgroundColour;
GdkColor selectionColour;
float selectionAlpha;
lumiera::gui::widgets::TimelineWidget *timelineWidget;
friend class Tool;
friend class ArrowTool;
friend class IBeamTool;
};

View file

@ -23,14 +23,33 @@
#include "timeline-ibeam-tool.hpp"
#include "../timeline-widget.hpp"
using namespace lumiera::gui::widgets;
namespace lumiera {
namespace gui {
namespace widgets {
namespace timeline {
// ===== Constants ===== //
const int IBeamTool::DragZoneWidth = 5;
const int IBeamTool::ScrollSlideRateDivisor = 16;
const int IBeamTool::ScrollSlideEventInterval = 40;
// ===== Implementation ===== //
IBeamTool::IBeamTool(TimelineBody *timeline_body) :
dragType(None),
pinnedDragTime(0),
scrollSlideRate(0),
Tool(timeline_body)
{
}
IBeamTool::~IBeamTool()
{
end_scroll_slide();
}
ToolType
@ -42,6 +61,26 @@ IBeamTool::get_type() const
Gdk::Cursor
IBeamTool::get_cursor() const
{
// Are we dragging?
// Make the cursor indicate that type of drag
switch(dragType)
{
case Selection:
return Gdk::Cursor(Gdk::XTERM);
case GrabStart:
return Gdk::Cursor(Gdk::LEFT_SIDE);
case GrabEnd:
return Gdk::Cursor(Gdk::RIGHT_SIDE);
}
// Are we hovering over the ends of the selection?
// Make the cursor indicate that the user can resize the selection.
if(is_mouse_in_start_drag_zone())
return Gdk::Cursor(Gdk::LEFT_SIDE);
if(is_mouse_in_end_drag_zone())
return Gdk::Cursor(Gdk::RIGHT_SIDE);
// By default return an I-beam cursor
return Gdk::Cursor(Gdk::XTERM);
}
@ -50,48 +89,151 @@ IBeamTool::on_button_press_event(GdkEventButton* event)
{
Tool::on_button_press_event(event);
REQUIRE(timelineBody != NULL);
lumiera::gui::widgets::TimelineWidget *timeline_widget =
timelineBody->timelineWidget;
REQUIRE(timeline_widget != NULL);
TimelineWidget *timeline_widget = get_timeline_widget();
REQUIRE(timeline_widget != NULL);
if(event->button == 1)
{
drag_start_time = timeline_widget->x_to_time(event->x);
timeline_widget->set_selection(drag_start_time, drag_start_time);
}
{
const gavl_time_t time = timeline_widget->x_to_time(event->x);
if(is_mouse_in_start_drag_zone())
{
// User began to drag the start of the selection
dragType = GrabStart;
pinnedDragTime = timeline_widget->get_selection_end();
}
else if(is_mouse_in_end_drag_zone())
{
// User began to drag the end of the selection
dragType = GrabEnd;
pinnedDragTime = timeline_widget->get_selection_start();
}
else
{
// User began the drag in clear space, begin a Select drag
dragType = Selection;
pinnedDragTime = time;
timeline_widget->set_selection(time, time);
}
}
}
void
IBeamTool::on_button_release_event(GdkEventButton* event)
{
Tool::on_button_release_event(event);
{
// Ensure that we can't get a mixed up state
ENSURE(isDragging == (dragType != None));
ENSURE(isDragging == (event->button == 1));
if(event->button == 1)
set_leading_x(event->x);
{
set_leading_x(event->x);
// Terminate the drag now the button is released
dragType = None;
// If there was a scroll slide, terminate it
end_scroll_slide();
// Apply the cursor - there are some corner cases where it can
// change by the end of the drag
apply_cursor();
}
Tool::on_button_release_event(event);
}
void
IBeamTool::on_motion_notify_event(GdkEventMotion *event)
{
Tool::on_motion_notify_event(event);
// Ensure that we can't get a mixed up state
ENSURE(isDragging == (dragType != None));
if(isDragging)
set_leading_x(event->x);
{
set_leading_x(event->x);
// Is the mouse out of bounds? if so we must begin scrolling
const Gdk::Rectangle body_rect(get_body_rectangle());
if(event->x < 0)
begin_scroll_slide(
event->x / ScrollSlideRateDivisor);
else if(event->x > body_rect.get_width())
begin_scroll_slide(
(event->x - body_rect.get_width()) / ScrollSlideRateDivisor);
else end_scroll_slide();
}
apply_cursor();
}
void IBeamTool::set_leading_x(const int x)
bool
IBeamTool::on_scroll_slide_timer()
{
get_timeline_widget()->shift_view(scrollSlideRate);
// Return true to keep the timer going
return true;
}
void
IBeamTool::set_leading_x(const int x)
{
REQUIRE(timelineBody != NULL);
lumiera::gui::widgets::TimelineWidget *timeline_widget =
timelineBody->timelineWidget;
REQUIRE(timeline_widget != NULL);
TimelineWidget *timeline_widget = get_timeline_widget();
REQUIRE(timeline_widget != NULL);
const bool set_playback_period = dragType == Selection;
const gavl_time_t time = timeline_widget->x_to_time(x);
if(time > drag_start_time)
timeline_widget->set_selection(drag_start_time, time);
if(time > pinnedDragTime)
timeline_widget->set_selection(
pinnedDragTime, time, set_playback_period);
else
timeline_widget->set_selection(time, drag_start_time);
timeline_widget->set_selection(
time, pinnedDragTime, set_playback_period);
}
void
IBeamTool::begin_scroll_slide(int scroll_slide_rate)
{
scrollSlideRate = scroll_slide_rate;
if(!scrollSlideEvent.connected())
scrollSlideEvent = Glib::signal_timeout().connect(
sigc::mem_fun(this, &IBeamTool::on_scroll_slide_timer),
ScrollSlideEventInterval);
}
void
IBeamTool::end_scroll_slide()
{
scrollSlideRate = 0;
if(scrollSlideEvent.connected())
scrollSlideEvent.disconnect();
}
bool
IBeamTool::is_mouse_in_start_drag_zone() const
{
TimelineWidget *timeline_widget = get_timeline_widget();
const int start_x = timeline_widget->time_to_x(
timeline_widget->get_selection_start());
return (mousePoint.get_x() <= start_x &&
mousePoint.get_x() > start_x - DragZoneWidth);
}
bool
IBeamTool::is_mouse_in_end_drag_zone() const
{
TimelineWidget *timeline_widget = get_timeline_widget();
const int end_x = timeline_widget->time_to_x(
timeline_widget->get_selection_end());
return (mousePoint.get_x() >= end_x &&
mousePoint.get_x() < end_x + DragZoneWidth);
}
} // namespace timeline

View file

@ -35,27 +35,172 @@ namespace gui {
namespace widgets {
namespace timeline {
/**
* A helper class to implement the timeline i-beam tool
*/
class IBeamTool : public Tool
{
public:
/**
* Constructor
* @param timeline_body The owner timeline body object
*/
IBeamTool(TimelineBody *timeline_body);
/**
* Gets the type of tool represented by this class
*/
ToolType get_type() const;
protected:
/**
* Destructor
*/
~IBeamTool();
/**
* Gets the cursor to display for this tool at this moment.
*/
Gdk::Cursor get_cursor() const;
protected:
/**
* The event handler for button press events.
*/
void on_button_press_event(GdkEventButton* event);
/**
* The event handler for button release events.
*/
void on_button_release_event(GdkEventButton* event);
/**
* The event handler for mouse move events.
*/
void on_motion_notify_event(GdkEventMotion *event);
private:
/* ===== Internal Event Handlers ===== */
/**
* An internal event handler, which is called when the scroll slide
* timer calls it.
*/
bool on_scroll_slide_timer();
private:
/* ===== Internal Methods ===== */
/**
* As the user drags, this function is called to update the position
* of the moving end of the selection.
*/
void set_leading_x(const int x);
protected:
//----- Internals -----//
gavl_time_t drag_start_time;
/**
* Begins, or continues a scroll slide at a given rate
* @param scroll_slide_rate The distance to slide every timer event
* in units of 1/256th of the view width.
*/
void begin_scroll_slide(int scroll_slide_rate);
/**
* Ends a scroll slide, and disconnects the slide timer
*/
void end_scroll_slide();
/**
* Determines if the cursor is hovering over the start of the
* selection.
*/
bool is_mouse_in_start_drag_zone() const;
/**
* Determines if the cursor is hovering over the end of the
* selection.
*/
bool is_mouse_in_end_drag_zone() const;
private:
/* ==== Enums ===== */
/**
* An enum used to represent the type of drag currently take place.
*/
enum DragType
{
/**
* No drag is occuring
*/
None,
/**
* A selection drag is occuring.
* @remarks The position of one end of the selection was set at
* mouse-down of the drag, and the other end is set by
* drag-release.
*/
Selection,
/**
* The start of the selection is being dragged.
*/
GrabStart,
/**
* The end of the selection is being dragged.
*/
GrabEnd
};
/* ==== Internals ===== */
/**
* Specifies the type of drag currently taking place.
*/
DragType dragType;
/**
* During a selection drag, one end of the selection is moving with
* the mouse, the other is pinned. pinnedDragTime specifies the time
* of that point.
*/
gavl_time_t pinnedDragTime;
/**
* This connection is used to represent the timer which causes scroll
* sliding to occur.
* @remarks Scroll sliding is an animated scroll which occurs when
* the user drags a selection outside the area of the timeline body.
*/
sigc::connection scrollSlideEvent;
/**
* Specifies the rate at which scroll sliding is currently taking
* place.
*/
int scrollSlideRate;
/* ===== Constants ===== */
/**
* DragZoneSize defines the width of the zone near to the end of the
* selection in which dragging will cause the selection to resize.
* @remarks The selection marque can be resized by dragging the ends
* of it. Special cursors are shown when the mouse is in this region.
*/
static const int DragZoneWidth;
/**
* The amount to divide the mouse overshoot by to produce the slide
* scroll rate.
* @remarks Smaller values cause faster scrolling.
*/
static const int ScrollSlideRateDivisor;
/**
* The interval between scroll slide events in ms.
*/
static const int ScrollSlideEventInterval;
};
} // namespace timeline

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