/********************************************************************************************
ezwSwap.cpp
	Jim Millard
	for CO311

    EZwindows sort visualizations

********************************************************************************************/
#include "ezwSwap.h"

#include <ezwin.h>
#include <ray.h>

#include "ezwSort.h"
#include "ezwUtils.h"
#include "ezwMove.h"

extern float baseline; //Bottom edge of all bars
extern float tempX; //horizontal position used when swapped to a "temp" location

/*********************************************************************************************/

void Swap(int& A, int& B)
    {
    int temp = A;
    A = B;
    B = temp;
    }

/*********************************************************************************************/

void Swap(SimpleWindow& W, RaySegment& barA, RaySegment& barB, const short load)
    {

    //highlight the bars
    Highlight(barA,Blue);
    Highlight(barB,Magenta,load * 2);
    
    RaySegment* temp = new RaySegment(W, tempX,0, tempX,baseline/2, Black, barA.GetThickness());

    Move(barA, *temp, load);
    Move(barB, barA, load);
    Move(*temp, barB, load);

    delete temp;

    //unhighlight the bars
    Highlight(barA,Red);
    Highlight(barB,Red);
    
    return;
    }