// for now juist CLI, print an arr, then print each it #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "timer.hpp" #include "sorters.hpp" using namespace std::chrono; using namespace std; bool displaynumbers(vector input) { for (size_t i = 0; i < input.size(); ++i) { printf("array:%d ", input[i]); } printf("\n"); return false; } string arraytostr(SortInput input) { string myoutput; ostringstream stringrep; for (size_t i = 0; i < input.values.size(); ++i) { stringrep << input.values[i] <<" | "; } return stringrep.str(); } vector dataprovider(){ return vector {9,8,1,2,7,3,6,4,5}; } void setupsorttimers(TimerManager &mytimermanager, SteppedBsort &mysession){ unique_ptr mytimer = make_unique( "sort1", 0, [&mysession](){return mysession.step();}, milliseconds(250)); mytimermanager.add_timer(std::move(mytimer)); } struct App{ sf::RenderWindow mywindow; sf::Font myfont; sf::Text text; TimerManager mytimermanager; SortInput input; SteppedBsort mystb; sf::Font load_font(const string &filename) { sf::Font font; if (!font.openFromFile(filename)){ fprintf(stderr, "failed to load font"); std::exit(1); } return font; } App(SortInput input): mywindow(sf::VideoMode({800,600}), "mywindow"), myfont(load_font("assets/NS-R.ttf")), text(myfont), input(std::move(input)), mystb(this->input) { text.setFont(myfont); text.setString("Hello world"); text.setCharacterSize(24); text.setFillColor(sf::Color::Red); setupsorttimers(mytimermanager, mystb); } void run(){ //set up ui while (mywindow.isOpen()){ while (const optional event = mywindow.pollEvent()){ if (event->is()) mywindow.close(); } mywindow.clear(sf::Color::Black); mywindow.draw(text); text.setString(arraytostr(input)); mytimermanager.update_timers(); displaynumbers(input.values); mywindow.display(); this_thread::sleep_for(milliseconds(250)); } } }; int main() { SortInput myinput("arr1", dataprovider()); App myapp(myinput); myapp.run(); }