//        Copyright 2016, 2021, 2023 Avid Technology, Inc.
//        All rights reserved.
// 
// CONFIDENTIAL: this document contains confidential information of Avid. Do
// not disclose to any third party. Use of the information contained in this
// document is subject to an Avid SDK license.

digraph aax_automation_components {
	graph [ fontname=Helvetica ];
	compound=true;
	rankdir=TB;
	ranksep=1.2;
	node [shape=record, fontname=Helvetica, fontsize=10];
	
	subgraph cluster_plugin {
		label="Plug-In";
		labelloc = "t"
		color = lightgrey;
		style = rounded;
		
		node [ style=filled, fillcolor=floralwhite ];
		
		structparams [ label="<f0>Automatable parameters|<f1>Non-automatable parameters" URL="\ref AAX_IParameter" ];
		structpagetables [ label="<f0>Default page table ('PgTL')|<f1>Surface-specific page table" URL="\ref AAX_Page_Table_Guide" ];
		pi_gui [ label="GUI" ];
	}
	
	subgraph cluster_host {
		label="Host";
		labelloc = "t"
		color = lightgrey;
		style = rounded;
		
		node [ style=filled, fillcolor=lightcyan1 ];
		
		host_autolist [ label="Automation data" ];
		host_eventsystem [ label="Event system" URL="\ref advancedTopics_parameterUpdates_tokenProtocol" fillcolor=darkgreen color=white fontcolor=white ];

//		host_autolist -> host_eventsystem [ color="forestgreen" dir="none" ];
		host_eventsystem -> host_autolist [ color="forestgreen" dir="none" ];
	}
	
	subgraph cluster_cs {
		label="Control surface";
		labelloc = "t"
		color = lightgrey;
		style = rounded;
		
		node [ style=filled, fillcolor=mistyrose ];
		
		cs_mappedparams [ label="Mapped parameters" ];
	}
	
	structparams:f0 -> host_autolist  [ color="cyan4" dir="none" ];
//	structpagetables:f0 -> host_autolist [ color="cyan4" dir="none" ]; // ??
	
	cs_mappedparams -> structparams:f0 [ color="lightpink3" dir="none" ];
	cs_mappedparams -> structparams:f1 [ color="lightpink3" dir="none" ];
//	cs_mappedparams -> structpagetables:f0 [ color="lightpink3" dir="none" ]; // ??
	cs_mappedparams -> structpagetables:f1 [ color="lightpink3" dir="none" ];

	structparams:f0 -> host_eventsystem [ color="forestgreen" dir="none" ];
	structparams:f1 -> host_eventsystem [ color="forestgreen" dir="none" ];
	structpagetables:f0 -> host_eventsystem [ color="forestgreen" dir="none" ]; // ??
	cs_mappedparams -> host_eventsystem [ color="forestgreen" dir="none" ];
	pi_gui -> host_eventsystem [ color="forestgreen" dir="none" ];
}
