From 904c82bba44aa9f087f07ea0dd8b6db4e64e3280 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 19 Jun 2007 09:22:52 +0200 Subject: [PATCH] Some notes to the wiki, including first verion of the UML diagrams --- uml/renderengine/cin3/128005 | 2 +- uml/renderengine/cin3/128133.diagram | 66 +++---- uml/renderengine/cin3/128261 | 2 +- uml/renderengine/cin3/128261.diagram | 28 +-- uml/renderengine/cin3/128389 | 3 +- uml/renderengine/cin3/128389.diagram | 94 ++++----- uml/renderengine/cin3/128517.diagram | 18 +- uml/renderengine/cin3/128901 | 2 +- uml/renderengine/cin3/129029 | 4 +- uml/renderengine/cin3/5.session | 21 +- uml/renderengine/cin3/cin3.prj | 4 +- wiki/ichthyo-draft.html | 40 +++- wiki/renderengine/class100.html | 22 +++ wiki/renderengine/class101.html | 22 +++ wiki/renderengine/class102.html | 22 +++ wiki/renderengine/class103.html | 24 +++ wiki/renderengine/class105.html | 22 +++ wiki/renderengine/class106.html | 22 +++ wiki/renderengine/class107.html | 22 +++ wiki/renderengine/class108.html | 22 +++ wiki/renderengine/class112.html | 25 +++ wiki/renderengine/class20.html | 24 +++ wiki/renderengine/class23.html | 25 +++ wiki/renderengine/class26.html | 27 +++ wiki/renderengine/class31.html | 20 ++ wiki/renderengine/class32.html | 24 +++ wiki/renderengine/class34.html | 26 +++ wiki/renderengine/class37.html | 23 +++ wiki/renderengine/class38.html | 22 +++ wiki/renderengine/class39.html | 22 +++ wiki/renderengine/class40.html | 23 +++ wiki/renderengine/class41.html | 23 +++ wiki/renderengine/class42.html | 26 +++ wiki/renderengine/class45.html | 24 +++ wiki/renderengine/class46.html | 22 +++ wiki/renderengine/class47.html | 29 +++ wiki/renderengine/class51.html | 22 +++ wiki/renderengine/class52.html | 23 +++ wiki/renderengine/class53.html | 23 +++ wiki/renderengine/class57.html | 24 +++ wiki/renderengine/class59.html | 24 +++ wiki/renderengine/class61.html | 24 +++ wiki/renderengine/class63.html | 24 +++ wiki/renderengine/class65.html | 24 +++ wiki/renderengine/class70.html | 20 ++ wiki/renderengine/class71.html | 24 +++ wiki/renderengine/class73.html | 24 +++ wiki/renderengine/class86.html | 25 +++ wiki/renderengine/class89.html | 24 +++ wiki/renderengine/class91.html | 22 +++ wiki/renderengine/class92.html | 21 ++ wiki/renderengine/class93.html | 23 +++ wiki/renderengine/class94.html | 23 +++ wiki/renderengine/class95.html | 22 +++ wiki/renderengine/class96.html | 22 +++ wiki/renderengine/class97.html | 22 +++ wiki/renderengine/class98.html | 22 +++ wiki/renderengine/class99.html | 22 +++ wiki/renderengine/classdiagrams.html | 24 +++ wiki/renderengine/classes.html | 67 +++++++ wiki/renderengine/classes_list.html | 70 +++++++ wiki/renderengine/collaborationdiagrams.html | 22 +++ wiki/renderengine/componentdiagrams.html | 22 +++ wiki/renderengine/deploymentdiagrams.html | 22 +++ wiki/renderengine/fig1.png | Bin 0 -> 37880 bytes wiki/renderengine/fig1.svg | 195 +++++++++++++++++++ wiki/renderengine/fig2.png | Bin 0 -> 47828 bytes wiki/renderengine/fig3.png | Bin 0 -> 32139 bytes wiki/renderengine/fig4.png | Bin 0 -> 78 bytes wiki/renderengine/fig5.png | Bin 0 -> 36430 bytes wiki/renderengine/fig6.png | Bin 0 -> 26446 bytes wiki/renderengine/index-withframe.html | 19 ++ wiki/renderengine/index.html | 188 ++++++++++++++++++ wiki/renderengine/index_65.html | 32 +++ wiki/renderengine/index_66.html | 31 +++ wiki/renderengine/index_67.html | 36 ++++ wiki/renderengine/index_68.html | 25 +++ wiki/renderengine/index_69.html | 31 +++ wiki/renderengine/index_70.html | 26 +++ wiki/renderengine/index_71.html | 30 +++ wiki/renderengine/index_72.html | 23 +++ wiki/renderengine/index_76.html | 24 +++ wiki/renderengine/index_77.html | 27 +++ wiki/renderengine/index_79.html | 26 +++ wiki/renderengine/index_80.html | 34 ++++ wiki/renderengine/index_82.html | 31 +++ wiki/renderengine/index_83.html | 32 +++ wiki/renderengine/index_84.html | 31 +++ wiki/renderengine/index_86.html | 25 +++ wiki/renderengine/index_87.html | 23 +++ wiki/renderengine/navig.html | 17 ++ wiki/renderengine/packages.html | 31 +++ wiki/renderengine/public_operations.html | 34 ++++ wiki/renderengine/style.css | 30 +++ 94 files changed, 2454 insertions(+), 125 deletions(-) create mode 100644 wiki/renderengine/class100.html create mode 100644 wiki/renderengine/class101.html create mode 100644 wiki/renderengine/class102.html create mode 100644 wiki/renderengine/class103.html create mode 100644 wiki/renderengine/class105.html create mode 100644 wiki/renderengine/class106.html create mode 100644 wiki/renderengine/class107.html create mode 100644 wiki/renderengine/class108.html create mode 100644 wiki/renderengine/class112.html create mode 100644 wiki/renderengine/class20.html create mode 100644 wiki/renderengine/class23.html create mode 100644 wiki/renderengine/class26.html create mode 100644 wiki/renderengine/class31.html create mode 100644 wiki/renderengine/class32.html create mode 100644 wiki/renderengine/class34.html create mode 100644 wiki/renderengine/class37.html create mode 100644 wiki/renderengine/class38.html create mode 100644 wiki/renderengine/class39.html create mode 100644 wiki/renderengine/class40.html create mode 100644 wiki/renderengine/class41.html create mode 100644 wiki/renderengine/class42.html create mode 100644 wiki/renderengine/class45.html create mode 100644 wiki/renderengine/class46.html create mode 100644 wiki/renderengine/class47.html create mode 100644 wiki/renderengine/class51.html create mode 100644 wiki/renderengine/class52.html create mode 100644 wiki/renderengine/class53.html create mode 100644 wiki/renderengine/class57.html create mode 100644 wiki/renderengine/class59.html create mode 100644 wiki/renderengine/class61.html create mode 100644 wiki/renderengine/class63.html create mode 100644 wiki/renderengine/class65.html create mode 100644 wiki/renderengine/class70.html create mode 100644 wiki/renderengine/class71.html create mode 100644 wiki/renderengine/class73.html create mode 100644 wiki/renderengine/class86.html create mode 100644 wiki/renderengine/class89.html create mode 100644 wiki/renderengine/class91.html create mode 100644 wiki/renderengine/class92.html create mode 100644 wiki/renderengine/class93.html create mode 100644 wiki/renderengine/class94.html create mode 100644 wiki/renderengine/class95.html create mode 100644 wiki/renderengine/class96.html create mode 100644 wiki/renderengine/class97.html create mode 100644 wiki/renderengine/class98.html create mode 100644 wiki/renderengine/class99.html create mode 100644 wiki/renderengine/classdiagrams.html create mode 100644 wiki/renderengine/classes.html create mode 100644 wiki/renderengine/classes_list.html create mode 100644 wiki/renderengine/collaborationdiagrams.html create mode 100644 wiki/renderengine/componentdiagrams.html create mode 100644 wiki/renderengine/deploymentdiagrams.html create mode 100644 wiki/renderengine/fig1.png create mode 100644 wiki/renderengine/fig1.svg create mode 100644 wiki/renderengine/fig2.png create mode 100644 wiki/renderengine/fig3.png create mode 100644 wiki/renderengine/fig4.png create mode 100644 wiki/renderengine/fig5.png create mode 100644 wiki/renderengine/fig6.png create mode 100644 wiki/renderengine/index-withframe.html create mode 100644 wiki/renderengine/index.html create mode 100644 wiki/renderengine/index_65.html create mode 100644 wiki/renderengine/index_66.html create mode 100644 wiki/renderengine/index_67.html create mode 100644 wiki/renderengine/index_68.html create mode 100644 wiki/renderengine/index_69.html create mode 100644 wiki/renderengine/index_70.html create mode 100644 wiki/renderengine/index_71.html create mode 100644 wiki/renderengine/index_72.html create mode 100644 wiki/renderengine/index_76.html create mode 100644 wiki/renderengine/index_77.html create mode 100644 wiki/renderengine/index_79.html create mode 100644 wiki/renderengine/index_80.html create mode 100644 wiki/renderengine/index_82.html create mode 100644 wiki/renderengine/index_83.html create mode 100644 wiki/renderengine/index_84.html create mode 100644 wiki/renderengine/index_86.html create mode 100644 wiki/renderengine/index_87.html create mode 100644 wiki/renderengine/navig.html create mode 100644 wiki/renderengine/packages.html create mode 100644 wiki/renderengine/public_operations.html create mode 100644 wiki/renderengine/style.css diff --git a/uml/renderengine/cin3/128005 b/uml/renderengine/cin3/128005 index e7c1f8e2e..48da8f34d 100644 --- a/uml/renderengine/cin3/128005 +++ b/uml/renderengine/cin3/128005 @@ -1,6 +1,6 @@ format 38 "design" // design - revision 3 + revision 4 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/renderengine/cin3/128133.diagram b/uml/renderengine/cin3/128133.diagram index 440e77245..d0d705143 100644 --- a/uml/renderengine/cin3/128133.diagram +++ b/uml/renderengine/cin3/128133.diagram @@ -2,7 +2,7 @@ format 38 classcanvas 128005 class_ref 128005 // Session draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 27 609 2000 + xyz 29 609 2000 end classcanvas 128133 class_ref 128133 // EDL draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -10,7 +10,7 @@ classcanvas 128133 class_ref 128133 // EDL end classcanvas 128261 class_ref 128261 // Fixture draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 196 894 2000 + xyz 202 895 2000 end classcanvas 129029 class_ref 128389 // Track draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -18,11 +18,11 @@ classcanvas 129029 class_ref 128389 // Track end classcanvas 129413 class_ref 128517 // MObject draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 309 136 2000 + xyz 313 137 2000 end classcanvas 129669 class_ref 128645 // Placement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 570 128 2000 + xyz 574 129 2000 end classcanvas 129925 class_ref 128389 // Track draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -30,7 +30,7 @@ classcanvas 129925 class_ref 128389 // Track end classcanvas 130949 class_ref 128773 // AbstractMO draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 314 258 2000 + xyz 317 258 2000 end classcanvas 131461 class_ref 128901 // Clip draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -38,7 +38,7 @@ classcanvas 131461 class_ref 128901 // Clip end classcanvas 131717 class_ref 129029 // Effect draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 335 368 2000 + xyz 336 368 2000 end classcanvas 131973 class_ref 129157 // 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_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 @@ -46,15 +46,15 @@ classcanvas 131973 class_ref 129157 // Meta end classcanvas 132229 class_ref 129285 // DirectPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 659 373 2000 + xyz 664 373 2000 end classcanvas 132869 class_ref 129413 // RelativePlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 477 360 2000 + xyz 483 361 2000 end classcanvas 134149 class_ref 129541 // Allocation draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 589 373 2000 + xyz 590 373 2000 end classcanvas 134405 class_ref 129669 // Label draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -62,71 +62,71 @@ classcanvas 134405 class_ref 129669 // Label end classcanvas 135429 class_ref 129797 // ExplicitePlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 652 231 2004 + xyz 657 233 2004 end classcanvas 135813 class_ref 129797 // ExplicitePlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 458 805 2000 + xyz 463 807 2000 end classcanvas 136581 class_ref 129925 // Auto draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 xyz 382 483 2005 end note 136837 "Placement \"locates\" a Media Object" - xyzwh 375 87 3005 207 36 + xyzwh 368 83 3005 207 36 textcanvas 136965 "the Timeline is a list of placements reduced to absolute coordinates (time, track)" - xyzwh 451 912 2000 121 90 + xyzwh 464 925 2000 121 90 textcanvas 137093 "Fixture is the actual assembly of various Media Objects ready to be performed" - xyzwh 130 959 2000 147 108 + xyzwh 39 909 2000 147 108 classcanvas 137221 class_ref 130053 // Wish draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 xyz 573 485 2000 end classcanvas 137349 class_ref 130181 // Constraint draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 621 485 2000 + xyz 623 485 2000 end relationcanvas 128389 relation_ref 128005 // geometry VH - from ref 128005 z 1999 to point 52 626 - line 136453 z 1999 stereotype "<>" xyz 139 629 3000 to ref 128133 + from ref 128005 z 1999 to point 54 626 + line 136453 z 1999 stereotype "<>" xyz 126 606 3000 to ref 128133 role_a_pos 201 604 3000 no_role_b multiplicity_a_pos 205 637 3000 no_multiplicity_b relationcanvas 128517 relation_ref 128133 // from ref 128005 z 1999 to ref 128261 - role_a_pos 235 869 3000 no_role_b - multiplicity_a_pos 209 869 3000 no_multiplicity_b + role_a_pos 240 870 3000 no_role_b + multiplicity_a_pos 214 870 3000 no_multiplicity_b relationcanvas 128645 relation_ref 128261 // geometry VHr - from ref 128261 z 1999 to point 252 930 + from ref 128261 z 1999 to point 252 931 line 128901 z 1999 to ref 128133 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 129157 relation_ref 128389 // geometry HV - from ref 128133 z 1999 stereotype "<>" xyz 283 628 3000 to point 326 626 + from ref 128133 z 1999 stereotype "<>" xyz 286 629 3000 to point 326 626 line 129285 z 1999 to ref 129029 role_a_pos 338 687 3000 no_role_b multiplicity_a_pos 314 687 3000 no_multiplicity_b relationcanvas 129797 relation_ref 128645 // from ref 129413 z 1999 to ref 129669 - role_a_pos 509 143 3000 role_b_pos 397 143 3000 - multiplicity_a_pos 553 176 3000 multiplicity_b_pos 397 176 3000 + role_a_pos 513 144 3000 role_b_pos 401 144 3000 + multiplicity_a_pos 557 177 3000 multiplicity_b_pos 401 177 3000 relationcanvas 130181 relation_ref 129029 // geometry HV - from ref 128261 z 1999 stereotype "<>" xyz 311 933 3000 to point 339 930 + from ref 128261 z 1999 stereotype "<>" xyz 314 935 3000 to point 339 931 line 130565 z 1999 to ref 129925 role_a_pos 351 980 3000 no_role_b multiplicity_a_pos 315 980 3000 no_multiplicity_b relationcanvas 130821 relation_ref 128517 // geometry VH - from ref 128133 z 1999 stereotype "<>" xyz 228 565 3000 to point 252 166 + from ref 128133 z 1999 stereotype "<>" xyz 258 548 3000 to point 252 167 line 132357 z 1999 to ref 129413 - role_a_pos 276 144 3000 no_role_b - multiplicity_a_pos 294 177 3000 no_multiplicity_b + role_a_pos 280 145 3000 no_role_b + multiplicity_a_pos 298 178 3000 no_multiplicity_b relationcanvas 131077 relation_ref 129285 // geometry VHr - from ref 130949 z 1999 to point 346 277 + from ref 130949 z 1999 to point 350 277 line 131333 z 1999 to ref 129413 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -149,8 +149,8 @@ relationcanvas 132485 relation_ref 129797 // relationcanvas 132997 relation_ref 129925 // from ref 132869 z 1999 to point 486 247 line 133893 z 1999 to ref 129413 - role_a_pos 397 171 3000 no_role_b - multiplicity_a_pos 397 204 3000 multiplicity_b_pos 503 335 3000 + role_a_pos 427 197 3000 no_role_b + multiplicity_a_pos 401 205 3000 multiplicity_b_pos 507 336 3000 relationcanvas 134533 relation_ref 130309 // from ref 134405 z 1999 to ref 131973 no_role_a no_role_b @@ -172,9 +172,9 @@ relationcanvas 135685 relation_ref 130949 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135941 relation_ref 131077 // - from ref 128261 z 1999 stereotype "<>" xyz 368 889 3000 to ref 135813 - role_a_pos 411 842 3000 no_role_b - multiplicity_a_pos 443 875 3000 no_multiplicity_b + from ref 128261 z 1999 stereotype "<>" xyz 371 890 3000 to ref 135813 + role_a_pos 416 844 3000 no_role_b + multiplicity_a_pos 448 877 3000 no_multiplicity_b relationcanvas 136069 relation_ref 131205 // from ref 135813 z 1999 to point 433 897 line 136197 z 1999 to ref 129925 diff --git a/uml/renderengine/cin3/128261 b/uml/renderengine/cin3/128261 index fbf6d9bad..c807c30fb 100644 --- a/uml/renderengine/cin3/128261 +++ b/uml/renderengine/cin3/128261 @@ -1,6 +1,6 @@ format 38 "MObject" // MObject - revision 3 + revision 5 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/renderengine/cin3/128261.diagram b/uml/renderengine/cin3/128261.diagram index 15094165e..d86a21a4f 100644 --- a/uml/renderengine/cin3/128261.diagram +++ b/uml/renderengine/cin3/128261.diagram @@ -28,36 +28,36 @@ deploymentnodecanvas 130181 deploymentnode_ref 128389 // proc deploymentnodecanvas 130309 deploymentnode_ref 128389 // proc xyzwh 424 430 2010 97 69 deploymentnodecanvas 130437 deploymentnode_ref 128517 // pnode - xyzwh 202 507 2005 51 35 + xyzwh 202 507 2005 56 36 deploymentnodecanvas 130565 deploymentnode_ref 128517 // pnode - xyzwh 201 546 2005 51 35 + xyzwh 201 546 2005 56 36 deploymentnodecanvas 130693 deploymentnode_ref 128517 // pnode - xyzwh 201 585 2005 51 35 + xyzwh 201 585 2005 56 36 deploymentnodecanvas 130821 deploymentnode_ref 128517 // pnode - xyzwh 318 505 2005 51 35 + xyzwh 318 505 2005 56 36 deploymentnodecanvas 130949 deploymentnode_ref 128389 // proc xyzwh 294 433 2010 97 69 deploymentnodecanvas 131077 deploymentnode_ref 128517 // pnode - xyzwh 318 544 2005 51 35 + xyzwh 318 544 2005 56 36 deploymentnodecanvas 131205 deploymentnode_ref 128517 // pnode - xyzwh 317 584 2005 51 35 + xyzwh 317 584 2005 56 36 deploymentnodecanvas 133125 deploymentnode_ref 128645 // mStream - xyzwh 309 800 2010 65 35 + xyzwh 309 800 2010 70 36 deploymentnodecanvas 134021 deploymentnode_ref 128517 // pnode - xyzwh 442 503 2005 51 35 + xyzwh 442 503 2005 56 36 deploymentnodecanvas 134149 deploymentnode_ref 128517 // pnode - xyzwh 411 548 2005 51 35 + xyzwh 411 548 2005 56 36 deploymentnodecanvas 134277 deploymentnode_ref 128517 // pnode - xyzwh 466 548 2005 51 35 + xyzwh 466 548 2005 56 36 deploymentnodecanvas 134405 deploymentnode_ref 128517 // pnode - xyzwh 467 586 2005 51 35 + xyzwh 467 586 2005 56 36 componentcanvas 135045 component_ref 129285 // RenderPathManager draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 505 222 2000 155 63 + xyzwh 505 222 2000 165 65 deploymentnodecanvas 136069 deploymentnode_ref 128773 // State xyzwh 703 226 2000 83 52 textcanvas 136325 "Render Engine carries out the actual processing by pulling output from the aprropriate processor " - xyzwh 605 382 2000 135 89 + xyzwh 615 363 2000 135 89 note 136453 "Input for Builder" xyzwh 125 83 2005 104 36 note 136581 "Output of Builder" @@ -68,7 +68,7 @@ packagecanvas 136837 package_ref 129029 // Controller xyzwh 486 68 1994 326 228 textcanvas 136965 "Builder is instructed by Controller and transforms given timeline into a Render Engine, i.e.a network of processing nodes" - xyzwh 323 199 2005 160 101 + xyzwh 326 196 2005 160 101 simplerelationcanvas 128773 simplerelation_ref 128133 from ref 128517 z 1999 to ref 128645 line 129925 ---- diff --git a/uml/renderengine/cin3/128389 b/uml/renderengine/cin3/128389 index af729107e..ab4598401 100644 --- a/uml/renderengine/cin3/128389 +++ b/uml/renderengine/cin3/128389 @@ -1,6 +1,6 @@ format 38 "RenderEngine" // RenderEngine - revision 2 + revision 4 modified_by 5 "hiv" // class settings //class diagram settings @@ -164,7 +164,6 @@ ${inlines} classrelation_ref 132869 // b multiplicity "" parent class_ref 131717 // ProcNode end - end class 131717 "ProcNode" diff --git a/uml/renderengine/cin3/128389.diagram b/uml/renderengine/cin3/128389.diagram index a72f4c873..501e7fe3c 100644 --- a/uml/renderengine/cin3/128389.diagram +++ b/uml/renderengine/cin3/128389.diagram @@ -2,23 +2,23 @@ format 38 classcanvas 128005 class_ref 131333 // RenderEngine draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 172 324 2000 + xyz 175 325 2000 end classcanvas 128133 class_ref 131461 // Processor draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 272 182 2000 + xyz 276 182 2000 end classcanvas 128389 class_ref 131589 // ExitNode draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 415 444 2000 + xyz 417 444 2000 end classcanvas 128517 class_ref 131717 // ProcNode draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 468 263 2000 + xyz 472 264 2000 end classcanvas 129029 class_ref 131845 // Trafo draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 497 443 2000 + xyz 496 444 2000 end classcanvas 129157 class_ref 131973 // Link draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -30,7 +30,7 @@ classcanvas 129285 class_ref 132101 // Hub end classcanvas 129413 class_ref 132229 // Projector draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 415 561 2000 + xyz 417 561 2000 end classcanvas 129541 class_ref 132357 // Mask draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -38,82 +38,82 @@ classcanvas 129541 class_ref 132357 // Mask end classcanvas 129669 class_ref 132485 // PluginAdapter draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 537 561 2000 + xyz 539 561 2000 end classcanvas 129797 class_ref 132613 // OpenGLPipe draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 683 531 2000 + xyz 684 531 2000 end classcanvas 132229 class_ref 132741 // StateProxy draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 32 373 2000 + xyz 36 374 2000 end classcanvas 132997 class_ref 132869 // ARender draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 29 511 2000 + xyz 31 511 2000 end classcanvas 133125 class_ref 132997 // VRender draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 107 511 2000 + xyz 110 511 2000 end classcanvas 133253 class_ref 133125 // GLRender draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 173 511 2000 + xyz 175 511 2000 end classcanvas 133765 class_ref 133253 // Frame draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 274 611 2000 + xyz 278 612 2000 end classcanvas 133893 class_ref 133381 // AFrame draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 225 737 2000 + xyz 228 737 2000 end classcanvas 134021 class_ref 133509 // VFrame draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 287 738 2000 + xyz 291 737 2000 end classcanvas 134149 class_ref 133637 // GLBuf draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 359 737 2000 + xyz 360 737 2000 end classcanvas 137221 class_ref 133765 // Source draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 739 444 2000 + xyz 741 444 2000 end relationcanvas 128261 relation_ref 131845 // - from ref 128005 z 1999 to point 212 200 + from ref 128005 z 1999 to point 216 200 line 137733 z 1999 to ref 128133 - role_a_pos 180 178 3000 no_role_b - multiplicity_a_pos 245 211 3000 multiplicity_b_pos 198 299 3000 + role_a_pos 184 178 3000 no_role_b + multiplicity_a_pos 249 211 3000 multiplicity_b_pos 202 300 3000 relationcanvas 128901 relation_ref 131973 // - from ref 128133 z 1999 stereotype "<>" xyz 346 333 3000 to ref 128389 - role_a_pos 439 419 3000 no_role_b - multiplicity_a_pos 413 419 3000 no_multiplicity_b + from ref 128133 z 1999 stereotype "<>" xyz 350 334 3000 to ref 128389 + role_a_pos 441 419 3000 no_role_b + multiplicity_a_pos 415 419 3000 no_multiplicity_b relationcanvas 129925 relation_ref 132101 // geometry VHV - from ref 128389 z 1999 to point 443 383 - line 130693 z 1999 to point 505 383 + from ref 128389 z 1999 to point 445 384 + line 130693 z 1999 to point 509 384 line 130821 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 130053 relation_ref 132229 // geometry VHV - from ref 129029 z 1999 to point 517 383 - line 130949 z 1999 to point 505 383 + from ref 129029 z 1999 to point 516 384 + line 130949 z 1999 to point 509 384 line 131077 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 130181 relation_ref 132357 // geometry VHV - from ref 129285 z 1999 to point 613 383 - line 131205 z 1999 to point 505 383 + from ref 129285 z 1999 to point 613 384 + line 131205 z 1999 to point 509 384 line 131333 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 130309 relation_ref 132485 // geometry VHV - from ref 129157 z 1999 to point 668 383 - line 131461 z 1999 to point 505 383 + from ref 129157 z 1999 to point 668 384 + line 131461 z 1999 to point 509 384 line 131589 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -135,36 +135,36 @@ relationcanvas 132101 relation_ref 132997 // no_multiplicity_a no_multiplicity_b relationcanvas 133381 relation_ref 133509 // geometry VHV - from ref 132997 z 1999 to point 56 472 - line 134277 z 1999 to point 69 472 + from ref 132997 z 1999 to point 58 472 + line 134277 z 1999 to point 73 472 line 134405 z 1999 to ref 132229 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 133509 relation_ref 133637 // geometry VHV - from ref 133125 z 1999 to point 133 472 - line 134533 z 1999 to point 69 472 + from ref 133125 z 1999 to point 136 472 + line 134533 z 1999 to point 73 472 line 134661 z 1999 to ref 132229 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 133637 relation_ref 133765 // geometry VHV - from ref 133253 z 1999 to point 204 472 - line 134789 z 1999 to point 69 472 + from ref 133253 z 1999 to point 206 472 + line 134789 z 1999 to point 73 472 line 134917 z 1999 to ref 132229 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135045 relation_ref 133893 // geometry VHV - from ref 133893 z 1999 to point 249 704 - line 135557 z 1999 to point 311 704 + from ref 133893 z 1999 to point 252 704 + line 135557 z 1999 to point 315 704 line 135685 z 1999 to ref 133765 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135173 relation_ref 134021 // geometry VHV - from ref 134021 z 1999 to point 311 704 - line 135813 z 1999 to point 311 704 + from ref 134021 z 1999 to point 315 704 + line 135813 z 1999 to point 315 704 line 135941 z 1999 to ref 133765 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -173,14 +173,14 @@ relationcanvas 135429 relation_ref 134149 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 136965 relation_ref 134533 // - from ref 132229 z 1999 to point 310 466 + from ref 132229 z 1999 to point 315 465 line 137093 z 1999 to ref 133765 - role_a_pos 322 586 3000 no_role_b - no_multiplicity_a multiplicity_b_pos 120 425 3000 + role_a_pos 327 587 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 124 426 3000 relationcanvas 137349 relation_ref 134661 // geometry VHV - from ref 137221 z 1999 to point 761 383 - line 137477 z 1999 to point 505 383 + from ref 137221 z 1999 to point 763 384 + line 137477 z 1999 to point 509 384 line 137605 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -189,7 +189,7 @@ relationcanvas 137861 relation_ref 134789 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 137989 relation_ref 134917 // - from ref 128133 z 1999 stereotype "<>" xyz 279 314 3000 to point 301 403 + from ref 128133 z 1999 stereotype "<>" xyz 285 315 3000 to point 306 403 line 138117 z 1999 to ref 132229 no_role_a no_role_b no_multiplicity_a no_multiplicity_b diff --git a/uml/renderengine/cin3/128517.diagram b/uml/renderengine/cin3/128517.diagram index 66a2938d5..14becd3dc 100644 --- a/uml/renderengine/cin3/128517.diagram +++ b/uml/renderengine/cin3/128517.diagram @@ -11,7 +11,7 @@ classinstance 129413 class_ref 128261 // Fixture classinstance 129797 class_ref 130693 // ToolFactory xyz 381 449 2000 name "" xyz 381 449 2000 classinstance 129925 class_ref 130821 // ConManager - xyz 147 450 2005 name "" xyz 147 450 2005 + xyz 142 486 2005 name "" xyz 142 486 2005 classinstance 130053 class_ref 130949 // RenderState xyz 550 424 2000 name "" xyz 550 424 2000 note 130565 "Note: Builder subsys is stateless" @@ -35,12 +35,12 @@ linkcanvas 129541 from ref 128133 z 1999 to ref 129285 dirscanvas 130181 z 1000 linkcanvas_ref 129541 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "3 buildEngine()" xyz 364 316 3000 + forward_label "3 buildEngine()" xyz 384 313 3000 linkcanvas 129669 from ref 129285 z 1999 to ref 129413 dirscanvas 132357 z 1000 linkcanvas_ref 129669 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "4 getPlaylistForRender()" xyz 126 222 3000 + forward_label "4 getPlaylistForRender()" xyz 216 167 3000 linkcanvas 130309 from ref 128133 z 1999 to ref 130053 dirscanvas 132229 z 1000 linkcanvas_ref 130309 @@ -50,7 +50,7 @@ linkcanvas 130437 from ref 129285 z 1999 to ref 129797 dirscanvas 132485 z 1000 linkcanvas_ref 130437 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "5 configure()" xyz 357 345 3000 + forward_label "5 configure()" xyz 362 355 3000 linkcanvas 131077 from ref 129285 z 1999 to ref 130693 dirscanvas 132613 z 1000 linkcanvas_ref 131077 @@ -60,27 +60,27 @@ linkcanvas 131205 from ref 130693 z 1999 to ref 129925 dirscanvas 132741 z 1000 linkcanvas_ref 131205 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "7 getConnection()" xyz 194 453 3000 + forward_label "7 getConnection()" xyz 224 457 3000 linkcanvas 131461 from ref 129925 z 1999 to ref 131333 dirscanvas 132997 z 1000 linkcanvas_ref 131461 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "9 prepareStream()" xyz 218 524 3000 + forward_label "9 prepareStream()" xyz 218 536 3000 linkcanvas 131589 from ref 129925 z 1999 to ref 129413 dirscanvas 132869 z 1000 linkcanvas_ref 131589 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "8 getAutomation()" xyz 65 280 3000 + forward_label "8 getAutomation()" xyz 71 294 3000 linkcanvas 131845 from ref 128005 z 1999 to ref 131717 dirscanvas 133125 z 1000 linkcanvas_ref 131845 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "10 play()" xyz 668 317 3000 + forward_label "10 play()" xyz 674 348 3000 linkcanvas 131973 from ref 131717 z 1999 to ref 131333 dirscanvas 133253 z 1000 linkcanvas_ref 131973 show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "11 getReady()" xyz 458 611 3000 + forward_label "11 getReady()" xyz 427 603 3000 msgs msg operation_ref 128261 // "buildProcessor()" forward ranks 1 "1" dirscanvas_ref 132101 diff --git a/uml/renderengine/cin3/128901 b/uml/renderengine/cin3/128901 index 00b11cb58..dcd651815 100644 --- a/uml/renderengine/cin3/128901 +++ b/uml/renderengine/cin3/128901 @@ -1,6 +1,6 @@ format 38 "Builder" // MObject::Builder - revision 1 + revision 3 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/renderengine/cin3/129029 b/uml/renderengine/cin3/129029 index 7573a8f2c..29f5846e2 100644 --- a/uml/renderengine/cin3/129029 +++ b/uml/renderengine/cin3/129029 @@ -1,6 +1,6 @@ format 38 "Controller" // MObject::Controller - revision 1 + revision 2 modified_by 5 "hiv" // class settings //class diagram settings @@ -43,7 +43,7 @@ format 38 package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default - classdiagram 128645 "Components" + classdiagram 128645 "Controller Entities" draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 size A4 end diff --git a/uml/renderengine/cin3/5.session b/uml/renderengine/cin3/5.session index 098941c6a..4fea246cb 100644 --- a/uml/renderengine/cin3/5.session +++ b/uml/renderengine/cin3/5.session @@ -1,20 +1,21 @@ -window_sizes 1140 830 287 843 687 62 +window_sizes 1140 830 287 843 689 62 diagrams componentdiagram_ref 128005 // Overview - 860 687 100 4 314 0 + 860 687 100 4 525 0 deploymentdiagram_ref 128261 // Overview Render Engine - 674 551 100 4 109 12 + 674 551 100 4 0 12 classdiagram_ref 128133 // Session structure - 674 551 100 4 538 0 - active classdiagram_ref 128389 // Render Entities + 674 551 100 4 0 0 + classdiagram_ref 128389 // Render Entities 843 689 100 4 147 0 - collaborationdiagram_ref 128517 // build process - 674 551 100 4 0 0 - classdiagram_ref 128645 // Components - 674 551 100 4 0 0 + active collaborationdiagram_ref 128517 // build process + 674 551 100 4 0 181 + classdiagram_ref 128645 // Controller Entities + 674 551 100 4 538 0 end show_stereotypes -selected classdiagram_ref 128389 // Render Entities +selected + package_ref 129 // cin3 open class_ref 128005 // Session classrelation_ref 128645 // tracks () diff --git a/uml/renderengine/cin3/cin3.prj b/uml/renderengine/cin3/cin3.prj index e327763a2..27e6b19c1 100644 --- a/uml/renderengine/cin3/cin3.prj +++ b/uml/renderengine/cin3/cin3.prj @@ -1,6 +1,6 @@ format 38 "cin3" - revision 3 + revision 5 modified_by 5 "hiv" cpp_root_dir "../../../src/" @@ -32,7 +32,7 @@ format 38 show_infonote yes drawing_language uml class_color yellow duration_color transparent continuation_color gray note_color blue fragment_color transparent subject_color transparent usecase_color yellow package_color transparent component_color green artifact_color green deploymentnode_color gray state_color yellow stateaction_color transparent activity_color transparent activityregion_color transparent activityaction_color transparent parameterpin_color white - font_size 9 + font_size 8 diagram_format A4 mark_for_import diff --git a/wiki/ichthyo-draft.html b/wiki/ichthyo-draft.html index bcb331a5b..225a26a9d 100644 --- a/wiki/ichthyo-draft.html +++ b/wiki/ichthyo-draft.html @@ -747,6 +747,11 @@ config.macros.timeline.handler = function(place,macroName,params,wikifier,paramS } //}}} +
+
All decisions on //how// the RenderProcess has to be carried out are concentrated in this rather complicated Builder Subsystem. The benefit of this aproach is, besides decoupling of subsystems, to keep the actually performance relevant video processing code so simple and transparent as possible. The price in terms of increased complexity to pay here in the Builder can be handled by making the Build Process genereic to a large degree, thus beeing able to decompose the various decisions into small decision modules, which can be judged solely by a Design By Contract aproach, without having to trace the actual workings of the Build Process as a whole.
+
+[img[Colaborations in the Build Process|renderengine/fig3.png]]
+
This 'index.html' becomes the entry point of some tiddlywikis managed under git. There is a 'empty.html' in the same folder serving as template for generating new wikis. Please refrain from editing it.
@@ -1154,6 +1159,13 @@ config.formatters.push( { } ) //}}} +
+
The MObjects Subsystem contains everything related to the EDL and the various Media Objects placed within it.
+
+This Design strives at a StrongSeparation between the low-level Structures used to carry out the actual rendering and the high level Entities living in the EDL and beeing manipulated by the user. In this high level view, the Objects are grouped and located by [[Placements]], providing a flexible and open way to express different groupings, locatons and ordering constraints between the Media Objects.
+
+[img[Classess related to the EDL|renderengine/fig2.png]]
+
[[RenderEngine]]
 [[MObjects]]
