Skip to content

Commit 7537725

Browse files
committed
updated
1 parent fc87084 commit 7537725

File tree

5 files changed

+18
-64
lines changed

5 files changed

+18
-64
lines changed

Example/Example/TableSidebarViewController.swift

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -85,28 +85,3 @@ class TableSidebarViewController: NSViewController {
8585
segmentedControl.selectedSegment = 0
8686
}
8787
}
88-
89-
extension NSImage {
90-
convenience init?(combining images: [NSImage]) {
91-
guard !images.isEmpty else { return nil }
92-
93-
let totalWidth = images.reduce(0) { $0 + $1.size.width }
94-
let maxHeight = images.map { $0.size.height }.max() ?? 0
95-
96-
let newSize = NSSize(width: totalWidth, height: maxHeight)
97-
let newImage = NSImage(size: newSize)
98-
99-
newImage.lockFocus()
100-
101-
var xOffset: CGFloat = 0
102-
for image in images {
103-
let imageRect = NSRect(x: xOffset, y: maxHeight - image.size.height, width: image.size.width, height: image.size.height)
104-
image.draw(in: imageRect)
105-
xOffset += image.size.width
106-
}
107-
108-
newImage.unlockFocus()
109-
110-
self.init(data: newImage.tiffRepresentation!)
111-
}
112-
}

Sources/AdvancedCollectionTableView/DiffableDataSource/NSCollectionView/CollectionViewDiffableDataSource.swift

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -245,33 +245,27 @@ open class CollectionViewDiffableDataSource<Section: Identifiable & Hashable, El
245245
updateEmptyView(previousIsEmpty: previousIsEmpty)
246246
}
247247

248-
public enum PreviewImageSizing {
249-
case size(CGSize)
250-
case automatic
251-
case fitting(width: CGFloat?, height: CGFloat?)
252-
}
253-
254248
/// Returns a preview image of the collection view item for the specified element.
255249
public func previewImage(for element: Element) -> NSImage? {
256-
previewImage(for: element, size: nil)
250+
_previewImage(for: element, size: nil)
257251
}
258252

259253
/// Returns a preview image of the collection view item for the specified element and item size.
260254
public func previewImage(for element: Element, size: CGSize) -> NSImage? {
261-
previewImage(for: element, size: size)
255+
_previewImage(for: element, size: size)
262256
}
263257

264258
/// Returns a preview image of the collection view item for the specified element and item width.
265259
public func previewImage(for element: Element, width: CGFloat) -> NSImage? {
266-
previewImage(for: element, width: width)
260+
_previewImage(for: element, width: width)
267261
}
268262

269263
/// Returns a preview image of the collection view item for the specified element and item height.
270264
public func previewImage(for element: Element, height: CGFloat) -> NSImage? {
271-
previewImage(for: element, height: height)
265+
_previewImage(for: element, height: height)
272266
}
273267

