perf: cache amount of images in comic #25
@@ -433,6 +433,8 @@ final class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
}
|
||||
|
||||
var matchingPattern: Pattern?
|
||||
var imageCount: UInt32 = 0
|
||||
|
||||
do {
|
||||
for testPattern in patterns {
|
||||
let filename = filenames[0].1
|
||||
@@ -486,6 +488,7 @@ final class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
}
|
||||
}
|
||||
if let match = pattern.pattern.firstMatch(in: filename, range: range) {
|
||||
imageCount += 1
|
||||
let chapterStr = (filename as NSString).substring(with: match.range(at: pattern.chapterPosition))
|
||||
let chapterParts = chapterStr.split(separator: "x", maxSplits: 1)
|
||||
if chapterParts.count < 1 {
|
||||
@@ -687,7 +690,8 @@ final class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
endReleaseDate: Date(year: 2000, month: 1, day: 1),
|
||||
tagsVectorOffset: tags,
|
||||
descriptionOffset: description,
|
||||
volumesVectorOffset: volumeOffsets
|
||||
volumesVectorOffset: volumeOffsets,
|
||||
imageCount: imageCount
|
||||
)
|
||||
|
||||
builder.finish(offset: metadata)
|
||||
@@ -1311,7 +1315,7 @@ final class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func handlePan(_ gesture: UIPanGestureRecognizer) {
|
||||
@objc private func handlePan(_ gesture: UIPanGestureRecognizer) {
|
||||
switch gesture.state {
|
||||
case .began:
|
||||
initialBrightness = UIScreen.main.brightness
|
||||
@@ -1566,16 +1570,7 @@ extension ViewController: UICollectionViewDataSource, UICollectionViewDelegateFl
|
||||
if collectionView == comicCollectionView {
|
||||
return comics.count
|
||||
} else if collectionView == scrollingCollectionView {
|
||||
if metadata == nil {
|
||||
return 0
|
||||
}
|
||||
var sum = 0
|
||||
for volume in metadata.volumes {
|
||||
for chapter in volume.chapters {
|
||||
sum += chapter.images.count
|
||||
}
|
||||
}
|
||||
return sum
|
||||
return metadata != nil ? Int(metadata.imageCount) : 0
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ table Metadata {
|
||||
tags:[Tag];
|
||||
description:string;
|
||||
volumes:[VolumeMetadata];
|
||||
image_count:uint;
|
||||
}
|
||||
|
||||
root_type Metadata;
|
||||
|
||||
@@ -449,6 +449,7 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
static let tags: VOffset = 24
|
||||
static let description: VOffset = 26
|
||||
static let volumes: VOffset = 28
|
||||
static let imageCount: VOffset = 30
|
||||
}
|
||||
|
||||
public var title: String! { let o = _accessor.offset(VT.title); return _accessor.string(at: o) }
|
||||
@@ -470,7 +471,8 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
public var description: String? { let o = _accessor.offset(VT.description); return o == 0 ? nil : _accessor.string(at: o) }
|
||||
public var descriptionSegmentArray: [UInt8]? { return _accessor.getVector(at: VT.description) }
|
||||
public var volumes: FlatbufferVector<VolumeMetadata> { return _accessor.vector(at: VT.volumes, byteSize: 4) }
|
||||
public static func startMetadata(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 13) }
|
||||
public var imageCount: UInt32 { let o = _accessor.offset(VT.imageCount); return o == 0 ? 0 : _accessor.readBuffer(of: UInt32.self, at: o) }
|
||||
public static func startMetadata(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 14) }
|
||||
public static func add(title: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: title, at: VT.title) }
|
||||
public static func add(format: Format, _ fbb: inout FlatBufferBuilder) { fbb.add(element: format.rawValue, def: 0, at: VT.format) }
|
||||
public static func add(originalLanguage: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: originalLanguage, at: VT.originalLanguage) }
|
||||
@@ -484,6 +486,7 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
public static func addVectorOf(tags: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: tags, at: VT.tags) }
|
||||
public static func add(description: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: description, at: VT.description) }
|
||||
public static func addVectorOf(volumes: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: volumes, at: VT.volumes) }
|
||||
public static func add(imageCount: UInt32, _ fbb: inout FlatBufferBuilder) { fbb.add(element: imageCount, def: 0, at: VT.imageCount) }
|
||||
public static func endMetadata(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); fbb.require(table: end, fields: [4]); return end }
|
||||
public static func createMetadata(
|
||||
_ fbb: inout FlatBufferBuilder,
|
||||
@@ -499,7 +502,8 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
endReleaseDate: Date? = nil,
|
||||
tagsVectorOffset tags: Offset = Offset(),
|
||||
descriptionOffset description: Offset = Offset(),
|
||||
volumesVectorOffset volumes: Offset = Offset()
|
||||
volumesVectorOffset volumes: Offset = Offset(),
|
||||
imageCount: UInt32 = 0
|
||||
) -> Offset {
|
||||
let __start = Metadata.startMetadata(&fbb)
|
||||
Metadata.add(title: title, &fbb)
|
||||
@@ -515,6 +519,7 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
Metadata.addVectorOf(tags: tags, &fbb)
|
||||
Metadata.add(description: description, &fbb)
|
||||
Metadata.addVectorOf(volumes: volumes, &fbb)
|
||||
Metadata.add(imageCount: imageCount, &fbb)
|
||||
return Metadata.endMetadata(&fbb, start: __start)
|
||||
}
|
||||
|
||||
@@ -533,8 +538,8 @@ public struct Metadata: FlatBufferTable, FlatbuffersVectorInitializable, Verifia
|
||||
try _v.visit(field: VT.tags, fieldName: "tags", required: false, type: ForwardOffset<Vector<ForwardOffset<Tag>, Tag>>.self)
|
||||
try _v.visit(field: VT.description, fieldName: "description", required: false, type: ForwardOffset<String>.self)
|
||||
try _v.visit(field: VT.volumes, fieldName: "volumes", required: false, type: ForwardOffset<Vector<ForwardOffset<VolumeMetadata>, VolumeMetadata>>.self)
|
||||
try _v.visit(field: VT.imageCount, fieldName: "imageCount", required: false, type: UInt32.self)
|
||||
_v.finish()
|
||||
}
|
||||
}
|
||||
|
||||
// swiftlint:enable all
|
||||
|
||||
Reference in New Issue
Block a user