mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Refactor InstantPageUI and related modules
This commit is contained in:
31
submodules/Pdf/Sources/PDF.swift
Normal file
31
submodules/Pdf/Sources/PDF.swift
Normal file
@@ -0,0 +1,31 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import Display
|
||||
|
||||
public func generatePdfPreviewImage(url: URL, size: CGSize) -> UIImage? {
|
||||
guard let data = try? Data(contentsOf: url, options: .mappedIfSafe) else { return nil }
|
||||
return generatePdfPreviewImage(data: data, size: size)
|
||||
}
|
||||
|
||||
public func generatePdfPreviewImage(data: Data, size: CGSize) -> UIImage? {
|
||||
guard let provider = CGDataProvider(data: data as CFData) else { return nil }
|
||||
guard let document = CGPDFDocument(provider) else { return nil }
|
||||
guard let firstPage = document.page(at: 1) else { return nil }
|
||||
|
||||
let context = DrawingContext(size: size)
|
||||
context.withContext { c in
|
||||
var pageRect = firstPage.getBoxRect(.mediaBox)
|
||||
let pdfScale = 320.0 / pageRect.size.width
|
||||
pageRect.size = CGSize(width: pageRect.size.width * pdfScale, height: pageRect.size.height * pdfScale)
|
||||
pageRect.origin = CGPoint.zero
|
||||
|
||||
c.setFillColor(UIColor.white.cgColor)
|
||||
c.fill(pageRect)
|
||||
|
||||
c.translateBy(x: 0.0, y: pageRect.size.height)
|
||||
c.scaleBy(x: 1.0, y: -1.0)
|
||||
c.concatenate(firstPage.getDrawingTransform(.mediaBox, rect: pageRect, rotate: 0, preserveAspectRatio: true))
|
||||
c.drawPDFPage(firstPage)
|
||||
}
|
||||
return context.generateImage()
|
||||
}
|
||||
19
submodules/Pdf/Sources/Pdf.h
Normal file
19
submodules/Pdf/Sources/Pdf.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// Pdf.h
|
||||
// Pdf
|
||||
//
|
||||
// Created by Peter on 8/12/19.
|
||||
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for Pdf.
|
||||
FOUNDATION_EXPORT double PdfVersionNumber;
|
||||
|
||||
//! Project version string for Pdf.
|
||||
FOUNDATION_EXPORT const unsigned char PdfVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <Pdf/PublicHeader.h>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user