format 40
"RenderEngine" // ProcessingLayer::RenderEngine
  revision 10
  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 class_drawing_mode 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
  
  deploymentview 128005 "Engine Parts"
    //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
    deploymentdiagram 128261 "Overview Render Engine"
      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
      size A4
    end

    deploymentnode 128005 "timeline"
    end

    deploymentnode 128261 "playlist"
    end

    deploymentnode 128389 "proc"
    end

    deploymentnode 128517 "pnode"
    end

    deploymentnode 128645 "Frame"
    end

    deploymentnode 128773 "State"
    end
  end

  classview 128133 "Engine 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 class_drawing_mode 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 128389 "Render Entities"
      draw_all_relations no 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

    classdiagram 129669 "Automation Entities"
      draw_all_relations default hide_attributes default hide_operations default show_members_full_definition yes 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

    class 131333 "RenderEngine"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 129413 "play"
	public explicit_return_type "void"
	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}
}

"
	
	
	comment "TODO: will probably be handled differently (see Cehteh)"
      end

      classrelation 132485 // renderSegments (<directional aggregation by value>)
	relation 131845 *-->
	  stereotype "list"
	  a role_name "renderSegments" multiplicity "0..*" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 132485 // renderSegments (<directional aggregation by value>)
	  b multiplicity "1" parent class_ref 131461 // Processor
      end

      classrelation 136197 // <generalisation>
	relation 134789 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 136197 // <generalisation>
	  b multiplicity "" parent class_ref 131461 // Processor
      end
    end

    class 131461 "Processor"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 132613 // output (<unidirectional association>)
	relation 131973 --->
	  stereotype "has_a"
	  a role_name "output" multiplicity "1" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 132613 // output (<unidirectional association>)
	  b multiplicity "" parent class_ref 131589 // ExitNode
      end

      classrelation 136325 // <dependency>
	relation 134917 -_->
	  stereotype "uses"
	  a package
	    cpp default "#include in source"
	    classrelation_ref 136325 // <dependency>
	  b multiplicity "" parent class_ref 132741 // StateProxy
      end

      attribute 129413 "start"
	protected type class_ref 134917 // Time
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	idl_decl ""
	comment "begin of the timerange covered by this processor"
      end

      attribute 129541 "end"
	protected type class_ref 134917 // Time
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	idl_decl ""
	comment "end of the timerange (excl)"
      end
    end

    class 131589 "ExitNode"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "The output of the render pipeline. Pulling from such exit nodes actually ivokes the render process"
      classrelation 132869 // <generalisation>
	relation 132101 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 132869 // <generalisation>
	  b multiplicity "" parent class_ref 131717 // ProcNode
      end
    end

    class 131717 "ProcNode"
      abstract visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Key abstraction of the Render Engine: A Data processing Node"
      classrelation 136965 // datasrc (<unidirectional association>)
	relation 135429 --->
	  a role_name "datasrc" multiplicity "" protected
	    comment "The predecessor in a processing pipeline, i.e. a source to get data to be processed"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 136965 // datasrc (<unidirectional association>)
	  b multiplicity "1" parent class_ref 131717 // ProcNode
      end

      classrelation 137861 // params (<directional aggregation by value>)
	relation 136197 *-->
	  stereotype "vector"
	  a role_name "params" multiplicity "1..*" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 137861 // params (<directional aggregation by value>)
	  b multiplicity "" parent class_ref 134533 // Parameter
      end
    end

    class 131845 "Trafo"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 132997 // <generalisation>
	relation 132229 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 132997 // <generalisation>
	  b multiplicity "" parent class_ref 131717 // ProcNode
      end
    end

    class 131973 "Link"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 133253 // <generalisation>
	relation 132485 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133253 // <generalisation>
	  b multiplicity "" parent class_ref 131717 // ProcNode
      end
    end

    class 132101 "Hub"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 133125 // <generalisation>
	relation 132357 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133125 // <generalisation>
	  b multiplicity "" parent class_ref 131717 // ProcNode
      end
    end

    class 132229 "Projector"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Special video processing node used to scale and translate image data."
      classrelation 133509 // <generalisation>
	relation 132741 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133509 // <generalisation>
	  b multiplicity "" parent class_ref 131845 // Trafo
      end
    end

    class 132357 "Mask"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 133637 // <generalisation>
	relation 132869 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133637 // <generalisation>
	  b multiplicity "" parent class_ref 131845 // Trafo
      end
    end

    class 132485 "PluginAdapter"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Adapter used to integrage an effects processor in the render pipeline"
      classrelation 133765 // <generalisation>
	relation 132997 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133765 // <generalisation>
	  b multiplicity "" parent class_ref 131845 // Trafo
      end
    end

    class 135045 "CodecAdapter"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 138757 // <generalisation>
	relation 136965 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138757 // <generalisation>
	  b multiplicity "" parent class_ref 131845 // Trafo
      end
    end

    class 132613 "GLPipe"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "specialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form"
      classrelation 133381 // <generalisation>
	relation 132613 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 133381 // <generalisation>
	  b multiplicity "" parent class_ref 131973 // Link
      end
    end

    class 132869 "ARender"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Representation of a Audio render process"
      classrelation 134661 // <generalisation>
	relation 133509 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 134661 // <generalisation>
	  b multiplicity "" parent class_ref 132741 // StateProxy
      end
    end

    class 132997 "VRender"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Representation of a Video render process. (Encapsulates the video buffers for the actual calculations)"
      classrelation 134789 // <generalisation>
	relation 133637 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 134789 // <generalisation>
	  b multiplicity "" parent class_ref 132741 // StateProxy
      end
    end

    class 133125 "GLRender"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Representation of a OpenGL accelerated Video render process"
      classrelation 134917 // <generalisation>
	relation 133765 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 134917 // <generalisation>
	  b multiplicity "" parent class_ref 132741 // StateProxy
      end
    end

    class 133253 "Frame"
      abstract visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "TODO: how to relate to Cehteh's Frame entity in the Backend?
The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date"
    end

    class 133381 "AFrame"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 135045 // <generalisation>
	relation 133893 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 135045 // <generalisation>
	  b multiplicity "" parent class_ref 133253 // Frame
      end
    end

    class 133509 "VFrame"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 135173 // <generalisation>
	relation 134021 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 135173 // <generalisation>
	  b multiplicity "" parent class_ref 133253 // Frame
      end
    end

    class 133637 "GLBuf"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 135301 // <generalisation>
	relation 134149 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 135301 // <generalisation>
	  b multiplicity "" parent class_ref 133253 // Frame
      end
    end

    class 133765 "Source"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Source Node: represents a media source to pull data from."
      classrelation 136069 // <generalisation>
	relation 134661 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 136069 // <generalisation>
	  b multiplicity "" parent class_ref 131717 // ProcNode
      end
    end
  end
end
