/********************************************************************************************
ezwUtils.cpp
Jim Millard
for CO311
EZwindows sort visualization utilities
********************************************************************************************/
#include "ezwUtils.h"
#include <sys/timeb.h>
#include <ezwin.h>
#include <ray.h>
#include <label.h>
#include "ezwSort.h"
extern float baseline; //Bottom edge of all bars
extern float tempX; //horizontal position used when swapped to a "temp" location
extern float clientX, clientY; //display area for sorting
/*********************************************************************************************/
int minValue(const int A[], const int size)
{
int smallest = A[0];
for (int i = 1; i < size; i++)
if (A[i] < smallest)
smallest = A[i];
return smallest;
}
/*********************************************************************************************/
int maxValue(const int A[], const int size)
{
int largest = A[0];
for (int i = 1; i < size; i++)
if (A[i] > largest)
largest = A[i];
return largest;
}
/*********************************************************************************************/
void RefreshDisplay(SimpleWindow& W, string Status, color StatusColor)
{
//divide the client area up
RaySegment BaseLine(W, 0,clientY, winX,clientY, Black, (float)0.01);
BaseLine.Draw();
RaySegment SideBar(W, clientX,clientY, clientX,0, Black, (float)0.01);
SideBar.Draw();
//write the label for the temporary area
Label temp(W, tempX, clientY + 0.5 ,"<temp>");
temp.Draw();
//write the label for the status area
Label status(W, clientX/2, clientY + 0.5, Status.c_str(), StatusColor);
status.Draw();
}
/*********************************************************************************************/
void DelayMS(const short waitTime)
{
if (waitTime > 0)
{
struct timeb tbNow;
double Now, StopAfter;
ftime( &tbNow );
StopAfter = waitTime + tbNow.time*1000. + tbNow.millitm;
do {
ftime( &tbNow );
Now = tbNow.time*1000. + tbNow.millitm;
}
while (Now <= StopAfter);
}
}
/*********************************************************************************************/
void Highlight(RaySegment& R, color C, const short waitTime)
{
R.SetColor(C);
R.Draw();
DelayMS(waitTime);
}