WIP start stubbing and defining time quantisation and timecode entities

This commit is contained in:
Fischlurch 2011-01-02 01:21:39 +01:00
parent f832e817b8
commit 15214cc069
15 changed files with 546 additions and 65 deletions

1
.gitignore vendored
View file

@ -20,4 +20,5 @@ autom4te.cache
semantic.cache
tests/,*
wiki/backups/*
doc/devel/uml/fig128309.png
m4/*

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -62,6 +62,7 @@ liblumiera_la_SOURCES = \
$(liblumiera_la_srcdir)/time.c \
$(liblumiera_la_srcdir)/time/lumitime.cpp \
$(liblumiera_la_srcdir)/time/quantiser.cpp \
$(liblumiera_la_srcdir)/time/timecode.cpp \
$(liblumiera_la_srcdir)/tmpbuf.c \
$(liblumiera_la_srcdir)/util.cpp

124
src/lib/time/formats.hpp Normal file
View file

@ -0,0 +1,124 @@
/*
FORMATS.hpp - formats for displaying and specifying time
Copyright (C) Lumiera.org
2010, 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 LIB_TIME_FORMATS_H
#define LIB_TIME_FORMATS_H
#include "lib/time/timevalue.hpp"
//#include <boost/operators.hpp>
#include <string>
namespace lib {
namespace time {
/**
* descriptor for a time representation format (ABC).
* A time format describes how to specify time; it allows
* to format a time value and to parse a textual representation.
* @note while Format is an generic descriptor, the actual
* TCode (timecode) values are time values, which \em
* use a specific format, given as template parameter
*
* @todo WIP-WIP-WIP
*/
class Format
{
public:
virtual ~Format();
};
namespace format {
/**
* Frame count as timecode format.
* An integral number used to count frames
* can be used as a simple from of time code.
* Indeed the Lumiera backend mostly relies on
* these frame counts. As with any timecode, the
* underlying framerate/quantisation remains implicit.
*/
class Frames
: public Format
{
};
/**
* Widely used standard media timecode format.
* A SMPTE timestamp addresses individual frames,
* by specifying time as hour-minute-second plus the
* frame number within the actual second.
*/
class Smpte
: public Format
{
};
/**
* The informal hours-minutes-seconds-millisecond timecode.
* As such, this timecode is quantisation agnostic, but usually
* it is used to address some frame or block or otherwise quantised
* entity in time. HMS-Timecode is similar to SMPTE, but uses a
* floating point milliseconds value instead of the frame count
*/
class Hms
: public Format
{
};
/**
* Simple timecode specification as fractional seconds.
* Similar to HMS, a specification of seconds is quantisation agnostic,
* but usually some implicit quantisation is used anyway, be it on actual
* data frames, audio frames, or just on some smaller time interval, e.g.
* full milliseconds.
* @note Seconds is implemented as rational number and thus uses
* decimal format, not the usual sexagesimal time format
*/
class Seconds
: public Format
{
TimeFract secs_;
};
/* ==== predefined constants for specifying the format to use ==== */
static const Seconds SECONDS;
static const Frames FRAMES;
static const Smpte SMPTE;
static const Hms HMS;
}}} // lib::time::format
#endif

View file

@ -56,7 +56,7 @@ namespace time {
/** convenience constructor to build an
* internal Lumiera Time value from the usual parts
* of an hexagesimal time specification. Arbitrary integral
* of an sexagesimal time specification. Arbitrary integral
* values are acceptable and will be summed up accordingly.
* The minute and hour part can be omitted.
* @warning internal Lumiera time values refer to an

View file

@ -25,6 +25,7 @@
#define LIB_TIME_QUANTISER_H
#include "lib/time/timevalue.hpp"
#include "lib/time/formats.hpp"
//#include <boost/operators.hpp>
#include <string>
@ -47,5 +48,24 @@ namespace time {
/**
* Simple stand-alone Quantiser implementation for debugging and test.
* This is a self-contained quantiser implementation without any implicit
* referral to the Lumiera session. It is mainly intended for simplified unit testing.
* @warning real GUI and Proc-Layer code should always prefer to build a real quantiser,
* which referres some TimeGrid definition within the session. Basically, the overall
* purpose of the time-quantisation framework is to enforce such a link to a specific
* time and quantisation scale and to prevent "wild and uncoordinated" rounding attempts.
*/
class FixedFrameQuantiser
: public Quantiser
{
public:
FixedFrameQuantiser (TimeFract frames_per_second);
};
}} // lib::time
#endif

