Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/pdfx/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## NEXT

* Added Swift Package Manager support for iOS and macOS, consolidating the duplicated Apple implementation into shared Darwin sources while retaining CocoaPods compatibility [pull#623](https://github.com/ScerIO/packages.flutter/pull/623)

## 2.10.0

* Supported AGP 9 built-in Kotlin [pull#624](https://github.com/ScerIO/packages.flutter/pull/624)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
# Run `pod lib lint pdfx.podspec` to validate before publishing.
#
Pod::Spec.new do |s|
s.name = 'pdfx'
s.version = '1.0.0'
s.summary = 'Flutter Plugin to render a PDF file.'
s.description = <<-DESC
Flutter Plugin to render a PDF file.
Downloaded by pub (not CocoaPods).
DESC
s.homepage = 'https://github.com/ScerIO/packages.flutter/tree/main/packages/pdfx'
s.license = { :type => 'MIT', :file => '../LICENSE' }
s.author = { 'Serge Shkurko' => 'sergeshkurko@outlook.com' }
s.source = { :http => 'https://github.com/ScerIO/packages.flutter/tree/main/packages/pdfx' }
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.platform = :ios, '8.0'

# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
s.swift_version = '5.0'
end
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
# Run `pod lib lint pdfx.podspec` to validate before publishing.
#
Pod::Spec.new do |s|
s.name = 'pdfx'
s.version = '1.0.0'
s.summary = 'Flutter Plugin to render a PDF file.'
s.description = <<-DESC
Flutter Plugin to render a PDF file.
Downloaded by pub (not CocoaPods).
DESC
s.homepage = 'https://github.com/ScerIO/packages.flutter/tree/main/packages/pdfx'
s.license = { :type => 'MIT', :file => '../LICENSE' }
s.author = { 'Serge Shkurko' => 'sergeshkurko@outlook.com' }
s.source = { :path => '.' }
s.source_files = 'pdfx/Sources/**/*.{h,m,swift}'
s.public_header_files = 'pdfx/Sources/**/include/**/*.h'

s.ios.deployment_target = '13.0'
s.osx.deployment_target = '10.15'

s.ios.dependency 'Flutter'
s.osx.dependency 'FlutterMacOS'

s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
# Flutter.framework does not contain an i386 slice.
s.ios.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0'
end
46 changes: 46 additions & 0 deletions packages/pdfx/darwin/pdfx/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let flutterFramework: Target.Dependency = .product(
name: "FlutterFramework",
package: "FlutterFramework"
)

let package = Package(
name: "pdfx",
platforms: [
.iOS("13.0"),
.macOS("10.15")
],
products: [
.library(name: "pdfx", targets: ["pdfx"])
],
dependencies: [
.package(name: "FlutterFramework", path: "../FlutterFramework")
],
targets: [
// Swift Package Manager does not support mixing Objective-C and Swift
// sources in one target, so the generated Pigeon bridge is separate
// from the Swift plugin implementation.
.target(
name: "pdfx_messages",
dependencies: [flutterFramework],
path: "Sources/pdfx/messages",
publicHeadersPath: "include",
cSettings: [
.headerSearchPath("include/pdfx_messages")
]
),
.target(
name: "pdfx",
dependencies: [
flutterFramework,
"pdfx_messages"
],
path: "Sources/pdfx",
exclude: ["messages"]
)
]
)
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
import CoreGraphics
import Foundation
#if os(iOS)
import UIKit
#elseif os(macOS)
import AppKit
#endif

class Document {
let id: String
let renderer: CGPDFDocument
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import CoreGraphics
import Foundation
#if os(iOS)
import UIKit

extension UIColor {
convenience init(hexString: String) {
Expand All @@ -21,6 +24,7 @@ extension UIColor {
}

#elseif os(macOS)
import AppKit

extension NSColor {
convenience init(hexString: String) {
Expand Down
13 changes: 13 additions & 0 deletions packages/pdfx/darwin/pdfx/Sources/pdfx/PdfxPlugin.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#if os(iOS)
import Flutter
#elseif os(macOS)
import FlutterMacOS
#endif
import Foundation

/// Stable plugin entry point used by Flutter's generated registrants.
public final class PdfxPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
SwiftPdfxPlugin.register(with: registrar)
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import CoreGraphics
import Foundation

enum RepositoryError: Error {
case ItemNotFound
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import Cocoa
import FlutterMacOS
#endif
import CoreGraphics
#if SWIFT_PACKAGE
import pdfx_messages
#endif

public class SwiftPdfxPlugin: NSObject, FlutterPlugin, PdfxApi {
let registrar: FlutterPluginRegistrar
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#import "messages.h"
#import "messages.h"
8 changes: 0 additions & 8 deletions packages/pdfx/ios/Classes/PdfxPlugin.h

This file was deleted.

15 changes: 0 additions & 15 deletions packages/pdfx/ios/Classes/PdfxPlugin.m

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/Document.swift

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/Hooks.swift

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/PdfxPlugin.h

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/PdfxPlugin.m

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/Resources.swift

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/SwiftPdfxPlugin.swift

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/messages.h

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/messages.m

This file was deleted.

1 change: 0 additions & 1 deletion packages/pdfx/macos/Classes/pdfx.h

This file was deleted.

23 changes: 0 additions & 23 deletions packages/pdfx/macos/pdfx.podspec

This file was deleted.

5 changes: 3 additions & 2 deletions packages/pdfx/pigeons/messages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import 'package:pigeon/pigeon.dart';

@ConfigurePigeon(PigeonOptions(
dartOut: 'lib/src/renderer/io/pigeon.dart',
objcHeaderOut: './ios/Classes/messages.h',
objcSourceOut: './ios/Classes/messages.m',
objcHeaderOut:
'./darwin/pdfx/Sources/pdfx/messages/include/pdfx_messages/messages.h',
objcSourceOut: './darwin/pdfx/Sources/pdfx/messages/messages.m',
javaOut: './android/src/main/java/dev/flutter/pigeon/Pigeon.java',
javaOptions: JavaOptions(
package: 'dev.flutter.pigeon',
Expand Down
2 changes: 2 additions & 0 deletions packages/pdfx/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ flutter:
pluginClass: PdfxPlugin
ios:
pluginClass: PdfxPlugin
sharedDarwinSource: true
macos:
pluginClass: PdfxPlugin
sharedDarwinSource: true
windows:
pluginClass: PdfxPlugin
web:
Expand Down
11 changes: 0 additions & 11 deletions packages/pdfx/scripts/link_macos.sh

This file was deleted.

7 changes: 1 addition & 6 deletions packages/pdfx/scripts/pigeon.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,7 @@ echo "$Green Success$Color_Off"
echo "$BBlue Replace import in generated iOS pigeon file for support macOS$Color_Off"
to="#if TARGET_OS_IOS\n#import <Flutter\/Flutter.h>\n#else\n#import <FlutterMacOS\/FlutterMacOS.h>\n#endif"
from="#import <Flutter\/Flutter.h>"
sed -i "" "s/$from/$to/g" "ios/Classes/messages.m"
echo "$Green Success$Color_Off"


echo "$BBlue Link macOS to iOS (universal) codebase$Color_Off"
sh ./scripts/link_macos.sh
sed -i "" "s/$from/$to/g" "darwin/pdfx/Sources/pdfx/messages/messages.m"
echo "$Green Success$Color_Off"


Expand Down