From 026e496512f2d08abdcf5c4bb383a2d490af153f Mon Sep 17 00:00:00 2001 From: Amir Abbas Date: Fri, 3 Nov 2017 01:01:33 +0330 Subject: [PATCH] Fixed macOS swift 4 convertToImage() compile issue --- Sources/FileProvider.swift | 16 +++++++++++++++- Sources/HTTPFileProvider.swift | 17 +++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Sources/FileProvider.swift b/Sources/FileProvider.swift index a476ea0..2c1d948 100644 --- a/Sources/FileProvider.swift +++ b/Sources/FileProvider.swift @@ -868,21 +868,35 @@ extension ExtendedFileProvider { let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) #if os(macOS) + #if swift(>=3.2) + let ppp = Int(NSScreen.main?.backingScaleFactor ?? 1) // fetch device is retina or not + #else let ppp = Int(NSScreen.main()?.backingScaleFactor ?? 1) // fetch device is retina or not + #endif size.width *= CGFloat(ppp) size.height *= CGFloat(ppp) + #if swift(>=3.2) let rep = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(size.width), pixelsHigh: Int(size.height), - bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: NSCalibratedRGBColorSpace, + bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: .calibratedRGB, bytesPerRow: 0, bitsPerPixel: 0) + #else + let rep = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(size.width), pixelsHigh: Int(size.height), + bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: NSCalibratedRGBColorSpace, + bytesPerRow: 0, bitsPerPixel: 0) + #endif guard let context = NSGraphicsContext(bitmapImageRep: rep!) else { return nil } NSGraphicsContext.saveGraphicsState() + #if swift(>=4.0) + NSGraphicsContext.current = context + #else NSGraphicsContext.setCurrent(context) + #endif let transform = pdfPage.getDrawingTransform(CGPDFBox.mediaBox, rect: rect, rotate: 0, preserveAspectRatio: true) context.cgContext.concatenate(transform) diff --git a/Sources/HTTPFileProvider.swift b/Sources/HTTPFileProvider.swift index 210a232..26f98a7 100644 --- a/Sources/HTTPFileProvider.swift +++ b/Sources/HTTPFileProvider.swift @@ -243,11 +243,14 @@ open class HTTPFileProvider: FileProviderBasicRemote, FileProviderOperations, Fi - error: `Error` returned by system if occured. - Returns: An `Progress` to get progress or cancel progress. */ - open func contents(path: String, progressHandler: @escaping (_ position: Int64, _ data: Data) -> Void, completionHandler: SimpleCompletionHandler) -> Progress? { + open func contents(path: String, offset: Int64 = 0, responseHandler: ((_ response: URLResponse) -> Void)? = nil, progressHandler: @escaping (_ position: Int64, _ data: Data) -> Void, completionHandler: SimpleCompletionHandler) -> Progress? { let operation = FileOperationType.fetch(path: path) - let request = self.request(for: operation) - var position: Int64 = 0 - return download_progressive(path: path, request: request, operation: operation, progressHandler: { data in + var request = self.request(for: operation) + if offset > 0 { + request.addValue("bytes \(offset)-", forHTTPHeaderField: "Range") + } + var position: Int64 = offset + return download_progressive(path: path, request: request, operation: operation, responseHandler: responseHandler, progressHandler: { data in progressHandler(position, data) position += Int64(data.count) }, completionHandler: (completionHandler ?? { _ in return })) @@ -479,8 +482,10 @@ open class HTTPFileProvider: FileProviderBasicRemote, FileProviderOperations, Fi progress.setUserInfoObject(Progress.FileOperationKind.downloading, forKey: .fileOperationKindKey) let task = session.dataTask(with: request) - responseCompletionHandlersForTasks[session.sessionDescription!]?[task.taskIdentifier] = { response in - responseHandler?(response) + if let responseHandler = responseHandler { + responseCompletionHandlersForTasks[session.sessionDescription!]?[task.taskIdentifier] = { response in + responseHandler(response) + } } dataCompletionHandlersForTasks[session.sessionDescription!]?[task.taskIdentifier] = { data in