#include "../../../include/freenet/captcha/alternatecaptcha1.h"\r
\r
-#include <Poco/Path.h>\r
-#include <Poco/DirectoryIterator.h>\r
-\r
#include <cmath>\r
+#include <cstdlib>\r
\r
#ifdef ALTERNATE_CAPTCHA\r
\r
-bool AlternateCaptcha1::m_fontsloaded(false);\r
-std::vector<FreeImage::Font> AlternateCaptcha1::m_fonts;\r
-\r
AlternateCaptcha1::AlternateCaptcha1()\r
{\r
- if(m_fontsloaded==false)\r
- {\r
- FreeImage_Initialise(true);\r
- LoadFonts();\r
- m_fontsloaded=true;\r
- }\r
+ AlternateCaptchaFonts fonts;\r
+ m_fonts=fonts.Fonts();\r
}\r
\r
void AlternateCaptcha1::Generate()\r
{\r
+ if(m_fonts.size()==0)\r
+ {\r
+ return;\r
+ }\r
+\r
std::string puzzlestring=GenerateRandomString(5);\r
FreeImage::Bitmap tempchar(50,50,32);\r
tempchar.SetTransparent();\r
white.rgbGreen=255;\r
white.rgbBlue=255;\r
white.rgbReserved=255;\r
- int numlines=(rand()%5)+10;\r
+ int numlines=(rand()%5)+5;\r
for(int i=0; i<numlines; i++)\r
{\r
// draw 4 short lines very close to each other\r
}\r
}\r
\r
+ // make output a little wavy\r
int offset=rand()%10000;\r
for(int y=0; y<bmp.Height(); y++)\r
{\r
return true;\r
}\r
\r
-void AlternateCaptcha1::LoadFonts()\r
-{\r
- FreeImage::Bitmap bmp;\r
- Poco::Path path("fonts");\r
- Poco::DirectoryIterator di(path);\r
- Poco::DirectoryIterator end;\r
-\r
- while(di!=end)\r
- {\r
- if(di.name().find("bmp")!=std::string::npos)\r
- {\r
- bmp.Load("bmp",di.path().toString());\r
- m_fonts.push_back(FreeImage::Font(bmp));\r
- }\r
- ++di;\r
- }\r
-\r
-}\r
-\r
#endif // ALTERNATE_CAPTCHA\r