format 38
"Controller" // ProcessingLayer::MObject::Controller
  revision 5
  modified_by 5 "hiv"
  // class settings
  //class diagram settings
  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
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default
  //collaboration diagram settings
  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
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default
  //activity diagram settings
  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
  
  classview 128389 "Controller Workings"
    //class diagram settings
    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
    //collaboration diagram settings
    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
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default
    //class settings
    //activity diagram settings
    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 "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

    activity 128133 "configure Render"
      activitydiagram 129541 "the render configuration flow"
	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
	size A4
      end

      parameter 128005 "Render Request" explicit_type ""
	unordered 
	in
	flow 128901 "<flow>"
	  on activityaction_ref 128389 // activity action determine Render Params
	end
      end

      activityaction 128133 "setup StateProxy"
	opaque_action
	flow 129157 "<flow>"
	  on activitynode_ref 128389 // decision
	end
      end

      activitynode 128389 decision "build necessary?"
	flow 129541 "<flow>"
	  on activityaction_ref 128517 // activity action build Render Engine
	    uml_guard "build necessary"
	end

	flow 129797 "<flow>"
	  on activitynode_ref 128773 // merge
	    uml_guard "reuse exiting Engine"
	end
      end

      activityaction 128005 "setup Build Params"
	opaque_action
      end

      activitynode 128773 merge ""
	flow 130053 "<flow>"
	  on activitynode_ref 128901 // activity_final
	end
      end

      expansionregion 128005 "determine Render Params"
	iterative
      end

      activityaction 128389 "determine Render Params"
	opaque_action
	associated_diagram activitydiagram_ref 129541 // the render configuration flow
	flow 129029 "<flow>"
	  on activityaction_ref 128133 // activity action setup StateProxy
	end
      end

      activityaction 128517 "build Render Engine"
	opaque_action
	flow 129669 "<flow>"
	  on activitynode_ref 128773 // merge
	end
      end

      activitynode 128901 activity_final ""
      end
    end

    class 130309 "ControllerFacade"
      visibility public stereotype "boundary"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings."
    end

    class 130437 "PathManager"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)"
      operation 128261 "buildProcessor"
	public return_type class_ref 131461 // Processor
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end
    end

    class 130949 "RenderState"
      visibility protected 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Encapsulates the logic used to get a \"current render process\" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless."
      operation 128389 "getStateProxy"
	public return_type class_ref 132741 // StateProxy
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end
    end
  end
end
