class Frameit::Trimbox

Represents the MiniMagick trim bounding box for cropping a text image

Attributes

height[RW]
offset_x[RW]
offset_y[RW]
width[RW]

Public Class Methods

new(identify_string) click to toggle source

identify_string: A string with syntax “<width>x<height>+<offset_x>+<offset_y>”. This is returned by MiniMagick when using function .identify with format(“%@”). It is also required for the MiniMagick .crop function.

# File frameit/lib/frameit/trim_box.rb, line 12
def initialize(identify_string)
  UI.user_error!("Trimbox can not be initialised with an empty 'identify_string'.") unless identify_string.length > 0

  # Parse the input syntax "<width>x<height>+<offset_x>+<offset_y>".
  # Extract these 4 parameters into an integer array, by using multiple string separators: "x" and "+":
  trim_values = identify_string.split(/[x+]/).map(&:to_i)

  # If 'identify_string' doesn't have the expected syntax with 4 parameters, show error:
  UI.user_error!("Trimbox is initialised with an invalid value for 'identify_string'.") unless trim_values.length == 4

  # Assign instance variables:
  @width = trim_values[0]
  @height = trim_values[1]
  @offset_x = trim_values[2]
  @offset_y = trim_values[3]
end

Public Instance Methods

json_string_format() click to toggle source

Get the trimbox parameters in a human readable JSON string format

# File frameit/lib/frameit/trim_box.rb, line 36
def json_string_format
  # Create a JSON string from the trim box parameters:
  return "{\"width\" : #{@width}, \"height\" : #{@height} , \"offset_x\" : #{@offset_x}, \"offset_y\" : #{@offset_y}}"
end
string_format() click to toggle source

Get the trimbox parameters in the MiniMagick string format

# File frameit/lib/frameit/trim_box.rb, line 30
def string_format
  # Convert trim box parameters to string with syntax: "<width>x<height>+<offset_x>+<offset_y>":
  return "#{@width}x#{@height}+#{@offset_x}+#{@offset_y}"
end