diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-12-13 19:24:06 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-12-13 19:24:06 -0500 |
commit | d5c32fc3f885a7b8f719c9f27dbba36e287222f0 (patch) | |
tree | e95be7b21d6daab0bad47fc0ff6127f21288c3ff | |
parent | 5413c1c0dc40b24fd0932e3b8f7fdfa3a596859f (diff) | |
download | infinite-d5c32fc3f885a7b8f719c9f27dbba36e287222f0.tar.gz infinite-d5c32fc3f885a7b8f719c9f27dbba36e287222f0.tar.bz2 infinite-d5c32fc3f885a7b8f719c9f27dbba36e287222f0.zip |
Bot now takes path to config file as argument
That config file now also has to contain the paths to the verbly datafile, the forms file, the fonts directory, and the color palettes file.
-rw-r--r-- | fractal.cpp | 6 | ||||
-rw-r--r-- | fractal.h | 2 | ||||
-rw-r--r-- | infinite.cpp | 27 |
3 files changed, 23 insertions, 12 deletions
diff --git a/fractal.cpp b/fractal.cpp index 145886a..a911177 100644 --- a/fractal.cpp +++ b/fractal.cpp | |||
@@ -508,7 +508,7 @@ int Fractal::load(const char* filename, Fractal& fractal) | |||
508 | return 0; | 508 | return 0; |
509 | } | 509 | } |
510 | 510 | ||
511 | Fractal Fractal::random() | 511 | Fractal Fractal::random(std::string colorsfile) |
512 | { | 512 | { |
513 | Fractal fractal; | 513 | Fractal fractal; |
514 | 514 | ||
@@ -577,10 +577,10 @@ Fractal Fractal::random() | |||
577 | } | 577 | } |
578 | 578 | ||
579 | std::vector<std::string> colors; | 579 | std::vector<std::string> colors; |
580 | std::ifstream colorfile("colors.txt"); | 580 | std::ifstream colorfile(colorsfile); |
581 | if (!colorfile.is_open()) | 581 | if (!colorfile.is_open()) |
582 | { | 582 | { |
583 | std::cout << "Could not find colors.txt" << std::endl; | 583 | std::cout << "Could not find colors file" << std::endl; |
584 | exit(-1); | 584 | exit(-1); |
585 | } | 585 | } |
586 | 586 | ||
diff --git a/fractal.h b/fractal.h index af098f4..cfd39db 100644 --- a/fractal.h +++ b/fractal.h | |||
@@ -50,7 +50,7 @@ class Fractal { | |||
50 | Color get_color(double c) const; | 50 | Color get_color(double c) const; |
51 | 51 | ||
52 | static int load(const char* filename, Fractal& fractal); | 52 | static int load(const char* filename, Fractal& fractal); |
53 | static Fractal random(); | 53 | static Fractal random(std::string colorsfile); |
54 | 54 | ||
55 | double filterlevel = 0.5; | 55 | double filterlevel = 0.5; |
56 | double gamma = 2.2; | 56 | double gamma = 2.2; |
diff --git a/infinite.cpp b/infinite.cpp index a491302..1409ba2 100644 --- a/infinite.cpp +++ b/infinite.cpp | |||
@@ -439,7 +439,15 @@ int main(int argc, char** argv) | |||
439 | 439 | ||
440 | Magick::InitializeMagick(nullptr); | 440 | Magick::InitializeMagick(nullptr); |
441 | 441 | ||
442 | YAML::Node config = YAML::LoadFile("config.yml"); | 442 | if (argc != 2) |
443 | { | ||
444 | std::cout << "usage: infinite [configfile]" << std::endl; | ||
445 | return -1; | ||
446 | } | ||
447 | |||
448 | std::string configfile(argv[1]); | ||
449 | YAML::Node config = YAML::LoadFile(configfile); | ||
450 | |||
443 | twitter::auth auth; | 451 | twitter::auth auth; |
444 | auth.setConsumerKey(config["consumer_key"].as<std::string>()); | 452 | auth.setConsumerKey(config["consumer_key"].as<std::string>()); |
445 | auth.setConsumerSecret(config["consumer_secret"].as<std::string>()); | 453 | auth.setConsumerSecret(config["consumer_secret"].as<std::string>()); |
@@ -451,10 +459,10 @@ int main(int argc, char** argv) | |||
451 | // Parse forms file | 459 | // Parse forms file |
452 | std::map<std::string, std::vector<std::string>> groups; | 460 | std::map<std::string, std::vector<std::string>> groups; |
453 | { | 461 | { |
454 | std::ifstream datafile("forms.txt"); | 462 | std::ifstream datafile(config["forms_file"].as<std::string>()); |
455 | if (!datafile.is_open()) | 463 | if (!datafile.is_open()) |
456 | { | 464 | { |
457 | std::cout << "Could not find forms.txt" << std::endl; | 465 | std::cout << "Could not find forms file" << std::endl; |
458 | return 1; | 466 | return 1; |
459 | } | 467 | } |
460 | 468 | ||
@@ -484,11 +492,12 @@ int main(int argc, char** argv) | |||
484 | } | 492 | } |
485 | 493 | ||
486 | // Read in fonts | 494 | // Read in fonts |
495 | std::string fontsdirname = config["fonts"].as<std::string>(); | ||
487 | std::vector<std::string> fonts; | 496 | std::vector<std::string> fonts; |
488 | { | 497 | { |
489 | DIR* fontdir; | 498 | DIR* fontdir; |
490 | struct dirent* ent; | 499 | struct dirent* ent; |
491 | if ((fontdir = opendir("fonts")) == nullptr) | 500 | if ((fontdir = opendir(fontsdirname.c_str())) == nullptr) |
492 | { | 501 | { |
493 | std::cout << "Couldn't find fonts." << std::endl; | 502 | std::cout << "Couldn't find fonts." << std::endl; |
494 | return -1; | 503 | return -1; |
@@ -506,7 +515,9 @@ int main(int argc, char** argv) | |||
506 | closedir(fontdir); | 515 | closedir(fontdir); |
507 | } | 516 | } |
508 | 517 | ||
509 | verbly::data database {"data.sqlite3"}; | 518 | std::string colorsfile(config["colors"].as<std::string>()); |
519 | |||
520 | verbly::data database {config["verbly_datafile"].as<std::string>()}; | ||
510 | 521 | ||
511 | for (;;) | 522 | for (;;) |
512 | { | 523 | { |
@@ -614,7 +625,7 @@ int main(int argc, char** argv) | |||
614 | { | 625 | { |
615 | std::cout << "Generating flame fractal..." << std::endl; | 626 | std::cout << "Generating flame fractal..." << std::endl; |
616 | 627 | ||
617 | Fractal fractal = Fractal::random(); | 628 | Fractal fractal = Fractal::random(colorsfile); |
618 | std::vector<Color> irradiance(target_w*target_h*sample_rate*sample_rate, Color(0.0, 0.0, 0.0, 0.0)); | 629 | std::vector<Color> irradiance(target_w*target_h*sample_rate*sample_rate, Color(0.0, 0.0, 0.0, 0.0)); |
619 | 630 | ||
620 | double x = (double)rand()/(double)RAND_MAX*2.0-1.0; | 631 | double x = (double)rand()/(double)RAND_MAX*2.0-1.0; |
@@ -730,7 +741,7 @@ int main(int argc, char** argv) | |||
730 | // Put text on top of the fractal | 741 | // Put text on top of the fractal |
731 | std::string subaction = action; | 742 | std::string subaction = action; |
732 | std::string font = fonts[rand() % fonts.size()]; | 743 | std::string font = fonts[rand() % fonts.size()]; |
733 | if (font == "Le_Super_Type_SemiBold.ttf") | 744 | if (font.find("Le_Super_Type_SemiBold.ttf") != std::string::npos) |
734 | { | 745 | { |
735 | std::transform(std::begin(subaction), std::end(subaction), std::begin(subaction), [] (char ch) { | 746 | std::transform(std::begin(subaction), std::end(subaction), std::begin(subaction), [] (char ch) { |
736 | return std::toupper(ch); | 747 | return std::toupper(ch); |
@@ -741,7 +752,7 @@ int main(int argc, char** argv) | |||
741 | textimage.type(Magick::TrueColorMatteType); | 752 | textimage.type(Magick::TrueColorMatteType); |
742 | textimage.fillColor(Magick::Color("white")); | 753 | textimage.fillColor(Magick::Color("white")); |
743 | textimage.fontPointsize(72.0); | 754 | textimage.fontPointsize(72.0); |
744 | textimage.font("fonts/" + font); | 755 | textimage.font(fontsdirname + "/" + font); |
745 | 756 | ||
746 | auto words = verbly::split<std::list<std::string>>(subaction, " "); | 757 | auto words = verbly::split<std::list<std::string>>(subaction, " "); |
747 | std::string towrite = ""; | 758 | std::string towrite = ""; |