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