#include <math.h>
#include "sierrachart.h"

SCDLLName("Linked-TF")

/***********************************************************************/
SCSFExport scsf_MasterTimeTF(SCStudyGraphRef sc) {
   
   if (sc.SetDefaults)    {
        sc.GraphName="Time charts - Master";
		sc.StudyDescription="choose/define Master-TF";
		
        sc.GraphRegion = 0;     
        sc.UpdateAlways=0;
        sc.DrawZeros=0;
        sc.ValueFormat = 0;
		sc.GlobalDisplayStudyNameSubgraphNamesAndValues = 0;
		sc.DisplayStudyName = 0;
		sc.DisplayStudyInputValues = 0;
		sc.FreeDLL=0;                   
        return;
    }
    //sc.FreeDLL=1; 
    int &BarPeriod = sc.PersistVars->i1;
    BarPeriod = sc.SecondsPerBar;
};


/***********************************************************************/
SCSFExport scsf_RelatedTimeTF(SCStudyGraphRef sc) {    
    int& BarPeriod = sc.PersistVars->i1;    
    SCInputRef ChartStudy = sc.Input[0];
    SCInputRef Multiplier = sc.Input[1];

    if (sc.SetDefaults)    {
        sc.GraphName="Time charts - Linked";
        sc.StudyDescription="multiply/divide Master-TF";
                
        ChartStudy.Name = "Master-TF";
        ChartStudy.SetChartStudyValues(1, 1);
        Multiplier.Name = "factor / fraction";
        Multiplier.SetFloat(1.0);
        
        sc.GraphRegion = 0;     
        sc.UpdateAlways=0;
        sc.DrawZeros=0;
        sc.ValueFormat = 0;
		sc.GlobalDisplayStudyNameSubgraphNamesAndValues = 0;
		sc.DisplayStudyName = 0;
		sc.DisplayStudyInputValues = 0;
		sc.FreeDLL=0;
		return;
    }
    //sc.FreeDLL=1;
    
    if (sc.UpdateStartIndex == 0)  {
        const s_sc::s_PersistentVariables *p_PersistVars = sc.GetStudyPersistentVariablesFromChartUsingID(ChartStudy.GetChartNumber(), ChartStudy.GetStudyID());
        if (p_PersistVars) { sc.SecondsPerBar = ( p_PersistVars->i1 ) * Multiplier.GetFloat(); }
        sc.GraphName.Format("Time charts - Linked %d", (int)Multiplier.GetFloat()); 
    }    
}


/***********************************************************************/
SCSFExport scsf_MasterTickTF(SCStudyGraphRef sc) {
   
   if (sc.SetDefaults)    {
        sc.GraphName="Tick charts - Master";
		sc.StudyDescription="choose/define Master-TF";
		
        sc.GraphRegion = 0;     
        sc.UpdateAlways=0;
        sc.DrawZeros=0;
        sc.ValueFormat = 0;
		sc.GlobalDisplayStudyNameSubgraphNamesAndValues = 0;
		sc.DisplayStudyName = 0;
		sc.DisplayStudyInputValues = 0;
		sc.FreeDLL=0;                   
        return;
    }
    //sc.FreeDLL=1; 
    int &BarPeriod = sc.PersistVars->i1;
    BarPeriod = sc.TicksPerBar;
};


/***********************************************************************/
SCSFExport scsf_RelatedTickTF(SCStudyGraphRef sc) {    
    int& BarPeriod = sc.PersistVars->i1;    
    SCInputRef ChartStudy = sc.Input[0];
    SCInputRef Multiplier = sc.Input[1];

    if (sc.SetDefaults)    {
        sc.GraphName="Tick charts - Linked";
        sc.StudyDescription="multiply/divide Master-TF";
                
        ChartStudy.Name = "Master-TF";
        ChartStudy.SetChartStudyValues(1, 1);
        Multiplier.Name = "factor / fraction";
        Multiplier.SetFloat(1.0);
        
        sc.GraphRegion = 0;     
        sc.UpdateAlways=0;
        sc.DrawZeros=0;
        sc.ValueFormat = 0;
		sc.GlobalDisplayStudyNameSubgraphNamesAndValues = 0;
		sc.DisplayStudyName = 0;
		sc.DisplayStudyInputValues = 0;
		sc.FreeDLL=0;
		return;
    }
    //sc.FreeDLL=1;
    
    if (sc.UpdateStartIndex == 0)  {
        const s_sc::s_PersistentVariables *p_PersistVars = sc.GetStudyPersistentVariablesFromChartUsingID(ChartStudy.GetChartNumber(), ChartStudy.GetStudyID());
        if (p_PersistVars) { sc.TicksPerBar = ( p_PersistVars->i1 ) * Multiplier.GetFloat(); }
        sc.GraphName.Format("Tick charts - Linked %d", (int)Multiplier.GetFloat()); 
    }    
}