class UnderOs::Sharing::Instagram

Public Instance Methods

activityImage() click to toggle source
# File lib/under_os/receivers/instagram.rb, line 12
def activityImage
  UIImage.imageNamed("instagram.png")
end
activityTitle() click to toggle source
# File lib/under_os/receivers/instagram.rb, line 8
def activityTitle
  "Instagram"
end
activityType() click to toggle source
# File lib/under_os/receivers/instagram.rb, line 4
def activityType
  "com.under-os.share.instagram"
end
canPerformWithActivityItems(items) click to toggle source
# File lib/under_os/receivers/instagram.rb, line 16
def canPerformWithActivityItems(items)
  instagram_installed? && items.each do |item|
    if item_is_large_enough_image?(item)
      return true
    end
  end

  false
end
performActivity() click to toggle source
# File lib/under_os/receivers/instagram.rb, line 33
def performActivity
  return activityDidFinish(false) if ! @image_url

  @image_title = {"InstagramCaption" => @image_title} if @image_title

  @interaction = UnderOs::Sharing::Interaction.new("com.instagram.exclusivegram")
  @interaction.open @image_url, @image_title do |result|
    activityDidFinish result
  end
end
prepareWithActivityItems(items) click to toggle source
# File lib/under_os/receivers/instagram.rb, line 26
def prepareWithActivityItems(items)
  items.each do |item|
    @image_title = item if item.is_a?(String)
    @image_url   = save(item) if item.is_a?(UIImage)
  end
end

Private Instance Methods

instagram_installed?() click to toggle source
# File lib/under_os/receivers/instagram.rb, line 46
def instagram_installed?
  UIApplication.sharedApplication.canOpenURL(NSURL.URLWithString("instagram://app"))
end
item_is_large_enough_image?(item) click to toggle source
# File lib/under_os/receivers/instagram.rb, line 50
def item_is_large_enough_image?(item)
  item.is_a?(UIImage) && item.size.height >= 612 && item.size.width >= 612
end
save(image) click to toggle source
# File lib/under_os/receivers/instagram.rb, line 54
def save(image)
  image_data = UIImageJPEGRepresentation(scale(image), 1.0)
  filename   = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")
  NSURL.fileURLWithPath(filename) if image_data.writeToFile(filename, atomically:true)
end
scale(image) click to toggle source
# File lib/under_os/receivers/instagram.rb, line 60
def scale(image)
  size      = UOS::Point.new(x: 640, y: 640)
  ratio     = size.x / image.size.width
  new_size  = CGSizeMake(size.x, image.size.height * ratio)
  offset_x  = (size.x - new_size.width)/2
  offset_y  = (size.y - new_size.height)/2

  UIGraphicsBeginImageContext(CGSizeMake(size.x, size.y))
  context   = UIGraphicsGetCurrentContext()
  CGContextSetFillColorWithColor(context, UIColor.whiteColor.CGColor)
  CGContextFillRect(context, CGRectMake(0,0,size.x, size.y))
  image.drawInRect(CGRectMake(offset_x,offset_y,new_size.width,new_size.height))
  new_image = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()

  new_image
end