2 // ScreenshotCollectionViewItem.swift
5 // Created by Hori,Masaki on 2016/12/29.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
12 final class ScreenshotCollectionViewItem: NSCollectionViewItem {
14 @IBOutlet private weak var imageBox: NSBox!
15 @IBOutlet private weak var nameField: NSTextField!
16 @IBOutlet private weak var nameBox: NSBox!
18 var info: ScreenshotInformation? {
20 return representedObject as? ScreenshotInformation
23 var imageFrame: NSRect {
25 guard let imageView = imageView else {
27 fatalError("ScreenshotCollectionViewItem: imageView is nil")
30 let frame = centerFitRect(imageView.image, target: imageView.frame)
32 return view.convert(frame, from: imageBox)
35 override var isSelected: Bool {
39 (imageBox.fillColor, nameField.textColor, nameBox.fillColor) = {
43 return (.controlHighlightColor, .white, .alternateSelectedControlColor)
47 return (.white, .black, .white)
53 private func centerFitRect(_ image: NSImage?, target: NSRect) -> NSRect {
55 guard let image = image else {
60 let imageSize = image.size
62 let ratioX = target.size.height / imageSize.height
63 let ratioY = target.size.width / imageSize.width
64 let ratio = min(ratioY, ratioX)
65 let fitSize = NSSize(width: imageSize.width * ratio, height: imageSize.height * ratio)
66 let left = (target.size.width - fitSize.width) * 0.5
67 let bottom = (target.size.height - fitSize.height) * 0.5
69 return NSRect(x: left, y: bottom, width: fitSize.width, height: fitSize.height)
73 extension ScreenshotCollectionViewItem: QLPreviewItem, Previewable {
75 var previewItemURL: URL! {
81 extension ScreenshotCollectionViewItem: NibLoadable {}