//        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 maininterface {
	graph [ fontname=Helvetica ];
	rankdir=BT;
	
	node [shape=record, fontname=Helvetica, fontsize=10];
	
	idata [ label="AAX_IEffectParameters" URL="\ref AAX_IEffectParameters"];
	cdata [ label="AAX_CEffectParameters" URL="\ref AAX_CEffectParameters"];
	mydata [ label="My Data Model", color="gray"];
	
	igui [ label="AAX_IEffectGUI" URL="\ref AAX_IEffectGUI"];
	cgui [ label="AAX_CEffectGUI" URL="\ref AAX_CEffectGUI"];
	mygui [ label="My GUI", color="gray"];
	
	icontroller [ label="AAX_IController" URL="\ref AAX_IController"];
	
	subgraph cluster_datamodel {
		node [shape=record, fontname=Helvetica, fontsize=10];
	
		label = "Data Model Interface";
		URL = "\ref CommonInterface_DataModel";
		color = lightgrey;

		cdata -> idata [arrowhead="onormal"];
		mydata -> cdata [arrowhead="onormal"];
	}
	
	subgraph cluster_gui {
		node [shape=record, fontname=Helvetica, fontsize=10];
	
		label = "GUI Interface";
		URL = "\ref CommonInterface_GUI";
		color = lightgrey;

		cgui -> igui [arrowhead="onormal"];
		mygui -> cgui [arrowhead="onormal"];
	}
	
	subgraph cluster_describe {
		node [shape=record, fontname=Helvetica, fontsize=10];
	
		label = "Description API";
		URL="\ref CommonInterface_Describe";
		color = lightgrey;

		desc [ label="GetEffectDescriptions()" URL="\ref AAXRegisterPlugin" shape=egg color="gray"];
	}
	
	subgraph cluster_alg {
		node [shape=record, fontname=Helvetica, fontsize=10];
	
		label = "Real-time algorithm";
		URL = "\ref CommonInterface_Algorithm";
		color = lightgrey;
		
		alg [ label="Algorithm callback" URL="\ref CommonInterface_Algorithm" shape=egg color="gray"];
	}
	
	cdata -> icontroller [ arrowhead="open", arrowtail="odiamond", dir="both", /*style="dashed",*/ weight=0.1];
	cgui -> icontroller [ arrowhead="open", arrowtail="odiamond", dir="both", /*style="dashed",*/ weight=0.1];
	cgui -> idata [arrowhead="open", arrowtail="odiamond", dir="both"];
}