@@ -1170,6 +1182,16 @@ config.formatters.push( {
 
[img[Block Diagram|renderengine/fig1.png]]
+
+
Render Engine, [[Builder]] and [[Controller]] are closely related Subsystems. Actually, the [[Builder]] //creates// a newly configurated Render Engine //for every// RenderProcess. For doing so, he queries from the Session (or, to be more preciese, from the [[Fixture]] within the current Session all necessary Media Object Placement informations and derives from this informations the actual assembly of ProcessingNodes comprising the Render Engine. Thus:
+ * the source of the build process is a sequence of absolute (explicite) [[Placements]] called the [[Playlist]]
+ * the [[build process|BuildProcess]] is driven, configured and controlled by the [[Controller]] subsystem components, encompasing the actual playback configuration and State of the Sytem
+ * the resulting Render Engine is a list of [[Processors]], each configured to calculate a segment of the timeline with a uniform properties, and each of this Processors in turn is a graph of interconnected ProcessingNodes.
+
+see also: RenderEntities
+
+[img[Overview: Components of the Renderengine|renderengine/fig5.png]]
+
<!--{{{-->
 <div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
@@ -1971,12 +1993,13 @@ see : <<tag RSSFeed>> for the full list.
 
 
-
+
The key idea of Ichthyo's Design-draft is, to use the ''Builder Pattern'' for the Render Engine, thus separating completely the //building// of the Render Pipeline from //running,// i.e. doing the actual Render. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more any decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, done by the Builder. Make the actual processing nodes Template classes, parametrised by the color model and number of components. Make all Nodes on equal footing of each other, able to be connected freely within the limitations of the necessary input and output. Make the OpenGL rendering into alternate implementation of some operations together with an alternate signal flow (usable only if the whole Pipeline can be built up to support this changed signal flow), thus facturing out all the complexities of managing the data flow between core and hardware accelerated rendering out of the implementation of the actual processing. Introduce separate control data connections for the automation data, separating the case of true multi-channel-effects from the case where one node just gets remote controlled by another node (or two nodes using the sama automation data). Unfold any "internal-multi" effects into separate instances, e.g. the possibility of having an arbitrary number of single masks at any point of the pipeline instead of having one special masking facility encompassing multiple sub-masks.
 
 !Why doesn't the current Design succeed with this?
-The design of Cinelerra 2 basically follows this design, but fails because of two reasons
- * too much differentiation is put into the class hierarchy instead of configuring Instances differently. Causes overly heavy use of factories and -- in order to ameliorate this -- falling back to hard wired branching
+The design of Cinelerra 2 basically follows this design, but __fails because of two reasons__
+ * too much differentiation is put into the class hierarchy instead of configuring Instances differently. 
+   This causes overly heavy use of virtual functions and -- in order to ameliorate this -- falling back to hard wired branching
  * far too much back-coupling to the internals of the EDL, forcing a overly rigid structure on the latter
 
 !Try to learn from this
@@ -1987,8 +2010,19 @@ The design of Cinelerra 2 basically follows this design, but fails because of tw
 !!see also
  * [[Overview]]
  * OverviewRenderEngine
+ * BuildProcess
  * RenderProcess
+
+
As said, the Render Engine carries out the low-level and percormance critical tasks solely; all configuration and decision concerns are to be handled by [[Builder]] and [[Controller]]. While the actual connection of the Render Nodes can be highly complex, basically each Segment of the Timeline with uniform characteristics is handled by one Processor, which is a graph of ProcessingNodes discharging into a ExitNode. The Render Engine Components as such are //stateless// themselfs; for the actual calculations they are combined with a StateProxy object generated by and connected internally to the [[Controller]], while at the same time holding the Data Buffers (Frames) for the actual calculations.
+
+[img[Entities comprising the Render Engine|renderengine/fig6.png]]
+
+
+
''TODO'' describe the Render Process.
+
+ * see also the [[Entities invoved in Rendering|RenderEntities]]
+
some aspects of Cinelerra-3 design
diff --git a/wiki/renderengine/class100.html b/wiki/renderengine/class100.html new file mode 100644 index 000000000..f4d19be30 --- /dev/null +++ b/wiki/renderengine/class100.html @@ -0,0 +1,22 @@ + + + + + + +Class ARender + + + + + +
Class ARender
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class101.html b/wiki/renderengine/class101.html new file mode 100644 index 000000000..037eb4cba --- /dev/null +++ b/wiki/renderengine/class101.html @@ -0,0 +1,22 @@ + + + + + + +Class VRender + + + + + +
Class VRender
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class102.html b/wiki/renderengine/class102.html new file mode 100644 index 000000000..1fd1eb01b --- /dev/null +++ b/wiki/renderengine/class102.html @@ -0,0 +1,22 @@ + + + + + + +Class GLRender + + + + + +
Class GLRender
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class103.html b/wiki/renderengine/class103.html new file mode 100644 index 000000000..75897a78a --- /dev/null +++ b/wiki/renderengine/class103.html @@ -0,0 +1,24 @@ + + + + + + +Class Frame + + + + + +
Class Frame
+

+ + + + +

Declaration :

  • C++ : class Frame
  • Java : package interface Frame

Directly inherited by : AFrame GLBuf VFrame

+
+ +
Relation <unidirectional association>

Declaration :

+ + diff --git a/wiki/renderengine/class105.html b/wiki/renderengine/class105.html new file mode 100644 index 000000000..c06a22987 --- /dev/null +++ b/wiki/renderengine/class105.html @@ -0,0 +1,22 @@ + + + + + + +Class AFrame + + + + + +
Class AFrame
+

+ + + + +

Declaration :

  • C++ : class AFrame : public Frame
+
+ + diff --git a/wiki/renderengine/class106.html b/wiki/renderengine/class106.html new file mode 100644 index 000000000..f3cb16c67 --- /dev/null +++ b/wiki/renderengine/class106.html @@ -0,0 +1,22 @@ + + + + + + +Class VFrame + + + + + +
Class VFrame
+

+ + + + +

Declaration :

  • C++ : class VFrame : public Frame
+
+ + diff --git a/wiki/renderengine/class107.html b/wiki/renderengine/class107.html new file mode 100644 index 000000000..9c9f32c24 --- /dev/null +++ b/wiki/renderengine/class107.html @@ -0,0 +1,22 @@ + + + + + + +Class GLBuf + + + + + +
Class GLBuf
+

+ + + + +

Declaration :

  • C++ : class GLBuf : public Frame
+
+ + diff --git a/wiki/renderengine/class108.html b/wiki/renderengine/class108.html new file mode 100644 index 000000000..898b13da7 --- /dev/null +++ b/wiki/renderengine/class108.html @@ -0,0 +1,22 @@ + + + + + + +Class Source + + + + + +
Class Source
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class112.html b/wiki/renderengine/class112.html new file mode 100644 index 000000000..a24ead126 --- /dev/null +++ b/wiki/renderengine/class112.html @@ -0,0 +1,25 @@ + + + + + + +Class StreamProvider + + + + + +
Class StreamProvider
+

+ + + + +

Declaration :

  • C++ : class StreamProvider

Note: just a Placeholder for my design. Cehteh will ceratinly know much better how to organize this

+ +
Operation prepareStream

Declaration :

  • Uml : + prepareStream() :
  • C++ : public: prepareStream()
+
Operation getReady

Declaration :

  • Uml : + getReady() :
  • C++ : public: getReady()
+

All public operations : getReady , prepareStream

+ + diff --git a/wiki/renderengine/class20.html b/wiki/renderengine/class20.html new file mode 100644 index 000000000..3362822c9 --- /dev/null +++ b/wiki/renderengine/class20.html @@ -0,0 +1,24 @@ + + + + + + +Class Session + + + + + +
Class Session
+

+ + + + +

Declaration :

  • C++ : class Session
+ +
Relation edls (<directional aggregation>)

Declaration :

  • Uml : # edls : EDL, multiplicity : 1..*
  • C++ : protected: EDL * edls
+
Relation fixture (<directional aggregation by value>)

Declaration :

  • Uml : # fixture : Fixture, multiplicity : 1
  • C++ : protected: Fixture fixture
+ + diff --git a/wiki/renderengine/class23.html b/wiki/renderengine/class23.html new file mode 100644 index 000000000..e8c184b81 --- /dev/null +++ b/wiki/renderengine/class23.html @@ -0,0 +1,25 @@ + + + + + + +Class EDL + + + + + +
Class EDL
+

+ + + + +

Declaration :

  • C++ : class EDL

Directly inherited by : Fixture

+
+ +
Relation tracks (<directional aggregation by value>)

Declaration :

  • Uml : # tracks : Track, multiplicity : *
  • C++ : protected: Track tracks
+
Relation clips (<directional aggregation>)

Declaration :

  • Uml : # clips : MObject, multiplicity : *
  • C++ : protected: MObject * clips
+ + diff --git a/wiki/renderengine/class26.html b/wiki/renderengine/class26.html new file mode 100644 index 000000000..50052fd3c --- /dev/null +++ b/wiki/renderengine/class26.html @@ -0,0 +1,27 @@ + + + + + + +Class Fixture + + + + + +
Class Fixture
+

+ + + + +

Declaration :

  • C++ : class Fixture : public EDL
+ +
Relation tracks (<directional aggregation by value>)

Declaration :

  • Uml : # tracks : Track, multiplicity : 1..*
  • C++ : protected: Track tracks
+
Relation timeline (<directional aggregation by value>)

Declaration :

+
Operation getPlaylistForRender

Declaration :

  • Uml : + getPlaylistForRender() :
  • C++ : public: getPlaylistForRender()
+
Operation getAutomation

Declaration :

  • Uml : + getAutomation() :
  • C++ : public: getAutomation()
+

All public operations : getAutomation , getPlaylistForRender

+ + diff --git a/wiki/renderengine/class31.html b/wiki/renderengine/class31.html new file mode 100644 index 000000000..bdbca81a5 --- /dev/null +++ b/wiki/renderengine/class31.html @@ -0,0 +1,20 @@ + + + + + + +Class Track + + + + + +
Class Track
+

+ + + + +

Declaration :

  • C++ : class Track
+ diff --git a/wiki/renderengine/class32.html b/wiki/renderengine/class32.html new file mode 100644 index 000000000..608b29aed --- /dev/null +++ b/wiki/renderengine/class32.html @@ -0,0 +1,24 @@ + + + + + + +Class MObject + + + + + +
Class MObject
+

+ + + + +

Declaration :

  • C++ : class MObject
  • Java : public interface MObject

Directly inherited by : AbstractMO

+
+ +
Relation placement (<association>)

Declaration :

+ + diff --git a/wiki/renderengine/class34.html b/wiki/renderengine/class34.html new file mode 100644 index 000000000..4dfee44fe --- /dev/null +++ b/wiki/renderengine/class34.html @@ -0,0 +1,26 @@ + + + + + + +Class Placement + + + + + +
Class Placement
+

+ + + + +

Declaration :

  • C++ : class Placement
  • Java : public interface Placement

Directly inherited by : Allocation DirectPlacement ExplicitePlacement RelativePlacement

+
+ +
Relation subject (<association>)

Declaration :

  • Uml : # subject : MObject, multiplicity : 1
  • C++ : protected: MObject * subject
+
Operation resolve

Declaration :

create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.

+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class37.html b/wiki/renderengine/class37.html new file mode 100644 index 000000000..14ec9db8d --- /dev/null +++ b/wiki/renderengine/class37.html @@ -0,0 +1,23 @@ + + + + + + +Class AbstractMO + + + + + +
Class AbstractMO
+

+ + + + +

Declaration :

  • C++ : class AbstractMO : public MObject

Directly inherited by : Clip Effect Meta

+
+
+ + diff --git a/wiki/renderengine/class38.html b/wiki/renderengine/class38.html new file mode 100644 index 000000000..8c98d88f0 --- /dev/null +++ b/wiki/renderengine/class38.html @@ -0,0 +1,22 @@ + + + + + + +Class Clip + + + + + +
Class Clip
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class39.html b/wiki/renderengine/class39.html new file mode 100644 index 000000000..b22b301a3 --- /dev/null +++ b/wiki/renderengine/class39.html @@ -0,0 +1,22 @@ + + + + + + +Class Effect + + + + + +
Class Effect
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class40.html b/wiki/renderengine/class40.html new file mode 100644 index 000000000..85f829935 --- /dev/null +++ b/wiki/renderengine/class40.html @@ -0,0 +1,23 @@ + + + + + + +Class Meta + + + + + +
Class Meta
+

+ + + + +

Declaration :

Directly inherited by : Auto Label

+
+
+ + diff --git a/wiki/renderengine/class41.html b/wiki/renderengine/class41.html new file mode 100644 index 000000000..eb6136a91 --- /dev/null +++ b/wiki/renderengine/class41.html @@ -0,0 +1,23 @@ + + + + + + +Class DirectPlacement + + + + + +
Class DirectPlacement
+

+ + + + +

Declaration :

+
+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class42.html b/wiki/renderengine/class42.html new file mode 100644 index 000000000..71248c9e2 --- /dev/null +++ b/wiki/renderengine/class42.html @@ -0,0 +1,26 @@ + + + + + + +Class RelativePlacement + + + + + +
Class RelativePlacement
+

+ + + + +

Declaration :

  • C++ : class RelativePlacement : public Placement
+ +
Relation anchor (<unidirectional association>)

Declaration :

  • Uml : # anchor : MObject, multiplicity : 1
  • C++ : protected: MObject * anchor
+
Attribut relType
+

Declaration :

  • Uml : # relType :
  • C++ : protected: relType
+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class45.html b/wiki/renderengine/class45.html new file mode 100644 index 000000000..8a90a7f34 --- /dev/null +++ b/wiki/renderengine/class45.html @@ -0,0 +1,24 @@ + + + + + + +Class Allocation + + + + + +
Class Allocation
+

+ + + + +

Declaration :

Directly inherited by : Constraint Wish

+

a directive to place a MObject in a specific way

+
+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class46.html b/wiki/renderengine/class46.html new file mode 100644 index 000000000..2c26a9afb --- /dev/null +++ b/wiki/renderengine/class46.html @@ -0,0 +1,22 @@ + + + + + + +Class Label + + + + + +
Class Label
+

+ + + + +

Declaration :

  • C++ : class Label : public Meta
+
+ + diff --git a/wiki/renderengine/class47.html b/wiki/renderengine/class47.html new file mode 100644 index 000000000..eb04ece04 --- /dev/null +++ b/wiki/renderengine/class47.html @@ -0,0 +1,29 @@ + + + + + + +Class ExplicitePlacement + + + + + +
Class ExplicitePlacement
+

+ + + + +

Declaration :

  • C++ : class ExplicitePlacement : public Placement
  • Java : public interface ExplicitePlacement

Directly inherited by : DirectPlacement

+
+ +
Attribut time
+

Declaration :

  • Uml : # time : long
  • C++ : protected: long time
+
Attribut track
+

Declaration :

+
Relation <unidirectional association>

Declaration :

+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class51.html b/wiki/renderengine/class51.html new file mode 100644 index 000000000..c6cd6cd11 --- /dev/null +++ b/wiki/renderengine/class51.html @@ -0,0 +1,22 @@ + + + + + + +Class Auto + + + + + +
Class Auto
+

+ + + + +

Declaration :

  • C++ : class Auto : public Meta
+
+ + diff --git a/wiki/renderengine/class52.html b/wiki/renderengine/class52.html new file mode 100644 index 000000000..218d02b81 --- /dev/null +++ b/wiki/renderengine/class52.html @@ -0,0 +1,23 @@ + + + + + + +Class Wish + + + + + +
Class Wish
+

+ + + + +

Declaration :

+
+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class53.html b/wiki/renderengine/class53.html new file mode 100644 index 000000000..87e04df53 --- /dev/null +++ b/wiki/renderengine/class53.html @@ -0,0 +1,23 @@ + + + + + + +Class Constraint + + + + + +
Class Constraint
+

+ + + + +

Declaration :

+
+

All public operations : resolve

+ + diff --git a/wiki/renderengine/class57.html b/wiki/renderengine/class57.html new file mode 100644 index 000000000..40935c4f4 --- /dev/null +++ b/wiki/renderengine/class57.html @@ -0,0 +1,24 @@ + + + + + + +Class BuilderFacade + + + + + +
Class BuilderFacade
+

+ + + + +

Declaration :

  • C++ : class BuilderFacade
+ +
Operation buildEngine

Declaration :

  • Uml : + buildEngine() :
  • C++ : public: buildEngine()
+

All public operations : buildEngine

+ + diff --git a/wiki/renderengine/class59.html b/wiki/renderengine/class59.html new file mode 100644 index 000000000..4d741df66 --- /dev/null +++ b/wiki/renderengine/class59.html @@ -0,0 +1,24 @@ + + + + + + +Class ToolFactory + + + + + +
Class ToolFactory
+

+ + + + +

Declaration :

  • C++ : class ToolFactory
+ +
Operation configure

Declaration :

  • Uml : + configure() :
  • C++ : public: configure()
+

All public operations : configure

+ + diff --git a/wiki/renderengine/class61.html b/wiki/renderengine/class61.html new file mode 100644 index 000000000..6d18e7952 --- /dev/null +++ b/wiki/renderengine/class61.html @@ -0,0 +1,24 @@ + + + + + + +Class ConManager + + + + + +
Class ConManager
+

+ + + + +

Declaration :

  • C++ : class ConManager
+ +
Operation getConnection

Declaration :

  • Uml : + getConnection() :
  • C++ : public: getConnection()
+

All public operations : getConnection

+ + diff --git a/wiki/renderengine/class63.html b/wiki/renderengine/class63.html new file mode 100644 index 000000000..4ea9996fd --- /dev/null +++ b/wiki/renderengine/class63.html @@ -0,0 +1,24 @@ + + + + + + +Class Assembler + + + + + +
Class Assembler
+

+ + + + +

Declaration :

  • C++ : class Assembler
+ +
Operation build

Declaration :

  • Uml : + build() :
  • C++ : public: build()
+

All public operations : build

+ + diff --git a/wiki/renderengine/class65.html b/wiki/renderengine/class65.html new file mode 100644 index 000000000..b887d0295 --- /dev/null +++ b/wiki/renderengine/class65.html @@ -0,0 +1,24 @@ + + + + + + +Class StateProxy + + + + + +
Class StateProxy
+

+ + + + +

Declaration :

  • C++ : class StateProxy
  • Java : package interface StateProxy

Directly inherited by : ARender GLRender VRender

+
+ +
Relation currFrame (<unidirectional association>)

Declaration :

  • Uml : # currFrame : Frame
  • C++ : protected: Frame * currFrame
+ + diff --git a/wiki/renderengine/class70.html b/wiki/renderengine/class70.html new file mode 100644 index 000000000..f74fdddd1 --- /dev/null +++ b/wiki/renderengine/class70.html @@ -0,0 +1,20 @@ + + + + + + +Class ControllerFacade + + + + + +
Class ControllerFacade
+

+ + + + +

Declaration :

  • C++ : class ControllerFacade
+ diff --git a/wiki/renderengine/class71.html b/wiki/renderengine/class71.html new file mode 100644 index 000000000..b246c37bd --- /dev/null +++ b/wiki/renderengine/class71.html @@ -0,0 +1,24 @@ + + + + + + +Class PathManager + + + + + +
Class PathManager
+

+ + + + +

Declaration :

  • C++ : class PathManager
+ +
Operation buildProcessor

Declaration :

  • Uml : + buildProcessor() :
  • C++ : public: buildProcessor()
+

All public operations : buildProcessor

+ + diff --git a/wiki/renderengine/class73.html b/wiki/renderengine/class73.html new file mode 100644 index 000000000..10c79ab76 --- /dev/null +++ b/wiki/renderengine/class73.html @@ -0,0 +1,24 @@ + + + + + + +Class RenderState + + + + + +
Class RenderState
+

+ + + + +

Declaration :

  • C++ : class RenderState
+ +
Operation getStateProxy

Declaration :

  • Uml : + getStateProxy() :
  • C++ : public: getStateProxy()
+

All public operations : getStateProxy

+ + diff --git a/wiki/renderengine/class86.html b/wiki/renderengine/class86.html new file mode 100644 index 000000000..2714afbae --- /dev/null +++ b/wiki/renderengine/class86.html @@ -0,0 +1,25 @@ + + + + + + +Class RenderEngine + + + + + +
Class RenderEngine
+

+ + + + +

Declaration :

+ +
Operation play

Declaration :

  • Uml : + play() :
  • C++ : public: play()
+
Relation renderSegments (<directional aggregation by value>)

Declaration :

  • Uml : - renderSegments : Processor, multiplicity : 0..*
  • C++ : private: Processor renderSegments
+

All public operations : play

+ + diff --git a/wiki/renderengine/class89.html b/wiki/renderengine/class89.html new file mode 100644 index 000000000..b0cdec94d --- /dev/null +++ b/wiki/renderengine/class89.html @@ -0,0 +1,24 @@ + + + + + + +Class Processor + + + + + +
Class Processor
+

+ + + + +

Declaration :

  • C++ : class Processor

Directly inherited by : RenderEngine

+
+ +
Relation output (<unidirectional association>)

Declaration :

+ + diff --git a/wiki/renderengine/class91.html b/wiki/renderengine/class91.html new file mode 100644 index 000000000..d96080d50 --- /dev/null +++ b/wiki/renderengine/class91.html @@ -0,0 +1,22 @@ + + + + + + +Class ExitNode + + + + + +
Class ExitNode
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class92.html b/wiki/renderengine/class92.html new file mode 100644 index 000000000..d0f7ee496 --- /dev/null +++ b/wiki/renderengine/class92.html @@ -0,0 +1,21 @@ + + + + + + +Class ProcNode + + + + + +
Class ProcNode
+

+ + + + +

Declaration :

  • C++ : class ProcNode
  • Java : public interface ProcNode

Directly inherited by : ExitNode Hub Link Source Trafo

+ + diff --git a/wiki/renderengine/class93.html b/wiki/renderengine/class93.html new file mode 100644 index 000000000..bf0f5ab81 --- /dev/null +++ b/wiki/renderengine/class93.html @@ -0,0 +1,23 @@ + + + + + + +Class Trafo + + + + + +
Class Trafo
+

+ + + + +

Declaration :

Directly inherited by : Mask PluginAdapter Projector

+
+
+ + diff --git a/wiki/renderengine/class94.html b/wiki/renderengine/class94.html new file mode 100644 index 000000000..9b0589b67 --- /dev/null +++ b/wiki/renderengine/class94.html @@ -0,0 +1,23 @@ + + + + + + +Class Link + + + + + +
Class Link
+

+ + + + +

Declaration :

Directly inherited by : OpenGLPipe

+
+
+ + diff --git a/wiki/renderengine/class95.html b/wiki/renderengine/class95.html new file mode 100644 index 000000000..af40c3ca7 --- /dev/null +++ b/wiki/renderengine/class95.html @@ -0,0 +1,22 @@ + + + + + + +Class Hub + + + + + +
Class Hub
+

+ + + + +

Declaration :

+
+ + diff --git a/wiki/renderengine/class96.html b/wiki/renderengine/class96.html new file mode 100644 index 000000000..528c7e640 --- /dev/null +++ b/wiki/renderengine/class96.html @@ -0,0 +1,22 @@ + + + + + + +Class Projector + + + + + +
Class Projector
+

+ + + + +

Declaration :

  • C++ : class Projector : public Trafo
+
+ + diff --git a/wiki/renderengine/class97.html b/wiki/renderengine/class97.html new file mode 100644 index 000000000..c72200bf9 --- /dev/null +++ b/wiki/renderengine/class97.html @@ -0,0 +1,22 @@ + + + + + + +Class Mask + + + + + +
Class Mask
+

+ + + + +

Declaration :

  • C++ : class Mask : public Trafo
+
+ + diff --git a/wiki/renderengine/class98.html b/wiki/renderengine/class98.html new file mode 100644 index 000000000..e63dc5c68 --- /dev/null +++ b/wiki/renderengine/class98.html @@ -0,0 +1,22 @@ + + + + + + +Class PluginAdapter + + + + + +
Class PluginAdapter
+

+ + + + +

Declaration :

  • C++ : class PluginAdapter : public Trafo
+
+ + diff --git a/wiki/renderengine/class99.html b/wiki/renderengine/class99.html new file mode 100644 index 000000000..6b816617d --- /dev/null +++ b/wiki/renderengine/class99.html @@ -0,0 +1,22 @@ + + + + + + +Class OpenGLPipe + + + + + +
Class OpenGLPipe
+

+ + + + +

Declaration :

  • C++ : class OpenGLPipe : public Link
+
+ + diff --git a/wiki/renderengine/classdiagrams.html b/wiki/renderengine/classdiagrams.html new file mode 100644 index 000000000..17dfee4a7 --- /dev/null +++ b/wiki/renderengine/classdiagrams.html @@ -0,0 +1,24 @@ + + + + + + +Class Diagram Index + + + + + +
Class Diagram Index
+

+ + + + + + + +
Controller Entities
Render Entities
Session structure
+ + diff --git a/wiki/renderengine/classes.html b/wiki/renderengine/classes.html new file mode 100644 index 000000000..6a16597dd --- /dev/null +++ b/wiki/renderengine/classes.html @@ -0,0 +1,67 @@ + + + + + + +Classes Index + + + + + +
Classes Index
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AbstractMO
AFrame
Allocationa directive to place a MObject in a specific way
ARender
Assembler
Auto
BuilderFacadeboundary
Clip
ConManager
Constraint
ControllerFacadeboundary
DirectPlacement
EDL
Effect
ExitNode
ExplicitePlacementinterface
Fixture
Frameinterface
GLBuf
GLRender
Hub
Label
Link
Mask
Meta
MObjectinterface
OpenGLPipe
PathManager
Placementinterface
PluginAdapter
Processor
ProcNodeinterface
Projector
RelativePlacement
RenderEngine
RenderState
Session
Source
StateProxyinterface
StreamProviderboundaryNote: just a Placeholder for my design. Cehteh will ceratinly know much better how to organize this
ToolFactory
Track
Trafo
VFrame
VRender
Wish
+ + diff --git a/wiki/renderengine/classes_list.html b/wiki/renderengine/classes_list.html new file mode 100644 index 000000000..48091ba7e --- /dev/null +++ b/wiki/renderengine/classes_list.html @@ -0,0 +1,70 @@ + + + + + + +Classes + + + + + +
Classes
+

+ + + + + + + +
AbstractMO
+AFrame
+Allocation
+ARender
+Assembler
+Auto
+BuilderFacade
+Clip
+ConManager
+Constraint
+ControllerFacade
+DirectPlacement
+EDL
+Effect
+ExitNode
+ExplicitePlacement
+Fixture
+Frame
+GLBuf
+GLRender
+Hub
+Label
+Link
+Mask
+Meta
+MObject
+OpenGLPipe
+PathManager
+Placement
+PluginAdapter
+Processor
+ProcNode
+Projector
+RelativePlacement
+RenderEngine
+RenderState
+Session
+Source
+StateProxy
+StreamProvider
+ToolFactory
+Track
+Trafo
+VFrame
+VRender
+Wish
+
+ + diff --git a/wiki/renderengine/collaborationdiagrams.html b/wiki/renderengine/collaborationdiagrams.html new file mode 100644 index 000000000..fa8019a48 --- /dev/null +++ b/wiki/renderengine/collaborationdiagrams.html @@ -0,0 +1,22 @@ + + + + + + +Collaboration Diagram Index + + + + + +
Collaboration Diagram Index
+

+ + + + + +
build processThis figure shows the process of building and starting a RenderEngine
+ + diff --git a/wiki/renderengine/componentdiagrams.html b/wiki/renderengine/componentdiagrams.html new file mode 100644 index 000000000..2dd38605d --- /dev/null +++ b/wiki/renderengine/componentdiagrams.html @@ -0,0 +1,22 @@ + + + + + + +Component Diagram Index + + + + + +
Component Diagram Index
+

+ + + + + +
OverviewThis drawing shows the top level compoents and relations
+ + diff --git a/wiki/renderengine/deploymentdiagrams.html b/wiki/renderengine/deploymentdiagrams.html new file mode 100644 index 000000000..5ded69ac5 --- /dev/null +++ b/wiki/renderengine/deploymentdiagrams.html @@ -0,0 +1,22 @@ + + + + + + +Deployment Diagram Index + + + + + +
Deployment Diagram Index
+

+ + + + + +
Overview Render Engine
+ + diff --git a/wiki/renderengine/fig1.png b/wiki/renderengine/fig1.png new file mode 100644 index 0000000000000000000000000000000000000000..6c40efdf44f0a973d2bf5838d3902eef244380ce GIT binary patch literal 37880 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 + + + + + + UI Layer + + + + + + + Processing Layer + + + + + + + Backend Layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AssetManager + + + + + RenderEngine + + + + + + + <<component>> + Dispatcher + + + + + + + + + <<component>> + Stream Provider + + + + + + + + + <<component>> + Cache + + + + + + + + codecs, stream I/O here + + + + MObject + + + + + + border of the low-level, + performance-critical part of + the system + + + + + + <<component>> + AssetManagement + + + + + + + + + <<component>> + Engine + + + + + + + + just works, + never decides + + + + + + <<component>> + Session + + + + + + + + + <<subsystem>> + Controller + + + + + + + + + <<subsystem>> + Builder + + + + + + + + + <<entity>> + EDL + + + + + + + + + <<entity>> + Fixture + + + + + + + + Structures edited by the User + + + + + Coordinates Playback + and Rendering + + diff --git a/wiki/renderengine/fig2.png b/wiki/renderengine/fig2.png new file mode 100644 index 0000000000000000000000000000000000000000..57d4aea7a88e78ed56aaec40c99b5f6a32c1e084 GIT binary patch literal 47828 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 literal 0 HcmV?d00001 diff --git a/wiki/renderengine/fig3.png b/wiki/renderengine/fig3.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd1c7ebef3b6c40fec5a51df205ecd2b3a216b6 GIT binary patch literal 32139 zcmcG$by!qw*ET+g0s<0(AV`RmqBMeppdccxbfbWDcZYzKfP#RuNU5ZBmmu8&QqnCg zJTsL)H51X9R2Anys+Vu`beOGL^-DWu z%k;^(ccO(XSFO#=QT&=>rKleP@@kXAEvZ*aUp_=Nc=uIleov?pUtFzv5*x1_fb7$` z|CEdTUHr-ETv_oT*DLHUu6n&*sYtpJ-lY_ejfJ1Qn;t!tF62>6=V2%nioVr1;s5DP zyf*l6;*~EU0@2X@|KgWl6s^T< zcn}DkAO_iqBqr(Kk!KLoLT8O^@wllFhJW8QhLQ*m9iVaXgDTUg5#LmqgcCun`TKV+RHrhiU1~*qlG92oU#{NMFw^{z8gN zoJlr9ARMVBV&TTEAKt@(Suj2efBNSy3Pf!e$wM=?Y*)**< z^iJN6zw3ZP#%8gUTT;VB21jG_JlFWqSS7UUV?SFxQZU|y9GR>ZuBZ}`Wnn}e3e0)y`}Becx9!TP%_EvuMo1`hp)J(30H315D#`^l)?}D$*Z9clUj4zf<;QwO0VWelEZp>B;8oC6y7tQ z_^gjZL#nEak<{iEJ}0}WV&AiSdu{5y4#rA%yfxRex`p1kOc>8(|MYVC@#9NiwX^*C zls+YG@EhOk6&MGR@WkH_s6~k5~PlOVcd$($no_z5i=?)Ej*`S1)XP72OmVE)_xJv3|QVGMAs*^4E_g#Z;7oa~VmK!WW+; z0Z#F}9?qNNJ~QG0TFHVwbxGbMh0n$nQ{Jk_o!${VYHsuw4|ZTx^cG{ua#4AEl-?ai z5f~6uucdjkbF_Oqj$?G9v269~W<_@sdV8ZWKdS+(vjZE>`z}b&X zx^=cQ+YAzppFY(iyKQa_j%!`7an7q&5>)t9)Bof85-}d3h$WXsOcK}gP}J(s35(oi z*C{U-h=M%@x6U)@vG3p6uRl`wqWr7k^=tK;Hzk_B29jJTExkeAt?gbrv}*5Xv$9uT zvD4x(h|q2v+ebDUDw58Pj64(J>C&UCQhr4p6vJZMbYCH(V8-&0jr zS%=+NW?7};V)=)2tgVr8slo@6((P9?HKmx%bRM;>#c}K{k19uHJgn8DqA+I699kT3 z6v~kp5o$rDYUgv=tl}cxM^|mgpN_1qVV}X~jEgIeNz1Gp-ASE{kzojEH*(MZvOPTg zR5~i(`_yTzbYOq8;EoR}`e16R+S|)Pd9X@g$}$IOegFRAbB`8pff_EV@I3W6xG1l4 z+iS%LdQR`TaCx7T#09B`{`Zlr2~W;?W?vboNwgZe|8sjd5WQP_P;xNE8K5C(XFwmb z+S=YemU{XtJoi>*6c&24V_|2<+s=+(>CZ!QKt6>`%)0tvMDMbeR!ZV+i&JeIuO~`M z_P;+0P8#u?XE<}_j5&uco1lHhUa0@v96BnRG2lAebyw@*++ixZ(-~rq-@oGT7=HUz zY9S`-oa=<+MixOSEW*vr$@tZXFX7cUSZEJfm`6to=vi6oliu_T^Ax!lWjsIb`(o&l zt2Hz*Vaa#dIWxO6M6KFwP`8*3xoJ~>_Zs&TJiFt*G^&*q#*1V(ds8XJA4TyoG0b#R z>XC?hx*l#F$MXh~}K&Vx(G@gaj*e8iK`g3n>lkTp2!`4iFM|*pcSpCYe6T^dF zuNfjQ&|D9A$7Rw(legb>vRSTYXXd=`ak4M}Bdi)6#o80=7YZgZb-#|5aya#p zXfDNEBqN(B&Q3BdO%#~C-Psh5ZRA)6GwQt1DoO)6Hu}P&7lj;`X>Lu_ zzLUU#1nx9R!!u>bcNyh&X#3k2Dt_VIPgEEBm@??Lj!OyIL(1-J*t0~N3B1*xwNCD9^q!9MtXHF(z7h`)mBwhCZ2E`^ zJFR{UqH}lc|4_!0&g;s33xP;pnx`u|8)(pK60c2n zLi>{^iIkia;u+Z)cnpi-G-ezfNe0CvxTlH_nrFKci8p@COiV&F*j`&A)_l3QaVqnC zp*KrmvdE~NeyKa`an5dM$G(0ANt&8TPpVD)ZvL~cWvL=ZOTR1`npcsY3=j50$QBj5 zZ|oBsWz~t^Pb)2Pcfi{(z(u8)oma{b`kf`GQlCV`^ZEyX~kjEz9hb*V-lU&6v-iEd}R z$U_w#i~dDHKL1$LnV|9$L8{k&?dCUIsK0bAM_8j!7o(U?nORw_zki$w32~#MVoC2e z;#ra|xUSF!Y) zH)t}_H)TFPrUiOe7JG)w_{4+nA56w2BwLxZ{9urvyK-kMvsbiOW>iVVDEl?kr93@j zyTbg9@dwiQc!Zv|Jv2w8ox|~NvlkIaKV>~q-=0T+RYYQJ;-d9EX4=Bore$5%&moAH z+Ttj6Nk)$EHgmMlnYUA6JzVLQJ|`hT z5BL9-QA(&x&_Pi8*)!$utK|+3x{pUU+un&z4kd2gTzBnLNqhXmN9K(8bw86BELZ;4 z`WpB+i0@J4$D?oI?>8oswK&(pWuku1%zTaCU0U)&xrv|D+p^!(_uiO5dTe?Xmkl2c zmG=3`jNJ$=xabadS;%ldt!=9C*+ZQqOptH23=9ZrS;@$C5!_U3yQ`6>oUfuLDrhVR ze}T*u78NzTz!Vr%UMiU0xD~EvV`}yWtyy6)@*Q>R)Zc%Do4dfs7@uKS^msY#u15d~ zOSD<2maeYq^J1Fl_TTbeUIletR>Rq8W&7n~=pzZQVE+}uc+ zA+-(+hS4bJsL%biGBL4a+-t4d6Z_#>j=bj|%)@k@T#NvJtjf{M+_@|XHI^mMo9gB4 z<90MWJDZf9N+FK?Z$#2jLgrr4k0$_@Cz6I3tJRvMnG-1 z+58#jeKKCtD`umcx}BDGQg_T&qRz<>P?yD0>9Uy~Wkl!smQt%ACTnn|K(E%ODZuYw z(gjdiDEfB}x6#Ujbq{5+&4F`>L*mZs9Y#Fu1dFMNqWB#J!@0c1#waG;(_@Rog*&DT z%^_YYpP{5$`0N)86cq)K+;!i7MawfEJ=YpG;ZEa(cX&mE~kpH~Mq3QNGl$P3erK-Q?(bM2exU zr{_$*u6VG^?#{0aBr~fN-V>F_TNAmOc?37^I(%#FP8M}EedvB1+}zx;yA()bZ+J2{ zKOe`-<1Y1ZKjKwM@do>3RePhs+A$%muygBYRrc=ghyKsh-K&zsu3mk=IFK2|C^a?~ zCgpSZmF}(wOV2xQkM*(0NLpT-HkzmpyO>hf(0#YkYFt~`Im481F~4B=hHP>1)Ofi~ zs8%hETr!crl*6chxu3||8U{ip5!BOfE+*uhi=J*AS5ginIkZHS-3B4e z3m-@^%e|tK441erDt>g}`|smeb{Er9er25wQ?4XY$LsD52op&|O!hlppraJ-s#ZIClX~PWfz)-|;3owG0*Kk^_J`eiKds^8z4b;)?g0#@;1{+@BwZ=(RNU*rvMnH}K&ZFO6 zGmo*}y{oIIQR`mnVQ~gQB(wF-tm2+FCRNwHl6o_J>2lH8|MlX#*7%a*uC7r>Vh$g= zy9TpO9Cf<^GkkUJ7^n^mys@@Qq{XaPkIL`vs&+x|EySr;)hQtm@4c28c4ZcOxDsFZ zw=OQ$rR;j(zK&W}O{F%Ij8&lh624O3o)NcWpB zy?yIB)8qwHfxdrlF(x#$tc_rAZ|XYv`5hlKGvRJ3IuA=7uTz17T4&3drf^|r5vNXe zzoVm^KoV93qjFVa*|6>3D@&9d6BX8zWY3=;RaPqYrko~)9l#{xHNMV_3k_Ri<@`ZY zL@s`vJaj2lpWmo$?$f8L`~KE08C{ZLbVT^8`y=%!sNK}5IOQ|gAtP9bW&E>7qB(Ua zt*1}#xg9N(@$dwQb%n_tp*~=)4ZLX0Yw;y>I(?FYc|$iw84E7~m3l%HeUF^qkFe?g8#Yf6~Bsy@U>yQx-0tN5dv{|dGUV*n%tkJEF8DL#=w*ABzf(I+d0ybnVntz zg$2TI<=?_-E;||-Cf>iOKhYxvZ)Pqtd@W~^R=Q5Ukq?7I1^=bjxOQAbGrL4_+n#r& zttwxCFYm8@_3Bp_l4vYF8O*TpQ-THVG--4F9oU86et9DhRhK1V3;q0L5u#s_Yb-hH z1%R@{|~lu*WB+kkwW9WDfbvgj^;0;gx~UIctF=_>xTtx80sR ziKgWIc`M+Nv^1soD;hyXlFG}JMtpn$9s`G7ZXFt>QtB?FGw~{#RjfEZJL_S=V5Z~)ITZ*SoulkB{tK>@ zXL#-eyd&JYCMl^sAINJ`N6r6B!NJ`VIV~MMyVQM>u0{JqE!JnI$-7j@0ELu08hrM3 zL&(kE!+Ae7kmT=$*hybna#=CeyDsn2a{@|ho$`&4q9WwPM7Bw{3ux|HAzj@)T^tna9tZzT*70Zxb@?XH!?UhRDC$l!=OEioqxA0HFY#c z-Sqjw&CE=XE7a8MmegCmL)v-(019UTM3om8LX$m&qup`x5iY zNAWj(=~4&ZzFpaQc?KJs@a5OoHGBqup}8+_g+CnJo=Z&6mEfA@=zwXg8aCl()X?)DHKyxyexzq@G3ZOla8*JWvxsIO6S>WN z%BG9Iy;i9x#!e>wHdark+WCOfo1358&h_ELlzvklYI%#{d1mHt%N&~M6=8L=h(G^XDb>TxaANnrFV!_as&RG)`%5 zCe2Y>H?_9rzWi!srCO-WtYL8LEi>XUp+B9n-QOS9hQ2;p-hLc)Mkm9 z*cAcm!->i(eAJ*N)}7!yH_0BmWz_cihaWcm$*UY{W9)lH8o+$$hzyggUkHxufJB#dC%{RMTc-2@*JquN$@dBwjj4<8p+wBYK;|lmbZt zvbR9UMNBIPOCoHVGrS$o7N1}NQw6b>1S8h={9!woio1MA2qWX-v+SiSyUt$RA`#I! z?|K```j&gFfaJ=`igoUJ--u^z7n55s$tn54Jsj4nnB>I!?sU#Yhi@S)-U#ul9J}PA zFYWKwje-yxPwDf{KE=hNN_sg=f$)uB0HkookC8EIq72K5;i^Ax{}^ZkSfDfWfT--; z_W;5Fw?Gg-wen(IdBYd$$9*!a5>SZa-Z!2@;%{EY77Bs9+c#8Uf}Kn9x>42C7Vd@w zi%KW>9pOD~Q+k9f2Fm==kw<1(E^oQfrt~YGAl{L_Zd@>Rz(N#8!s*le6NOkjFa_tv zbP$MNSFcJ?GO%EKDlO@smz_i4!9DwqLu!RN5h5z9O!YyzJ$m#Awg4?f1~|;lGTDu?WK5s=Fa%9O-U{@ZLm4UBkefjD=7f|N8|a@dVA@)p87saUl}Qw3gfK%F|5}0IVZ`>6403a(-2n z7GB!p>-?5KNGK^y;s=d*hDJsX*2hN{>)I^xG>ci-*vz+QTf~DC5~!0EC`n1v)N<7G zb<9lIcgyS@99kpkIkQ=rnb#*O2e<3bAl~OlZ;4r>tIJjWfMNCy0?mt;Q=^KCisHBV zc}ser%xZi-lFofOjf_>{QPl5#Df$bvLf=1Ybn@z?_mfjlbc7sCIP`8zRx?X~{`hfu zI4_Y&x}ffO_4_AfX6fT;f8vMX)Xy~|NW?#>q=@ZP8j*oV%4&^XQCy2P& z!~Dz2hBZEYBrl)L^E@=kYJIF!US3`)M;nb9lJkCMVPRoW(N3(k^&2MX?7{A2;qp(P zK2=t_^?#5Q4=x+#v9b8Q+)wX)n3m*y{Cg!8InTO|mcSC2`TebVJ&$af<2UgMqvB;s zQ{A92N>0(=eG)-LwD<%B#m6e2RP^dR1(}#K($X0C_*9~pGL=Su{J8EzefhE}*X8DJ z9I{LJfsIe0934W~$jHdR@R_8|O-(_n7VhlqjN{a&qorkU6|xt^4>ag_djkMgGS{;v zuY*Ye%O7036GdfZ7cX8^($u`s%bJsyH)P7^UaOb(7?QC3Cl#%H1D^Q(jmeYoDb)Th za8L{VgoK0_FJ8=d--zi54aIls`jVBE<+AznuKVx8%2+q;XV0Fgs;cf-iqz^A^qUIt zi{Ssj+$EV7YXke`qJZqf!?{TGcBD^0P*CDrio;S*JAJ#Cagza0HKvMKzGZ4R;!#ym zxl<7mLdLo=S}c{R#I9W?r?4_wy!4tuB7$BF_3es{TmoM^8-(jgaZyoIQ`2yPJ{q3n z&l1lZ&Wq{&*E!orqcVMc5y=V%EtL8{M&sVUzq(traLe1RGOx629A*cPh=`wcb?-QF znBG=6q?LW90IzMDE-!J?Zth#WhxG!X%cN5r@`GGDhkfW*zsZSieV5)H$H`}h48 zl6W1KjR(^tf(8Z$$;ilhQ^hz@WMUwxnHU*8c!+svEud$JeSQ?1^iuH}=jvAP|M+4k zFezhTVDRwa%YIWn>TrwUTxob%%JJ5~W*16IIn|g8v`Rl$R*pX9%E-eSpw7Ryo zumEWwI2cbj1`AQ4NqHf>DcZGXsx~h{BNM%*kFJ8=h&PdEnbpu1gZdx$~=$;+#uWKtQT@%|~=GAjw$s8CM zC@JA%c%Y@FWoemvbiv$Lxgwu=JBc5EnTJrbDVeEtF^opUm5Z0R_|qq|&RBM>yy1{b zT$c%9IZ;E_ij*`I4}Sah?S~K7+>j*|6&l%tmDLY@(`hWJ5c*BJ!D2fl)xC+s*`Gg~ z@65MnDs{&K4^od7=oKnbn(du~^=L46+sUU&#;%F;EjD@5$k~#&ImyebDsP zXSlj6#pi%g)X(s^;x|1&sF_ksi$OTvH}%BQNYnI9z4|u^ccs{PiPbyO!kO`2(^sql zL%PvLme1I)xKwU0oJ#!Rr8ol7*ac-Tco8HM*^R_dMHw|pi}~t6t!$#Pp2<#d8Tlsr{Z9VLg}UpaHc>^r@|?;!9$4N`B;Kz9IUz^ zU&53?U_-w2*RJ}vGHjg@iDs3%%A20%8wof;AniPkNT`PdANAS8i!cM%a5%6K-huF8 zp$!BL^8Jq+OkiLqeP^)|o`hIbB9z#1zDrvlsZL`}FHB#7OZA(YV?{1}VW6H4hu`wx z!fo)*GpCcrzr6t1cx}kHl%@KFI%g1`bXZh12tP{1i7E5+I-D?R8tBK-;K|N3vapfkznh7trq8Nz|7_e9N0iKhULl#_r<)?19(RcrvMu6`Vta^2n=-Fy5DT% zTkN{&$PGsUyFuI&cC`t{aRvBt$YLFV)koA21|MY7Pl1i7IR}b$gNdCXj?I1eh=XM1!Uftpw$pDwepXgo`d5sSUcGjv0M4hElEb<4 zq*}ZLi9}{(WGITAmKcs#d7oA#D+0n<{p+>1CSdbZ#ARcm%--3K@v*Wp*EI-)tjOo`?(7*y9gQ^8+XLz z<---S!-9h!=M3Fc&o5zXeaf}GcN`l_;Wl~U3V(A;i>kW%nxjw*21+<$n)kCUVFyz_ z^;&rmVPV2@kKpkupf!D5IH-#iHIy!3aE-Tx)GMK&8otUkb)7jC%p;Pf*Ehk$p{^F%e zx1kz`hK4$=4YO+&J;3{7JJSR|$Hc@eEH3t>+||b0hAK!852z`S0NU+t>!l->SsF1S zJ}A%5b$kXQnmZ))^qi~_ba#&%{IF?--M0j46u$W!jdunht$h4?q6?@yEm~KF?B|P$ z;-%6a!z2Py8y*_kgGq-Rzi6pO0GtZ)RXPf!{-BYep;C_hu~G|} zOdbFhMMXR!B06|aw6$~kO{uA==hy@nU6ZbNU!2#+3|k{c<;--8 zhO$n6uPE#5b8?Oh4?leHz;S-L0X;FhfsfE_HQzdS&!gStwnAlaM`vd`)SzqE^xPIM zF*IY8Vy!%y%bM*S9SL_moK;j*BI)i@uxrgfngLZhRoEr}VLGY!gv*o{MBYfgZX$3M z@wDKuu;}b16B84~WFe=oFE6}#^QPKmlR{i%@4NEBPmcnU4;}{_z!wVR2da#66aDDWdP_4;zyurPS8dTT(IGbT1RD--ll zsJc**vlUY}2H2YfxQtfnkq&shVh7ZwoQZy6L8?Z4P6iIntxJ7c-$d`n#12pbySF!6P-?RmwiIsi8k{C@e~{3p z0ftx$)rvX|2l3;~=9A=1P%~qGIaNxqCB|X0NGoPg>0Y{954^!0zoHz1i#ej-wmWm7hIdE~> z`7dye)<5Gc1@xCp83J> z*)3^!kKzmuy-9ZF^iQIDaWg+bFJO?RH$m5h&&VQ{nY5nV!Iap4m>2qPI7X%I{^MCm zpLz#m`;C2g%oGrKBaj5x@5xlX)$U?TNC=~)adbxd4q7`~xZ=E~?qp++`go%}_VO9N z!eu7NexwvxxjDib>MoB9e85hYnj(A<$zQBnkFs78U_g(|*iWmIV>H|h_}ACBjg2en zJl__?Uo4-R@~mg7Dj-v~JON$lxT5y6AK#S)a6tj+y*cFR{VMwCaIHxx4bSp;O6X>E z5Zt~E0xkPBgAZDFpD%QXoo8UXS@4Q#*GNt-R82TLW1e6)^a}rcYfE=w<(_Ue{>ecq zHEmv4h;)0GrzD=;w!z-%LH6e%<=I)|B$1=|ZV@7D>bgdn){znVi5fRM?Q(q3jfWH% zS|fefT*iTFH{zyNWqcqJ=ZYpw22g`mRVk6w`%5}~eEnjTQ#HB~H!eGKlqjuhvA6fv z(9M#fotS}v+6x!L#e)M01oE{H9%yQMTW<^&n~0h8j1CxxcpbZS%0oW|x+#GqiTt(u zzlwP~I}a!+ZM=?GXc(GboVx=0z>_E29aT<>w=|1djOkhhE^H1Rt2I95THTu}DY>lG zx_sltig@rF#-(;aW#w|ohYDIHrqOPb!W)m1h1EF%4w1W|^vHY6tYsWhAXG5rYDQCD zy6v_-+s(fV>f?9wrRL_0T#fA)p6LUA+N216?&)=XO9i{FR5xObhWjc99)R0rz&dx) zNPXvxTga2C;_kuXTnc!Opx~*i{Hk9sd(7}aKD^Fl6Qk(~@c(=*OF&4-b(yI12zuix zY}MM22Qb^_V%D(ceD% z0u1cz@_PK74ZNBu@g_ZQzqRaI@vqt}NU zH;(tm>*+-*>b35+cwSswDnPB~$SR86-6QsCi;Rc>!9Fe{UF^8uGI4>NLR7%CZyoe_ zcJ|HE9^Pk71@x{@4?jo}n>?@m^0e`xw2+Y9Y{x=pcI0L5>AA>yPvrJgs!$ALT(R?d z()aH-?%$uB@6b*O6-66ppv|7l=+sR}lzALjmulsy<$(G;=r;r<#99xv)5&=WzhzKS zZ2c*!hbwL{KYz2Ut7~?4_QQt{AcF~IQloBgaXnq^+Sd1c@?62p+S)9+dxw*eGf^(< z+cy`cm5=R?86RdZ?PlBa84osx+&uUtn4z?%S$0cOfty+$3u{U*YGEPHYSGSfP>soz zD@QDrCj2}Dz?mpV6;wg)Ewmr*%VeRLbTz4(t)@hakqv7z?h=#)`gisLfYwe^zIbIi zxOL&pq>JJ;yFKl=beB0;%T%F}Eb-xk`xU~6iEa@zH{!V&pWtnW>3a%$qM;>62W>;~ zH(ah;b0G6@ItYeQ+_jAOhPcxdhg~EYMnMbu2*AxS3ij28RjATsIw%l9YFsw;qTA;m zVdlZ%^wSy|aqEh{;>uFy+2=R33h z3#|XGJd%h*au-Tgz$l4q$qMSay6j7ub)IfUM)MPu z4%zaF6jW4|PaDrLG=nO0e6UFmS_2tbbbP#7>E!hEbeW8Hv9Y|0%6Fg*3qt=u|9T2C zGGlNu0dWp7)!pOqN40gRE4#&(R8(%-<)SwN-tn5eP!nD{J?JgbbJHHpUN9AftkPC6Qmy5&LzDsNr%SYsr`(xL5gHZPDMqTR{t8wR8lPr6jLc z`K%hNy_+EceAFrc2^__JU+~y?lyJz&c6Lt0~|-vB*}#2gxv?Bowzau1XIy zhme7^Cu-0f94Q7K_f~o_r`5NGhwgWrR=DI{m5XXwh@!Y=yks z++QOF`VJ1os(#U|ie;Kw&z{Y^zwZxf76>r`B-`8Di2^osJVwDJv#DsLiMjb|f4Y zIQ&XC_|=rO$>=*f>R?!@KHDuRs8hxT^27y=ydk097w6D9gPB9$m+3t$Cv1GGWuqcu zWA&1R_C`N{Uj3`}5*i*}G*Q(;bz!ZH|3)f^9Fy912Z$TrY1OB zRM=wpWi8Cji*hCY5T%$2(vKr+x2ff=tn#`I#qSxTQnqHwxivS^)jbK0d#Qd<*i@Pj=Aad<;&pe8m(7)N_kSKLbGQ0{?3BHUfkQaZM25bEb>KiHipy>3~g-- znWXi7PD`H~`!^PXD(izjnYzMn`C1vIs_5wGh3A!uol!%VK!D6EdoEc1bhbH!Erv}{ z@W@2$L{m*oZB5rSrv${(&fhOzzMP(Z>ZbXJSq)1zhN^p_kFe{?b6xxMn&fjS$h1LdHTLwu*tbl-6b9Sv(y*eZ9p<{y74Q`GtjeWqW)36wjS@5RJjFLnCsy zZUuH0cW|Nr4NOc-tae&s3DBspodE_L6&;Oz<_rhaKnQ5D);h41jqdAv?alKnIHfRNYKp~}Xs$uJKFL%^nOv2+zh zXR0l6O4L1t-R((~RaNi0?eK!QcZF|xzosT;G5h{AGH$A|mN?cuo6(|$H&S%*{8nSJ z?Ao^m%dN)C3|oo99~y2DcJ}oA1TvuOH3K%d9gY^_mU@zJN`bh@ zn&LVOl>Nem3l5825ObUL=(VF}O$@y>Wn*J2DlT6C&UN>$*K%K)Rvtzj z_Qxewke9z5$7o_(STgf9DD|#~njVNJzo1bx?vaZqe~sG3Im(~enA~%J@}ySm@M`DN zJ32~5{-%Vs96p3U3Gne}=jJ^2R-G0)Vt)MiaeVCVGV-zbFV$4ZE%f0Z&D2txQ__$q zp4CO{PI9^2#C9rgA-kxLv3uvIW&EU{wy!x4UY9ORH~PoN$3ufdyUY@9VIx0+4CpZV zrAt(p;cMvViW%@aOwqf&Vho-0uBx}VK5x2=ICx4s^Jc^9F=9t=rKAl1* zi?}I8WjybU)s#O9V&+WXURQr-g{|LGc>(vx@E*mbOM8vD^cB?<3dTntZkMza$;&A! zx){p$C8YY;*ySJ&1$_wH5Uwos;omA$x2(Lqi?MKz=4g0)z8TRX5F#XZjkc8Yy}##R z3p7tiVAq8z@Jx^|1x=YvUhk8u5O0lO^C769WlamSefkVsO}@KM6${VhsH|J1m#@)i z`~WRB0X#{V?KxYwnpmoK3HRxN;H z6IAA%HjzY!(j^-Htn2gQ-|$Nv1>zldYv1PKQLm;mmIb)c__3CA4p2F>(yxBJ<-zoJY){NKeb$qXR5iX zJslk#+=kzpo10Bb$D*Px3Yu73ZyavVEi6DRBn!JZ@Ax9NB+eRn2MP1W+0WJ%pb2#% zXatKubAmp>`Sa%??GzrD=+}Ewf{$IuX%!aidK|A03aMA?uBxUM8ym~d$JZ9Jx3?F% z88sMm;fgaz?!PduX{g@xu#p9HsTi4|Dvi!00#N13t#u)j!WclpSRjPnEVK*a;^1mt z(+z$^ba=#bVkS>1=Ng(=gcKOg>Mr-p{bpPd^P!Gzf18?G@4mMR-PS}*uS~CCbF|n* zS66qc&I=?%YtgI!qLuB~K7+X5{8>9rU8HiI9Dcrk|Nc&uOynHC>{*D)aTEiU%w_{2+%7SG36^QE!DMa)9Lk5sLyZx5{MDOA{U7T z1|cVK$IF2V1u2`2oxL<3Sol>gu0CY%;^N}4+b!bn^2Az?AHQ}RHR2i7>|`_f7Y$6o z($tiTIFT(zrdH3!XHc)1UO}uu0w}-2S9Y6LPiTDZa83DPC#aU z;^9>|t_*+_tQ8mi?p=lX(C5WPC=Y%4sml?OkyE7>aU|C`IXANe9qjD`NY0%*S8UuJ zMfUGH)}1=DL-rTC8qnkyN$wSxfJXt57y9ZIJeNu60-NrEd)Ez+7bJ1WolF>16`_{n z1%YlA>j2$eXn;evE@#MG@Czj9tb*Df(6^1C73QPv9?|!)s{aha*2(_5a?a4&NI~2h zW58um&kAINAMD>6Ed~+JruV0ZP^#D|g1GU*-GKKNtkc~^yM8B z`#12s+oM@ig`CX$-rt9Nx3jZbXHWY}-U6S^pPrDq%E0=aQ=N=F>`tr$0c0)1S@k+z z$8PR<&T}p^6Aq+jc-p{|mh`?eK>>$jh9k*?V_?{C!T00}q@T_{Ic(p}KcE>acfi^CeoiEV_tiIQ-GW_{NocwP6H{Ruf?lgA za_j4UzBTIH0W{k&J!`g@RcP~}u!%)%QAoE=#r51D3F2vZ|Iu+6)6OX~GB&25q@=ub z$!ema-&=vhq<(=^pVd~F`24LJg|)fGZ;b8qq`JAh*{~lG(&~7b71(Shz}UdU!_$)_ zIQS)R%4tM5k>841*g3b|2zK5a4W^=g_xhj)6()aqlK*)c^0CWfpP(cnKommI(&XX00SiS z3!sJ5Aut zu!o<4FvKve_!Em>zHRGbE2~OLEe1HvPPU()AC7;c zc{MvbJID&6K$fAy1EB7>i?_Eel{);}Tx%poIM2vnx_MK!httQXSZ?=q<`9wIA7jJI zfB+RWwUF{|+Yg$4N;^acY%3!Xu@i zP*YXCbn)V~fWEao>hP?xvNA*5Sb~WlFgG8PhcptohSYi-K$FK~?prv(H*P?Mc+u@l zobP&#qT9cNbwfI;-3Z86A=^?~5FHP7IHObqa<9NgS4XGDd0lH)3VbXR5Ct-sT4k2; zLt6WtB_CAS0!h@~yzVz87ymvof{TL#J(A9lyB_;AJVtF`R+)003zv>&X%B(=1dX=E z55L`OPrFAO&ux4Ky*6T6^wMjmTMsI{PmjSPwD;3vbJAn8R*k-;wRLl>R2KMWoQVP~ zhCfE%u7um2Ny{A%MVu+T8rWEh6D4;dZ>7Rg9U` zfB72B&CKEfTxi?Ws$#bOEk6;|1{wgy2qVlZBWVDh86Z@*%Ca*4YuB3IbeB3k4QcmO zqa=!KO1I-FkzM<`@C3Inoeev6#BX;U8go`&RHy&$cMv@72DbTt!`74Co?gGEq!WLfjjCvFzitpFhteF<2YUTfE33_wKQZ z3KJ)K-Nr{&LBVGQvbI}pT3*xRNv?I5$jO^qTcNGE))8|P za^7Mcv&}yp4g=*j`hp9Yae9CXV8Y14tob!|Mr zuX?F|mWr-vx4P9RMf2t%o5|jSimIx7ipUX6FyMA*ONE7nIq1>qa{Rm5q4RfBlen9R zO2J5{jlKg-vXS=-G1j`4()Bww=i35s)d@vI`Wi3Y`Rx6ILH4~@O%ACM_yU}*bX#;L z|5PfwlCfo;03z#FyM4X0M)yqI)KjSt1#@p7jTrGs~6Gl=x4J^ID`I3!r(uZ)_#-`U-T>?nHrTlpvz zTs5C^a&G>4RfFyiZkyuO$Cu>TJ^uCr{7*gXWYr>YGhidn=m+_#uNh@P9~4BEr>G?; zNGWcM@esy)5X)YR@g{IFcHW!hp;O330l>KcvJb#^HQ%gT?Yy@+B_<>!#KOYD%d3pH zy__D2u`glvfP-I9RW*j>8cZtkaC?VMT3TAzW#iWm)G-5;U*(#Qy|3O8>iR42P_A@g z(FoelgK4GbVHv`32#PiuByvE;b*)rEq7EfD_pPWiRB;gu?>1E zd%z&$uek7jaCA^lFm=EaHx%5xMO2D>C~BX+y_ zV@)30SvZt$h~Lx1YSKwNRGogc=pi8|cLb*!$N>z^Ak0Gg1-i~&yz+OmSyEEcYqwhf zG;s*Mf7Lspm~Qj&O@Jz}fJxq*P#X10Oy7`PyLBrUiW(Es1H81q#SaUjmj!7-gjrj$$KtN1LU<+{FYQ%*A)$P<@qJazvv}a)fENMjaqBXU`%jGqjC_0YW@Z`I? zpQ6dy%B&}WdTbr96$AwYh(KQK?(PQZaGh-lmLh1iHf!pM|BDgz*AtHeS-kB|eUv@e zD%VflL{Bd9UM7SRy~E*B*FZ!=bB7?hU8iwKs&{)wo<$j$m#mCTmsl3+f9x_>eLjYr zjJ`zX>WPO<1e{=>$K}C`KGWEDZ2)F{)68p zEl)^wj}HZH52@>$@g)qe01d4{qfUm*opf|20L%oE{Fl}o0NYO?gM@^JYSp-YA-TrP zEQz;0M~~LPBc-9y`4@uRfBa5^!xAF|{~z-4KWWADC8}SL zajbiG+Or~#zyu7BX;Red_$)4NHaHK0g0!D6gTJ;Vj1sfjZD+(!B)e0^>cM~kCX&p| zOsMnr2Do&$UDOg$aD&}Rg2me9*5CmUc36BR=+*e*9KauN9m5wWBqQgMHEz3*gETcq z0|_XZKGGuCICg^qi8<_h@ zp0+x0_QXVCkA2G{#+0uvjK&8Z7!QL~5iIf*$10N)w{JY#kR?xHlR!Pl#HiCvAALYD z$g8Y0_p`a{TJT=b^3&h286kyEn4G-)DPW$-JneEI6bB#%{=}vCe5(2Oh+!9!E+}l1 zIu%1N#M1yiN=ZrviY%*vl^TLjI!Xxn(Tx?C1Dv_wO@bTSsF;g@TBr_I3edgZis7F> z58YBF=u3e6aBUC#sKDFdj_kR#{y1C!8i}Wwnw#U};}=zSLR+T7^T-|?-~bg&O+R)U zUgP}B`pOp5@$K8gU2cKPgfEu1Cc~e|QqCZbFQbwUDMrd@tpcSY;z(#|y*4H);p+ha zEnc~TUh+X@fBMv3!5t(o#Dw;($v%Az%|0`aT>~rW0D3X z0PriU6LGxs{>$X#5Fg{!F6+l1Z|9U#ox{Zik?3ZOjC7PJEXRt9J8-_L>T{wtP?M3~ zjKa^(-Dg)FiEjsCyu0}s)lIY4aQoXIP zQE4K8aZ{^iWg1ps2R-^w%D?d`A2sNl`_ZY$W;TE1>mw+_3yr0JI!qk2U=w$G5)u*u zbl=?Cn*TB(>=m&85Jq>qex+hSUEd1`gVXk`BttWZu^Eg zn^^CpaVE%VQw}+W8m!FkI(60j5)8`OjZ6@>m>#HvIQv&&R>MI`y?TqLj`ivH0m(bQ zqW*L|4JpIn$;jS_TH0|ZA@s+}Lu@X;IRd2iP%mb4GV0E37lM_;u;esP-y5Yt$tHZg76r1USVD#)~ z>+Y$D5ECMuCU93`LIZp~=S$j&69s!|Dgt_+P7hqV<6bvI!5Z6ge#RU{LDRslRexsW zO(dd%bR>(|*7zPvz@3iKX`b_Fx34d%Z=ONWj;Jm7wbOq^)X+-A{tWP5$)E4l#{mzI zUXaD$IP3zpXai^7Okj7!5^A3oTGT}DyojHU_()d4RZEE#PdV2lL3x!$g7WpPifRsD z57_c2P)DlkSM6{!$=H@OF`MFa_qOZ=X!2p4x$Bj z&3c0o&mW)7bp2(QHNsAHFZ;{=9A|&$H$2(n06XMZkU%t+@1T>@z1a7U$t@?%k9y1O zjpb5*<{QAb1z^4~z+*pY-=7|Nx?VosVeF8ukV@K1?!l_$$dGN*Gl|=)n(KY=t=xq| z*WdIfAZxwm3yPYs%~z0xnYl)h{$vzY<#Esvr|(=S_t%#rVfH+kgoeR)DfQOdra6_l z6zJR7Sk0V=c6oJ9A1S`%i|U+d@x0XBj7cfh?TY-HwkoxOS6<%AzNLHI6nZK4#@^77 znb4$BjCqj^>?I#kSI_>(7h9F-?+94FBc(LqK-+qwIB^Ld^_%{GmAwU2 zlx_DfJO~m>2}lTnqqKBN>mZ;=NJvOaH_{CPf(QyC-5?>--K_$W(ukBn4kg`ZkI#G7 z_nznft+Uo~xfa~a9oO8kuf6v#Zu+IM^+GCx3ig>YV;gYzA=z6M+ghvd?n||89Q`K8 zAW`v87X-Xi^7B8~#1gt+@;$*tocej~(NoDZo{=2$N8)g`o!;HYMPHEPQ2gzW$DI{w zom(8rnmA{dVH$n?2h;Wn6E|B@X8fh73n-fFnVB>)s#@;%?@6%cu8wa;l8_+NmoEJ> zqmD~CIN_}{pVZUfsu$z0FJ5Su3hwu|6YE1a?QI?O*hD-fjeOqmG1{O`-FGR9`FEpC zn0VIU_b*@G3ER2f%kC;IO>%T1Kw469uj!VV7(IDnXZky_r|0TL%8~=O%Tz1F2M>(j zg=d;j?2JkJj4GwkUuLjxAc4)e?Cd(MtcW$$D+GkeQG`Nw@l~p;&7)&1PrVm*#;WHR z7N%=Tw|Wvl5JPL(<}{H0v)WFAmL{RhB-A%=b8e36;st!<@9gY|gG1tt-8Ii%g!r=w zQXY|H^?Cny?D#o!pR-uM?6*H4K=Qp5?dF;B+v=SbwBAjYIty<+(GE`dfj)k!_^Mn> z0pGHySaW~h`|I$>`Q+h==ew}Ct_(U5ljc1+ zb7@(X*FHz|g+;DQGijuQ>Y7xNhW^GgO@~BXtRFT`edONU8+zEFJMFwaU1K>E96>AW zylt_(Cu4a?S}qYjRUfNUi^^{)yVPL@o~M}$X{XM7H&?2g z&)j1NtakjWEe}l|biY$lB5eO&?{kzPI5{z??6X?wLn~yV`fc(X;jbZLH`Xurq`!To zMlzl*eqFX6^WEQ_Y@e*IuB>8Cy=ByZ{L%-IpMJCY4BUKpxTg-M-d(wAIo?~ZHWN8< z9}uPEIehcCoD1i}qkDAv6J1Ib=8C>m;=x}p!7LykhJ2=xZ&@ko)g3!q!XuQDv*aHc z**`Qyfc)g)AvWJ{K6JB4msfSGR#}o}dqIjEg+`;7eNVMr=EHqcOTp(s$i~9nTFuSb zge@kBG>~X1N!UgU27-E*Nog~=8{xDtem9WFCn2GWN8xn35etdLeejBeL@GX#r={E4 zKTgwJ5cqrkoU`a^jwz<7rLSLUtjEYur{E`%6;E9oL4q{-So8Ge;2=IS5F6Xzs-$>n zx}lSaiJj^og1eYVM8swyo1D3XJo-wrfKb`Z6PmRUXL!f~X0oKWSmvi3Z5t`rw^ z=?FM~X?hxN2DoU^q-Elqip@wL?n3>mN5g7Cqk7+i`0f?PJTV zEiLO_+lR333cITz#bK_?$E< z$?LF-#b9$&h49MuAb@>FJlQ$(YgzZ7HZ{FWPq&C!7S*{7hcD{g_~VIWo^KR!s&e;e zEOFmdQVg?iDD56{8U+%?w~_o98+r2>MyB6~M{?SWw>K_NueAm_h(24reH-_jnr=hb z6eO-4v9Sg~h}%5gB6oCriI0SgPs#UmlvdcWKY7CAcwZ!t?LjPBK|xnbJ0U5d)~q$) zYNA!HBCXqjqo=2*uMN5f_;@rlY1XbpSAIbux!Kui9>;OtNKG_9t5Hu+Bi88DxW#Rs z^!zNpZpLv?Jx5^>(X=TIRrS#uIW*X(sXX13GV9UuJKAM&T44TOKPF%cI>?{FKwpl| zWUUp~XOUq{1Tx7@oxsLMJ-H4`6uwNC#UY`L$~Rh@cN9$4R)?7e%}qo^dlC}n67Cyt zW)62<1hl$Nj-FqC^G>7Rc7^M~RdMmS+vyHm33SA4Bu}B|=|8==_>e);ds*r%Pg(wp zDX<$JM9{x#b}c-dwD%itI&rYJo(v@qJ!BJ5tgc9QcJz!kiU&;8l6~0Q0F4fNmvYtA z{%rDvqj`*loG}8?@Z3CVlQf6pj$x5*-nAeglel?#)mK$r4;Ja>F{k48JsrqUYY*-P zXv$t)eX+{+VqeM;9`ddf6C>j_i4!N(J$?Pn;{&nq>Q7&Kj-!m?8@;xqQRl{^>D8YE z@^GHZ32-8?!IJH~ZOE*k^=;sx!^W&8FYg?f<+z^X*1hF}9+#P{=JsCB(?Y#?_pZIk zC!YYBui2dSHY&DCoX^ooRkbK?%s)AqD5ZMK;L)SA&E3}^7iSR5F;Vk;7;4*A?SPnW z``sn1C2huJ<3L1nHnD$&kBB~1{o37IZ+fugVx%}EP|Pd71F<}AYlne&_4WC9L|A78 zKQao=5ix+No^&j6XOrhfdc90jU)K`HGGE!n0m>i)K=aa)%&bSDL^I>IJi1705D||FEA}{YU`0l0r+U!{WUh{^IHc9JY z`h?i032i?rv4fgfZa)<;0I)InHIH80Tu<$8rh(4m@hfQbs)Rra}(!LLF8S(9PSmiQE!h&RrR^&*DE9 z@Xrx`&Jo}S1eSNwIjD&vBf~|9I#2 z?%?uBsj>tRfgPN68|`PL-H3<@yN02wa@uy&#_S>#Dgxr)uBd~lL_&mMma~f9~Y3F2Byb3T);g0Av`GDQ3Cs$ z$05Z(5#E9MQPLphAu0H2byon_@M6KwlMDVJ8$;X*BvD5+wLa>)jALSG%OlRr;l39# z-Ex4f5g51-i4{+h$%|~mj?m=DR88_4K|Y^p&+p8Uhg;X}A3ddhzp**)DxF zi49?UP(tRuPAZ@vj^+OfIL@Ppukn{byw`HGhLMv{EfĎ-nAZ1DI4tuG^yC*ci~ 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 literal 0 HcmV?d00001 diff --git a/wiki/renderengine/fig4.png b/wiki/renderengine/fig4.png new file mode 100644 index 0000000000000000000000000000000000000000..7baed24d45cb7035f9b05ba30b0796ccf852fc6c GIT binary patch literal 78 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 literal 0 HcmV?d00001 diff --git a/wiki/renderengine/fig6.png b/wiki/renderengine/fig6.png new file mode 100644 index 0000000000000000000000000000000000000000..a45bb4c3a81c047e9bda39e458b8e683d4e5cd52 GIT binary patch literal 26446 zcmeFZWn7hg*DZR15&{C=3P=m0C=${j5-t@)K#*>bZltAAQYk@NQlzB2OQgFSM7q1{ zOz!)6&hwtV-}7yM*dN~Y`zZ_7x?=rf&N0UrbA6P0C2|#q3L2ei(VPGcM{(}YusFq^za!nlEh9+`q*RiAne;OWfdm5Z(#$$ zLm$5Vlr;Qui|Oa{RldRo=^r6K8nP}I7GOWWo%`$6t}rV2@YKR=zN4KkXtpidN>9C0 z)uW@%JUd>6gW z!ji3AXcQyhJYv26UGz&!=mTz(p@%fTPLKD?ZC91ctPLe4J1wRguF$Zlh)pCD{@Gg{ zHLp5MrW1Yj>eVGoyqi34<7XKZveh%?(!;{T2leBe^?vw^26Nc1C=w6^zQ2UEx6oZz zS9kl~y?eeQ9P267)zyUG)GHl=f`a;g$fYahY9+l44P#Q#t2;H4d2=pRejCx8Z&GZE zobQZ_du(sn^qJ-hy<~vDzgm@(y{2aT;>1Xyv51IBXPlr0HtV~M-+$eCsaoxFy40U8 z8T$xW`Nke`8?)v1UW$2qauidqAJ}#~zr^Br|O5?$- z@sHQ(iJ4V-;6w`x3(tLtbvJ$HPW}A+ZlEam9SSt6T}F#cVI)Q-Djm7aCrsKav5_3t zzo^+zd!oTR`;)Har5BGockj0N!-(9!e}Aj8xw-jpdp?}5*?^<0v=rupghgEy+v5D} zH297fF{9$cy22ULmQ~A%kz(`7Pec#O?A8TzTSBbUOG-<}tDMWF5>W6_?n{67IYAGj zyU)ZV5lpvDZb_{^Bw1Q-zyUY2TkDRsI#QSpw+BBo-l0d*i8?%<=jY&%t)l$vuWv>g zNKMCPDQd=#!mFpJ=dbJ6)zsAdg|$(r4~r8ghudGxzUtpNwAC|?M3?u*r=-1od$~Uy zCb81Z4Uv?TqtMIK68LxeuRjwAj3JI13G_!L#yg z@)!0eV^S@V!p_xg4RdpI!wWYYFWWuXoQ~sn3=0mXjXT}`Sx6<|bTAvPA>g>j$i!rN zytg_rF%g!|Vbo_Z+Y*ZMkxQ4q-y^A{tUQvQU8P*|c1pnc$Z5A<0Slkv-Bd%nXmH$# z_Ct=e*NOWq)zPipO9*oOv;k$-7ANR>dbArG8!MA69?5Ae@73D&m3w`z{VSX`U9~h% zHOOH~IbA;Uk;R{9Y0^nAL+<684Ciqg4=84_*{zKwiG|B&D0Wvchlac0&`i9W_J?&8 zNX37&T0FV8wPiF}bqaeezntalb#j}SF9}v4_2lwc>5!Y7PjnVOlEWSyh!HcKrz@5y z><{O**k2oGko)o2n3*>5LO2l5@4A@k7VTQ10|h^Orc+v%{6)eB=HfNw#)9zJb+N`)k_f=8}hl4;0K~ zGZg1K1FzoPZqZfBBbR)=LUi=x05Z;M={tcE zU-!(12#?_Iy{TU@$|N65RHg(_96C=oX{)hkM|X4AE` z z6h?O#%A|7A;4fjbj1M#WXS{qelu>DCZCoTt%q~MFMcK$`srgGdmEgqd?>?iRxP!sL zvCc<}6_t*Xkwv|!uiHNnwPq+6mcw1^wNGqqJ5E>bFJWP{ix2h`EMm9%Q}c06?kr%s z*JgC~$X7=>55qS+2orZkb=A`|leI zIJCcX@z-qER9AA|XxJ@0TpP|0S?aG$mLQk? zA)9N>)E?EJH&&8YhlR|b&ugO%hcfF~#MmK1#1RiJ=ZR(MrH$hvZUUck-6(G9p&@x6 z{V*~=pC#CesJlgAAWirk_TF;~w6zQ0z90xuP;NZ$$T@|V(-t2qF7g?Jjktg|a8M+N zbo*75#suJYD;>sLSUpKX{OaXTR+$mE#NW|&x5}+w>s>+&E|cOm5u+0$w?vv0YkaTe zz-NEnfUfT62A8?dMvNeCTTO}pZCj>Ct_rPL+`o(n=`|_BGiOG426y|vmjJ(of`fyP z_Se_fE*=7!HE!R()3xfx3OGCLEOcjApFLt_?cU?Rj0|06Bc^DAv`WSAaD)8fas0d1 zePiQotFFu0;r#F4zw3QTSd=&QqABH_(w=>^h7* zgzi(-o}-LaA9BPa*@lOs4vByM{JGV`inyJ=$s)v`f!JK-beQLK4C_3UK~B0@5JC8a z8$Mjx+}{uM@p&O8CMF@_@8ff@QAglOSbe(p)hT-s6G80hby>C1ha%{d_Aw%(qaW)u zeFp46?%$x-9@QSj*;-$p1a}T0^)FO}nW8(L=$8Kq!NcXsH>=Jt1GguV6KHJ1$i+)v zo?Oqgp(@<+2F#5uw{~VyzPOOGu4} zAI80>n{J`YmN$|ZkuLOqFFiN(0xq!^_i+(fC^tD?$|PJxKFh#*&MuJu6?}17o1k2` z$K850=tydSABKVKM7mT+9wPJ{-m`yC3k_j=+JL@73g?u;1Z@m8aW%rEJjgJ*C(lR!TVp37Rq$k0tVj+8RyBL*UM4W6Q@U^3QI`@n}A z`s@EauzW@H@6S7gM~d5Z?ukO^Y!1cmxv};$|cM z9nbRs7s>ckin=9ZEBLj+kH+LSBcpiLHGnr}l8DN;01O@R-Hj(ZXn)TKzCYBA^HQbT?oy9f0 z(ZP(v`+VuH$E)unBIG{pVGB9vF#dMs(X06uk|ZIVxcTd&FKJOpS! zwv0cJU09l(71VAJruo(Wbw7%ed~tDjws7$1nTQ4gG zk}!V+-5q|FDkuHbkxOCB<3UQk8MdZz3kw+A^RDzBK7M%D0INQ7ZTcMfg`U92-(R)L zNgR@e;naMmjAX2;jM*DU8J%8WPw+mg-tlGplG#@_b6&cEK3%CFhxFm3>Q$+aF zQpUoZCko^n}lA0~SA_IW3*7ZiU+}1pfznrm-7#Vq#T2q_$)siD3*JP49 zbM-RT8vzA_;LjVH6BU`>_@~4~oOOBi90~>k&+mD>+ir(cq|aw7zBb|f$De%v@#B|S zO6*lHLoMf8Bg`aY%FH^VnUY=-0p{xnpseOF+?v~%Qghgg-kFap{zSr(XEJJohFf6KEKyese}J^(_Ts+Ifz*KGbfO zmX?l*iODm|&5gE&Z0=pJN)z8Ln^4PKyT_RCTZZ*aQFq zS*V$9<%Y$&BU5M;_|)5_wcfVO=Ibp{m(k*L+Vi6cN9_j+Yq2pzBK}cOVr;{xmcEm! zVGYXtEo3eGtB35R(huK&s#_ihJ2L0>zV6=m&gWaRw+?0~WN&<-XK6Mx>Hjepl1(*P5-$%f-c&pi!NM z^3ibN9Zc(;*KMiTIo;Q|z{0NQhVY?LJ{ucC?oX7f1zu(u_GhY?0`d(@Umth;q20I% zJKFhp^_MTn^!4jsmIj<{2D26d1&(?qs~1NKr#s^UDS0ikqWCbnxbzG8kRfz5v1^uX zT9P9Z`TCubF-Ny~4@+yio?!>E#BGykI60l4X&mpz4VT;LrAgP5ai9Gf9yVO;>8}4o zbab+e*6&p3b$Og@Hg05j5(O`e<%WdF7Vce%ch+GPO7vlS z$m_UgWVy9%G3~IsGK|80ou%6R(-U_flP^_1Q{iPO!(9&^+m(tG{Y9;M9Dau#JExNv z%&SJ&G<&OjYPnjZ1cAXQ9|)%o4q*WSRliqPm7vZE6mTfES?<1ag}`VaV`XV6cxuU; z;9NZc6=^y95{D*$ieIDRT@Zs@3niaz0?LyO3JV&$j2A&4j8?A;9XBcFxQ3|TfO#cq z42U5?6&T74Hl}b#ir6Jp(9cHl^bz3a=DOC=VS9)vJ%W%k<> z4gSX+ae-HHRZ7h#+ZGlg_9xO=JPal(r~jB0o2szn_lt!wl9AXs?k>eKtNV>s zorcS2F1-krEi&0uDPD`?wX(1Ca)!APu+ocU;Je&~(a{JP$~Pdu!q(PdyZuLUSiXMt zW5>M;vvGx44ImeQ;7Oz6zpGaA)^vOB3X}3di~ri%9oUsQF3x>kR}|Vm6yi9I7sObIsCeEU^`{qm5N>HRsc<#)=395hPQeJeoLEGu&Z2*& zIivRUQcM*3Hu=pr%rR@WYB7jTRCrpT(D4mZ@C*qV8N($0l`F3cS==OEH-6y14I)J! zssa78wrV39qVD5|QJ%C<8yu33*y#(V-Yf3zupj&luHmd6I@!(5YZr)>loWR<-%lpM=?5QD12ta!mATi=XIfvn4ITpv zq6hLBvS~fQv3L>=W^0)DeE%38u8^r*_$p2y#w-%}q$@PcYGpeI zo7&r}Dn&y8=MX}ud`5zLCC`?>`Gkgq6qt>dLF60AQX3r{tvMnr)T`_#O95fG!N67BnjrS5;L_c@?8vV8Cj<&;^ALE)AnfyoKs- zBuDTO&&ygpilRMD|LPBXc5A>YnJ*7y!giy0sOeT-Uasr=Q0&u|KTN8?yN!6Ya@*bI zLAYKKov4|a*~gC`x42@Wqai6WhF?Q{|Nb3FC*6){Ua0q|fkXo~mr3OYwf2DZwGW*4 z0M@QDE53g5!e>McG4bYpauQA_YU@PvtL;T_9OoI1US}-7VbAx_2MSfkYvq=Bc_!D+ zF9!klTUt`mG+tu8*fUk<4OHS8kXB^=!U_t5SOiohWo2ak4IUnsc_SmkfUKPWVsY`w z`a~u9jT_c`E5i{H5pBvQUVfo`P^*}|6(H6mx}c0J9qn{z8y!75~&Mg?!DP&B`Q!9_<$?_sj~U4v$yd!7CjkTKqFdI`0;0$9jN{C8Qdd%roxXJBxZaL(4M}+uI`$xZ!kQ@5?^BF1yrJIlc2xUoZ zZU4-_q)24t>BgjZmkNXZvmAGd7TxQDZ5Ag zBKQROAZ;!A*&KJb#HK$h4?5b>Gv51oiih6c?)ff?1|ha}tVgBNp*EGD=CP%Sfp(S6)$&9~AHl>d`pSCy1@<)(yZOc5 znJVX$8_Z*6FM_y${gI5ji+cgdTU)E`w}Y~>m~PV!;L`kc{Y#ncRT~S#?ux^vU%zzh zjUzLcSI3RJ;$59LYDtnsLR^n_jlT{z2p;^#B?%{n8b|JjHMd+fCVn&(Ss87e9GjED z>a+nC1}T%y0JhM59Y!4n-a~tFaaD2gF|Vt~9)vNED%o{g%Ko7Q%N%w~3XNUy2{f2k zNU2?mosThv6ImZSg%bX0Wf?RXE6LXHB)&>kK}_u`qJB5uCR?@CVz#9n(g_X?q?T|x z!NU~oMhj9ir>&X7uiVrJ3yEQ&45b>Smc4zWeSHOeeSLTe%_|9S#G-dD)pS2p@DZ>qx-V>n*C9zrkq*JuIhZEmW^2XX1%3O{B9OcdvNt%^=I8*ONQWvMlK z5cZ}JFe~?&)_yRxTYC%w0MFaIbv9z53`NF+vhKBnH*ZeO%Gu6$q**#9pt9h0<~y`e zK8C%RB=@D?F7{9Z=++tDwocdC>p~Dk0#e+_U`ZNoGJg_g)pYeryJ{C1Tw?1@Kx}24 zs_HfU{m-kWW^@QqH}THXq?@keTXz5Kix@5gfJ6#^NhvFt+1^b1oJGFK6&oCEbR<{R zDqSYW=4jxbU;RZJietB@K-{q0675OPcDOgT0WR=#Bchn@Z4JAC4T`|IbrrQ&s7*;i;9{FDw3=Uc_eJC(W0 zuOe3vY<`rMheL#@BBbS8 zo~Sx~`0(M+o%HPN;#szY1ZQT|k|Lly!{ek2)=+9U%C(7XUC6898}m_|=iQW1Lk*X143BVz}>!5o7Hv z!biRFPyDAFwV`hP@jB72Ju39}?Wg@~K~DjH)4z&t%Fvx@3ZkN-f>1<+$^b#Ya<+wt zL3U$nD~eUyixB9w|B{CCbX(cRs%DiTq&S=$Z(4YSA7)%%U*Dgt;d-z!rI4i>6rO8>hA>S#0l1WnYk|zx0fDl} zYWdBCC;9hk(^9vhhC z&=3Wg5~xf0EY-uc^7R&7`c~p?mlo~`$Mwps*;Yt56OD~2pr~xA!EiltI@o~geEIT4 zg0i|QT z@YEaBuo!+vE-00|80T;{1;sVavHA@Y8l>{|+GktC>FMYob!Wq{zkdBXjA>E+3NG&U z?k2qW+ywEE#+k8H^uOw6Q8+E0UWlB6;;}lQWMtBNP(Ei+d^8iJW+VhFe#1 z6CSpRtaVbgeJqaP2Uty@r8aLV1E8Y*hl9Q#t!8=H4WOtUy7Lc1$TLrQ?!K)3glKLM zpw+QZ!_V`#ZOhteJsN#RiIi*0Hvb2xOntfiREloOK7=5YFB@2 zt80UwKguUi@XTm+gdgQoP{1MC$qf1XI*L)FDqrHO!xn?-=zvPDR`^Tzt_K1N*cY|` zPuvjDagKKV$IH3TXTA(uwq_`OrGK?TPEtJ8mB6drz<2{yU_PnY7?6naSy;HqlAQ-a z-wl+>sBOvX#HcNX^@{DIB2#ZUGBoRtKtTcxIE8VvXL?(-r{?`C0p*c|8Lx{|0u*EQ zzQwM){ZT-Xc@Q$G9IcHzGTgaivpshTm@$Y1#sZ?w?98a#j}UnNiQyCr5h8*-=UaO# zDJiMB7;s>*?P~1Ste8L9EKBhXX4MUU?jIDqTgL;L-k{phaSPZ7FDxz5PTE>ooi1lT z8?{pzO#K6salu7b)NIZ2`3q0~^qk~2Ifxp|)9-A~$q~p@8LYHkEIXJlNZ4B?_wdf% z+qkzl^;%jTFtS!4^*Pg|%fW`|Vo!bFf&hXn-Ga{s;dO4R+a8Lrxi(VfVh_*V&0R{V zbouj3SRH*CO7=5Nr6?aL-#`Z3%u+iQe=v|XZFP3SdAJ8k5uoIJ`^f}Hn9+rB;A-6l z+T#Q*&rX7pHT)Z#Q9j*?f+4O~2?#!$mz0yRs2wHkPnzo}=Ya;r@A#^vKRY#5My>2% z_(!YlhfboFnTYxcB%ZG?H{J~hJ9vkDx_s?;rAJyf)b_RR`Z6-T(lWgO`Ha>7pd&SF zuNzVF_*Bs`G4=A9Bm7#wqRp#g3?>%-1hepzs95h{BzE%{$rgiJt&|c7^(@?DkOX_! zc$~r;*G8n*eobk)H^nASAd_iSrSM0hbszGSQ2!|*|X zy4WDwxf_D14Te~pU#)>i>LOta3kD5jhMb0mW@(Skt}ReK8CYyLRn06yH?y~*(#Rty z|2RH9L_^9NRB70fdlz2~@pr%sk|<|u>)PVjLVY=`RB1KO@?WUi1{7)7U?^SnV()DY$IQSAMR&|6z)<~A zEp_z7QLC&t(Qg~N=TTz6t)8!Uo1eeDVowUKxnVTco-X+qiM zrF-&cTkQt2_%#=MC?gA-j0X2U2B<%DJ+njkG&K>@{OV5J_Qs3kwcm0Z8fuztZM=*r z96{`I_IP)u`FV1^Ui-*n3$4kLlB?eM?WF8_352xw4D`No*-TG!zlweQ`-`L=R8rhT zBz7q-r}0yD^QxtmG7}lPxQJY;dQ0$Gf)@1_YR$gvY}r|gE8bV_yYH(X^$mQD$teLZ z|8HZLqaOxTOt-C(NL!FtAeXG$xy&hlIA=X%vs^zpoXk|^-5a+vZe5oTW18EV@6<01 zDkv!U^@|$p7Jgv2_<2dDoB~u_TM7jrH(*b5n5!EDaf|Zl>*H{r66CBXDH+YKl)qmm z!OO>Iv-oFzeqUIss}1c^a{aH2Jd@XE;Yb&C%$#PgV}|`XyNL&{+6t|jwKNmg+4_sZ z(w_-WCnqZ%m34GvV;)@sAHn91A$So6R6wmW?n|A6@PbQIWWsxskT7UC7)UQX+~wXf zn{l!5EL<8t;l#K}a$gd264bNjF-xO%p9pE|Bw~0ha_!ceDIfV653a4|>xb(Op$joF zblhwaVL7F$^E-brcyH(NJ@T%4=AP&D{aVv8i6g2BqNtzl08*$P?WoB1;k6R?swN!X zNFe;v&V31#_thcRQpf#|5c{_`?v?7b9{_I^$)a7xZ?jYe06c_2E<-N;5ufcz&-do9 zK<_UOTlE09$)H}*l&7ohO%5l!A>R%~mGye= z+1<=lCKFBR4JyECm^+T@Q*~x*Imornna({Cg0I_x>Gd7KIz{+2QUA8SDXeghdq06FM z5sjl`Zs2(!A?4l{ z=^#RZVs}sN=nnXHKs$oP$>QEC1#;2G*;N@PMn`5 ztvT9FpR7D?vd*q{g^~N|5xSKOloZ&qT$cK%o0~hYdfi3&I2}fV2f@+giZ!bpX<@$ukrH035Vs-^=d&{kA=bP)iN7F zT$-0*j7QD%8Y$nu7a2@B9`CsW!NJGJcX(LI3X1NbI?Xd6$j!&gT<6+mLCRU3bUkW| z)cvm<{0SipyJTF|<9Bbd4hO^487P24KRrqXEf~%kKt3pj&1yL_28+<;;7z{GvWtMl zpKnl0hbt)Q>!%FoSFiS_?1I~?eSG0vI2KZaX86Y`!+u*BTu}qS+JA7L2g};q+7ChC zB?H6g9nqeU`%rC~tMKiQ0h5+GM(i z^A%$G9o381(zhTE1u$z=$p%t=xv1#vw>^lNoaQ^v&GuHz_1nqF$VODKS)CoeUr_Ul zv*F{A0PjlRG_@kUESIHlU7e9Wt=^+gfAj5M`Bf+C8z%v$J~Rq(efzeUgqcy)1?ax5 z)z6;^m-q05ij>kmn}qKgmQ#e}S?Bs%cZ(JdS4FWHP58K-Td+7CIC;8Jrw0|m%s6Qm-z(qCnvOad;-So^(piI{+N9Cj7Y==?6AjQ>>^%@u6_?wI7dfL!KxCJgETX(;t*E38tFCiD?TxAQxhr^LBO17|$&&6&P zi6Iy@m8}&L+NrXD$CX#U=~gwgBgk7WiCm0>Ka4}+k&p%M zLlRO_;8;FE*iky;oyiRe9bV!c$rxxcR9+6mT+||2{Px8tceZ2dNbys5)2v*i_~kaa z3`N#^_Y5Gy*-!RWI__fI5L?d>TVz^eG!%v)X1Md0` zzh9B0xWOR10A?p3dat7%J00WzA2B!Iq5p0g{8J37B^z*W7mmAi*K68P9}ZeTLP4!gQx$Vq*G=dnt#!jp)&%x$9HE^8~erz!42>G0=nX z5dCtu*&ow=Y9Lbu$QMqHo{&^vZp=8yfSnu4c~eKij91g~Ik!(|IxwV~&>pwx=LZbj zvy<&kFzA9slvO}L-E3vD+7+}3d};v`YU=Y) zi?QFq;BveKIO#P<$@ERCm6n0W5u z%OYDplSx}o#u*qH+rkJkpX@I6gFUA7$;1b>yoTasipTGyYBSNgCZV3hGfWG(<|N1soler$9rd)?eF@XO7P2OlF0wp+lw(FG+qBP~=m< z*eGirH3)5MNQ67j_ha7*Tw&MNy_w>pH1cfXLmAsi36M!KlzJJAA8xRUO*g4XU3-J; zmbb$6R%g4tyF=J?ze%NulM*AjqPj?qB18S`q0Qf0e6+V|(lWp{sIoto5leEa1z&0s zrM~dTSUU75mQ@ZjJ)1?e_ixZ?D!E%d8@)#B*s7T0sH#eZ#Nz@*casFdp#d=|?w(uo zv!VAnIS&toK~X8=Z^lrwo8bCq%xz{3NI)htZ&Cr415~`&AlRiwG}^VVFScuuj#T+2 zHyl4bI(DOdTzPP@%n5dMNU*E4HKv3U(%!nIb#joDEbN}pyx1Gw%k+hlI!>Lzg$_tH ziA666VaYT)$smj$ZgB#3J~!zVU45}1t#^7ue;Xq{1CLtP{j}f*WZ9)&ealETP=}(z z82S?+^9^QC%9YEICI(=Lh&Z=)Lyo$T1h!V&EO-CZ*8(4Wg$8UtQ>&}IhSGwi;|3f7 zH(BW!jJ(wUvfrL7Bxb=UMqSirm}`qlkCqF=0BzMJ&a4c_4Sn-%V()G3e{vb49USds zk4v3uGu5y5NK3l5(^%CFhB)oenPxCbmtDgp6|xhTjQvvDq`Bf`%z!s)6ZyPfa! zUIDnpZT68+>vzp!Lc#+wE(%(Yl6R~VvfcNkf35zm%~vU+;4o$4e9OnD1P>$lbelTg5I+%|OTh^i(0a-*Xpo(qgX;IbIPE^|L`y z1QpLd(gx4W|D#4!o>&%xw~FXq*U$Q-=b6f<1Qa~C2OpbFR1Btc&ftmYyPFyNr`-t2 zVu*~07|R%LIywAmx5BfwIqjO>&wn_};PIJGkcH(OE?rhu!+{KtCvFQ{r^zjcT1lMd-dFPgSoPmSxs zHL`|FEHpY}naDWaF$tUnRLq3jU*<9$sebcxVX1$5AnTO(u~Q*g;(0bWwxPym=i-_g z%Eg_ULYs7A2bVF+h3A>tC4$ytV~gRqojXpK=aEghsp%X`APF-Cwd*`Ed+Xhahjx>c zU>M;XSXXP9311deD;uqHzLeN~ld7u4DRQxw8?4ffAjyNwmDctA`PG{nv9+4uqZ6s~ zdWuO9`#Mjj`}c1%Ugyk~>~nCNFe&C_f}pcJ=zX%)TKYP1?!mELiz>~ARvZ1ubs+5c z>|TYMlQ7IcX;xspcvEBY4Dd4+K?k$ct!l$&aAsrEsH$#7N@jU_?5I~Br6}cdHCLOB z6lh@Q>NGC|-|;;jpOi7~kcvH{o4LFR4)2;I}4X2x)$64Z=p>YN=dg_2VCM z$M=>!Tf>;B{@U8C^Ols)7%J57yh3xNQti$nl@@%Q^Co7#ZFsAZdQie2Omo74>Rrha zYJ%0=vMXPuKYVy(v(U9s^Pau>?5J^Vyb)j$Gw=lf@t(a>Pv2Uueiic`dB|-F*MJz}r+}1to)U!#d+qD&Fq?b?1|Z*B)04HVeDt zgrT9~R_hZpj+DgAGLvC~H*cI90#Hrrw|0d{ndTAts{?#GMcJKT*6(-SWagIxhsbZMi`H}E_E zOJD*A&U&wYUZA9>!>;=3p!rhuc}$4eVfER|3Wwcf`_}j;lweY8D(3rdjP8IiJqf{5 zg^Q~a`FTS~J} z_F`n!K&1nV%f(EAy{&EZ`d?Jw1!_-yz3oYusob9{q2H!aBY0{}%a<;jsq6wP9O@^K zFGuh@Qp=qV8-RKiI6FuO5RQLU&E%|rJNu3YHokg}&2oa*Rqu|N za=GDZnI%Ox^a%03pwVLL7W3LXd`hyDv*WnYB4?$7RF&z5I6v}Yow+ueWJkwcqf%gx z!HH=$c2m!&Exhwk;~d9mbno1Q5SAfuCQNE&+M`8vU|FIUUw|U-%=P?qXRK6EA!A4` zm(<#Hn8j@5aSXG7!36G~iS#3lX4sQw0wMq#oITJ>0@kDC>nk3Fpp$(1bhO(PWJT@N^$w)HqD8+$+!AQ~u#E4F zqWcI)2#DpyN!O7)T|u~Hz9n_0@zGB0t5;s&%QPFxSx*YbafbNmpm!{Sr-xu}0#^T#>Uyfw*1)51Ru!7)L`%HlWB-5S6W{=YT{A04YEEIySR=B0kF zu9%{M8$YfU zaiM(h71!85i!YAmC#`J45vNTa$Ueh<|GAsd^W9v_om!h|!Hlu{={ePb3!{@h2-4(t z_BZvk_ut&tKTXSv2P0rAryMzdR`!9yD5o^>Z^m^bcFh(X<8J)y)$%VC6(c_J=c0L& znXE1RT~!pNG>-pNrTI^LMDKF=o#ouoQcc&}h1J*6K8*XUG|lZ>%&^M#7`GjHAC6+hilhT?=cdMbho-eo-z)9G zxcDF3bfr1{mIwX%sXtGWP;GgbFm^-q+uuX$pKyG|8YD5pa;TLtWRKp)NA~KrYSMmx zY+K}deqXHm9fPSmm`V3o>LNlDUt)3+lm|`8i2myYS4KO}-fCjz34vk6v1XC8>Gogw ze?W6{8=J1d)A54i%D`*>=@#n)Uw95$f7_mizRZ)0k>F;!k<0V&5_BLS@!HDRiaG3b zdP%T$Yp&g=>fm`edOcR+Is7V=4VG7BU>lKp?ti@br-s}3;LaERdd{dw&iWwm;%LFB ztBMq%XxA@RL(|O!UY3hLvPUs#HS;ixlE!wag1QJKW@p(s-XiTGLm?K2z|abw%=FWy zsIc=)h3JOXn>h^6W1Yz>Jl=(lTpaMWXz$WZ|Kp5PLVFrf7aTK*eE0UVhn##K8TXGL zqc`!{fB2ZlMnMXiZan#S;#AN4JWH_EBS-P&ZuPH+J2pJ#Li*=%3R(W++s|lO^ETYS zbQxK|wSf@WkU!lcx z6;$WAGy~azZ00O7b4lRzC1E1teD}7|YF?|+Pf2q+;C`y{;9YPm0WC@M40II$7rX8R zCtI^t#ARf9CMKxUqbGuA?<&kExd4|5Coc3Ep2YIg=c|i}T)M2uP7%CH&}nEp^hi5X zDSy75JAEL1f9YuV_1t+R)SdTk#hYqsmXor7@E`=70o2XfsNKt{pP9Zl46on3c|rFR zqQF~JaRRoO#ibE8TCGY#T2|IH<3TAf?zDdm6c-l{D-Ihjo0zD?ym~ZD^e+rSHpV~7-@J;g*qf@O_a*j^;zCS}&hW za>i(Z;W_v>(-i_$%J=3sHu|@MH#hB|g;bM+tgcSs3Qg6CWjl~p4tplu@wLYA+Keun z%6>~IxkA<$IG3~JybT}TEVJG`-fUa|!Pa(#XK79S4}jOf@rTe^M87YEZ2_6ac+kw- z8_Q|q$#lkGPd9>w*gr9Iq4}y#Z9HBU=Sc`sBP1N_=ItoCd*imKXI!ZiFpv2&HG4wx-Xt89678B)F!Y+aG`&!Khwv@+pR#BXzx{Qh4B@Vl0G|xgA#%IIec7N7g znz^yEx=MOIAKIYQ!H?sxJ8^m>!KBz#KRRl)Jn+{3je-Knp;xp59_C_PJI-cjIO$h1 zc9mjiOdO?%Snk_QQ_OAiBP9m_^(N}x4Op9}NBz*s*#oRRxYq?a3ib~+E5QOiiTn59 z`A>IYEX1th%L3)fZ^vx==a&l!vy;`-Pi_t8{&Q#zeJ;`%!2-Ja|F8R~^{`Fam$(Y$ z10{f`XC`#J-s0A?Qdm!<=zw{XE)_(|dRm3~l5TV@!4J0hFWD|2vM-u~JK48YvWg_Up)OJW6-- zPw&=4ett1(UN&x?ceOA?y*++_jSdn6FB&U-4BrF9!^9K@+-hxb%bV_E3fY#4a_B9x=e@$YZw@$I`IWgTBXd^>RCl7Q=tZKI8oWWulqipzwVdhDIlcu zIED1jckr(e<12Jg>fy0JgD8L1!o#h8^CmvD03pcMrv;Pdv@0X{6@3W!G$Jf%o-p~yh08^9I1)*^z>}zHgQ6Ge&NSpu$ocErxtdn z{3mf-#APGP8QL&Ecs~*3T-m2JACjZ_NJf*}Z*mvQGc!Y-dNa>_((pMK`St6Axzi=I z&qroDC&vbh&%qTTZU6 zC$9+#43n}`nd^B5%;Ah~KG?)|m$CSrqaJGt9fKP_OM|)}dK2PYq9!WrGZ_aMAWn;Z zLI3l|OfvdFLP+RWsnrAENWj>~#KND;pB0!y$9FS>5)Z8lmplc>-}|Ok*b+!r`wQKZ zlTO=8+3HMC9jFXus@O?E9S)~u{+mU}&I3d7MITSPyiL{N96Jb<0>J;Dp&@VJJ7@#29)! zK!2m)wd^PmGBNqtNL{=Ix+=8qZfwYznPq+DTAj?H**V+}ArOpKOcvi1{c?1L=Fjwc z0LAbwSbcuhDPUmP@j2{76MmCPvGX7VF{a9H-QwLlx34PiSFG;~oOM9ztgPhsB!tR5 zEiH|A>EqHxCoGXvel9c>;I;|6eqLL=r&9C|`m6$}PQkPi0IC!)Rs8nBL$DeSC!hjp z;bxGtq~^-lj^Vvoq&%{PySq$Pk)WtDS;1R;8F~X*l1LkoM8hPpC%0(moHD$h0Y4$`yfC!G=#2~r`}c6WFw9z2kPb(n}2A(gewfk@THL9Nqgex z;@oJ8n_^>G`M3m7Nz+)?nClqa}`20#(%>q^Lf6?0Tqe`ivJ+L_nZB+z1-?O<$jp_@8OWq%tQ`Js~{Q?+#L zqG`urHw=WFUi6DG(`m*(w5|W7J0m;)C%CgQ1*NCft|ocWm5FdY_j2Q^Jjpw*bw-S|iNsZ7LxW`(X?)3ge zI4J#K|ISnP=dbf+Ri!T59jh^wm)we;q)wUZ&{fp0s(br;*J-11if__t&Z@&Aq8Ppq ziTye~vue)o){G1j^L62%p!dnt3_Cj+78}3QU@`2ijWcs_)C_~eU{S2L)(Q`^F6Yho zQ`FIHnUdW;Jpsi59i5Ja$x6VA$*w>5BRsO5ee-I5&6T&)4Xg3-!y}g2>Za`?9c@bT zqMH}dN;#S)0lrCo)X^_r1#oh4nJiQp%6vC0 zzINMTZXs@2c*}@U{LUS;{aYArf1WxZE%m^LgdcIr&MNByPceW5_83ubm_#Z|Du5QWSCz|8fTHl<&9KI2X9{&NWtChsN`C zBZm^?f^iRQO0*D(>HEA{p3^+F=y+)51rakE-k zgouf62ofRzaX5ztJuI|@0rv=u<8IOc(O5$lowp{QZ*OBfRqFbu+uZ5meOEAZ>9p?Q zI{d06M?&=WoVA&I^5@B#bo$L}Z5gqBiUdaPJl0#}klyAjEQ0o4sg}h*dxD1*ox@2k zzLRz~76qnHszsCf;@H*#Aw5X_xcCgn4A^0jmmWSo*ro{))zVBXcQRvx18;j#+=Rq| ze7;y%$Svx>J9-7O8quY^ZVJ|C-fLm+>{Bb__-?bTkDD)_D7@C(oa<@-sitO_(?~W3 ziY!hWVnyh<>CE2co^-n9k*bibVYIaSQ$g|jc&>1k$mj=smbam!#p?s9n2j435^8Neq6bW+WVzb?R{oeYxI=V|D z0nz(Q=`tx2DpONa(C|)AKyYr@E3c!gi%TQy7eP*SR$u8z;DsM^IHa8|o3%oIgX4Ij z5^H~55W=l`{||mptw!?aXP_IT*qB=w+hR_De3`la) zxcJLQqd8M?x4A_{^;HVV7FWjVo72R$=W4H95scvp>Pe_8!67Pp#AjzX?$B4|Oz)>6 zCCB;j?cR0CoyYcU{h#WTknKd%@Am{?Fg@WbL@pI3g!uU#UtH#kOn8;^?WMtWa|(^_ zfa;=8Df*KgG4!&jT{e3w{S6Wja+VM0$qS5j+m`wr3%WiBSxim}j=|;UJFc^_QO(#m z6_^gB4|WdP1t)6HLrDVm3hzZx4#7oK59u={C}pLHlTs!tY?g~*Itn#pq_e(%S3R8# z_kHswu6hII4no}^E(-@X?y=KEMIp*3BV#2aBO{VsAyec0bfj>~!b0ZHG`M^lo(nfH ztDo$;p{dDd;{%5O0-;8^bc>(HBSqi;x$j+o#E%9uN#n9qio=Kp*H=~!#;kU)Uzeoj z4IcaUTsza^4Qn-J^57=X~$^-tRv(&+>bod7k^e?(4p+y}$)3YChiIh(^XesHWht7hO z;?wF?eoIyrFMlzM_rzOk*6Uls6vqasGb0ZD8IRw`zckwUHTj$pH@EK$ZF+2afZCbb z36rfL?j)8Oz@j`p_)9x{KCXSCEOq{vD#q9go_}7ceVp_lS9+3*pWn`tyXit<-u-zS zE-MBAQuWaaHtht42yuOJDI-|}J6D%9;4agnr8L-3n3bv68(pR)B?1nlxyt4Ffgs#m z$MWIBtFE-0ceADsQ;1N7td6SEa9j%3JJL))CI42*1kYc(Nj^P;rWO~iJf0-_#S^=8 z-ze~F=fcM*j?JbFEOH?1)#^U?zm@N#Y z$bf53p+@*|QX#y919xn)vmDO}#gC?^Ca4u0pcI3z$XQl7o8}bgze=0rjewGo>=WmS zC--D$X=pf}@c8zw``wK$s7~TBn6R*sqgspC<|oj8E1x?6)N^ASV^!+Ax&T9GIrbMz zIjdkuyr7iZ$GZ@&;<0X&XFnT4mr{Vt;XRgdwrfc^(uJ% z=Efzv-&qZP{5TBbIl0%rCKGlDVe$>L#9)osQ`>T*WlC?;zLcwj{87bCTv6EK49Ki) zDR6IBR|d>`iy!QRsde~05@4mgN&a;jZhyiPF|LgDcE zTennjT=SDO+V}5!vDZ5SNzsG=$0>VXZ>^EBbUD>=zyE0xcq2w7{{H*^wt5H@dyAPW3QV-?L<25~RSS^Q+{(dtv=f z)Ir6JWV52z*n7V|jxMJ4&rA|G%$`!>Pu%)CT-Q0?5oF6h7Qp$t%#~v3>-8pwjpx-4EWq_a{`LyN`}t=lR5?U-KuNUWUR<`iFQdb~!MR1LJ+7 zKqI_0NuxzO=J*^Xe`TK#2iuH*BHqL4`wP@5>zxAK=)G1ZB zi&3fN*-&4PH)>m&88NY} zDg8Dv(Vj+(1ZgRNdNgJoo$)5|-u*qXhYsEai!b-387b~G@#5B2|0#Pn$Si~#`W?pL zGT=HfSJ9q4a6rYqxo@qm!u~WnI)K@2er5)=Bdn}rk~ky64Ug;B{o~CiWlDSUTt*)~ zSB!5}ju8@aP;T$YsV)zAbM-0=I`y3w7?h7YJ^T1($fH|h2Y3SV9AX49FM3}$jUClyRYijlny}< zH4GiO`_qvQf-C{Fh6;9*oc{B8bkyVQxpA?ibb@F|@YjY9Bb^K1TkfXSw5wDcX@q|d zzY@KlmX<~(g7&f}n-8I*C;t~PZ&s&|SRBc`!=ed%QkMHfXI)=k320$JacP{CC`x7r zy^I4X*EVd#lwT#?D0^`HP5c53fy~XlQ1vUNwzamlg6#AGpB%LFVIIvG#!PszV3<(= zN)K=mYl=})^<8~Wapy-gVWRUQ+k*pW639x?XtcQajo$aSmgX888?`hw>$6usJC=$0 z!I#$3wv-f(c@FMB;9j=Awj!ea{F--XOUrcaqeGyP<_8>g_3Gf8cwccGpMtfPo}M1K zQ;o*^9pK@)781+k9}!%DeaSkU}z&6UBl>6%>7zzp7&=56FKzy1B>FJUIUt0`4jE$d< zp90qO*jiUr)e+)|sqKEy&g>TwG6(G|2x*>UZeaF`;c6ke*46_4fH;Llm(+SOB862a z;1(<`E=rmex`NEeYhmgRtP0rGE5)}z_%pbW8&i!5 z6QC_3RKtaUg&PYqvvC0x@T{YwqmmNzy9&X#&AtNnQ?jvk+Zb(%b z-Z$7&@Hb4u?%fkzXH0+f<59J{KYotUUs{wc%kEFbsg_1Ge%?#6siAyY2ckw^F4U*U~V7`wX7I0 zBFh!9$p3i1{0F0n9J`oz+>>ma0BGhLz|0`e&WQ9N{OqDPY2PTd1fP-m*ucwcX<6J6 zk1dl8wr|!1J&?`-71t4xv4NRbR(0w#xkGvG6s77gGhy7=XC*9a8@{U+T&3KmPV{%= zI0AUB2?z9{&l6wZLOkZ6e0s7wk21DLA`iXh>c`3HccGlh%hlV9d~bTY}C|T?(Cr?g_pj-_*^$8k=9m{ zM6`_$;`q?Zr_2YU$HylV6Yqu#(6Z@g2B-t_PqeSMD*!-;9I_OGh`~hO2l4xfd}ZfG z$xWZx_ueGIxW#n842MvEl68|vqX~}d{$LW`Yfsf^c|a_{2!i0s1t0V|-#Wt2Tnb>YJw2o1aemYpnh)N6D%z0`E^lSD+htFsXpD_OePmZ+_xQ(0ND zo=_z=%c~1(Xi|y*uZl<6X8JU18^0%UrOiE=Op-}pw)e4S8n0X9F!-_5_?&@3UitS? z31unDnJY2khRq2VgyQEX57j@BQSx4VVG8q4-4NW{i|4!TRNNac=U86|;XQ;|v7d$V zr_p3)0PF7VzOv91ExB}tHT$>9Qm6;-%=Z!`#13AqmB`8k-v;PB=<5S)jFw(AV9mB^ z$p!?@hH~!fe00c$nKNvn%kDm;#@!;(qa;S;EeQYo^|eOX9%Pzt!0f322v6^{#4VAf zstd3kVjv)&ZDHvz+i;pCr>w8NF)x_0gATnx<_lwJYIk6&M=s|WsB1Vnxumscn1nRN z_)Yatm#9N4JNRUW2CMAAJ@QJacSOEN68qjva!)4&+nhVI<$miq7eJxHqrMCKG=Fuv zAH)I(FWuX#PSMi#0JUp z>*xQT;Qn)mQs)I}M6`pas%8!>Qs-Akp2$q;vLR~X^1K!{U1_Qq%QG+YR$)H>Q$8Q! zFA4qaX1rc14_{ATF2sa=$6fuFMn>};&ZS>jqYl-yq~Wi(zXBuABxs_%=I{X|Is<|NCC;!$Ts?O+bb z1J1&zEmh|b?Sa4{g84Ji?T8AnHlhU)5zVY9Fv~3QS@{h>J#Q;$TSHYySAyxeesl3v&r?hy4=`q zAa_^lmwrYh<~K-vyF0Gyzj_*FXd~rFg^7w+L$IBa^YCGZV-58jY~br72U8cuL!k%_FAIhOc{a%!s0cR zXJz#|)A~XR*}yHzbarQ?FCI^3HR?8(;Y4bI^b#H6D`iBAge@7Ycus-fmJVSz!KvD( zs*7;;ov=yAJ^0|z)(4ks=pQitAk5%}zYDH=bYzQy&4dO1{BM6%IdE3t-om$wGW6|u zw*tgQK!POl5ZXAxBB1s$+G63VV%Z-Yn78U<6^0 z%JE?EN6YPxR&}U;2sT-~!j=hI9hRQLdjZopp?T{MN*RyKSp;8|i3=HE_#pr1+7Y%7 zuy!N=KPf-8ayXfPB7`$h9#{p>Pg|?602&fu`}eAL$->nH0@k^B>?7o%9b4C-UJXa& z0T-MfB%=Qj`Vm*RF8eJP+|`GiuzAC-97I@VYbEIwu-`CPb^Wm)fqvO8@G&>|BMP%@ z9p9OL;@4Zn!r4mLjc@Dl4};+@wu<8M{XZXt9}Qrp(tjg>RK)!9qUIMBkFVyKLh1e& z;FzUqifI0bwTzpHYW3dXHVqm29q z89u!J2f9?AcWz>VQgr^j8Bf({Z$U%#8Fi}Mnr-{Fw`**T9q(@m3GCPpvX7)SIyZQu z%hTE#)2>b>M?CKEq{Uq-c$bxAY2!Hk1uA&~p-VhMGFksRxg7H?DaYjrP$FMSMTVjlhgVt?1JKf!Rao8q%5tIL}0IUh&s7r17h1>v7xfsrs$BjneJsTye* zC>#2n$^7Q$=o3yB#1$Idg2EL_WN7a1_7uegb#_iVkV2ukQ~v!c8r-h);6R4vv4t+9 zz0I*PqdC!eF?f93iAUV~OMYAYezM5Dsev#GRr8H5`~tOR$X*wN^l%LswWdW$c%V1D z0}L|aE|++QkDHaHZDuF4l{;(m3v|?I+j;##WVFG~BD_N}T7Q)Tx^<{TNsc{f+6<>rk2pw(fzh4n%uGb!4Q3 zn3y3{-9pN)%JTBEM~{M~YmQ@C$wjYDsGaj1bXiz}YHN*D%eqJEPXe>ZjC?J*>?}ykADbMmQ*I6Ya!7-Wq1wEnkW+Of5|e5uq^M&qWV~q+dR|Wo zg?p@fhckTQ&&B)c>4Og?3YTJDRu&Xg##P~3*b3y$lP5t7LlYB;iZH;+x8p8oh8HFj ztJ< zTZ0vKk5j<_rlY-*MQA&?t4Ybp6@1w9_%9#<$OunNp@*Z-`f8MAO>?Yr)C6UJI+KbR zk2;k$y*N))?aVMKv1+IeyqrAD<2VuP(eFJNT)(kuGY78*x$$yG=~@o})MxJRT}H!O zFrU-crh4yu%)K?yss%)c#YJl!J5&0hM|T$l-1bJahYx+ zLXiGbD*q=tG^CP{AVMPcj7MgMC>hqfvmmeFX}_RJqHz8Z!>3CGrsg}5i?=r|FaAGZ z{@!ET+-af^iReZpYkvBM_`8BmBskMiE_rgW=@yh(wL*WbvwwiDzagO?Y4Teif^M4+ zT5vNfF1VDZf(Y;DXD>_u7Wm}BgB4*>Mrx2=B&>?IA$cGE3e0#qgP{qVl96EAJzB3_5c6? literal 0 HcmV?d00001 diff --git a/wiki/renderengine/index-withframe.html b/wiki/renderengine/index-withframe.html new file mode 100644 index 000000000..44db32d02 --- /dev/null +++ b/wiki/renderengine/index-withframe.html @@ -0,0 +1,19 @@ + + + + + + +/mnt/Lager/heim/devel/cin3/wiki/renderengine/index-withframe + + + + + + + + + + +<H2>Frame Alert</H2><P>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.<BR>Link to <A HREF="index.html">Non-frame version.</A> + diff --git a/wiki/renderengine/index.html b/wiki/renderengine/index.html new file mode 100644 index 000000000..86c48f6a3 --- /dev/null +++ b/wiki/renderengine/index.html @@ -0,0 +1,188 @@ + + + + + + +cin3 +Documentation + + + + + +
cin3
Documentation
+

+ + + + + +

1 Package design

+

All things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.

+ +

1.1 Component View Architecture

+

The various Components comprising the Cinelerra3 Video editing Application

+
+ +

+

Overview



+

This drawing shows the top level compoents and relations

+
Component Builder
+ +
Component Session
+
+ +
Component EDL
+

nested in Session

+ +
Component Fixture
+

nested in Session

+
+ +
Component Controller
+

Depends on Builder

+
+ +
Component AssetManagement
+ +
Component Dispatcher
+ +
Component Engine
+

Depends on Stream Provider

+
+ +
Component Stream Provider
+

Depends on Cache

+
+ +
Component Cache
+ +
Component RenderPathManager
+
+
+ +

2 Package AssetManager

+ +

3 Package MObject

+
+ +

3.1 Class View Session

+
+ +

+

Session structure



+
Class Session
+
Class EDL
+
Class Fixture
+
Class Track
+
Class MObject
+
Class Placement
+
+
Class Clip
+
Class Effect
+
Class Meta
+
+
+
+
Class Label
+
+
Class Auto
+
Class Wish
+
+
+ +

3.2 Package Builder

+
+ +

3.2.1 Class View Builder Workings

+
+ +

+

build process



+

This figure shows the process of building and starting a RenderEngine

+
+
+
Class Assembler
+
+
+
+ +

3.3 Package Controller

+
+ +

3.3.1 Class View Controller Workings

+
+ +

+

Controller Entities



+
+
+
+
+
+
+ +

4 Package RenderEngine

+
+ +

4.1 Deployment View Engine Parts

+
+ +

+

Overview Render Engine



+ +
Node timeline
+ +
Node playlist
+ +
Node proc
+ +
Node pnode
+ +
Node mStream
+ +
Node State
+
+ +

4.2 Class View Engine Workings

+
+ +

+

Render Entities



+
+
Class Processor
+
Class ExitNode
+
Class ProcNode
+
Class Trafo
+
Class Link
+
Class Hub
+
Class Projector
+
Class Mask
+
+
+
Class ARender
+
Class VRender
+
Class GLRender
+
Class Frame
+
Class AFrame
+
Class VFrame
+
Class GLBuf
+
Class Source
+
+
+ +

5 Package CommonLib

+ +

6 Package Vault

+

This package is used here just to hold entities thought to belong to the backend layer. The Backend is not in Focus for this Design draft.

+ +

6.1 Class View Backend Components

+
+
+
+
+ +

7 Package GUI

+

GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft

+ diff --git a/wiki/renderengine/index_65.html b/wiki/renderengine/index_65.html new file mode 100644 index 000000000..4bdf8591a --- /dev/null +++ b/wiki/renderengine/index_65.html @@ -0,0 +1,32 @@ + + + + + + +A + + + + + +
A
+

+ + + + + + + + + + + + + + + +
NameKindDescription
AbstractMOclass
AFrameclass
Allocationclassa directive to place a MObject in a specific way
anchorrelation
Architecturecomponent viewThe various Components comprising the Cinelerra3 Video editing Application
ARenderclass
Assemblerclass
AssetManagementcomponent
AssetManagerpackage
Autoclass
+ + diff --git a/wiki/renderengine/index_66.html b/wiki/renderengine/index_66.html new file mode 100644 index 000000000..717e561c1 --- /dev/null +++ b/wiki/renderengine/index_66.html @@ -0,0 +1,31 @@ + + + + + + +B + + + + + +
B
+

+ + + + + + + + + + + + + + +
NameKindDescription
Backend Componentsclass view
buildoperation
build processcollaboration diagramThis figure shows the process of building and starting a RenderEngine
buildEngineoperation
Buildercomponent
Builderpackage
Builder Workingsclass view
BuilderFacadeclass
buildProcessoroperation
+ + diff --git a/wiki/renderengine/index_67.html b/wiki/renderengine/index_67.html new file mode 100644 index 000000000..e5c04a7ec --- /dev/null +++ b/wiki/renderengine/index_67.html @@ -0,0 +1,36 @@ + + + + + + +C + + + + + +
C
+

+ + + + + + + + + + + + + + + + + + + +
NameKindDescription
Cachecomponent
cin3package
Clipclass
clipsrelation
CommonLibpackage
configureoperation
ConManagerclass
Constraintclass
Controllercomponent
Controllerpackage
Controller Entitiesclass diagram
Controller Workingsclass view
ControllerFacadeclass
currFramerelation
+ + diff --git a/wiki/renderengine/index_68.html b/wiki/renderengine/index_68.html new file mode 100644 index 000000000..36986e68d --- /dev/null +++ b/wiki/renderengine/index_68.html @@ -0,0 +1,25 @@ + + + + + + +D + + + + + +
D
+

+ + + + + + + + +
NameKindDescription
designpackageAll things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.
DirectPlacementclass
Dispatchercomponent
+ + diff --git a/wiki/renderengine/index_69.html b/wiki/renderengine/index_69.html new file mode 100644 index 000000000..0f638c86c --- /dev/null +++ b/wiki/renderengine/index_69.html @@ -0,0 +1,31 @@ + + + + + + +E + + + + + +
E
+

+ + + + + + + + + + + + + + +
NameKindDescription
EDLcomponent
EDLclass
edlsrelation
Effectclass
Enginecomponent
Engine Partsdeployment view
Engine Workingsclass view
ExitNodeclass
ExplicitePlacementclass
+ + diff --git a/wiki/renderengine/index_70.html b/wiki/renderengine/index_70.html new file mode 100644 index 000000000..b094de41d --- /dev/null +++ b/wiki/renderengine/index_70.html @@ -0,0 +1,26 @@ + + + + + + +F + + + + + +
F
+

+ + + + + + + + + +
NameKindDescription
fixturerelation
Fixtureclass
Fixturecomponent
Frameclass
+ + diff --git a/wiki/renderengine/index_71.html b/wiki/renderengine/index_71.html new file mode 100644 index 000000000..ff1cf9ec9 --- /dev/null +++ b/wiki/renderengine/index_71.html @@ -0,0 +1,30 @@ + + + + + + +G + + + + + +
G
+

+ + + + + + + + + + + + + +
NameKindDescription
getAutomationoperation
getConnectionoperation
getPlaylistForRenderoperation
getReadyoperation
getStateProxyoperation
GLBufclass
GLRenderclass
GUIpackageGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
+ + diff --git a/wiki/renderengine/index_72.html b/wiki/renderengine/index_72.html new file mode 100644 index 000000000..f7f8cb3a7 --- /dev/null +++ b/wiki/renderengine/index_72.html @@ -0,0 +1,23 @@ + + + + + + +H + + + + + +
H
+

+ + + + + + +
NameKindDescription
Hubclass
+ + diff --git a/wiki/renderengine/index_76.html b/wiki/renderengine/index_76.html new file mode 100644 index 000000000..a6432f656 --- /dev/null +++ b/wiki/renderengine/index_76.html @@ -0,0 +1,24 @@ + + + + + + +L + + + + + +
L
+

+ + + + + + + +
NameKindDescription
Labelclass
Linkclass
+ + diff --git a/wiki/renderengine/index_77.html b/wiki/renderengine/index_77.html new file mode 100644 index 000000000..e9228808d --- /dev/null +++ b/wiki/renderengine/index_77.html @@ -0,0 +1,27 @@ + + + + + + +M + + + + + +
M
+

+ + + + + + + + + + +
NameKindDescription
Maskclass
Metaclass
MObjectpackage
MObjectclass
mStreamnode
+ + diff --git a/wiki/renderengine/index_79.html b/wiki/renderengine/index_79.html new file mode 100644 index 000000000..f3c5d810b --- /dev/null +++ b/wiki/renderengine/index_79.html @@ -0,0 +1,26 @@ + + + + + + +O + + + + + +
O
+

+ + + + + + + + + +
NameKindDescription
OpenGLPipeclass
outputrelation
Overviewcomponent diagramThis drawing shows the top level compoents and relations
Overview Render Enginedeployment diagram
+ + diff --git a/wiki/renderengine/index_80.html b/wiki/renderengine/index_80.html new file mode 100644 index 000000000..15b636f18 --- /dev/null +++ b/wiki/renderengine/index_80.html @@ -0,0 +1,34 @@ + + + + + + +P + + + + + +
P
+

+ + + + + + + + + + + + + + + + + +
NameKindDescription
PathManagerclass
placementrelation
Placementclass
playoperation
playlistnode
PluginAdapterclass
pnodenode
prepareStreamoperation
procnode
Processorclass
ProcNodeclass
Projectorclass
+ + diff --git a/wiki/renderengine/index_82.html b/wiki/renderengine/index_82.html new file mode 100644 index 000000000..af0a7ecab --- /dev/null +++ b/wiki/renderengine/index_82.html @@ -0,0 +1,31 @@ + + + + + + +R + + + + + +
R
+

+ + + + + + + + + + + + + + +
NameKindDescription
RelativePlacementclass
relTypeattribute
Render Entitiesclass diagram
RenderEnginepackage
RenderEngineclass
RenderPathManagercomponent
renderSegmentsrelation
RenderStateclass
resolveoperationcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.
+ + diff --git a/wiki/renderengine/index_83.html b/wiki/renderengine/index_83.html new file mode 100644 index 000000000..1e7c56117 --- /dev/null +++ b/wiki/renderengine/index_83.html @@ -0,0 +1,32 @@ + + + + + + +S + + + + + +
S
+

+ + + + + + + + + + + + + + + +
NameKindDescription
Sessioncomponent
Sessionclass view
Sessionclass
Session structureclass diagram
Sourceclass
Statenode
StateProxyclass
Stream Providercomponent
StreamProviderclassNote: just a Placeholder for my design. Cehteh will ceratinly know much better how to organize this
subjectrelation
+ + diff --git a/wiki/renderengine/index_84.html b/wiki/renderengine/index_84.html new file mode 100644 index 000000000..c4478df6e --- /dev/null +++ b/wiki/renderengine/index_84.html @@ -0,0 +1,31 @@ + + + + + + +T + + + + + +
T
+

+ + + + + + + + + + + + + + +
NameKindDescription
timeattribute
timelinenode
timelinerelation
ToolFactoryclass
trackattribute
Trackclass
tracksrelation
tracksrelation
Trafoclass
+ + diff --git a/wiki/renderengine/index_86.html b/wiki/renderengine/index_86.html new file mode 100644 index 000000000..bf2a140e5 --- /dev/null +++ b/wiki/renderengine/index_86.html @@ -0,0 +1,25 @@ + + + + + + +V + + + + + +
V
+

+ + + + + + + + +
NameKindDescription
VaultpackageThis package is used here just to hold entities thought to belong to the backend layer. The Backend is not in Focus for this Design draft.
VFrameclass
VRenderclass
+ + diff --git a/wiki/renderengine/index_87.html b/wiki/renderengine/index_87.html new file mode 100644 index 000000000..6c1f93d5d --- /dev/null +++ b/wiki/renderengine/index_87.html @@ -0,0 +1,23 @@ + + + + + + +W + + + + + +
W
+

+ + + + + + +
NameKindDescription
Wishclass
+ + diff --git a/wiki/renderengine/navig.html b/wiki/renderengine/navig.html new file mode 100644 index 000000000..e8901be71 --- /dev/null +++ b/wiki/renderengine/navig.html @@ -0,0 +1,17 @@ + + + + + + +/mnt/Lager/heim/devel/cin3/wiki/renderengine/navig + + + +


+

-Top- -Classes- -Public Operations- -Packages- -Class Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

+

+

+

A B C D E F G H L M O P R S T V W

+ + diff --git a/wiki/renderengine/packages.html b/wiki/renderengine/packages.html new file mode 100644 index 000000000..db48a6682 --- /dev/null +++ b/wiki/renderengine/packages.html @@ -0,0 +1,31 @@ + + + + + + +Packages Index + + + + + +
Packages Index
+

+ + + + + + + + + + + + + + +
AssetManager
Builder
cin3
CommonLib
Controller
designAll things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.
GUIGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
MObject
RenderEngine
VaultThis package is used here just to hold entities thought to belong to the backend layer. The Backend is not in Focus for this Design draft.
+ + diff --git a/wiki/renderengine/public_operations.html b/wiki/renderengine/public_operations.html new file mode 100644 index 000000000..d39f5b605 --- /dev/null +++ b/wiki/renderengine/public_operations.html @@ -0,0 +1,34 @@ + + + + + + +Public Operations Index + + + + + +
Public Operations Index
+

+ + + + + + + + + + + + + + + + + +
OperationClassDescription
buildAssembler
buildEngineBuilderFacade
buildProcessorPathManager
configureToolFactory
getAutomationFixture
getConnectionConManager
getPlaylistForRenderFixture
getReadyStreamProvider
getStateProxyRenderState
playRenderEngine
prepareStreamStreamProvider
resolvePlacementcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.
+ + diff --git a/wiki/renderengine/style.css b/wiki/renderengine/style.css new file mode 100644 index 000000000..2f256177f --- /dev/null +++ b/wiki/renderengine/style.css @@ -0,0 +1,30 @@ +div.title { font-size: 150%; background: #87ceff; text-align: center; font-weight: bold; } + +div.sub { margin-left : 20; } +div.element { background: #d3d3d3; } + +h1.package { background: #ffe4c4; } +h1.view { background: #98fb98; } + +h2.package { background: #ffe4c4; } +h2.view { background: #98fb98; } +h2.class { background: #87ceff; } +h2.usecase { background: #87ceff; } +h2.state { background: #87ceff; } +h2.activity { background: #87ceff; } + +h3.package { background: #ffe4c4; } +h3.view { background: #98fb98; } +h3.class { background: #87ceff; } +h3.usecase { background: #87ceff; } +h3.state { background: #87ceff; } +h3.stateregion { background: #87ceff; } +h3.activity { background: #87ceff; } + +h4.package { background: #ffe4c4; } +h4.view { background: #98fb98; } +h4.class { background: #87ceff; } +h4.usecase { background: #87ceff; } +h4.state { background: #87ceff; } +h4.stateregion { background: #87ceff; } +h4.activity { background: #87ceff; }