from Rectangle import Rectangle

class LetterCropper:

    def __init__(self, image, threshold = 0.9):
        self.set_image(image)
        self.set_threshold(threshold)
        
    def set_image(self, image):
        self.image = image
        
    def set_threshold(self, threshold):
        self.threshold = threshold
                
    def get_cropped_letter(self):
        self.determine_letter_bounds()
        self.image.crop(self.letter_bounds)
        return self.image

    def determine_letter_bounds(self):
    
        min_x = self.image.width
        max_x = 0
        min_y = self.image.height
        max_y = 0

        for y in xrange(self.image.height):
            for x in xrange(self.image.width):
                if self.image[y, x] < self.threshold:
                    if x < min_x: min_x = x
                    if y < min_y: min_y = y
                    if x > max_x: max_x = x
                    if y > max_y: max_y = y
        
        self.letter_bounds = Rectangle(
            min_x, 
            min_y, 
            max_x - min_x ,
            max_y - min_y
        )