274-
private func previewImage(for element: Element, size: CGSize? = nil, width: CGFloat? = nil, height: CGFloat? = nil) -> NSImage? {
268+
private func _previewImage(for element: Element, size: CGSize? = nil, width: CGFloat? = nil, height: CGFloat? = nil) -> NSImage? {
275269
guard let item = itemProvider(collectionView, IndexPath(item: 0, section: 0), element) else { return nil }
276270
if width != nil || height != nil {
277271
item.view.frame.size = item.view.systemLayoutSizeFitting(width: width, height: height)

Sources/AdvancedCollectionTableView/DiffableDataSource/NSOutlineView/OutlineViewDiffableDataSource.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,14 +502,19 @@ public class OutlineViewDiffableDataSource<ItemIdentifierType: Hashable>: NSObje
502502
public func previewImage(for item: ItemIdentifierType) -> NSImage? {
503503
let columns = outlineView.tableColumns
504504
guard !columns.isEmpty else { return nil }
505-
return NSImage(combining: columns.compactMap({ previewImage(for: item, tableColumn: $0, useColumnWidth: $0 !== columns.last!) }))
505+
return NSImage(combineHorizontal: columns.compactMap({ previewImage(for: item, tableColumn: $0, useColumnWidth: $0 !== columns.last!) }), alignment: .top)
506506
}
507507

508508
/// Returns a preview image of the table cell for the specified item and table column.
509509
public func previewImage(for item: ItemIdentifierType, tableColumn: NSTableColumn) -> NSImage? {
510510
previewImage(for: item, tableColumn: tableColumn, useColumnWidth: true)
511511
}
512512

513+
/// Returns a preview image of the table row for the specified items.
514+
public func previewImage(for items: [ItemIdentifierType]) -> NSImage? {
515+
NSImage(combineVertical: items.compactMap({ previewImage(for: $0)}).reversed(), alignment: .left)
516+
}
517+
513518
private func previewImage(for item: ItemIdentifierType, tableColumn: NSTableColumn, useColumnWidth: Bool) -> NSImage? {
514519
guard let index = outlineView.tableColumns.firstIndex(of: tableColumn) else { return nil }
515520
let view = cellProvider(outlineView, tableColumn, item)

Sources/AdvancedCollectionTableView/DiffableDataSource/NSTableView/TableViewDiffableDataSource.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,19 @@ open class TableViewDiffableDataSource<Section, Item>: NSObject, NSTableViewData
320320
public func previewImage(for item: Item) -> NSImage? {
321321
let columns = tableView.tableColumns
322322
guard !columns.isEmpty else { return nil }
323-
return NSImage(combining: columns.compactMap({ previewImage(for: item, tableColumn: $0, useColumnWidth: $0 !== columns.last!) }))
323+
return NSImage(combineHorizontal: columns.compactMap({ previewImage(for: item, tableColumn: $0, useColumnWidth: $0 !== columns.last!) }), alignment: .top)
324324
}
325325

326326
/// Returns a preview image of the table cell for the specified item and table column.
327327
public func previewImage(for item: Item, tableColumn: NSTableColumn) -> NSImage? {
328328
previewImage(for: item, tableColumn: tableColumn, useColumnWidth: true)
329329
}
330330

331+
/// Returns a preview image of the table row for the specified items.
332+
public func previewImage(for items: [Item]) -> NSImage? {
333+
NSImage(combineVertical: items.compactMap({ previewImage(for: $0)}).reversed(), alignment: .left)
334+
}
335+
331336
private func previewImage(for item: Item, tableColumn: NSTableColumn, useColumnWidth: Bool) -> NSImage? {
332337
guard let index = tableView.tableColumns.firstIndex(of: tableColumn) else { return nil }
333338
let view = cellProvider(tableView, tableColumn, 0, item)

Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableViewDiffableDataSource+.swift

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public extension NSTableViewDiffableDataSource {
8383
private func previewImage(for item: ItemIdentifierType, tableView: NSTableView) -> NSImage? {
8484
let columns = tableView.tableColumns
8585
guard !columns.isEmpty else { return nil }
86-
return NSImage(combining: columns.compactMap({ _previewImage(for: item, tableColumn: $0, tableView: tableView, useColumnWidth: $0 !== columns.last!) }))
86+
return NSImage(combineHorizontal: columns.compactMap({ _previewImage(for: item, tableColumn: $0, tableView: tableView, useColumnWidth: $0 !== columns.last!) }), alignment: .top)
8787
}
8888

8989
private func previewImage(for item: ItemIdentifierType, tableColumn: NSTableColumn, tableView: NSTableView) -> NSImage? {
@@ -103,28 +103,3 @@ public extension NSTableViewDiffableDataSource {
103103
return view.renderedImage
104104
}
105105
}
106-
107-
extension NSImage {
108-
convenience init?(combining images: [NSImage]) {
109-
guard !images.isEmpty else { return nil }
110-
111-
let totalWidth = images.reduce(0) { $0 + $1.size.width }
112-
let maxHeight = images.map { $0.size.height }.max() ?? 0
113-
114-
let newSize = NSSize(width: totalWidth, height: maxHeight)
115-
let newImage = NSImage(size: newSize)
116-
117-
newImage.lockFocus()
118-
119-
var xOffset: CGFloat = 0
120-
for image in images {
121-
let imageRect = NSRect(x: xOffset, y: maxHeight - image.size.height, width: image.size.width, height: image.size.height)
122-
image.draw(in: imageRect)
123-
xOffset += image.size.width
124-
}
125-
126-
newImage.unlockFocus()
127-
128-
self.init(data: newImage.tiffRepresentation!)
129-
}
130-
}

0 commit comments

Comments
 (0)