44
src/lib/time/timecode.cpp Normal file
View file

@ -0,0 +1,44 @@
/*
Timecode - implementation of fixed grid aligned time specifications
Copyright (C) Lumiera.org
2010, 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.
* *****************************************************/
#include "lib/lumitime.hpp"
#include "lib/time/timecode.hpp"
#include "lib/time/timequant.hpp"
#include "lib/time/formats.hpp"
using std::string;
namespace lib {
namespace time {
Format::~Format() { } // emit VTable here....
/** */
}} // lib::time

View file

@ -25,6 +25,7 @@
#define LIB_TIME_TIMECODE_H
#include "lib/time/timevalue.hpp"
#include "lib/time/formats.hpp"
//#include <boost/operators.hpp>
#include <string>
@ -36,9 +37,11 @@ namespace time {
/**
* fixed format time specification.
*
* @param FMT the actual timecode format to use
* @see time::Format
* @todo WIP-WIP-WIP
*/
template<class FMT>
class TCode
{
@ -46,6 +49,26 @@ namespace time {
};
class QuTime;
/**
* A frame counting timecode value.
* This is an hard-coded representation of
* TCode<format::Frames>, with additional convenience
* constructors and conversions, which basically make
* FrameNr values interchangeable with integral numbers.
*/
class FrameNr
: public TCode<format::Frames>
{
public:
FrameNr (QuTime const& quantisedTime);
operator long() const;
};
}} // lib::time
#endif

View file

@ -0,0 +1,58 @@
/*
TIMEQUANT.hpp - quantised (grid aligned) time values
Copyright (C) Lumiera.org
2010, 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 LIB_TIME_TIMEQUQNT_H
#define LIB_TIME_TIMEQUQNT_H
#include "lib/time/timevalue.hpp"
#include "lib/time/quantiser.hpp"
#include "lib/time/timecode.hpp"
#include "lib/symbol.hpp"
//#include <boost/operators.hpp>
#include <string>
namespace lib {
namespace time {
using lib::Symbol;
/**
* fixed format time specification.
*
* @todo WIP-WIP-WIP
*/
class QuTime
{
public:
QuTime (TimeValue raw, Symbol gridID);
QuTime (TimeValue raw, Quantiser const& quantisation_to_use);
};
}} // lib::time
#endif

View file

@ -113,4 +113,21 @@ namespace meta {
return AssetManager::instance().wrap (newGrid);
}
/* === TimeGrid shortcut builder functions === */
PGrid
TimeGrid::build (Symbol gridID, TimeFract frames_per_second)
{
return build (gridID,frames_per_second, Time(0));
}
PGrid
TimeGrid::build (Symbol gridID, TimeFract frames_per_second, Time origin)
{
UNIMPLEMENTED ("build a trivial time grid");
}
}} // namespace asset::meta

View file

