#include "sierrachart.h"


SCDLLName("TestRects")


void UpdateRect(SCStudyGraphRef sc, float p1, float p2, int transparency, DWORD color, int indx, int& rem_ln, DWORD line_color, int line_style, int line_width, int drawing_chnum)
{
	if (drawing_chnum < 1 || drawing_chnum == sc.ChartNumber)
		return;

	s_UseTool Tool;
	Tool.Clear();
	Tool.ChartNumber = drawing_chnum;
	Tool.DrawingType = DRAWING_RECTANGLE_EXT_HIGHLIGHT;
	if (rem_ln)
		Tool.LineNumber = rem_ln;
	//Tool.Region = sc.GraphRegion;
	Tool.BeginValue = p1 - sc.TickSize / 2;
	Tool.EndValue = p2 + sc.TickSize / 2;
	Tool.BeginDateTime = sc.BaseDateTimeIn[indx];
	Tool.EndDateTime = sc.BaseDateTimeIn[indx] + SCDateTime::DAYS(1);
	Tool.Color = line_color;
	Tool.SecondaryColor = color;
	Tool.AddMethod = UTAM_ADD_OR_ADJUST;
	Tool.LineWidth = line_width;
	Tool.LineStyle = (SubgraphLineStyles)line_style;
	Tool.TransparencyLevel = transparency;
	Tool.AddAsUserDrawnDrawing = 1;
	sc.UseTool(Tool);
	rem_ln = Tool.LineNumber;
}


SCSFExport scsf_TestRects(SCStudyInterfaceRef sc)
{
	SCInputRef in_remote_chart = sc.Input[0];
	int& drawing_ln = sc.GetPersistentInt(1);
	int& drawing_chnum = sc.GetPersistentInt(2);

	if (sc.SetDefaults)
	{
		sc.GraphName = "TestRects";
		sc.StudyDescription = "";
		sc.AutoLoop = 1;
		sc.GraphRegion = 0;

		in_remote_chart.Name = "Remote Chart Number";
		in_remote_chart.SetInt(0);

	}

	if (sc.LastCallToFunction)
	{
		if (drawing_ln != 0)
			sc.DeleteUserDrawnACSDrawing(drawing_chnum, drawing_ln);

		return;
	}

	if (sc.Index == 0)
	{
		if (drawing_ln != 0)
			sc.DeleteUserDrawnACSDrawing(drawing_chnum, drawing_ln);

		drawing_ln = 0;
		drawing_chnum = 0;
	}

	if (sc.Index == sc.ArraySize - 10 && drawing_ln == 0)
	{
		drawing_chnum = in_remote_chart.GetInt();
		UpdateRect(sc, sc.Low[sc.Index], sc.High[sc.Index], 75, COLOR_MAGENTA, sc.Index, drawing_ln, COLOR_MAGENTA, 0, 1, drawing_chnum);
	}
}
