View Javadoc

1   package com.octo.captcha.component.image.textpaster.glyphsvisitor;
2   
3   import com.octo.captcha.component.image.textpaster.Glyphs;
4   
5   import java.awt.geom.Rectangle2D;
6   import java.util.Random;
7   import java.security.SecureRandom;
8   
9   /***
10   *
11   * @author mag
12   * @Date 6 mars 2008
13   */
14  public class TranslateAllToRandomPointVisitor implements GlyphsVisitors {
15      private Random myRandom = new SecureRandom();
16      private double horizontalMargins=0;
17      private double verticalMargins=0;
18  
19  
20      public TranslateAllToRandomPointVisitor() {
21      }
22  
23      /***
24       *
25       * @param horizontalmargins the horizontal margin, default 0
26       * @param verticalmargins    the vertical margin, default 0
27       */
28      public TranslateAllToRandomPointVisitor(double horizontalmargins,double verticalmargins){
29           this.horizontalMargins=horizontalmargins;
30          this.verticalMargins=verticalmargins;
31      }
32  
33      public void visit(Glyphs glyphs, Rectangle2D backroundBounds) {
34          double xRange = backroundBounds.getWidth() - glyphs.getBoundsWidth()-horizontalMargins;
35          double yRange = backroundBounds.getHeight() - glyphs.getBoundsHeight()-verticalMargins;
36          double tx = xRange * myRandom.nextDouble() - glyphs.getBoundsX()+horizontalMargins/2;
37          double ty =  yRange*myRandom.nextDouble()- glyphs.getBoundsY()+verticalMargins/2;
38          glyphs.translate(tx,ty);
39      }
40  }