//        Copyright 2016, 2021, 2023-2024 Avid Technology, Inc.
//        All rights reserved.
// 
// This file is part of the Avid AAX SDK.
// 
// The AAX SDK is subject to commercial or open-source licensing.
// 
// By using the AAX SDK, you agree to the terms of both the Avid AAX SDK License
// Agreement and Avid Privacy Policy.
// 
// AAX SDK License: https://developer.avid.com/aax
// Privacy Policy: https://www.avid.com/legal/privacy-policy-statement
// 
// Or: You may also use this code under the terms of the GPL v3 (see
// www.gnu.org/licenses).
// 
// THE AAX SDK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
// EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
// DISCLAIMED.

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" ];
}
