def METHOD_NAME(self, *args):
    # return if no reference size yet
    if not self.reference_size:
        return
    size = self.size
    origin_appr = self._aspect_ratio_approximate(self.reference_size)
    crop_appr = self._aspect_ratio_approximate(size)
    # same aspect ratio
    if origin_appr == crop_appr:
        crop_size = self.size
        offset = (0, 0)
    # scale x
    elif origin_appr < crop_appr:
        crop_size = self._scale_size(self.reference_size, (size[0], None))
        offset = (0, ((crop_size[1] - size[1]) / 2) * -1)
    # scale y
    else:
        crop_size = self._scale_size(self.reference_size, (None, size[1]))
        offset = (((crop_size[0] - size[0]) / 2) * -1, 0)
    # set background size and position
    self.cover_size = crop_size
    self.cover_pos = offset