All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.octo.captcha.image.fisheye.FishEye Maven / Gradle / Ivy

/*
 * JCaptcha, the open source java framework for captcha definition and integration
 * Copyright (c)  2007 jcaptcha.net. All Rights Reserved.
 * See the LICENSE.txt file distributed with this package.
 */

package com.octo.captcha.image.fisheye;

import com.octo.captcha.image.ImageCaptcha;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.StringTokenizer;

/**
 * FishEye is an ImageCaptcha
 * 
    *
  • Challenge type : image
  • *
  • Response type : a point position, in pixels from the bottom left, can be * : a String with two numbers separated with a comma or a java.awt.Point
  • *
  • Description : An image of a distorded picture. User have to point the * center of the deformation and to submit it.
  • *
* * @author Marc-Antoine Garrigue * @version 1.0 */ public class FishEye extends ImageCaptcha { /** * */ private static final long serialVersionUID = 1L; private Point deformationCenter; private Integer tolerance; /** * @param question * the question * @param challenge * the imageChallenge * @param deformationCenter * the center of the deformation that has been applied to the * image in order to validate the answer * @param tolerance * the max distance to the center of the deformation accepted by * the validation routine in pixels. */ protected FishEye(String question, BufferedImage challenge, Point deformationCenter, Integer tolerance) { super(question, challenge); this.deformationCenter = deformationCenter; this.tolerance = tolerance; } /** * Validation routine for the response. * * @param response * to the question concerning the chalenge * * @return true if the answer is correct, false otherwise. */ public Boolean validateResponse(Object response) { // if a point go if (response instanceof Point) { Point point = (Point) response; return validateResponse(point); // else if string response } else if (response instanceof String) { String s = (String) response; // ty to parse it try { // String[] coordonates = new String[2]; StringTokenizer token = new StringTokenizer(s, ","); Point point = new Point(Integer.parseInt(token.nextToken()), Integer.parseInt(token.nextToken())); return validateResponse(point); } catch (Throwable e) { // catch all and return false return Boolean.FALSE; } } else { return Boolean.FALSE; } } /** * Real validation * * @param point * the given point * * @return true if distance from the given point and the deformation center * is less than tolerance, false otherwise */ private Boolean validateResponse(Point point) { if (point.distance(deformationCenter) <= tolerance.doubleValue()) { return Boolean.TRUE; } return Boolean.FALSE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy