Clip: rearrange storage of clip presentation data
This can only be a preliminary solution, since we do not know the actual usage pattern of the ClipDelegate object yet. We only know there will typically be a huge amount of clips to represent in the UI, and we need to be careful to avoid unneccesary reallocations. Thus for now we use a data record as base class, and we move the data record into the new allocation when switching gears. However, this could easily be converted into a data delegate, where we'd only transfer ownership without reallocation, in case this turns out to be more efficient.
This commit is contained in:
parent
96dfbf7d96
commit
e175805481
2 changed files with 128 additions and 94 deletions
|
|
@ -43,7 +43,7 @@
|
|||
** to be flexible on several levels. Thus, the presentation mode is structured
|
||||
** as follows:
|
||||
** - the the Mode of representation controls the basic implementation approach
|
||||
**
|
||||
**
|
||||
** * in Mode::HIDDEN, there is no actual UI representation; rather, the ClipDelegate
|
||||
** acts as data container to receive and hold the presentation relevant properties
|
||||
** of the clip, so to be able to return to a visible representation later on.
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
** still a lot of flexibility, since the implementing widget itself has several
|
||||
** options for representation, and, moreover, the widget can still be hidden
|
||||
** or out of view.
|
||||
**
|
||||
**
|
||||
** - the ClipDelegate::Appearance can be seen as an ordered scale of increasingly
|
||||
** detailed representation. Some segments of this scale are mapped into the
|
||||
** aforementioned three modes of representation. Especially within the
|
||||
|
|
@ -98,6 +98,7 @@
|
|||
|
||||
//#include <algorithm>
|
||||
//#include <vector>
|
||||
#include <utility>
|
||||
|
||||
|
||||
|
||||
|
|
@ -111,7 +112,6 @@ using util::unConst;
|
|||
//using std::cout;
|
||||
//using std::endl;
|
||||
using std::optional;
|
||||
using std::nullopt;
|
||||
|
||||
|
||||
namespace stage {
|
||||
|
|
@ -147,12 +147,53 @@ namespace timeline {
|
|||
|
||||
class ClipData
|
||||
: public ClipDelegate
|
||||
, util::NonCopyable
|
||||
, util::MoveOnly
|
||||
{
|
||||
TimeVar start_;
|
||||
TimeVar len_;
|
||||
|
||||
/* === Partial implementation of ClipDelegate === */
|
||||
|
||||
Time
|
||||
getStartTime() const override
|
||||
{
|
||||
return start_;
|
||||
}
|
||||
|
||||
Duration
|
||||
getLen() const override
|
||||
{
|
||||
return Duration{this->len_};
|
||||
}
|
||||
|
||||
void
|
||||
changeTiming (TimeSpan changedTimings) override
|
||||
{
|
||||
this->start_ = changedTimings.start();
|
||||
this->len_ = changedTimings.duration();
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
ClipData(TimeSpan timings =TimeSpan{Time::NEVER, Duration::NIL})
|
||||
: ClipDelegate{}
|
||||
, start_{timings.start()}
|
||||
, len_{timings.duration()}
|
||||
{ }
|
||||
|
||||
ClipData (ClipData&&) = default;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* A Clip not directly mapped into presentation,
|
||||
* yet present as entity within the timeline framework.
|
||||
*/
|
||||
class DormantClip
|
||||
: public ClipData
|
||||
{
|
||||
WidgetHook& display_;
|
||||
uString clipName_;
|
||||
TimeVar start_; /////////////////////////////////////////////////////////////////TICKET #1038 : how to handle storage of timings??
|
||||
TimeVar len_;
|
||||
|
||||
/* === Interface ClipDelegate === */
|
||||
|
||||
|
|
@ -171,7 +212,7 @@ namespace timeline {
|
|||
cuString
|
||||
getClipName() const override
|
||||
{
|
||||
return clipName_; ///////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip name/ID
|
||||
return clipName_;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -179,26 +220,7 @@ namespace timeline {
|
|||
{
|
||||
clipName_ = newName;
|
||||
}
|
||||
|
||||
|
||||
Time
|
||||
getStartTime() const override
|
||||
{
|
||||
return start_; ////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip start time
|
||||
}
|
||||
|
||||
Duration
|
||||
getLen() const override
|
||||
{
|
||||
return Duration{this->len_};
|
||||
}
|
||||
|
||||
void
|
||||
changeTiming (TimeSpan changedTimings) override
|
||||
{
|
||||
this->start_ = changedTimings.start();
|
||||
this->len_ = changedTimings.duration();
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a mere data record without actual presentation,
|
||||
|
|
@ -224,33 +246,25 @@ namespace timeline {
|
|||
|
||||
|
||||
public:
|
||||
ClipData(WidgetHook& displayAnchor)
|
||||
: ClipDelegate{}
|
||||
DormantClip(WidgetHook& displayAnchor)
|
||||
: ClipData{}
|
||||
, display_{displayAnchor}
|
||||
, clipName_{"?name?"}
|
||||
, start_{Time::NEVER}
|
||||
, len_{Duration::NIL}
|
||||
{ }
|
||||
|
||||
/** state switch ctor */
|
||||
ClipData(ClipDelegate& existing)
|
||||
: ClipDelegate{}
|
||||
DormantClip(ClipData&& existing)
|
||||
: ClipData{std::move (existing)}
|
||||
, display_{existing.getCanvas()}
|
||||
, clipName_{existing.getClipName()}
|
||||
, start_{existing.getStartTime()}
|
||||
, len_{existing.getLen()}
|
||||
{
|
||||
TODO("copy further clip presentation properties");
|
||||
}
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
class ClipWidget
|
||||
: public HookedWidget
|
||||
, public ClipDelegate
|
||||
, public ClipData
|
||||
{
|
||||
TimeVar start_; /////////////////////////////////////////////////////////////////TICKET #1038 : how to handle storage of timings??
|
||||
TimeVar len_;
|
||||
|
||||
/* === Interface ClipDelegate === */
|
||||
|
||||
|
|
@ -280,25 +294,6 @@ namespace timeline {
|
|||
this->set_label (newName);
|
||||
}
|
||||
|
||||
void
|
||||
changeTiming (TimeSpan changedTimings) override
|
||||
{
|
||||
this->start_ = changedTimings.start();
|
||||
this->len_ = changedTimings.duration();
|
||||
}
|
||||
|
||||
Time
|
||||
getStartTime() const override
|
||||
{
|
||||
return this->start_; ///////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip start time
|
||||
}
|
||||
|
||||
Duration
|
||||
getLen() const override
|
||||
{
|
||||
return Duration{this->len_};
|
||||
}
|
||||
|
||||
uint
|
||||
getVerticalOffset() const override
|
||||
{
|
||||
|
|
@ -319,23 +314,18 @@ namespace timeline {
|
|||
|
||||
|
||||
public:
|
||||
ClipWidget(WidgetHook::Pos hookPoint, Duration dur, uString clipName) /////////////////////TICKET #1038 : it's probably wrong only to pass-in the duration, beacuse we also need to retain the start point in full precision
|
||||
ClipWidget(WidgetHook::Pos hookPoint, TimeSpan timings, uString clipName)
|
||||
: HookedWidget{hookPoint, clipName}
|
||||
, ClipDelegate{}
|
||||
, start_{Time::NEVER}
|
||||
, len_{dur}
|
||||
, ClipData{timings}
|
||||
{
|
||||
show_all();
|
||||
}
|
||||
|
||||
/** state switch ctor */
|
||||
ClipWidget(ClipDelegate& existing, WidgetHook* newView)
|
||||
ClipWidget(ClipData&& existing, WidgetHook* newView)
|
||||
: HookedWidget{existing.establishHookPoint(newView), existing.getClipName()}
|
||||
, ClipDelegate{}
|
||||
, start_{existing.getStartTime()}
|
||||
, len_{existing.getLen()}
|
||||
, ClipData{std::move (existing)}
|
||||
{
|
||||
TODO("copy further clip presentation properties");
|
||||
show_all();
|
||||
}
|
||||
};
|
||||
|
|
@ -344,12 +334,15 @@ namespace timeline {
|
|||
inline ClipDelegate*
|
||||
buildDelegateFor (Mode newMode, ClipDelegate& existingDelegate, WidgetHook* newView =0)
|
||||
{
|
||||
REQUIRE (INSTANCEOF (ClipData, &existingDelegate));
|
||||
ClipData& clipData = static_cast<ClipData&> (existingDelegate);
|
||||
|
||||
switch (newMode)
|
||||
{
|
||||
{
|
||||
case HIDDEN:
|
||||
return new ClipData (existingDelegate);
|
||||
return new DormantClip (std::move (clipData));
|
||||
case INDIVIDUAL:
|
||||
return new ClipWidget (existingDelegate, newView);
|
||||
return new ClipWidget (std::move (clipData), newView);
|
||||
case SUMMARY:
|
||||
UNIMPLEMENTED ("Summary/Overview presentation style");
|
||||
}
|
||||
|
|
@ -382,9 +375,9 @@ namespace timeline {
|
|||
ClipDelegate::buildDelegate (PDelegate& manager, WidgetHook& view, optional<TimeSpan> timing)
|
||||
{
|
||||
if (timing)
|
||||
manager.reset (new ClipWidget{view.hookedAt(*timing, defaultOffsetY), timing->duration(), defaultName});
|
||||
manager.reset (new ClipWidget{view.hookedAt(*timing, defaultOffsetY), *timing, defaultName});
|
||||
else
|
||||
manager.reset (new ClipData{view});
|
||||
manager.reset (new DormantClip{view});
|
||||
|
||||
return timing? Appearance::COMPACT
|
||||
: Appearance::PENDING;
|
||||
|
|
|
|||
|
|
@ -21234,8 +21234,7 @@
|
|||
isnil (<font color="#293bcd">profile_</font>)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
<node CREATED="1611920351800" ID="ID_1666462781" MODIFIED="1611920377932" TEXT="ist bei Konstruktion == null">
|
||||
|
|
@ -21564,8 +21563,8 @@
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1582995299738" ID="ID_1571358808" MODIFIED="1582995304581" TEXT="es gibt Phasen">
|
||||
<linktarget COLOR="#6e829b" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="476;590;" ID="Arrow_ID_1458719997" SOURCE="ID_868399927" STARTARROW="None" STARTINCLINATION="292;29;"/>
|
||||
<linktarget COLOR="#96b3e9" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="259;158;" ID="Arrow_ID_1529296223" SOURCE="ID_531908394" STARTARROW="None" STARTINCLINATION="-382;24;"/>
|
||||
<linktarget COLOR="#6e829b" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="476;590;" ID="Arrow_ID_1458719997" SOURCE="ID_868399927" STARTARROW="None" STARTINCLINATION="292;29;"/>
|
||||
<node CREATED="1582995321487" ID="ID_772868413" MODIFIED="1582995337967" TEXT="weiterer Pass notwendig"/>
|
||||
<node CREATED="1582995339452" ID="ID_1832467200" MODIFIED="1582995346706" TEXT="Pass findet statt"/>
|
||||
<node CREATED="1582995372168" ID="ID_219954513" MODIFIED="1582995381674" TEXT="Größenänderungen abgesetzt"/>
|
||||
|
|
@ -21827,7 +21826,7 @@
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583677604571" ID="ID_214009767" MODIFIED="1583678064710" TEXT="brauche (vorläufige) Rückmeldung vom Clip">
|
||||
<arrowlink COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-825;-48;" ID="Arrow_ID_610185006" STARTARROW="None" STARTINCLINATION="744;47;"/>
|
||||
<arrowlink COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-975;-81;" ID="Arrow_ID_610185006" STARTARROW="None" STARTINCLINATION="744;47;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611486765168" ID="ID_62818590" MODIFIED="1611487348314" TEXT="Clip-Positionen und Ausdehnungen integrieren">
|
||||
|
|
@ -21994,8 +21993,7 @@
|
|||
noch nicht klar, welche Rolle der spielt; ich sehe ihn erst mal vor, weil er möglich ist. Denkbar wäre, daß er durch User-Interaktion entsteht, oder aber auch systematisch generiert wird, um bestimmte Arten von Clips optisch abzusetzen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1611915512327" ID="ID_1119494975" MODIFIED="1611915516836" TEXT="roh-Koordinaten">
|
||||
|
|
@ -22022,8 +22020,7 @@
|
|||
Clips dürften die häufigsten Entitäten in der Timeline-Anzeige werden. Es müssen tausende bis zehntausende Clips performant gehandhabt werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1611915849754" ID="ID_409163867" MODIFIED="1611915977254" TEXT="Daten müssen auf dem Pfad der Kontrollstruktur greifbar sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -22035,14 +22032,13 @@
|
|||
die Kontrollstruktur ist bereits gefährlich komplex; spezielle "Schleifen" durch die Innereien eigentlich nicht involvierter Entitäten allein aus Performance-Gründen sollten vermieden werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611915390832" ID="ID_1488484275" MODIFIED="1611916022512" TEXT="Clips müssen partizipieren">
|
||||
<linktarget COLOR="#884baa" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-838;79;" ID="Arrow_ID_1236233773" SOURCE="ID_1248959265" STARTARROW="None" STARTINCLINATION="459;7;"/>
|
||||
<linktarget COLOR="#e33b64" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-14;-84;" ID="Arrow_ID_1820616086" SOURCE="ID_1829463115" STARTARROW="None" STARTINCLINATION="-70;14;"/>
|
||||
<linktarget COLOR="#884baa" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-838;79;" ID="Arrow_ID_1236233773" SOURCE="ID_1248959265" STARTARROW="None" STARTINCLINATION="459;7;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1611916037617" ID="ID_1961599171" MODIFIED="1611916053240" TEXT="weil die Layout-Koordinaten erneut aufgebaut werden müssen"/>
|
||||
<node CREATED="1611916054695" ID="ID_178492743" MODIFIED="1611916077488" TEXT="und nur die logischen Koordinaten gespeichert sein sollten, und zwar im Clip"/>
|
||||
|
|
@ -22074,8 +22070,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -22097,8 +22092,7 @@
|
|||
...ich hab ja nicht umsonst in der theoretischen Analyse herausgefunden, daß dieses Schema auf ein Phasen-Modell hinausläuft; die Hoffnung wäre höchstens gewesen, daß in der Praxis der 3.Pass derart <i>degeneriert,</i>  daß man ihn in den 1.Pass einfalten kann
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -22120,6 +22114,10 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611925067536" ID="ID_1433993572" MODIFIED="1611925081855" TEXT="letztlich die CanvasHook::move()-Funktion nutzen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611953633107" ID="ID_866053960" MODIFIED="1611957509515" TEXT="⟹ Thema speichern der Clip-Daten">
|
||||
<arrowlink COLOR="#70365f" DESTINATION="ID_814561596" ENDARROW="Default" ENDINCLINATION="-427;-565;" ID="Arrow_ID_1226103397" STARTARROW="None" STARTINCLINATION="805;58;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -28284,7 +28282,7 @@
|
|||
</node>
|
||||
<node CREATED="1583678317690" ID="ID_121923998" MODIFIED="1583678324853" TEXT="Zugang zum aktiven Widget">
|
||||
<node CREATED="1583678326249" ID="ID_682261661" MODIFIED="1583678359510" TEXT="Zusammenhang mit dem Anzeigestil">
|
||||
<arrowlink COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-65;-299;" ID="Arrow_ID_49809880" STARTARROW="None" STARTINCLINATION="-439;32;"/>
|
||||
<arrowlink COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-144;-446;" ID="Arrow_ID_49809880" STARTARROW="None" STARTINCLINATION="-439;32;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1583678964323" ID="ID_1817011421" MODIFIED="1583678990571" TEXT="das Slave-Widget existiert nicht zwansläufig"/>
|
||||
<node CREATED="1583678991615" ID="ID_498577144" MODIFIED="1583679009289" TEXT="das Slave-Widget kann jederzeit wechseln">
|
||||
|
|
@ -28845,24 +28843,26 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538938500754" ID="ID_715902958" MODIFIED="1557498707231" TEXT="Implementierung">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_834517953" MODIFIED="1611914851717" TEXT="ClipPresenter">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_834517953" MODIFIED="1611957469012" TEXT="ClipPresenter">
|
||||
<linktarget COLOR="#fec680" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_483670351" SOURCE="ID_1570849604" STARTARROW="None" STARTINCLINATION="407;0;"/>
|
||||
<linktarget COLOR="#d03a17" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-144;-652;" ID="Arrow_ID_1292343123" SOURCE="ID_867069834" STARTARROW="None" STARTINCLINATION="403;48;"/>
|
||||
<linktarget COLOR="#a34086" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-47;-76;" ID="Arrow_ID_937303144" SOURCE="ID_359464754" STARTARROW="None" STARTINCLINATION="-228;43;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1568579757736" ID="ID_1709509664" MODIFIED="1568579767971" TEXT="Bedeutung/Aufgaben">
|
||||
<node CREATED="1568579769886" ID="ID_512050563" MODIFIED="1568579787568" TEXT="vermittelt zwischen Modell und Anzeigesteuerung"/>
|
||||
<node CREATED="1568579788436" ID="ID_339334267" MODIFIED="1568579815948" TEXT="ClipPresenter ist "der Clip" im Bezug auf Diff und UI-Bus"/>
|
||||
<node CREATED="1568579817151" ID="ID_1136229909" MODIFIED="1568579839085" TEXT="ClipPresenter betreibt das tatsächliche ClipWidget als Slave"/>
|
||||
<node CREATED="1568579939879" ID="ID_685143843" MODIFIED="1611914607030" TEXT="ClipPresenter kennt einen Display-Frame für die Anzeige">
|
||||
<arrowlink COLOR="#598cc8" DESTINATION="ID_633007604" ENDARROW="Default" ENDINCLINATION="-292;0;" ID="Arrow_ID_290509509" STARTARROW="None" STARTINCLINATION="765;42;"/>
|
||||
<arrowlink COLOR="#3f67c9" DESTINATION="ID_1043075543" ENDARROW="Default" ENDINCLINATION="210;7;" ID="Arrow_ID_678826417" STARTARROW="None" STARTINCLINATION="199;11;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1480741362389" ID="ID_328415412" MODIFIED="1557498707230" TEXT="ClipWidget">
|
||||
<node CREATED="1480741370347" ID="ID_1275685315" MODIFIED="1557498707230" TEXT="erzeugen">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914449590" ID="ID_1043075543" MODIFIED="1611914503477" TEXT="in die Track/Display-Struktur einhängen">
|
||||
<arrowlink COLOR="#fd654f" DESTINATION="ID_1270677756" ENDARROW="Default" ENDINCLINATION="-300;38;" ID="Arrow_ID_278984117" STARTARROW="None" STARTINCLINATION="131;-344;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<linktarget COLOR="#3f67c9" DESTINATION="ID_1043075543" ENDARROW="Default" ENDINCLINATION="210;7;" ID="Arrow_ID_678826417" SOURCE="ID_685143843" STARTARROW="None" STARTINCLINATION="199;11;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -28910,11 +28910,52 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611953921264" ID="ID_1906679490" MODIFIED="1611957488186" TEXT="Clip-Delegate">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#435e98" CREATED="1611953928847" ID="ID_1673338897" MODIFIED="1611957494335" TEXT="zunächst einmal ein PImpl">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1611953939576" ID="ID_293462928" MODIFIED="1611953949625" TEXT="vom ClipPresenter her gesehen ein Interface"/>
|
||||
<node CREATED="1611954093314" ID="ID_962423794" MODIFIED="1611954107569" TEXT="erlaubt Umschalten des Anzeige-Modus"/>
|
||||
<node CREATED="1611953963818" ID="ID_1698628993" MODIFIED="1611953976829" TEXT="hängt als Slave am ClipPresenter"/>
|
||||
</node>
|
||||
<node CREATED="1611954113609" ID="ID_814561596" MODIFIED="1611957509515" TEXT="Clip-Daten-Storage">
|
||||
<linktarget COLOR="#70365f" DESTINATION="ID_814561596" ENDARROW="Default" ENDINCLINATION="-427;-565;" ID="Arrow_ID_1226103397" SOURCE="ID_866053960" STARTARROW="None" STARTINCLINATION="805;58;"/>
|
||||
<node CREATED="1611954160033" ID="ID_327901028" MODIFIED="1611954175455" TEXT="hängt stark vom Nutzungsmuster ab">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611954178655" ID="ID_895957324" MODIFIED="1611957398393" TEXT="und dieses kennen wir noch nicht">
|
||||
<icon BUILTIN="closed"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1611954223338" ID="ID_184379518" MODIFIED="1611954237793" TEXT="Daten-Duplikation und häufiges Kopieren vermeiden">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1611954240824" ID="ID_1048238324" MODIFIED="1611957379318" TEXT="1.Entwurf: Datencontainer als Basisklasse">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1611954259205" ID="ID_596924875" MODIFIED="1611954280703" TEXT="damit gibt es dann immer nur eine Allokation"/>
|
||||
<node COLOR="#338800" CREATED="1611954666544" ID="ID_1268124709" MODIFIED="1611957366432" TEXT="Datencontainer-Klasse moveable machen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1611954396933" ID="ID_1771085068" MODIFIED="1611954498300" TEXT="Alternative wäre: Datencontainer per Pointer anhängen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
diese Alternative würde dann attraktiv, wenn es häufig vorkommt, daß zwischen einem Clip-Widget und einer anderen Repräsentation des ClipDelegate dynamisch hin- und hergeschaltet werden muß. Weil man dann den relativ schwergewichtigen Datencontainer einfach umhängen könnte
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_1240926804" MODIFIED="1557498707230" STYLE="fork" TEXT="Clip-Anzeige">
|
||||
<linktarget COLOR="#fec680" DESTINATION="ID_1240926804" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_435369727" SOURCE="ID_1131206858" STARTARROW="None" STARTINCLINATION="407;0;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1541095839946" ID="ID_471098853" MODIFIED="1557498707231" TEXT="Anzeigestil">
|
||||
<linktarget COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-65;-299;" ID="Arrow_ID_49809880" SOURCE="ID_682261661" STARTARROW="None" STARTINCLINATION="-439;32;"/>
|
||||
<linktarget COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-144;-446;" ID="Arrow_ID_49809880" SOURCE="ID_682261661" STARTARROW="None" STARTINCLINATION="-439;32;"/>
|
||||
<node CREATED="1538940683586" ID="ID_1478100178" MODIFIED="1557498707231" TEXT="placeholder"/>
|
||||
<node CREATED="1538940686978" ID="ID_1747675588" MODIFIED="1557498707231" TEXT="abridged"/>
|
||||
<node CREATED="1538940690154" ID="ID_1132412756" MODIFIED="1557498707231" TEXT="collapsed"/>
|
||||
|
|
@ -29147,7 +29188,7 @@
|
|||
</node>
|
||||
<node CREATED="1583678040736" ID="ID_1805643410" MODIFIED="1583678050738" TEXT="Umsetzung">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1583677631958" ID="ID_811510338" MODIFIED="1611479264977" TEXT="vorläufige Clip-Repräsentation">
|
||||
<linktarget COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-825;-48;" ID="Arrow_ID_610185006" SOURCE="ID_214009767" STARTARROW="None" STARTINCLINATION="744;47;"/>
|
||||
<linktarget COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-975;-81;" ID="Arrow_ID_610185006" SOURCE="ID_214009767" STARTARROW="None" STARTINCLINATION="744;47;"/>
|
||||
<linktarget COLOR="#f2d4e1" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-516;-1779;" ID="Arrow_ID_1877167801" SOURCE="ID_1825783827" STARTARROW="None" STARTINCLINATION="481;25;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1583678069596" ID="ID_749021089" MODIFIED="1583678189115" TEXT="Stufe-1">
|
||||
|
|
|
|||
Loading…
Reference in a new issue