1Revision history for Perl extension GD::SecurityImage. 2 31.75 2018-12-24 BURAK 4 - Drop legacy workarounds and documentation about those as well. 5 - In relation to that, we now depend on relatively new versions 6 of both GD & PerlMagick. 7 - These methods are now also removed a from the backends as well: 8 _versiongt 9 _versionlt 10 - Distro fix. 11 121.74 2018-12-24 BURAK 13 - Migrate to dzil. 14 151.73 Wed Jan 21 01:36:45 2015 16 - RT#87918. 17 181.72 Sun Jul 8 01:50:04 2012 19 - Bump version. 20 211.71 Sun Sep 4 00:58:52 2011 22 - Major Perl::Critic refactoring. 23 - Pod fix by Gregor Herrmann. 24 251.70 Thu Apr 30 16:56:32 2009 26 - Made a mistake. version checking test is really gone now. 27 281.69 Thu Apr 30 15:13:19 2009 29 - Re-release without the version check test. 30 311.68 Wed Apr 22 19:49:46 2009 32 - Update builder. 33 341.67 Sat Apr 18 05:45:48 2009 35 - Update distro files. 36 371.66 Sun Jun 8 17:03:24 2008 38 - Fix for RT#35115. 39 401.65 Wed Feb 27 21:47:38 2008 41 - Fix for RT#33629. 42 - All files unixified (LF). 43 441.64 Wed Apr 25 21:01:49 2007 45 - Yet another test suite update for Image::Magick. 46 - New style "blank" added for evil purposes. 47 - Fixed a regex in demo.pl 48 491.63 Sat Feb 24 16:41:03 2007 50 - I didn't check the existence of Image::Magick in 51 06-version_magick.t and this resulted with FAILs. 52 Fixed this and updated all magick tests. They now 53 show the real number of skipped tests (if they are skipped) 54 551.62 Fri Feb 23 23:13:37 2007 56 - Minor fixes in Pods. Added an image samples section 57 (as HTML) and CPAN modules that are using GD::SecurityImage. 58 Also added a SUPPORT section. 59 - Updated demo.pl. Added "program" config option. 60 - Refactored and cleaned up some parts and demo. 61 Most parts are "Damianized". 62 - New private methods _versionlt() and _versiongt() 63 for backend version comparison. _versiongt() 64 actually means: "greater than or equal to". 65 - Updated tests. 66 - Optimized styles. 67 681.61 Thu May 25 21:56:44 2006 69 - Renamed constants in GD::SecurityImage::GD: 70 _X_ is now CH_X 71 _Y_ is now CH_Y 72 There is a bug in the constant pragma that is bundled 73 with legacy perl ($] < 5.006). In these perls, 74 the code was dying with this message: 75 Can't define "_X_" as constant (name contains invalid 76 characters or is empty). 77 781.60 Sun Feb 19 23:33:36 2006 79 - Removed GD::SecurityImage::AC to it's own distribution 80 because of the increasing interest. 81 821.59 Fri Jan 6 13:56:41 2006 83 - Updated ::AC. Module. It now dies if gdbox_empty(). 84 If libgd is compiled without TTF support, we'll get 85 an empty image. Also added this to Pod. 86 - Removed SIGNATURE file and signature test and anything 87 Module::Signature related per RT #15346. I'm tired of 88 Module::Signature. 89 901.583 Fri Nov 25 23:06:36 2005 91 - Another relase for distro/sig issues. Now all files are CRLF 92 and signature testing is disabled if !MSWin32. 93 Module::Signature currently (<= 0.50) can not validate CRLF 94 files if it is working under some non-Windows OS. I'm waiting 95 for a response from Module::Signature author on this subject. 96 - Renamed some tests. 97 - Updated pod. 98 991.582 Sat Oct 29 20:43:04 2005 100 - Updated test suite to increase kwalitee :) 101 1021.581 Wed Oct 26 20:21:09 2005 103 - Fixed Makefile.PL. Build.PL was causing this error: 104 "Too early to specify a build action 'Build'. Do 'Build Build' instead." 105 Setting "PL_FILES" to an empty hashref solves the problem. 106 This was mentioned in Module::Build::Compat, but I' ve 107 missed it and this error does not seem to happen under 108 Windows or with the latest version of ExtUtils::MakeMaker, 109 I'm not sure which one is the case. 110 1111.58 Wed Oct 26 13:28:35 2005 112 - Fixed a gdbox issue in ::GD backend. 113 - Pod fixes. 114 1151.57_02 Fri Oct 21 19:46:11 2005 116 - Reworked an undocumented method. New name is info_text(). 117 You can now add information strips to the generated image. 118 The demo already uses this undocumented feature for a while. 119 This method can be used to add copyright information. Some 120 free captcha services are doing that. Alternatively, you can 121 display the image generation time like the demo does. 122 - Added info_text() info to pod and fixed the other pod sections. 123 - Updated test suite. 124 1251.57_01 Wed Oct 19 14:31:22 2005 126 - Converted to Module::Build from ExtUtils::MakeMaker. 127 - Nothing changed in modules. Just a test for PAUSE indexer 128 and Module::Build. 129 1301.57 Tue Oct 4 18:24:12 2005 131 - Fixed typos in pods. 132 - Added RT Wishlist item #14618. 'angle' parameter is now 133 used when scramble is not enabled. But this'll require 134 a taller image, since the random code is centered 135 inside the image. Added info about this into the pod. 136 - Updated demo. 137 1381.56 Sat Oct 1 14:14:34 2005 139 - Added GD::SecurityImage backend - 'AC'; 140 - Updated demo Pod. 141 - Added some tips to the pod. 142 - Updated licenses. 143 - Updated Makefile.PL. Removed Math::Trig from prerequisities, 144 since it is in CORE since perl 5.004. 145 - GD::SecurityImage::AC is now untainted (I hope). 146 Reported by Michael B Krypel. Still no tests for this 147 module. 148 - Existence of setThickness() is now explicitly checked for 149 GD < 2.07. 150 1511.55 Wed Apr 13 17:58:37 2005 152 - New sub-module GD::SecurityImage::AC added as an 153 Authen::Captcha drop-in replacement module. 154 I currently didn't add any tests for this module. 155 - New method 'backends' to list available back-ends. 156 1571.54 Fri Apr 8 23:11:32 2005 158 - Updated pods. 159 - If anyone adds a back-end, one must define a method 160 to deal with colors: 'backend_cconvert'. cconvert() 161 will forward all calls to backend_cconvert() if 162 $BACKEND is different than /^(GD|Magick)$/. Note that 163 this method must be capable of handling both HEX and RGB. 164 - Finally documented this. See BACKEND_AUTHORS section in 165 the pod (If you have a HTML version, probably you can not 166 see this). 167 - Removed gdbox_empty from GD::SecurityImage::Magick 168 - The module now has an AUTOLOAD method. 169 - Added a check for gdbox_empty in AUTOLOAD for non-GD 170 backends. 171 - Ooops! ellipse() added in GD 2.07 :p Thanks to ActiveState 172 build logs. I missed that one (looks like all CPAN Testers 173 are using recent GDs). 174 Added a global mechanism to check this and any incompatibilities. 175 If GD < 2.07 and you call ellipse() it will fall-back to default() 176 style. If you call ec() style, it'll disable ellipse() call and only 177 draw circles. 178 - Updated GD::SecurityImage::Styles. 179 - Updated demo program. Also, changed default type to 'png' after 180 a little conversation with Eric Gorr. :) (some installations may 181 have gif() method but don't have gif support enabled. This results 182 with an empty image. Cause: old libgd). 183 - Default image type in GD::SecurityImage::GD::out() changed to 'png'. 184 1851.53 Wed Jan 5 18:21:59 2005 186 - Added a new option 'backend' to import(). With this 187 option you can now include other back-ends: 188 189 use GD::SecurityImage backend - 'Magick'; 190 191 will load the GD::SecurityImage::Magick for example. 192 If you wrote a backend for GD::SecurityImage, you can 193 now combine your back-end with GD::SecurityImage. Like, 194 if you created a Imager back-end named 'GD::SecurityImage::Imager', 195 you can load it like this: 196 197 use GD::SecurityImage backend - 'Imager'; 198 199 No one requested this kind of functionality (yet), but I'm 200 adding it anyway. And *NO* I will not create an Imager or 201 any other backend myself (at least not in the near future). 202 I' m already supporting two different interfaces. 203 204 Probably cconvert() also needs a fix to support such a thing. 205 I'll deal with that later. 206 - If you have loaded Image::Magick outside and then you call 207 GD::SecurityImage with the GD backend (or simply use it) 208 your code dies with a weird error. Since it setups the 209 interface for Image::Magick, but you didn't select Image::Magick 210 as the backend. For example, this simple code dies if you are using 211 1.52 and below: 212 213 use Image::Magick; 214 use GD::SecurityImage; 215 GD::SecurityImage->new->create; 216 217 This bug cought by Dave Rolsky. 218 - New class variable $BACKEND added to deal with this bug. 219 The backend is now completely checked and set in import(). 220 - Also, the module is now checking whether you called import() 221 or not. If you didn't, it'll die (it actually checks if $BACKEND 222 has a value). 223 - Added a new test 'backend.t' to check these. 224 2251.52 Tue Dec 21 15:07:37 2004 226 - After implementing HEX colors with cconvert, I forgot to 227 set default colors in create() which will throw an exception 228 without the default color values. 229 Reported by Billy Vierra. 230 - Updated pod. 231 2321.51 Sun Dec 19 00:02:13 2004 233 - Updated demo program code. 234 - Updated Makefile.PL. 235 - New private method cconvert for transparent GD/Image::Magick 236 color conversion. 237 - Removed GD::SecurityImage::Magick::rgbx(). 238 - The module now supports hex color codes like "#ffffff". 239 - Updated pod. 240 241 - [NOT DOCUMENTED] New private method add_strip. 242 - [NOT DOCUMENTED] New method set_tl. 243 - [NOT DOCUMENTED] New method change_random. 244 - [NOT DOCUMENTED] New parameter 'text_location' added to new. 245 - [NOT DOCUMENTED] With text_location option, you can now add info boxes to 246 the 4 corners of the image (or you can use this for something else). 247 - [NOT DOCUMENTED] Behavior of out() changed. If set_tl is used and 248 you change the random code (text option) several times, it may 249 be an array. 250 2511.5 Sat Oct 30 17:11:53 2004 252 - Fixed pod. 253 - Minor fixes. 254 - rndmax option to new, now controls the minimum random character 255 length, when you supply your own random string. 256 - Updated tests. 257 - Added a demo program to "eg/demo.pl". 258 It needs DBI, DBD::mysql (and a MySQL server), Apache::Session, 259 String::Random and some CORE modules to run. 260 - GD still needs an absolute path. Fixed pod. 261 2621.4_03 Mon Oct 11 21:55:37 2004 263 - Older GDs do not have setThickness. 264 "setThickness" added in "GD 2.07 @ 24 Apr 2003". 265 Fixed thickness option in new. 266 Updated test api for this. 267 Added this to Pod. 268 - Added "compress" argument to out() for "jpeg" and "png". 269 - But GD *again* has a problem here. Compression argument for 270 png is implemented in "GD 2.07". out() silently ignores 271 compression parameter, if you have an older GD and set output 272 format to png. 273 Added this to Pod. 274 - Also, jpeg method and quality level for jpeg added 275 in "GD 1.26 @ 18 Mar 2000". But currently, I didn't add 276 any controls to detect that and I don't know who can 277 use that pre-historic versions (other than sf.net!). 278 - It's too hard to stay compatible with older versions! 279 2801.4_02 Sat Oct 9 14:48:18 2004 281 - Fixed a bug in new for the angle parameter. 282 - New private method setThickness. 283 - New option 'thickness' added to new. 284 - Replaced buggy/silly "_charw" with "ttf_info" in GD backend. 285 Hopefully, this fixes the "scramble" implementation for GD. 286 - Updated test suite. Now, there is a single test api and two 287 test files. 288 - Changed Makefile.PL. "GD" is now hardcoded as a prerequisite. 289 Removed user input codes. The presence of "Image::Magick" 290 is now tested inside the test file and magick test will 291 be skipped if there is no "Image::Magick" 292 (request from Barbie -- not exactly this, but similar). 293 2941.4_01 Mon Sep 20 16:46:13 2004 295 - It looks like newer versions of GD does not have the path 296 bug, but I do not know the exact version that this was 297 fixed. Anyway, it looks like v2.16 does not have that bug. 298 Also added this to Pod. 299 - The module now automatically drops to 'normal' mode if 300 you are using GD and your GD version is smaller than 1.20 301 and you have selected 'ttf' method. 302 Q: Why? 303 A: v1.19 and below does not have ttf support. (As mentioned 304 in earlier releases) -- also: sf.net has GD v1.19 :). 305 Module does this silently, so you'll not get any warnings about 306 that. 307 - New parameters scramble and angle added to new(). If you enable 308 scramble, you have to generate a bigger image, since characters 309 have three spaces between them. 310 - I've decided to change the description of the module. Now it 311 has the word "captcha" in it (for search engines). 312 - Added some new constants to both backends. 313 - Module now requires Math::Trig (which is a CORE module) for 314 degree to radian calculation. 315 - New tests for scramble. 316 - New private method random_angle. 317 3181.33 Sun Aug 22 16:50:42 2004 319 - Because of libgd's path bug, in some cases, 320 GD::SecurityImage::GD::insert_text() can not get the 321 boundary list. I've added a workaround there. If we don't 322 get the list, then we'll use width/2 and height/2 which 323 will generate wrong values (since the image will not 324 include any string and because the underlying library can not 325 find the ttf font, that's not the problem), but I can not do 326 anything about it. 327 GD wants an *exact* path with no spaces in it for TTF Fonts. 328 Just don't put your codes/fonts in paths that have spaces in it. 329 And don't try to "make test" from a location like this. 330 You can blame windowz and/or libgd for this. 331 Also, if Cwd::getcwd() can not get the exact path, we will have 332 the same problem, but after this version, you'll probably not 333 get "Use of uninitialized value" warnings. 334 - New method gdbox_empty() added to GD::SecurityImage::GD. 335 Also added a fake gdbox_empty() method to 336 GD::SecurityImage::Magick for compatibility. 337 Under GD::SecurityImage::Magick, this method always returns 338 false. 339 - Minor fix in create(). 340 - Updated Pods. Sub modules have definiton of what they are now. 341 3421.321 Wed Jul 28 21:52:04 2004 343 - Updated tests. Code didn't change. 344 3451.32 Wed Jul 28 15:49:12 2004 346 - Minimal fix in create(). 347 - There is a bug in PerlMagicks older than 6.0.4. 348 From <http://www.imagemagick.org/www/Changelog.html>: 349 "PerlMagick's QueryFontMetrics() incorrectly reports 350 `unrecognized attribute'` for the `font' attribute". 351 Image::Magick test is now skipped if your 352 $Image::Magick::VERSION is smaller than 6.0.4. 353 Please upgrade to 6.0.4, if you want to use Image::Magick 354 as the backend. 355 - Added this bug to Pod. 356 3571.31 Sun Jun 27 00:08:49 2004 358 - Updated Pod. 359 - send_ctobg is disabled automatically if style is 360 set to 'box'. 361 - All styles can put a frame around the image now. 362 And this feature is enabled by default. 363 - New option 'frame' added to new(). 364 - Renamed constants in GD::SecurityImage::GD. 365 - Changed tests. 366 3671.3 Mon Jun 21 19:11:13 2004 368 - New method particle(). 369 - Private method r2h(). 370 - Fixed color conversion for Image::Magick. 371 - out() now accepts arguments. 372 - Updated pod. 373 3741.2 Fri Jun 18 21:39:08 2004 375 - Added raw() method. 376 - Fixed gd_font object key. 377 - new style "ec". 378 - Adapted Image::Magick compatibility (request from Mark Fuller). 379 I may add Image::Magick spesific styles in future releases. 380 - New modules added: 381 GD::SecurityImage::GD 382 GD::SecurityImage::Magick 383 GD::SecurityImage::Styles 384 and GD::SecurityImage is smaller now ;) 385 - Renamed old tests to (added 'gd_' to names): 386 t/gd_01_use.t 387 t/gd_02_normal.t 388 t/gd_03_ttf.t 389 - Added new tests: 390 t/im_01_use.t 391 t/im_02_ttf.t 392 - Altered Makefile.PL and test files to skip tests if the user selects to do so. 393 3941.1 Fri May 14 22:08:39 2004 395 - Added 'send_ctobg' option to new(). 396 - After testing the code with a *really* old GD 397 (1.19 -- which has no ttf support), I've realized 398 that stringFT was implemented in GD 1.31. 399 So, the ttf test now has a skip option. 400 - Also added stringTTF check for backward compatibility. 401 stringTTF - (GD 1.20 @ 30 Aug 1999 402 stringFT - (GD 1.31 @ 26 Sep 2001 403 - Fixed pod. There was an '=item' instead of '=head'. 404 - Added new styles 'circle' and 'ellipse'. 405 - Updated 03_ttf.t 406 4071.0 Mon Apr 26 21:40:45 2004 408 - First release. 409