@ -49,12 +49,22 @@
#include "proc/asset/meta.hpp"
#include "lib/time/timevalue.hpp"
#include "lib/symbol.hpp"
namespace asset {
namespace meta {
using lib::Symbol;
using lib::time::Time;
using lib::time::TimeValue;
using lib::time::TimeFract;
class TimeGrid;
typedef lumiera::P<TimeGrid> PGrid;
/**
* Interface: a grid and scale for time quantisation.
@ -69,19 +79,16 @@ namespace meta {
// TODO define the TimeGrid API here
/* === shortcut builder functions === */
static PGrid build (Symbol gridID, TimeFract frames_per_second);
static PGrid build (Symbol gridID, TimeFract frames_per_second, Time origin);
protected:
TimeGrid (EntryID<TimeGrid> const&);
};
typedef lumiera::P<TimeGrid> PGrid;
using lib::time::Time;
using lib::time::TimeValue;
using lib::time::TimeFract;
template<>

View file

@ -23,7 +23,8 @@
#include "lib/test/run.hpp"
#include "lib/test/test-helper.hpp"
#include "lib/time/quantiser.hpp"
#include "lib/time/timequant.hpp"
#include "proc/asset/meta/time-grid.hpp"
#include "lib/util.hpp"
#include <boost/lexical_cast.hpp>
@ -33,6 +34,7 @@
using boost::lexical_cast;
using util::isnil;
using util::contains;
//using std::rand;
using std::cout;
using std::endl;
@ -44,6 +46,8 @@ namespace lib {
namespace time{
namespace test{
using asset::meta::TimeGrid;
/********************************************************
* @test verify handling of quantised time values.
@ -61,14 +65,14 @@ namespace test{
TimeValue ref (refval);
CHECK (Time(0) < ref);
checkUsage (ref);
checkSimpleUsage (ref);
check_theFullStory (ref);
checkMultipleGrids (ref);
}
void
checkUsage (TimeValue org)
checkSimpleUsage (TimeValue org)
{
TimeGrid::build("my_simple_grid", 25); // "someone" has defined a time grid
@ -88,8 +92,8 @@ namespace test{
FixedFrameQuantiser fixQ(25);
QuTime qVal (org, fixQ);
CHECK (contains (qVal.supportedFormats, format::FRAMES));
CHECK (contains (qVal.supportedFormats, format::SMPTE));
CHECK (contains (qVal.supportedFormats(), format::FRAMES));
CHECK (contains (qVal.supportedFormats(), format::SMPTE));
TCode<format::Smpte> smpteTCode = qVal.formatAs<format::Smpte>();
showTimeCode (smpteTCode);

View file

@ -1,6 +1,6 @@
format 58
"CommonLib" // CommonLib
revision 22
revision 23
modified_by 5 "hiv"
// class settings
//class diagram settings
@ -870,21 +870,21 @@ ${inlines}
idl_decl ""
explicit_switch_type ""
classrelation 206341 // <generalisation>
relation 195461 ---|>
classrelation 210693 // <generalisation>
relation 199813 ---|>
a public
cpp default "${type}"
classrelation_ref 206341 // <generalisation>
b parent class_ref 168837 // Duration
classrelation_ref 210693 // <generalisation>
b parent class_ref 134917 // Time
end
classrelation 206469 // start (<unidirectional association>)
relation 195589 --->
a role_name "start" protected
classrelation 210821 // dur_ (<unidirectional association>)
relation 199941 --->
a role_name "dur_" multiplicity "1" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
classrelation_ref 206469 // start (<unidirectional association>)
b parent class_ref 134917 // Time
classrelation_ref 210821 // dur_ (<unidirectional association>)
b parent class_ref 168837 // Duration
end
end
@ -916,12 +916,12 @@ ${inlines}
idl_decl ""
explicit_switch_type ""
classrelation 206213 // <generalisation>
relation 195333 ---|>
classrelation 210437 // <generalisation>
relation 199557 ---|>
a public
cpp default "${type}"
classrelation_ref 206213 // <generalisation>
b parent class_ref 168709 // TimeValue
classrelation_ref 210437 // <generalisation>
b parent class_ref 172165 // Offset
end
end
@ -1034,6 +1034,14 @@ ${inlines}
python_decl ""
idl_decl ""
end
classrelation 210949 // <generalisation>
relation 200069 ---|>
a public
cpp default "${type}"
classrelation_ref 210949 // <generalisation>
b parent class_ref 137093 // Meta
end
end
class 170373 "TimeVar"
@ -1183,6 +1191,119 @@ ${inlines}
b parent class_ref 169221 // TimeGrid
end
end
class 172165 "Offset"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit}
{
${members} };
${inlines}
"
java_decl ""
php_decl ""
python_2_2 python_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 210565 // <generalisation>
relation 199685 ---|>
a public
cpp default "${type}"
classrelation_ref 210565 // <generalisation>
b parent class_ref 168709 // TimeValue
end
end
class 172293 "Frames"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit}
{
${members} };
${inlines}
"
java_decl ""
php_decl ""
python_2_2 python_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 211077 // <generalisation>
relation 200197 ---|>
a public
cpp default "${type}"
classrelation_ref 211077 // <generalisation>
b parent class_ref 170757 // Format
end
end
class 172421 "Smpte"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit}
{
${members} };
${inlines}
"
java_decl ""
php_decl ""
python_2_2 python_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 211205 // <generalisation>
relation 200325 ---|>
a public
cpp default "${type}"
classrelation_ref 211205 // <generalisation>
b parent class_ref 170757 // Format
end
end
class 172549 "Hms"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit}
{
${members} };
${inlines}
"
java_decl ""
php_decl ""
python_2_2 python_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 211333 // <generalisation>
relation 200453 ---|>
a public
cpp default "${type}"
classrelation_ref 211333 // <generalisation>
b parent class_ref 170757 // Format
end
end
class 172677 "SmpteTC"
visibility package
nactuals 1
actual class class_ref 170629 // TCode
rank 0 explicit_value ""
cpp_decl "${comment}${template}class ${name}${inherit}
{
${members} };
${inlines}
"
java_decl ""
php_decl ""
python_2_2 python_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 211461 // <generalisation>
relation 200581 ---|>
a public
cpp default "${type}"
classrelation_ref 211461 // <generalisation>
b parent class_ref 170629 // TCode
end
end
end
package_ref 131077 // ConfigQuery

View file

@ -6,7 +6,7 @@ classcanvas 128005 class_ref 134917 // Time
end
classcanvas 128133 class_ref 168581 // TimeSpan
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 38 218 2000
xyz 110 267 2000
end
classcanvas 128261 class_ref 168709 // TimeValue
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
@ -14,19 +14,19 @@ classcanvas 128261 class_ref 168709 // TimeValue
end
classcanvas 128389 class_ref 168837 // Duration
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 42 118 2000
xyz 42 182 2000
end
classcanvas 129669 class_ref 168965 // QuTime
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 245 324 2000
xyz 245 361 2000
end
classcanvas 130181 class_ref 169093 // Quantiser
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 393 324 2000
xyz 393 361 2000
end
classcanvas 130565 class_ref 169221 // TimeGrid
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 508 324 2000
xyz 508 361 2000
end
classcanvas 130949 class_ref 170373 // TimeVar
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
@ -34,23 +34,49 @@ classcanvas 130949 class_ref 170373 // TimeVar
end
classcanvas 131589 class_ref 170501 // QuTimeSpan
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 103 324 2000
xyz 103 361 2000
end
classcanvas 131973 class_ref 170629 // TCode
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 248 413 2000
xyz 248 450 2000
end
classcanvas 132101 class_ref 170757 // Format
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 393 397 2000
xyz 393 434 2000
end
classcanvas 132997 class_ref 170885 // FrameNr
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 238 496 2000
xyz 243 545 2000
end
classcanvas 133253 class_ref 171013 // CompoundGrid
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 480 439 2000
xyz 480 476 2000
end
classcanvas 133509 class_ref 172165 // Offset
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 46 118 2000
end
classcanvas 135045 class_ref 137093 // Meta
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 514 237 2000
end
note 135429 "Asset System"
xyzwh 504 197 2000 66 47
classcanvas 135557 class_ref 172293 // Frames
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 392 507 1995
end
classcanvas 135685 class_ref 172421 // Smpte
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 446 533 2010
end
classcanvas 136069 class_ref 172549 // Hms
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 421 523 2005
end
classcanvas 136325 class_ref 172677 // SmpteTC
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
xyz 308 546 2000
end
relationcanvas 128517 relation_ref 195205 // <generalisation>
geometry VHV unfixed
@ -60,31 +86,16 @@ relationcanvas 128517 relation_ref 195205 // <generalisation>
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 128901 relation_ref 195333 // <generalisation>
from ref 128389 z 1999 to ref 128261
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 129285 relation_ref 195461 // <generalisation>
from ref 128133 z 1999 to ref 128389
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 129413 relation_ref 195589 // <unidirectional association>
from ref 128133 z 1999 to ref 128005
role_a_pos 111 214 3000 no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 130437 relation_ref 195973 // <unidirectional association>
from ref 129669 z 1999 stereotype "<<refers_to>>" xyz 309 330 3000 to ref 130181
from ref 129669 z 1999 stereotype "<<refers_to>>" xyz 309 367 3000 to ref 130181
no_role_a no_role_b
multiplicity_a_pos 376 349 3000 multiplicity_b_pos 305 349 3000
multiplicity_a_pos 376 386 3000 multiplicity_b_pos 305 386 3000
end
relationcanvas 130693 relation_ref 196101 // <unidirectional association>
decenter_end 353
from ref 130181 z 1999 stereotype "<<use>>" xyz 457 333 3000 to ref 130565
from ref 130181 z 1999 stereotype "<<use>>" xyz 457 370 3000 to ref 130565
no_role_a no_role_b
multiplicity_a_pos 491 352 3000 no_multiplicity_b
multiplicity_a_pos 491 389 3000 no_multiplicity_b
end
relationcanvas 130821 relation_ref 197253 // <generalisation>
from ref 129669 z 1999 to ref 128005
@ -101,34 +112,32 @@ relationcanvas 131077 relation_ref 197381 // <generalisation>
end
relationcanvas 131461 relation_ref 197509 // <unidirectional association>
from ref 130949 z 1999 to ref 128005
role_a_pos 175 124 3000 no_role_b
multiplicity_a_pos 230 140 3000 multiplicity_b_pos 176 143 3000
role_a_pos 225 120 3000 no_role_b
multiplicity_a_pos 232 143 3000 multiplicity_b_pos 176 143 3000
end
relationcanvas 131717 relation_ref 197637 // <generalisation>
from ref 131589 z 1999 to point 65 290
line 131845 z 1999 to ref 128133
from ref 131589 z 1999 to ref 128133
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 132485 relation_ref 197893 // <dependency>
from ref 131973 z 1999 to point 290 413
from ref 131973 z 1999 to point 290 450
line 132869 z 1999 to ref 132101
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 132613 relation_ref 198021 // <unidirectional association>
from ref 129669 z 1999 stereotype "<<yield>>" xyz 275 378 3000 to ref 131973
from ref 129669 z 1999 stereotype "<<yield>>" xyz 275 415 3000 to ref 131973
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 132741 relation_ref 198149 // <directional aggregation>
decenter_end 595
from ref 130181 z 1999 stereotype "<<provide>>" xyz 360 377 3000 to ref 132101
from ref 130181 z 1999 stereotype "<<provide>>" xyz 360 414 3000 to ref 132101
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 133125 relation_ref 198277 // <generalisation>
decenter_begin 581
from ref 132997 z 1999 to ref 131973
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
@ -139,4 +148,56 @@ relationcanvas 133381 relation_ref 198405 // <generalisation>
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 133637 relation_ref 199557 // <generalisation>
from ref 128389 z 1999 to ref 133509
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 133765 relation_ref 199685 // <generalisation>
from ref 133509 z 1999 to ref 128261
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 134277 relation_ref 199813 // <generalisation>
from ref 128133 z 1999 to point 137 248
line 134533 z 1999 to point 268 194
line 134405 z 1999 to ref 128005
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 134661 relation_ref 199941 // <unidirectional association>
geometry VHr
from ref 128133 z 1999 to point 66 284
line 134789 z 1999 to ref 128389
role_a_pos 75 269 3000 no_role_b
multiplicity_a_pos 52 226 3000 no_multiplicity_b
end
relationcanvas 135301 relation_ref 200069 // <generalisation>
from ref 130565 z 1999 to ref 135045
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 135813 relation_ref 200197 // <generalisation>
from ref 135557 z 1994 to ref 132101
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 135941 relation_ref 200325 // <generalisation>
from ref 135685 z 1999 to ref 132101
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 136197 relation_ref 200453 // <generalisation>
from ref 136069 z 1999 to ref 132101
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
relationcanvas 136453 relation_ref 200581 // <generalisation>
geometry VHV
from ref 136325 z 1999 to point 334 522
line 136581 z 1999 to point 268 522
line 136709 z 1999 to ref 131973
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
end
end

View file

@ -1,6 +1,6 @@
format 58
"lumiera"
revision 66
revision 67
modified_by 5 "hiv"
cpp_root_dir "../../src/"