X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Ffreenet%2Fcaptcha%2Falternatecaptcha1.cpp;fp=src%2Ffreenet%2Fcaptcha%2Falternatecaptcha1.cpp;h=07f4dde2ee8831540669c85f461f545540576e23;hp=0000000000000000000000000000000000000000;hb=822f84f5dac64183c556bd86fea8cd7b0527f528;hpb=fcb124f8d6d3f5678e82049fb8e5e23c8cfaec6d diff --git a/src/freenet/captcha/alternatecaptcha1.cpp b/src/freenet/captcha/alternatecaptcha1.cpp new file mode 100644 index 0000000..07f4dde --- /dev/null +++ b/src/freenet/captcha/alternatecaptcha1.cpp @@ -0,0 +1,148 @@ +#include "../../../include/freenet/captcha/alternatecaptcha1.h" + +#include +#include + +#include + +#ifdef ALTERNATE_CAPTCHA + +bool AlternateCaptcha1::m_fontsloaded(false); +std::vector AlternateCaptcha1::m_fonts; + +AlternateCaptcha1::AlternateCaptcha1() +{ + if(m_fontsloaded==false) + { + FreeImage_Initialise(true); + LoadFonts(); + m_fontsloaded=true; + } +} + +void AlternateCaptcha1::Generate() +{ + std::string puzzlestring=GenerateRandomString(5); + FreeImage::Bitmap tempchar(50,50,32); + tempchar.SetTransparent(); + FreeImage::Bitmap bmp(110,50,32); + bmp.SetTransparent(); + + m_solution.clear(); + m_puzzle.clear(); + + // draw the text + if(m_fonts.size()>0) + { + for(int i=0; i &puzzle) +{ + puzzle=m_puzzle; + return true; +} + +const bool AlternateCaptcha1::GetSolution(std::vector &solution) +{ + solution=m_solution; + return true; +} + +void AlternateCaptcha1::LoadFonts() +{ + FreeImage::Bitmap bmp; + Poco::Path path("fonts"); + Poco::DirectoryIterator di(path); + Poco::DirectoryIterator end; + + while(di!=end) + { + if(di.name().find("bmp")!=std::string::npos) + { + bmp.Load("bmp",di.path().toString()); + m_fonts.push_back(FreeImage::Font(bmp)); + } + ++di; + } + +} + +#endif // ALTERNATE_CAPTCHA